From 53758506856db59ac41b0eef900e43416902ec68 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sat, 29 May 2021 16:09:05 -0700 Subject: [PATCH 01/55] Don't copy Steamworks.NET.txt on OSX - Fixes #397 --- com.rlabrecque.steamworks.net/Editor/RedistCopy.cs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/com.rlabrecque.steamworks.net/Editor/RedistCopy.cs b/com.rlabrecque.steamworks.net/Editor/RedistCopy.cs index 7ff5a552..3c7a1953 100644 --- a/com.rlabrecque.steamworks.net/Editor/RedistCopy.cs +++ b/com.rlabrecque.steamworks.net/Editor/RedistCopy.cs @@ -36,11 +36,7 @@ public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProj break; } case BuildTarget.StandaloneOSX: - { - baseDir = Path.Combine(Path.Combine(Path.GetDirectoryName(pathToBuiltProject), Path.GetFileNameWithoutExtension(pathToBuiltProject) + ".app"), "Contents"); - break; - } - default: + default: { return; } From 9416761cab7fa6b226803c95a0cc7ab8dd03b43c Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 30 May 2021 11:17:59 -0700 Subject: [PATCH 02/55] Run dos2unix on CodeGen/steam for consistency --- CodeGen/steam/isteamapplist.h | 134 +- CodeGen/steam/isteamapps.h | 434 +- CodeGen/steam/isteamappticket.h | 56 +- CodeGen/steam/isteamclient.h | 358 +- CodeGen/steam/isteamcontroller.h | 1272 +- CodeGen/steam/isteamfriends.h | 1386 +- CodeGen/steam/isteamgamecoordinator.h | 148 +- CodeGen/steam/isteamgameserver.h | 752 +- CodeGen/steam/isteamgameserverstats.h | 228 +- CodeGen/steam/isteamhtmlsurface.h | 960 +- CodeGen/steam/isteamhttp.h | 436 +- CodeGen/steam/isteaminput.h | 1374 +- CodeGen/steam/isteaminventory.h | 896 +- CodeGen/steam/isteammasterserverupdater.h | 2 +- CodeGen/steam/isteammatchmaking.h | 2174 +- CodeGen/steam/isteammusic.h | 142 +- CodeGen/steam/isteammusicremote.h | 266 +- CodeGen/steam/isteamnetworking.h | 686 +- CodeGen/steam/isteamparentalsettings.h | 126 +- CodeGen/steam/isteamps3overlayrenderer.h | 180 +- CodeGen/steam/isteamremotestorage.h | 1376 +- CodeGen/steam/isteamscreenshots.h | 240 +- CodeGen/steam/isteamugc.h | 1142 +- CodeGen/steam/isteamuser.h | 820 +- CodeGen/steam/isteamuserstats.h | 976 +- CodeGen/steam/isteamutils.h | 610 +- CodeGen/steam/isteamvideo.h | 136 +- CodeGen/steam/matchmakingtypes.h | 502 +- CodeGen/steam/steam_api.h | 594 +- CodeGen/steam/steam_api.json | 26998 ++++++++++---------- CodeGen/steam/steam_api_common.h | 470 +- CodeGen/steam/steam_api_flat.h | 2176 +- CodeGen/steam/steam_api_internal.h | 816 +- CodeGen/steam/steam_gameserver.h | 228 +- CodeGen/steam/steamclientpublic.h | 3038 +-- CodeGen/steam/steamencryptedappticket.h | 80 +- CodeGen/steam/steamhttpenums.h | 196 +- CodeGen/steam/steamps3params.h | 224 +- CodeGen/steam/steamtypes.h | 526 +- CodeGen/steam/steamuniverse.h | 54 +- 40 files changed, 26606 insertions(+), 26606 deletions(-) diff --git a/CodeGen/steam/isteamapplist.h b/CodeGen/steam/isteamapplist.h index 297a3736..ae018adb 100644 --- a/CodeGen/steam/isteamapplist.h +++ b/CodeGen/steam/isteamapplist.h @@ -1,67 +1,67 @@ -//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= -// -// Purpose: interface to app data in Steam -// -//============================================================================= - -#ifndef ISTEAMAPPLIST_H -#define ISTEAMAPPLIST_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" -#include "steamtypes.h" - -//----------------------------------------------------------------------------- -// Purpose: This is a restricted interface that can only be used by previously approved apps, -// contact your Steam Account Manager if you believe you need access to this API. -// This interface lets you detect installed apps for the local Steam client, useful for debugging tools -// to offer lists of apps to debug via Steam. -//----------------------------------------------------------------------------- -class ISteamAppList -{ -public: - virtual uint32 GetNumInstalledApps() = 0; - virtual uint32 GetInstalledApps( AppId_t *pvecAppID, uint32 unMaxAppIDs ) = 0; - - virtual int GetAppName( AppId_t nAppID, STEAM_OUT_STRING() char *pchName, int cchNameMax ) = 0; // returns -1 if no name was found - virtual int GetAppInstallDir( AppId_t nAppID, char *pchDirectory, int cchNameMax ) = 0; // returns -1 if no dir was found - - virtual int GetAppBuildId( AppId_t nAppID ) = 0; // return the buildid of this app, may change at any time based on backend updates to the game -}; - -#define STEAMAPPLIST_INTERFACE_VERSION "STEAMAPPLIST_INTERFACE_VERSION001" - -// Global interface accessor -inline ISteamAppList *SteamAppList(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamAppList *, SteamAppList, STEAMAPPLIST_INTERFACE_VERSION ); - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - - -//--------------------------------------------------------------------------------- -// Purpose: Sent when a new app is installed -//--------------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( SteamAppInstalled_t, k_iSteamAppListCallbacks + 1 ) - STEAM_CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs -STEAM_CALLBACK_END(1) - - -//--------------------------------------------------------------------------------- -// Purpose: Sent when an app is uninstalled -//--------------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( SteamAppUninstalled_t, k_iSteamAppListCallbacks + 2 ) - STEAM_CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs -STEAM_CALLBACK_END(1) - - -#pragma pack( pop ) -#endif // ISTEAMAPPLIST_H +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to app data in Steam +// +//============================================================================= + +#ifndef ISTEAMAPPLIST_H +#define ISTEAMAPPLIST_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" +#include "steamtypes.h" + +//----------------------------------------------------------------------------- +// Purpose: This is a restricted interface that can only be used by previously approved apps, +// contact your Steam Account Manager if you believe you need access to this API. +// This interface lets you detect installed apps for the local Steam client, useful for debugging tools +// to offer lists of apps to debug via Steam. +//----------------------------------------------------------------------------- +class ISteamAppList +{ +public: + virtual uint32 GetNumInstalledApps() = 0; + virtual uint32 GetInstalledApps( AppId_t *pvecAppID, uint32 unMaxAppIDs ) = 0; + + virtual int GetAppName( AppId_t nAppID, STEAM_OUT_STRING() char *pchName, int cchNameMax ) = 0; // returns -1 if no name was found + virtual int GetAppInstallDir( AppId_t nAppID, char *pchDirectory, int cchNameMax ) = 0; // returns -1 if no dir was found + + virtual int GetAppBuildId( AppId_t nAppID ) = 0; // return the buildid of this app, may change at any time based on backend updates to the game +}; + +#define STEAMAPPLIST_INTERFACE_VERSION "STEAMAPPLIST_INTERFACE_VERSION001" + +// Global interface accessor +inline ISteamAppList *SteamAppList(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamAppList *, SteamAppList, STEAMAPPLIST_INTERFACE_VERSION ); + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + + +//--------------------------------------------------------------------------------- +// Purpose: Sent when a new app is installed +//--------------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( SteamAppInstalled_t, k_iSteamAppListCallbacks + 1 ) + STEAM_CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs +STEAM_CALLBACK_END(1) + + +//--------------------------------------------------------------------------------- +// Purpose: Sent when an app is uninstalled +//--------------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( SteamAppUninstalled_t, k_iSteamAppListCallbacks + 2 ) + STEAM_CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs +STEAM_CALLBACK_END(1) + + +#pragma pack( pop ) +#endif // ISTEAMAPPLIST_H diff --git a/CodeGen/steam/isteamapps.h b/CodeGen/steam/isteamapps.h index ca39492f..299b95d5 100644 --- a/CodeGen/steam/isteamapps.h +++ b/CodeGen/steam/isteamapps.h @@ -1,217 +1,217 @@ -//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= -// -// Purpose: interface to app data in Steam -// -//============================================================================= - -#ifndef ISTEAMAPPS_H -#define ISTEAMAPPS_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" - -const int k_cubAppProofOfPurchaseKeyMax = 240; // max supported length of a legacy cd key - - -//----------------------------------------------------------------------------- -// Purpose: interface to app data -//----------------------------------------------------------------------------- -class ISteamApps -{ -public: - virtual bool BIsSubscribed() = 0; - virtual bool BIsLowViolence() = 0; - virtual bool BIsCybercafe() = 0; - virtual bool BIsVACBanned() = 0; - virtual const char *GetCurrentGameLanguage() = 0; - virtual const char *GetAvailableGameLanguages() = 0; - - // only use this member if you need to check ownership of another game related to yours, a demo for example - virtual bool BIsSubscribedApp( AppId_t appID ) = 0; - - // Takes AppID of DLC and checks if the user owns the DLC & if the DLC is installed - virtual bool BIsDlcInstalled( AppId_t appID ) = 0; - - // returns the Unix time of the purchase of the app - virtual uint32 GetEarliestPurchaseUnixTime( AppId_t nAppID ) = 0; - - // Checks if the user is subscribed to the current app through a free weekend - // This function will return false for users who have a retail or other type of license - // Before using, please ask your Valve technical contact how to package and secure your free weekened - virtual bool BIsSubscribedFromFreeWeekend() = 0; - - // Returns the number of DLC pieces for the running app - virtual int GetDLCCount() = 0; - - // Returns metadata for DLC by index, of range [0, GetDLCCount()] - virtual bool BGetDLCDataByIndex( int iDLC, AppId_t *pAppID, bool *pbAvailable, char *pchName, int cchNameBufferSize ) = 0; - - // Install/Uninstall control for optional DLC - virtual void InstallDLC( AppId_t nAppID ) = 0; - virtual void UninstallDLC( AppId_t nAppID ) = 0; - - // Request legacy cd-key for yourself or owned DLC. If you are interested in this - // data then make sure you provide us with a list of valid keys to be distributed - // to users when they purchase the game, before the game ships. - // You'll receive an AppProofOfPurchaseKeyResponse_t callback when - // the key is available (which may be immediately). - virtual void RequestAppProofOfPurchaseKey( AppId_t nAppID ) = 0; - - virtual bool GetCurrentBetaName( char *pchName, int cchNameBufferSize ) = 0; // returns current beta branch name, 'public' is the default branch - virtual bool MarkContentCorrupt( bool bMissingFilesOnly ) = 0; // signal Steam that game files seems corrupt or missing - virtual uint32 GetInstalledDepots( AppId_t appID, DepotId_t *pvecDepots, uint32 cMaxDepots ) = 0; // return installed depots in mount order - - // returns current app install folder for AppID, returns folder name length - virtual uint32 GetAppInstallDir( AppId_t appID, char *pchFolder, uint32 cchFolderBufferSize ) = 0; - virtual bool BIsAppInstalled( AppId_t appID ) = 0; // returns true if that app is installed (not necessarily owned) - - // returns the SteamID of the original owner. If this CSteamID is different from ISteamUser::GetSteamID(), - // the user has a temporary license borrowed via Family Sharing - virtual CSteamID GetAppOwner() = 0; - - // Returns the associated launch param if the game is run via steam://run///?param1=value1¶m2=value2¶m3=value3 etc. - // Parameter names starting with the character '@' are reserved for internal use and will always return and empty string. - // Parameter names starting with an underscore '_' are reserved for steam features -- they can be queried by the game, - // but it is advised that you not param names beginning with an underscore for your own features. - // Check for new launch parameters on callback NewUrlLaunchParameters_t - virtual const char *GetLaunchQueryParam( const char *pchKey ) = 0; - - // get download progress for optional DLC - virtual bool GetDlcDownloadProgress( AppId_t nAppID, uint64 *punBytesDownloaded, uint64 *punBytesTotal ) = 0; - - // return the buildid of this app, may change at any time based on backend updates to the game - virtual int GetAppBuildId() = 0; - - // Request all proof of purchase keys for the calling appid and asociated DLC. - // A series of AppProofOfPurchaseKeyResponse_t callbacks will be sent with - // appropriate appid values, ending with a final callback where the m_nAppId - // member is k_uAppIdInvalid (zero). - virtual void RequestAllProofOfPurchaseKeys() = 0; - - STEAM_CALL_RESULT( FileDetailsResult_t ) - virtual SteamAPICall_t GetFileDetails( const char* pszFileName ) = 0; - - // Get command line if game was launched via Steam URL, e.g. steam://run////. - // This method of passing a connect string (used when joining via rich presence, accepting an - // invite, etc) is preferable to passing the connect string on the operating system command - // line, which is a security risk. In order for rich presence joins to go through this - // path and not be placed on the OS command line, you must set a value in your app's - // configuration on Steam. Ask Valve for help with this. - // - // If game was already running and launched again, the NewUrlLaunchParameters_t will be fired. - virtual int GetLaunchCommandLine( char *pszCommandLine, int cubCommandLine ) = 0; - - // Check if user borrowed this game via Family Sharing, If true, call GetAppOwner() to get the lender SteamID - virtual bool BIsSubscribedFromFamilySharing() = 0; - - // check if game is a timed trial with limited playtime - virtual bool BIsTimedTrial( uint32* punSecondsAllowed, uint32* punSecondsPlayed ) = 0; -}; - -#define STEAMAPPS_INTERFACE_VERSION "STEAMAPPS_INTERFACE_VERSION008" - -// Global interface accessor -inline ISteamApps *SteamApps(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamApps *, SteamApps, STEAMAPPS_INTERFACE_VERSION ); - -// Global accessor for the gameserver client -inline ISteamApps *SteamGameServerApps(); -STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamApps *, SteamGameServerApps, STEAMAPPS_INTERFACE_VERSION ); - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif -//----------------------------------------------------------------------------- -// Purpose: posted after the user gains ownership of DLC & that DLC is installed -//----------------------------------------------------------------------------- -struct DlcInstalled_t -{ - enum { k_iCallback = k_iSteamAppsCallbacks + 5 }; - AppId_t m_nAppID; // AppID of the DLC -}; - - -//----------------------------------------------------------------------------- -// Purpose: possible results when registering an activation code -//----------------------------------------------------------------------------- -enum ERegisterActivationCodeResult -{ - k_ERegisterActivationCodeResultOK = 0, - k_ERegisterActivationCodeResultFail = 1, - k_ERegisterActivationCodeResultAlreadyRegistered = 2, - k_ERegisterActivationCodeResultTimeout = 3, - k_ERegisterActivationCodeAlreadyOwned = 4, -}; - - -//----------------------------------------------------------------------------- -// Purpose: response to RegisterActivationCode() -//----------------------------------------------------------------------------- -struct RegisterActivationCodeResponse_t -{ - enum { k_iCallback = k_iSteamAppsCallbacks + 8 }; - ERegisterActivationCodeResult m_eResult; - uint32 m_unPackageRegistered; // package that was registered. Only set on success -}; - - -//--------------------------------------------------------------------------------- -// Purpose: posted after the user gains executes a Steam URL with command line or query parameters -// such as steam://run///-commandline/?param1=value1¶m2=value2¶m3=value3 etc -// while the game is already running. The new params can be queried -// with GetLaunchQueryParam and GetLaunchCommandLine -//--------------------------------------------------------------------------------- -struct NewUrlLaunchParameters_t -{ - enum { k_iCallback = k_iSteamAppsCallbacks + 14 }; -}; - - -//----------------------------------------------------------------------------- -// Purpose: response to RequestAppProofOfPurchaseKey/RequestAllProofOfPurchaseKeys -// for supporting third-party CD keys, or other proof-of-purchase systems. -//----------------------------------------------------------------------------- -struct AppProofOfPurchaseKeyResponse_t -{ - enum { k_iCallback = k_iSteamAppsCallbacks + 21 }; - EResult m_eResult; - uint32 m_nAppID; - uint32 m_cchKeyLength; - char m_rgchKey[k_cubAppProofOfPurchaseKeyMax]; -}; - - -//----------------------------------------------------------------------------- -// Purpose: response to GetFileDetails -//----------------------------------------------------------------------------- -struct FileDetailsResult_t -{ - enum { k_iCallback = k_iSteamAppsCallbacks + 23 }; - EResult m_eResult; - uint64 m_ulFileSize; // original file size in bytes - uint8 m_FileSHA[20]; // original file SHA1 hash - uint32 m_unFlags; // -}; - - -//----------------------------------------------------------------------------- -// Purpose: called for games in Timed Trial mode -//----------------------------------------------------------------------------- -struct TimedTrialStatus_t -{ - enum { k_iCallback = k_iSteamAppsCallbacks + 30 }; - AppId_t m_unAppID; // appID - bool m_bIsOffline; // if true, time allowed / played refers to offline time, not total time - uint32 m_unSecondsAllowed; // how many seconds the app can be played in total - uint32 m_unSecondsPlayed; // how many seconds the app was already played -}; - -#pragma pack( pop ) -#endif // ISTEAMAPPS_H +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to app data in Steam +// +//============================================================================= + +#ifndef ISTEAMAPPS_H +#define ISTEAMAPPS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + +const int k_cubAppProofOfPurchaseKeyMax = 240; // max supported length of a legacy cd key + + +//----------------------------------------------------------------------------- +// Purpose: interface to app data +//----------------------------------------------------------------------------- +class ISteamApps +{ +public: + virtual bool BIsSubscribed() = 0; + virtual bool BIsLowViolence() = 0; + virtual bool BIsCybercafe() = 0; + virtual bool BIsVACBanned() = 0; + virtual const char *GetCurrentGameLanguage() = 0; + virtual const char *GetAvailableGameLanguages() = 0; + + // only use this member if you need to check ownership of another game related to yours, a demo for example + virtual bool BIsSubscribedApp( AppId_t appID ) = 0; + + // Takes AppID of DLC and checks if the user owns the DLC & if the DLC is installed + virtual bool BIsDlcInstalled( AppId_t appID ) = 0; + + // returns the Unix time of the purchase of the app + virtual uint32 GetEarliestPurchaseUnixTime( AppId_t nAppID ) = 0; + + // Checks if the user is subscribed to the current app through a free weekend + // This function will return false for users who have a retail or other type of license + // Before using, please ask your Valve technical contact how to package and secure your free weekened + virtual bool BIsSubscribedFromFreeWeekend() = 0; + + // Returns the number of DLC pieces for the running app + virtual int GetDLCCount() = 0; + + // Returns metadata for DLC by index, of range [0, GetDLCCount()] + virtual bool BGetDLCDataByIndex( int iDLC, AppId_t *pAppID, bool *pbAvailable, char *pchName, int cchNameBufferSize ) = 0; + + // Install/Uninstall control for optional DLC + virtual void InstallDLC( AppId_t nAppID ) = 0; + virtual void UninstallDLC( AppId_t nAppID ) = 0; + + // Request legacy cd-key for yourself or owned DLC. If you are interested in this + // data then make sure you provide us with a list of valid keys to be distributed + // to users when they purchase the game, before the game ships. + // You'll receive an AppProofOfPurchaseKeyResponse_t callback when + // the key is available (which may be immediately). + virtual void RequestAppProofOfPurchaseKey( AppId_t nAppID ) = 0; + + virtual bool GetCurrentBetaName( char *pchName, int cchNameBufferSize ) = 0; // returns current beta branch name, 'public' is the default branch + virtual bool MarkContentCorrupt( bool bMissingFilesOnly ) = 0; // signal Steam that game files seems corrupt or missing + virtual uint32 GetInstalledDepots( AppId_t appID, DepotId_t *pvecDepots, uint32 cMaxDepots ) = 0; // return installed depots in mount order + + // returns current app install folder for AppID, returns folder name length + virtual uint32 GetAppInstallDir( AppId_t appID, char *pchFolder, uint32 cchFolderBufferSize ) = 0; + virtual bool BIsAppInstalled( AppId_t appID ) = 0; // returns true if that app is installed (not necessarily owned) + + // returns the SteamID of the original owner. If this CSteamID is different from ISteamUser::GetSteamID(), + // the user has a temporary license borrowed via Family Sharing + virtual CSteamID GetAppOwner() = 0; + + // Returns the associated launch param if the game is run via steam://run///?param1=value1¶m2=value2¶m3=value3 etc. + // Parameter names starting with the character '@' are reserved for internal use and will always return and empty string. + // Parameter names starting with an underscore '_' are reserved for steam features -- they can be queried by the game, + // but it is advised that you not param names beginning with an underscore for your own features. + // Check for new launch parameters on callback NewUrlLaunchParameters_t + virtual const char *GetLaunchQueryParam( const char *pchKey ) = 0; + + // get download progress for optional DLC + virtual bool GetDlcDownloadProgress( AppId_t nAppID, uint64 *punBytesDownloaded, uint64 *punBytesTotal ) = 0; + + // return the buildid of this app, may change at any time based on backend updates to the game + virtual int GetAppBuildId() = 0; + + // Request all proof of purchase keys for the calling appid and asociated DLC. + // A series of AppProofOfPurchaseKeyResponse_t callbacks will be sent with + // appropriate appid values, ending with a final callback where the m_nAppId + // member is k_uAppIdInvalid (zero). + virtual void RequestAllProofOfPurchaseKeys() = 0; + + STEAM_CALL_RESULT( FileDetailsResult_t ) + virtual SteamAPICall_t GetFileDetails( const char* pszFileName ) = 0; + + // Get command line if game was launched via Steam URL, e.g. steam://run////. + // This method of passing a connect string (used when joining via rich presence, accepting an + // invite, etc) is preferable to passing the connect string on the operating system command + // line, which is a security risk. In order for rich presence joins to go through this + // path and not be placed on the OS command line, you must set a value in your app's + // configuration on Steam. Ask Valve for help with this. + // + // If game was already running and launched again, the NewUrlLaunchParameters_t will be fired. + virtual int GetLaunchCommandLine( char *pszCommandLine, int cubCommandLine ) = 0; + + // Check if user borrowed this game via Family Sharing, If true, call GetAppOwner() to get the lender SteamID + virtual bool BIsSubscribedFromFamilySharing() = 0; + + // check if game is a timed trial with limited playtime + virtual bool BIsTimedTrial( uint32* punSecondsAllowed, uint32* punSecondsPlayed ) = 0; +}; + +#define STEAMAPPS_INTERFACE_VERSION "STEAMAPPS_INTERFACE_VERSION008" + +// Global interface accessor +inline ISteamApps *SteamApps(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamApps *, SteamApps, STEAMAPPS_INTERFACE_VERSION ); + +// Global accessor for the gameserver client +inline ISteamApps *SteamGameServerApps(); +STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamApps *, SteamGameServerApps, STEAMAPPS_INTERFACE_VERSION ); + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif +//----------------------------------------------------------------------------- +// Purpose: posted after the user gains ownership of DLC & that DLC is installed +//----------------------------------------------------------------------------- +struct DlcInstalled_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 5 }; + AppId_t m_nAppID; // AppID of the DLC +}; + + +//----------------------------------------------------------------------------- +// Purpose: possible results when registering an activation code +//----------------------------------------------------------------------------- +enum ERegisterActivationCodeResult +{ + k_ERegisterActivationCodeResultOK = 0, + k_ERegisterActivationCodeResultFail = 1, + k_ERegisterActivationCodeResultAlreadyRegistered = 2, + k_ERegisterActivationCodeResultTimeout = 3, + k_ERegisterActivationCodeAlreadyOwned = 4, +}; + + +//----------------------------------------------------------------------------- +// Purpose: response to RegisterActivationCode() +//----------------------------------------------------------------------------- +struct RegisterActivationCodeResponse_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 8 }; + ERegisterActivationCodeResult m_eResult; + uint32 m_unPackageRegistered; // package that was registered. Only set on success +}; + + +//--------------------------------------------------------------------------------- +// Purpose: posted after the user gains executes a Steam URL with command line or query parameters +// such as steam://run///-commandline/?param1=value1¶m2=value2¶m3=value3 etc +// while the game is already running. The new params can be queried +// with GetLaunchQueryParam and GetLaunchCommandLine +//--------------------------------------------------------------------------------- +struct NewUrlLaunchParameters_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 14 }; +}; + + +//----------------------------------------------------------------------------- +// Purpose: response to RequestAppProofOfPurchaseKey/RequestAllProofOfPurchaseKeys +// for supporting third-party CD keys, or other proof-of-purchase systems. +//----------------------------------------------------------------------------- +struct AppProofOfPurchaseKeyResponse_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 21 }; + EResult m_eResult; + uint32 m_nAppID; + uint32 m_cchKeyLength; + char m_rgchKey[k_cubAppProofOfPurchaseKeyMax]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: response to GetFileDetails +//----------------------------------------------------------------------------- +struct FileDetailsResult_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 23 }; + EResult m_eResult; + uint64 m_ulFileSize; // original file size in bytes + uint8 m_FileSHA[20]; // original file SHA1 hash + uint32 m_unFlags; // +}; + + +//----------------------------------------------------------------------------- +// Purpose: called for games in Timed Trial mode +//----------------------------------------------------------------------------- +struct TimedTrialStatus_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 30 }; + AppId_t m_unAppID; // appID + bool m_bIsOffline; // if true, time allowed / played refers to offline time, not total time + uint32 m_unSecondsAllowed; // how many seconds the app can be played in total + uint32 m_unSecondsPlayed; // how many seconds the app was already played +}; + +#pragma pack( pop ) +#endif // ISTEAMAPPS_H diff --git a/CodeGen/steam/isteamappticket.h b/CodeGen/steam/isteamappticket.h index 6f239060..21fb9e13 100644 --- a/CodeGen/steam/isteamappticket.h +++ b/CodeGen/steam/isteamappticket.h @@ -1,28 +1,28 @@ -//====== Copyright 1996-2008, Valve Corporation, All rights reserved. ======= -// -// Purpose: a private, but well versioned, interface to get at critical bits -// of a steam3 appticket - consumed by the simple drm wrapper to let it -// ask about ownership with greater confidence. -// -//============================================================================= - -#ifndef ISTEAMAPPTICKET_H -#define ISTEAMAPPTICKET_H -#pragma once - -//----------------------------------------------------------------------------- -// Purpose: hand out a reasonable "future proof" view of an app ownership ticket -// the raw (signed) buffer, and indices into that buffer where the appid and -// steamid are located. the sizes of the appid and steamid are implicit in -// (each version of) the interface - currently uin32 appid and uint64 steamid -//----------------------------------------------------------------------------- -class ISteamAppTicket -{ -public: - virtual uint32 GetAppOwnershipTicketData( uint32 nAppID, void *pvBuffer, uint32 cbBufferLength, uint32 *piAppId, uint32 *piSteamId, uint32 *piSignature, uint32 *pcbSignature ) = 0; -}; - -#define STEAMAPPTICKET_INTERFACE_VERSION "STEAMAPPTICKET_INTERFACE_VERSION001" - - -#endif // ISTEAMAPPTICKET_H +//====== Copyright 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: a private, but well versioned, interface to get at critical bits +// of a steam3 appticket - consumed by the simple drm wrapper to let it +// ask about ownership with greater confidence. +// +//============================================================================= + +#ifndef ISTEAMAPPTICKET_H +#define ISTEAMAPPTICKET_H +#pragma once + +//----------------------------------------------------------------------------- +// Purpose: hand out a reasonable "future proof" view of an app ownership ticket +// the raw (signed) buffer, and indices into that buffer where the appid and +// steamid are located. the sizes of the appid and steamid are implicit in +// (each version of) the interface - currently uin32 appid and uint64 steamid +//----------------------------------------------------------------------------- +class ISteamAppTicket +{ +public: + virtual uint32 GetAppOwnershipTicketData( uint32 nAppID, void *pvBuffer, uint32 cbBufferLength, uint32 *piAppId, uint32 *piSteamId, uint32 *piSignature, uint32 *pcbSignature ) = 0; +}; + +#define STEAMAPPTICKET_INTERFACE_VERSION "STEAMAPPTICKET_INTERFACE_VERSION001" + + +#endif // ISTEAMAPPTICKET_H diff --git a/CodeGen/steam/isteamclient.h b/CodeGen/steam/isteamclient.h index 682e8508..3278780f 100644 --- a/CodeGen/steam/isteamclient.h +++ b/CodeGen/steam/isteamclient.h @@ -1,179 +1,179 @@ -//====== Copyright Valve Corporation, All rights reserved. ==================== -// -// Internal low-level access to Steamworks interfaces. -// -// Most users of the Steamworks SDK do not need to include this file. -// You should only include this if you are doing something special. -//============================================================================= - -#ifndef ISTEAMCLIENT_H -#define ISTEAMCLIENT_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" - -//----------------------------------------------------------------------------- -// Purpose: Interface to creating a new steam instance, or to -// connect to an existing steam instance, whether it's in a -// different process or is local. -// -// For most scenarios this is all handled automatically via SteamAPI_Init(). -// You'll only need these APIs if you have a more complex versioning scheme, -// or if you want to implement a multiplexed gameserver where a single process -// is handling multiple games at once with independent gameserver SteamIDs. -//----------------------------------------------------------------------------- -class ISteamClient -{ -public: - // Creates a communication pipe to the Steam client. - // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling - virtual HSteamPipe CreateSteamPipe() = 0; - - // Releases a previously created communications pipe - // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling - virtual bool BReleaseSteamPipe( HSteamPipe hSteamPipe ) = 0; - - // connects to an existing global user, failing if none exists - // used by the game to coordinate with the steamUI - // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling - virtual HSteamUser ConnectToGlobalUser( HSteamPipe hSteamPipe ) = 0; - - // used by game servers, create a steam user that won't be shared with anyone else - // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling - virtual HSteamUser CreateLocalUser( HSteamPipe *phSteamPipe, EAccountType eAccountType ) = 0; - - // removes an allocated user - // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling - virtual void ReleaseUser( HSteamPipe hSteamPipe, HSteamUser hUser ) = 0; - - // retrieves the ISteamUser interface associated with the handle - virtual ISteamUser *GetISteamUser( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // retrieves the ISteamGameServer interface associated with the handle - virtual ISteamGameServer *GetISteamGameServer( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // set the local IP and Port to bind to - // this must be set before CreateLocalUser() - virtual void SetLocalIPBinding( const SteamIPAddress_t &unIP, uint16 usPort ) = 0; - - // returns the ISteamFriends interface - virtual ISteamFriends *GetISteamFriends( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // returns the ISteamUtils interface - virtual ISteamUtils *GetISteamUtils( HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // returns the ISteamMatchmaking interface - virtual ISteamMatchmaking *GetISteamMatchmaking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // returns the ISteamMatchmakingServers interface - virtual ISteamMatchmakingServers *GetISteamMatchmakingServers( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // returns the a generic interface - virtual void *GetISteamGenericInterface( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // returns the ISteamUserStats interface - virtual ISteamUserStats *GetISteamUserStats( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // returns the ISteamGameServerStats interface - virtual ISteamGameServerStats *GetISteamGameServerStats( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // returns apps interface - virtual ISteamApps *GetISteamApps( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // networking - virtual ISteamNetworking *GetISteamNetworking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // remote storage - virtual ISteamRemoteStorage *GetISteamRemoteStorage( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // user screenshots - virtual ISteamScreenshots *GetISteamScreenshots( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // game search - virtual ISteamGameSearch *GetISteamGameSearch( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // Deprecated. Applications should use SteamAPI_RunCallbacks() or SteamGameServer_RunCallbacks() instead. - STEAM_PRIVATE_API( virtual void RunFrame() = 0; ) - - // returns the number of IPC calls made since the last time this function was called - // Used for perf debugging so you can understand how many IPC calls your game makes per frame - // Every IPC call is at minimum a thread context switch if not a process one so you want to rate - // control how often you do them. - virtual uint32 GetIPCCallCount() = 0; - - // API warning handling - // 'int' is the severity; 0 for msg, 1 for warning - // 'const char *' is the text of the message - // callbacks will occur directly after the API function is called that generated the warning or message. - virtual void SetWarningMessageHook( SteamAPIWarningMessageHook_t pFunction ) = 0; - - // Trigger global shutdown for the DLL - virtual bool BShutdownIfAllPipesClosed() = 0; - - // Expose HTTP interface - virtual ISteamHTTP *GetISteamHTTP( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // Deprecated - the ISteamUnifiedMessages interface is no longer intended for public consumption. - STEAM_PRIVATE_API( virtual void *DEPRECATED_GetISteamUnifiedMessages( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0 ; ) - - // Exposes the ISteamController interface - deprecated in favor of Steam Input - virtual ISteamController *GetISteamController( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // Exposes the ISteamUGC interface - virtual ISteamUGC *GetISteamUGC( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // returns app list interface, only available on specially registered apps - virtual ISteamAppList *GetISteamAppList( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // Music Player - virtual ISteamMusic *GetISteamMusic( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // Music Player Remote - virtual ISteamMusicRemote *GetISteamMusicRemote(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) = 0; - - // html page display - virtual ISteamHTMLSurface *GetISteamHTMLSurface(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) = 0; - - // Helper functions for internal Steam usage - STEAM_PRIVATE_API( virtual void DEPRECATED_Set_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; ) - STEAM_PRIVATE_API( virtual void DEPRECATED_Remove_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; ) - STEAM_PRIVATE_API( virtual void Set_SteamAPI_CCheckCallbackRegisteredInProcess( SteamAPI_CheckCallbackRegistered_t func ) = 0; ) - - // inventory - virtual ISteamInventory *GetISteamInventory( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // Video - virtual ISteamVideo *GetISteamVideo( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // Parental controls - virtual ISteamParentalSettings *GetISteamParentalSettings( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // Exposes the Steam Input interface for controller support - virtual ISteamInput *GetISteamInput( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // Steam Parties interface - virtual ISteamParties *GetISteamParties( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - // Steam Remote Play interface - virtual ISteamRemotePlay *GetISteamRemotePlay( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - - STEAM_PRIVATE_API( virtual void DestroyAllInterfaces() = 0; ) - -}; -#define STEAMCLIENT_INTERFACE_VERSION "SteamClient020" - -#ifndef STEAM_API_EXPORTS - -// Global ISteamClient interface accessor -inline ISteamClient *SteamClient(); -STEAM_DEFINE_INTERFACE_ACCESSOR( ISteamClient *, SteamClient, SteamInternal_CreateInterface( STEAMCLIENT_INTERFACE_VERSION ), "global", STEAMCLIENT_INTERFACE_VERSION ); - -// The internal ISteamClient used for the gameserver interface. -// (This is actually the same thing. You really shouldn't need to access any of this stuff directly.) -inline ISteamClient *SteamGameServerClient() { return SteamClient(); } - -#endif - -#endif // ISTEAMCLIENT_H +//====== Copyright Valve Corporation, All rights reserved. ==================== +// +// Internal low-level access to Steamworks interfaces. +// +// Most users of the Steamworks SDK do not need to include this file. +// You should only include this if you are doing something special. +//============================================================================= + +#ifndef ISTEAMCLIENT_H +#define ISTEAMCLIENT_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + +//----------------------------------------------------------------------------- +// Purpose: Interface to creating a new steam instance, or to +// connect to an existing steam instance, whether it's in a +// different process or is local. +// +// For most scenarios this is all handled automatically via SteamAPI_Init(). +// You'll only need these APIs if you have a more complex versioning scheme, +// or if you want to implement a multiplexed gameserver where a single process +// is handling multiple games at once with independent gameserver SteamIDs. +//----------------------------------------------------------------------------- +class ISteamClient +{ +public: + // Creates a communication pipe to the Steam client. + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual HSteamPipe CreateSteamPipe() = 0; + + // Releases a previously created communications pipe + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual bool BReleaseSteamPipe( HSteamPipe hSteamPipe ) = 0; + + // connects to an existing global user, failing if none exists + // used by the game to coordinate with the steamUI + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual HSteamUser ConnectToGlobalUser( HSteamPipe hSteamPipe ) = 0; + + // used by game servers, create a steam user that won't be shared with anyone else + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual HSteamUser CreateLocalUser( HSteamPipe *phSteamPipe, EAccountType eAccountType ) = 0; + + // removes an allocated user + // NOT THREADSAFE - ensure that no other threads are accessing Steamworks API when calling + virtual void ReleaseUser( HSteamPipe hSteamPipe, HSteamUser hUser ) = 0; + + // retrieves the ISteamUser interface associated with the handle + virtual ISteamUser *GetISteamUser( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // retrieves the ISteamGameServer interface associated with the handle + virtual ISteamGameServer *GetISteamGameServer( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // set the local IP and Port to bind to + // this must be set before CreateLocalUser() + virtual void SetLocalIPBinding( const SteamIPAddress_t &unIP, uint16 usPort ) = 0; + + // returns the ISteamFriends interface + virtual ISteamFriends *GetISteamFriends( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamUtils interface + virtual ISteamUtils *GetISteamUtils( HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamMatchmaking interface + virtual ISteamMatchmaking *GetISteamMatchmaking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamMatchmakingServers interface + virtual ISteamMatchmakingServers *GetISteamMatchmakingServers( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the a generic interface + virtual void *GetISteamGenericInterface( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamUserStats interface + virtual ISteamUserStats *GetISteamUserStats( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns the ISteamGameServerStats interface + virtual ISteamGameServerStats *GetISteamGameServerStats( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns apps interface + virtual ISteamApps *GetISteamApps( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // networking + virtual ISteamNetworking *GetISteamNetworking( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // remote storage + virtual ISteamRemoteStorage *GetISteamRemoteStorage( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // user screenshots + virtual ISteamScreenshots *GetISteamScreenshots( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // game search + virtual ISteamGameSearch *GetISteamGameSearch( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Deprecated. Applications should use SteamAPI_RunCallbacks() or SteamGameServer_RunCallbacks() instead. + STEAM_PRIVATE_API( virtual void RunFrame() = 0; ) + + // returns the number of IPC calls made since the last time this function was called + // Used for perf debugging so you can understand how many IPC calls your game makes per frame + // Every IPC call is at minimum a thread context switch if not a process one so you want to rate + // control how often you do them. + virtual uint32 GetIPCCallCount() = 0; + + // API warning handling + // 'int' is the severity; 0 for msg, 1 for warning + // 'const char *' is the text of the message + // callbacks will occur directly after the API function is called that generated the warning or message. + virtual void SetWarningMessageHook( SteamAPIWarningMessageHook_t pFunction ) = 0; + + // Trigger global shutdown for the DLL + virtual bool BShutdownIfAllPipesClosed() = 0; + + // Expose HTTP interface + virtual ISteamHTTP *GetISteamHTTP( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Deprecated - the ISteamUnifiedMessages interface is no longer intended for public consumption. + STEAM_PRIVATE_API( virtual void *DEPRECATED_GetISteamUnifiedMessages( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0 ; ) + + // Exposes the ISteamController interface - deprecated in favor of Steam Input + virtual ISteamController *GetISteamController( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Exposes the ISteamUGC interface + virtual ISteamUGC *GetISteamUGC( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // returns app list interface, only available on specially registered apps + virtual ISteamAppList *GetISteamAppList( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Music Player + virtual ISteamMusic *GetISteamMusic( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Music Player Remote + virtual ISteamMusicRemote *GetISteamMusicRemote(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) = 0; + + // html page display + virtual ISteamHTMLSurface *GetISteamHTMLSurface(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) = 0; + + // Helper functions for internal Steam usage + STEAM_PRIVATE_API( virtual void DEPRECATED_Set_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; ) + STEAM_PRIVATE_API( virtual void DEPRECATED_Remove_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; ) + STEAM_PRIVATE_API( virtual void Set_SteamAPI_CCheckCallbackRegisteredInProcess( SteamAPI_CheckCallbackRegistered_t func ) = 0; ) + + // inventory + virtual ISteamInventory *GetISteamInventory( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Video + virtual ISteamVideo *GetISteamVideo( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Parental controls + virtual ISteamParentalSettings *GetISteamParentalSettings( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Exposes the Steam Input interface for controller support + virtual ISteamInput *GetISteamInput( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Steam Parties interface + virtual ISteamParties *GetISteamParties( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + // Steam Remote Play interface + virtual ISteamRemotePlay *GetISteamRemotePlay( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; + + STEAM_PRIVATE_API( virtual void DestroyAllInterfaces() = 0; ) + +}; +#define STEAMCLIENT_INTERFACE_VERSION "SteamClient020" + +#ifndef STEAM_API_EXPORTS + +// Global ISteamClient interface accessor +inline ISteamClient *SteamClient(); +STEAM_DEFINE_INTERFACE_ACCESSOR( ISteamClient *, SteamClient, SteamInternal_CreateInterface( STEAMCLIENT_INTERFACE_VERSION ), "global", STEAMCLIENT_INTERFACE_VERSION ); + +// The internal ISteamClient used for the gameserver interface. +// (This is actually the same thing. You really shouldn't need to access any of this stuff directly.) +inline ISteamClient *SteamGameServerClient() { return SteamClient(); } + +#endif + +#endif // ISTEAMCLIENT_H diff --git a/CodeGen/steam/isteamcontroller.h b/CodeGen/steam/isteamcontroller.h index 3f2b5bfa..2c5414b4 100644 --- a/CodeGen/steam/isteamcontroller.h +++ b/CodeGen/steam/isteamcontroller.h @@ -1,636 +1,636 @@ -//====== Copyright 1996-2018, Valve Corporation, All rights reserved. ======= -// Note: The older ISteamController interface has been deprecated in favor of ISteamInput - this interface -// was updated in this SDK but will be removed from future SDK's. The Steam Client will retain -// compatibility with the older interfaces so your any existing integrations should be unaffected. -// -// Purpose: Steam Input is a flexible input API that supports over three hundred devices including all -// common variants of Xbox, Playstation, Nintendo Switch Pro, and Steam Controllers. -// For more info including a getting started guide for developers -// please visit: https://partner.steamgames.com/doc/features/steam_controller -// -//============================================================================= - -#ifndef ISTEAMCONTROLLER_H -#define ISTEAMCONTROLLER_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" -#include "isteaminput.h" - -#define STEAM_CONTROLLER_MAX_COUNT 16 - -#define STEAM_CONTROLLER_MAX_ANALOG_ACTIONS 16 - -#define STEAM_CONTROLLER_MAX_DIGITAL_ACTIONS 128 - -#define STEAM_CONTROLLER_MAX_ORIGINS 8 - -#define STEAM_CONTROLLER_MAX_ACTIVE_LAYERS 16 - -// When sending an option to a specific controller handle, you can send to all controllers via this command -#define STEAM_CONTROLLER_HANDLE_ALL_CONTROLLERS UINT64_MAX - -#define STEAM_CONTROLLER_MIN_ANALOG_ACTION_DATA -1.0f -#define STEAM_CONTROLLER_MAX_ANALOG_ACTION_DATA 1.0f - -#ifndef ISTEAMINPUT_H -enum ESteamControllerPad -{ - k_ESteamControllerPad_Left, - k_ESteamControllerPad_Right -}; -#endif - -// Note: Please do not use action origins as a way to identify controller types. There is no -// guarantee that they will be added in a contiguous manner - use GetInputTypeForHandle instead -// Versions of Steam that add new controller types in the future will extend this enum if you're -// using a lookup table please check the bounds of any origins returned by Steam. -enum EControllerActionOrigin -{ - // Steam Controller - k_EControllerActionOrigin_None, - k_EControllerActionOrigin_A, - k_EControllerActionOrigin_B, - k_EControllerActionOrigin_X, - k_EControllerActionOrigin_Y, - k_EControllerActionOrigin_LeftBumper, - k_EControllerActionOrigin_RightBumper, - k_EControllerActionOrigin_LeftGrip, - k_EControllerActionOrigin_RightGrip, - k_EControllerActionOrigin_Start, - k_EControllerActionOrigin_Back, - k_EControllerActionOrigin_LeftPad_Touch, - k_EControllerActionOrigin_LeftPad_Swipe, - k_EControllerActionOrigin_LeftPad_Click, - k_EControllerActionOrigin_LeftPad_DPadNorth, - k_EControllerActionOrigin_LeftPad_DPadSouth, - k_EControllerActionOrigin_LeftPad_DPadWest, - k_EControllerActionOrigin_LeftPad_DPadEast, - k_EControllerActionOrigin_RightPad_Touch, - k_EControllerActionOrigin_RightPad_Swipe, - k_EControllerActionOrigin_RightPad_Click, - k_EControllerActionOrigin_RightPad_DPadNorth, - k_EControllerActionOrigin_RightPad_DPadSouth, - k_EControllerActionOrigin_RightPad_DPadWest, - k_EControllerActionOrigin_RightPad_DPadEast, - k_EControllerActionOrigin_LeftTrigger_Pull, - k_EControllerActionOrigin_LeftTrigger_Click, - k_EControllerActionOrigin_RightTrigger_Pull, - k_EControllerActionOrigin_RightTrigger_Click, - k_EControllerActionOrigin_LeftStick_Move, - k_EControllerActionOrigin_LeftStick_Click, - k_EControllerActionOrigin_LeftStick_DPadNorth, - k_EControllerActionOrigin_LeftStick_DPadSouth, - k_EControllerActionOrigin_LeftStick_DPadWest, - k_EControllerActionOrigin_LeftStick_DPadEast, - k_EControllerActionOrigin_Gyro_Move, - k_EControllerActionOrigin_Gyro_Pitch, - k_EControllerActionOrigin_Gyro_Yaw, - k_EControllerActionOrigin_Gyro_Roll, - - // PS4 Dual Shock - k_EControllerActionOrigin_PS4_X, - k_EControllerActionOrigin_PS4_Circle, - k_EControllerActionOrigin_PS4_Triangle, - k_EControllerActionOrigin_PS4_Square, - k_EControllerActionOrigin_PS4_LeftBumper, - k_EControllerActionOrigin_PS4_RightBumper, - k_EControllerActionOrigin_PS4_Options, //Start - k_EControllerActionOrigin_PS4_Share, //Back - k_EControllerActionOrigin_PS4_LeftPad_Touch, - k_EControllerActionOrigin_PS4_LeftPad_Swipe, - k_EControllerActionOrigin_PS4_LeftPad_Click, - k_EControllerActionOrigin_PS4_LeftPad_DPadNorth, - k_EControllerActionOrigin_PS4_LeftPad_DPadSouth, - k_EControllerActionOrigin_PS4_LeftPad_DPadWest, - k_EControllerActionOrigin_PS4_LeftPad_DPadEast, - k_EControllerActionOrigin_PS4_RightPad_Touch, - k_EControllerActionOrigin_PS4_RightPad_Swipe, - k_EControllerActionOrigin_PS4_RightPad_Click, - k_EControllerActionOrigin_PS4_RightPad_DPadNorth, - k_EControllerActionOrigin_PS4_RightPad_DPadSouth, - k_EControllerActionOrigin_PS4_RightPad_DPadWest, - k_EControllerActionOrigin_PS4_RightPad_DPadEast, - k_EControllerActionOrigin_PS4_CenterPad_Touch, - k_EControllerActionOrigin_PS4_CenterPad_Swipe, - k_EControllerActionOrigin_PS4_CenterPad_Click, - k_EControllerActionOrigin_PS4_CenterPad_DPadNorth, - k_EControllerActionOrigin_PS4_CenterPad_DPadSouth, - k_EControllerActionOrigin_PS4_CenterPad_DPadWest, - k_EControllerActionOrigin_PS4_CenterPad_DPadEast, - k_EControllerActionOrigin_PS4_LeftTrigger_Pull, - k_EControllerActionOrigin_PS4_LeftTrigger_Click, - k_EControllerActionOrigin_PS4_RightTrigger_Pull, - k_EControllerActionOrigin_PS4_RightTrigger_Click, - k_EControllerActionOrigin_PS4_LeftStick_Move, - k_EControllerActionOrigin_PS4_LeftStick_Click, - k_EControllerActionOrigin_PS4_LeftStick_DPadNorth, - k_EControllerActionOrigin_PS4_LeftStick_DPadSouth, - k_EControllerActionOrigin_PS4_LeftStick_DPadWest, - k_EControllerActionOrigin_PS4_LeftStick_DPadEast, - k_EControllerActionOrigin_PS4_RightStick_Move, - k_EControllerActionOrigin_PS4_RightStick_Click, - k_EControllerActionOrigin_PS4_RightStick_DPadNorth, - k_EControllerActionOrigin_PS4_RightStick_DPadSouth, - k_EControllerActionOrigin_PS4_RightStick_DPadWest, - k_EControllerActionOrigin_PS4_RightStick_DPadEast, - k_EControllerActionOrigin_PS4_DPad_North, - k_EControllerActionOrigin_PS4_DPad_South, - k_EControllerActionOrigin_PS4_DPad_West, - k_EControllerActionOrigin_PS4_DPad_East, - k_EControllerActionOrigin_PS4_Gyro_Move, - k_EControllerActionOrigin_PS4_Gyro_Pitch, - k_EControllerActionOrigin_PS4_Gyro_Yaw, - k_EControllerActionOrigin_PS4_Gyro_Roll, - - // XBox One - k_EControllerActionOrigin_XBoxOne_A, - k_EControllerActionOrigin_XBoxOne_B, - k_EControllerActionOrigin_XBoxOne_X, - k_EControllerActionOrigin_XBoxOne_Y, - k_EControllerActionOrigin_XBoxOne_LeftBumper, - k_EControllerActionOrigin_XBoxOne_RightBumper, - k_EControllerActionOrigin_XBoxOne_Menu, //Start - k_EControllerActionOrigin_XBoxOne_View, //Back - k_EControllerActionOrigin_XBoxOne_LeftTrigger_Pull, - k_EControllerActionOrigin_XBoxOne_LeftTrigger_Click, - k_EControllerActionOrigin_XBoxOne_RightTrigger_Pull, - k_EControllerActionOrigin_XBoxOne_RightTrigger_Click, - k_EControllerActionOrigin_XBoxOne_LeftStick_Move, - k_EControllerActionOrigin_XBoxOne_LeftStick_Click, - k_EControllerActionOrigin_XBoxOne_LeftStick_DPadNorth, - k_EControllerActionOrigin_XBoxOne_LeftStick_DPadSouth, - k_EControllerActionOrigin_XBoxOne_LeftStick_DPadWest, - k_EControllerActionOrigin_XBoxOne_LeftStick_DPadEast, - k_EControllerActionOrigin_XBoxOne_RightStick_Move, - k_EControllerActionOrigin_XBoxOne_RightStick_Click, - k_EControllerActionOrigin_XBoxOne_RightStick_DPadNorth, - k_EControllerActionOrigin_XBoxOne_RightStick_DPadSouth, - k_EControllerActionOrigin_XBoxOne_RightStick_DPadWest, - k_EControllerActionOrigin_XBoxOne_RightStick_DPadEast, - k_EControllerActionOrigin_XBoxOne_DPad_North, - k_EControllerActionOrigin_XBoxOne_DPad_South, - k_EControllerActionOrigin_XBoxOne_DPad_West, - k_EControllerActionOrigin_XBoxOne_DPad_East, - - // XBox 360 - k_EControllerActionOrigin_XBox360_A, - k_EControllerActionOrigin_XBox360_B, - k_EControllerActionOrigin_XBox360_X, - k_EControllerActionOrigin_XBox360_Y, - k_EControllerActionOrigin_XBox360_LeftBumper, - k_EControllerActionOrigin_XBox360_RightBumper, - k_EControllerActionOrigin_XBox360_Start, //Start - k_EControllerActionOrigin_XBox360_Back, //Back - k_EControllerActionOrigin_XBox360_LeftTrigger_Pull, - k_EControllerActionOrigin_XBox360_LeftTrigger_Click, - k_EControllerActionOrigin_XBox360_RightTrigger_Pull, - k_EControllerActionOrigin_XBox360_RightTrigger_Click, - k_EControllerActionOrigin_XBox360_LeftStick_Move, - k_EControllerActionOrigin_XBox360_LeftStick_Click, - k_EControllerActionOrigin_XBox360_LeftStick_DPadNorth, - k_EControllerActionOrigin_XBox360_LeftStick_DPadSouth, - k_EControllerActionOrigin_XBox360_LeftStick_DPadWest, - k_EControllerActionOrigin_XBox360_LeftStick_DPadEast, - k_EControllerActionOrigin_XBox360_RightStick_Move, - k_EControllerActionOrigin_XBox360_RightStick_Click, - k_EControllerActionOrigin_XBox360_RightStick_DPadNorth, - k_EControllerActionOrigin_XBox360_RightStick_DPadSouth, - k_EControllerActionOrigin_XBox360_RightStick_DPadWest, - k_EControllerActionOrigin_XBox360_RightStick_DPadEast, - k_EControllerActionOrigin_XBox360_DPad_North, - k_EControllerActionOrigin_XBox360_DPad_South, - k_EControllerActionOrigin_XBox360_DPad_West, - k_EControllerActionOrigin_XBox360_DPad_East, - - // SteamController V2 - k_EControllerActionOrigin_SteamV2_A, - k_EControllerActionOrigin_SteamV2_B, - k_EControllerActionOrigin_SteamV2_X, - k_EControllerActionOrigin_SteamV2_Y, - k_EControllerActionOrigin_SteamV2_LeftBumper, - k_EControllerActionOrigin_SteamV2_RightBumper, - k_EControllerActionOrigin_SteamV2_LeftGrip_Lower, - k_EControllerActionOrigin_SteamV2_LeftGrip_Upper, - k_EControllerActionOrigin_SteamV2_RightGrip_Lower, - k_EControllerActionOrigin_SteamV2_RightGrip_Upper, - k_EControllerActionOrigin_SteamV2_LeftBumper_Pressure, - k_EControllerActionOrigin_SteamV2_RightBumper_Pressure, - k_EControllerActionOrigin_SteamV2_LeftGrip_Pressure, - k_EControllerActionOrigin_SteamV2_RightGrip_Pressure, - k_EControllerActionOrigin_SteamV2_LeftGrip_Upper_Pressure, - k_EControllerActionOrigin_SteamV2_RightGrip_Upper_Pressure, - k_EControllerActionOrigin_SteamV2_Start, - k_EControllerActionOrigin_SteamV2_Back, - k_EControllerActionOrigin_SteamV2_LeftPad_Touch, - k_EControllerActionOrigin_SteamV2_LeftPad_Swipe, - k_EControllerActionOrigin_SteamV2_LeftPad_Click, - k_EControllerActionOrigin_SteamV2_LeftPad_Pressure, - k_EControllerActionOrigin_SteamV2_LeftPad_DPadNorth, - k_EControllerActionOrigin_SteamV2_LeftPad_DPadSouth, - k_EControllerActionOrigin_SteamV2_LeftPad_DPadWest, - k_EControllerActionOrigin_SteamV2_LeftPad_DPadEast, - k_EControllerActionOrigin_SteamV2_RightPad_Touch, - k_EControllerActionOrigin_SteamV2_RightPad_Swipe, - k_EControllerActionOrigin_SteamV2_RightPad_Click, - k_EControllerActionOrigin_SteamV2_RightPad_Pressure, - k_EControllerActionOrigin_SteamV2_RightPad_DPadNorth, - k_EControllerActionOrigin_SteamV2_RightPad_DPadSouth, - k_EControllerActionOrigin_SteamV2_RightPad_DPadWest, - k_EControllerActionOrigin_SteamV2_RightPad_DPadEast, - k_EControllerActionOrigin_SteamV2_LeftTrigger_Pull, - k_EControllerActionOrigin_SteamV2_LeftTrigger_Click, - k_EControllerActionOrigin_SteamV2_RightTrigger_Pull, - k_EControllerActionOrigin_SteamV2_RightTrigger_Click, - k_EControllerActionOrigin_SteamV2_LeftStick_Move, - k_EControllerActionOrigin_SteamV2_LeftStick_Click, - k_EControllerActionOrigin_SteamV2_LeftStick_DPadNorth, - k_EControllerActionOrigin_SteamV2_LeftStick_DPadSouth, - k_EControllerActionOrigin_SteamV2_LeftStick_DPadWest, - k_EControllerActionOrigin_SteamV2_LeftStick_DPadEast, - k_EControllerActionOrigin_SteamV2_Gyro_Move, - k_EControllerActionOrigin_SteamV2_Gyro_Pitch, - k_EControllerActionOrigin_SteamV2_Gyro_Yaw, - k_EControllerActionOrigin_SteamV2_Gyro_Roll, - - // Switch - Pro or Joycons used as a single input device. - // This does not apply to a single joycon - k_EControllerActionOrigin_Switch_A, - k_EControllerActionOrigin_Switch_B, - k_EControllerActionOrigin_Switch_X, - k_EControllerActionOrigin_Switch_Y, - k_EControllerActionOrigin_Switch_LeftBumper, - k_EControllerActionOrigin_Switch_RightBumper, - k_EControllerActionOrigin_Switch_Plus, //Start - k_EControllerActionOrigin_Switch_Minus, //Back - k_EControllerActionOrigin_Switch_Capture, - k_EControllerActionOrigin_Switch_LeftTrigger_Pull, - k_EControllerActionOrigin_Switch_LeftTrigger_Click, - k_EControllerActionOrigin_Switch_RightTrigger_Pull, - k_EControllerActionOrigin_Switch_RightTrigger_Click, - k_EControllerActionOrigin_Switch_LeftStick_Move, - k_EControllerActionOrigin_Switch_LeftStick_Click, - k_EControllerActionOrigin_Switch_LeftStick_DPadNorth, - k_EControllerActionOrigin_Switch_LeftStick_DPadSouth, - k_EControllerActionOrigin_Switch_LeftStick_DPadWest, - k_EControllerActionOrigin_Switch_LeftStick_DPadEast, - k_EControllerActionOrigin_Switch_RightStick_Move, - k_EControllerActionOrigin_Switch_RightStick_Click, - k_EControllerActionOrigin_Switch_RightStick_DPadNorth, - k_EControllerActionOrigin_Switch_RightStick_DPadSouth, - k_EControllerActionOrigin_Switch_RightStick_DPadWest, - k_EControllerActionOrigin_Switch_RightStick_DPadEast, - k_EControllerActionOrigin_Switch_DPad_North, - k_EControllerActionOrigin_Switch_DPad_South, - k_EControllerActionOrigin_Switch_DPad_West, - k_EControllerActionOrigin_Switch_DPad_East, - k_EControllerActionOrigin_Switch_ProGyro_Move, // Primary Gyro in Pro Controller, or Right JoyCon - k_EControllerActionOrigin_Switch_ProGyro_Pitch, // Primary Gyro in Pro Controller, or Right JoyCon - k_EControllerActionOrigin_Switch_ProGyro_Yaw, // Primary Gyro in Pro Controller, or Right JoyCon - k_EControllerActionOrigin_Switch_ProGyro_Roll, // Primary Gyro in Pro Controller, or Right JoyCon - // Switch JoyCon Specific - k_EControllerActionOrigin_Switch_RightGyro_Move, // Right JoyCon Gyro generally should correspond to Pro's single gyro - k_EControllerActionOrigin_Switch_RightGyro_Pitch, // Right JoyCon Gyro generally should correspond to Pro's single gyro - k_EControllerActionOrigin_Switch_RightGyro_Yaw, // Right JoyCon Gyro generally should correspond to Pro's single gyro - k_EControllerActionOrigin_Switch_RightGyro_Roll, // Right JoyCon Gyro generally should correspond to Pro's single gyro - k_EControllerActionOrigin_Switch_LeftGyro_Move, - k_EControllerActionOrigin_Switch_LeftGyro_Pitch, - k_EControllerActionOrigin_Switch_LeftGyro_Yaw, - k_EControllerActionOrigin_Switch_LeftGyro_Roll, - k_EControllerActionOrigin_Switch_LeftGrip_Lower, // Left JoyCon SR Button - k_EControllerActionOrigin_Switch_LeftGrip_Upper, // Left JoyCon SL Button - k_EControllerActionOrigin_Switch_RightGrip_Lower, // Right JoyCon SL Button - k_EControllerActionOrigin_Switch_RightGrip_Upper, // Right JoyCon SR Button - - // Added in SDK 1.45 - k_EControllerActionOrigin_PS4_DPad_Move, - k_EControllerActionOrigin_XBoxOne_DPad_Move, - k_EControllerActionOrigin_XBox360_DPad_Move, - k_EControllerActionOrigin_Switch_DPad_Move, - - // Added in SDK 1.51 - k_EControllerActionOrigin_PS5_X, - k_EControllerActionOrigin_PS5_Circle, - k_EControllerActionOrigin_PS5_Triangle, - k_EControllerActionOrigin_PS5_Square, - k_EControllerActionOrigin_PS5_LeftBumper, - k_EControllerActionOrigin_PS5_RightBumper, - k_EControllerActionOrigin_PS5_Option, //Start - k_EControllerActionOrigin_PS5_Create, //Back - k_EControllerActionOrigin_PS5_Mute, - k_EControllerActionOrigin_PS5_LeftPad_Touch, - k_EControllerActionOrigin_PS5_LeftPad_Swipe, - k_EControllerActionOrigin_PS5_LeftPad_Click, - k_EControllerActionOrigin_PS5_LeftPad_DPadNorth, - k_EControllerActionOrigin_PS5_LeftPad_DPadSouth, - k_EControllerActionOrigin_PS5_LeftPad_DPadWest, - k_EControllerActionOrigin_PS5_LeftPad_DPadEast, - k_EControllerActionOrigin_PS5_RightPad_Touch, - k_EControllerActionOrigin_PS5_RightPad_Swipe, - k_EControllerActionOrigin_PS5_RightPad_Click, - k_EControllerActionOrigin_PS5_RightPad_DPadNorth, - k_EControllerActionOrigin_PS5_RightPad_DPadSouth, - k_EControllerActionOrigin_PS5_RightPad_DPadWest, - k_EControllerActionOrigin_PS5_RightPad_DPadEast, - k_EControllerActionOrigin_PS5_CenterPad_Touch, - k_EControllerActionOrigin_PS5_CenterPad_Swipe, - k_EControllerActionOrigin_PS5_CenterPad_Click, - k_EControllerActionOrigin_PS5_CenterPad_DPadNorth, - k_EControllerActionOrigin_PS5_CenterPad_DPadSouth, - k_EControllerActionOrigin_PS5_CenterPad_DPadWest, - k_EControllerActionOrigin_PS5_CenterPad_DPadEast, - k_EControllerActionOrigin_PS5_LeftTrigger_Pull, - k_EControllerActionOrigin_PS5_LeftTrigger_Click, - k_EControllerActionOrigin_PS5_RightTrigger_Pull, - k_EControllerActionOrigin_PS5_RightTrigger_Click, - k_EControllerActionOrigin_PS5_LeftStick_Move, - k_EControllerActionOrigin_PS5_LeftStick_Click, - k_EControllerActionOrigin_PS5_LeftStick_DPadNorth, - k_EControllerActionOrigin_PS5_LeftStick_DPadSouth, - k_EControllerActionOrigin_PS5_LeftStick_DPadWest, - k_EControllerActionOrigin_PS5_LeftStick_DPadEast, - k_EControllerActionOrigin_PS5_RightStick_Move, - k_EControllerActionOrigin_PS5_RightStick_Click, - k_EControllerActionOrigin_PS5_RightStick_DPadNorth, - k_EControllerActionOrigin_PS5_RightStick_DPadSouth, - k_EControllerActionOrigin_PS5_RightStick_DPadWest, - k_EControllerActionOrigin_PS5_RightStick_DPadEast, - k_EControllerActionOrigin_PS5_DPad_Move, - k_EControllerActionOrigin_PS5_DPad_North, - k_EControllerActionOrigin_PS5_DPad_South, - k_EControllerActionOrigin_PS5_DPad_West, - k_EControllerActionOrigin_PS5_DPad_East, - k_EControllerActionOrigin_PS5_Gyro_Move, - k_EControllerActionOrigin_PS5_Gyro_Pitch, - k_EControllerActionOrigin_PS5_Gyro_Yaw, - k_EControllerActionOrigin_PS5_Gyro_Roll, - - - k_EControllerActionOrigin_Count, // If Steam has added support for new controllers origins will go here. - k_EControllerActionOrigin_MaximumPossibleValue = 32767, // Origins are currently a maximum of 16 bits. -}; - -#ifndef ISTEAMINPUT_H -enum EXboxOrigin -{ - k_EXboxOrigin_A, - k_EXboxOrigin_B, - k_EXboxOrigin_X, - k_EXboxOrigin_Y, - k_EXboxOrigin_LeftBumper, - k_EXboxOrigin_RightBumper, - k_EXboxOrigin_Menu, //Start - k_EXboxOrigin_View, //Back - k_EXboxOrigin_LeftTrigger_Pull, - k_EXboxOrigin_LeftTrigger_Click, - k_EXboxOrigin_RightTrigger_Pull, - k_EXboxOrigin_RightTrigger_Click, - k_EXboxOrigin_LeftStick_Move, - k_EXboxOrigin_LeftStick_Click, - k_EXboxOrigin_LeftStick_DPadNorth, - k_EXboxOrigin_LeftStick_DPadSouth, - k_EXboxOrigin_LeftStick_DPadWest, - k_EXboxOrigin_LeftStick_DPadEast, - k_EXboxOrigin_RightStick_Move, - k_EXboxOrigin_RightStick_Click, - k_EXboxOrigin_RightStick_DPadNorth, - k_EXboxOrigin_RightStick_DPadSouth, - k_EXboxOrigin_RightStick_DPadWest, - k_EXboxOrigin_RightStick_DPadEast, - k_EXboxOrigin_DPad_North, - k_EXboxOrigin_DPad_South, - k_EXboxOrigin_DPad_West, - k_EXboxOrigin_DPad_East, -}; - -enum ESteamInputType -{ - k_ESteamInputType_Unknown, - k_ESteamInputType_SteamController, - k_ESteamInputType_XBox360Controller, - k_ESteamInputType_XBoxOneController, - k_ESteamInputType_GenericGamepad, // DirectInput controllers - k_ESteamInputType_PS4Controller, - k_ESteamInputType_AppleMFiController, // Unused - k_ESteamInputType_AndroidController, // Unused - k_ESteamInputType_SwitchJoyConPair, // Unused - k_ESteamInputType_SwitchJoyConSingle, // Unused - k_ESteamInputType_SwitchProController, - k_ESteamInputType_MobileTouch, // Steam Link App On-screen Virtual Controller - k_ESteamInputType_PS3Controller, // Currently uses PS4 Origins - k_ESteamInputType_PS5Controller, // Added in SDK 151 - k_ESteamInputType_Count, - k_ESteamInputType_MaximumPossibleValue = 255, -}; -#endif - -enum ESteamControllerLEDFlag -{ - k_ESteamControllerLEDFlag_SetColor, - k_ESteamControllerLEDFlag_RestoreUserDefault -}; - -// ControllerHandle_t is used to refer to a specific controller. -// This handle will consistently identify a controller, even if it is disconnected and re-connected -typedef uint64 ControllerHandle_t; - - -// These handles are used to refer to a specific in-game action or action set -// All action handles should be queried during initialization for performance reasons -typedef uint64 ControllerActionSetHandle_t; -typedef uint64 ControllerDigitalActionHandle_t; -typedef uint64 ControllerAnalogActionHandle_t; - -#pragma pack( push, 1 ) - -#ifdef ISTEAMINPUT_H -#define ControllerAnalogActionData_t InputAnalogActionData_t -#define ControllerDigitalActionData_t InputDigitalActionData_t -#define ControllerMotionData_t InputMotionData_t -#else -struct ControllerAnalogActionData_t -{ - // Type of data coming from this action, this will match what got specified in the action set - EControllerSourceMode eMode; - - // The current state of this action; will be delta updates for mouse actions - float x, y; - - // Whether or not this action is currently available to be bound in the active action set - bool bActive; -}; - -struct ControllerDigitalActionData_t -{ - // The current state of this action; will be true if currently pressed - bool bState; - - // Whether or not this action is currently available to be bound in the active action set - bool bActive; -}; - -struct ControllerMotionData_t -{ - // Sensor-fused absolute rotation; will drift in heading - float rotQuatX; - float rotQuatY; - float rotQuatZ; - float rotQuatW; - - // Positional acceleration - float posAccelX; - float posAccelY; - float posAccelZ; - - // Angular velocity - float rotVelX; - float rotVelY; - float rotVelZ; -}; -#endif -#pragma pack( pop ) - - -//----------------------------------------------------------------------------- -// Purpose: Steam Input API -//----------------------------------------------------------------------------- -class ISteamController -{ -public: - - // Init and Shutdown must be called when starting/ending use of this interface - virtual bool Init() = 0; - virtual bool Shutdown() = 0; - - // Synchronize API state with the latest Steam Controller inputs available. This - // is performed automatically by SteamAPI_RunCallbacks, but for the absolute lowest - // possible latency, you call this directly before reading controller state. This must - // be called from somewhere before GetConnectedControllers will return any handles - virtual void RunFrame() = 0; - - // Enumerate currently connected controllers - // handlesOut should point to a STEAM_CONTROLLER_MAX_COUNT sized array of ControllerHandle_t handles - // Returns the number of handles written to handlesOut - virtual int GetConnectedControllers( STEAM_OUT_ARRAY_COUNT( STEAM_CONTROLLER_MAX_COUNT, Receives list of connected controllers ) ControllerHandle_t *handlesOut ) = 0; - - //----------------------------------------------------------------------------- - // ACTION SETS - //----------------------------------------------------------------------------- - - // Lookup the handle for an Action Set. Best to do this once on startup, and store the handles for all future API calls. - virtual ControllerActionSetHandle_t GetActionSetHandle( const char *pszActionSetName ) = 0; - - // Reconfigure the controller to use the specified action set (ie 'Menu', 'Walk' or 'Drive') - // This is cheap, and can be safely called repeatedly. It's often easier to repeatedly call it in - // your state loops, instead of trying to place it in all of your state transitions. - virtual void ActivateActionSet( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle ) = 0; - virtual ControllerActionSetHandle_t GetCurrentActionSet( ControllerHandle_t controllerHandle ) = 0; - - // ACTION SET LAYERS - virtual void ActivateActionSetLayer( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle ) = 0; - virtual void DeactivateActionSetLayer( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle ) = 0; - virtual void DeactivateAllActionSetLayers( ControllerHandle_t controllerHandle ) = 0; - // Enumerate currently active layers - // handlesOut should point to a STEAM_CONTROLLER_MAX_ACTIVE_LAYERS sized array of ControllerActionSetHandle_t handles. - // Returns the number of handles written to handlesOut - virtual int GetActiveActionSetLayers( ControllerHandle_t controllerHandle, STEAM_OUT_ARRAY_COUNT( STEAM_CONTROLLER_MAX_ACTIVE_LAYERS, Receives list of active layers ) ControllerActionSetHandle_t *handlesOut ) = 0; - - //----------------------------------------------------------------------------- - // ACTIONS - //----------------------------------------------------------------------------- - - // Lookup the handle for a digital action. Best to do this once on startup, and store the handles for all future API calls. - virtual ControllerDigitalActionHandle_t GetDigitalActionHandle( const char *pszActionName ) = 0; - - // Returns the current state of the supplied digital game action - virtual ControllerDigitalActionData_t GetDigitalActionData( ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle ) = 0; - - // Get the origin(s) for a digital action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. - // originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles. The EControllerActionOrigin enum will get extended as support for new controller controllers gets added to - // the Steam client and will exceed the values from this header, please check bounds if you are using a look up table. - virtual int GetDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, STEAM_OUT_ARRAY_COUNT( STEAM_CONTROLLER_MAX_ORIGINS, Receives list of aciton origins ) EControllerActionOrigin *originsOut ) = 0; - - // Lookup the handle for an analog action. Best to do this once on startup, and store the handles for all future API calls. - virtual ControllerAnalogActionHandle_t GetAnalogActionHandle( const char *pszActionName ) = 0; - - // Returns the current state of these supplied analog game action - virtual ControllerAnalogActionData_t GetAnalogActionData( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle ) = 0; - - // Get the origin(s) for an analog action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. - // originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles. The EControllerActionOrigin enum will get extended as support for new controller controllers gets added to - // the Steam client and will exceed the values from this header, please check bounds if you are using a look up table. - virtual int GetAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, STEAM_OUT_ARRAY_COUNT( STEAM_CONTROLLER_MAX_ORIGINS, Receives list of action origins ) EControllerActionOrigin *originsOut ) = 0; - - // Get a local path to art for on-screen glyph for a particular origin - this call is cheap - virtual const char *GetGlyphForActionOrigin( EControllerActionOrigin eOrigin ) = 0; - - // Returns a localized string (from Steam's language setting) for the specified origin - this call is serialized - virtual const char *GetStringForActionOrigin( EControllerActionOrigin eOrigin ) = 0; - - virtual void StopAnalogActionMomentum( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction ) = 0; - - // Returns raw motion data from the specified controller - virtual ControllerMotionData_t GetMotionData( ControllerHandle_t controllerHandle ) = 0; - - //----------------------------------------------------------------------------- - // OUTPUTS - //----------------------------------------------------------------------------- - - // Trigger a haptic pulse on a controller - virtual void TriggerHapticPulse( ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ) = 0; - - // Trigger a pulse with a duty cycle of usDurationMicroSec / usOffMicroSec, unRepeat times. - // nFlags is currently unused and reserved for future use. - virtual void TriggerRepeatedHapticPulse( ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ) = 0; - - // Trigger a vibration event on supported controllers. - virtual void TriggerVibration( ControllerHandle_t controllerHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed ) = 0; - - // Set the controller LED color on supported controllers. - virtual void SetLEDColor( ControllerHandle_t controllerHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags ) = 0; - - //----------------------------------------------------------------------------- - // Utility functions availible without using the rest of Steam Input API - //----------------------------------------------------------------------------- - - // Invokes the Steam overlay and brings up the binding screen if the user is using Big Picture Mode - // If the user is not in Big Picture Mode it will open up the binding in a new window - virtual bool ShowBindingPanel( ControllerHandle_t controllerHandle ) = 0; - - // Returns the input type for a particular handle - unlike EControllerActionOrigin which update with Steam and may return unrecognized values - // ESteamInputType will remain static and only return valid values from your SDK version - virtual ESteamInputType GetInputTypeForHandle( ControllerHandle_t controllerHandle ) = 0; - - // Returns the associated controller handle for the specified emulated gamepad - can be used with the above 2 functions - // to identify controllers presented to your game over Xinput. Returns 0 if the Xinput index isn't associated with Steam Input - virtual ControllerHandle_t GetControllerForGamepadIndex( int nIndex ) = 0; - - // Returns the associated gamepad index for the specified controller, if emulating a gamepad or -1 if not associated with an Xinput index - virtual int GetGamepadIndexForController( ControllerHandle_t ulControllerHandle ) = 0; - - // Returns a localized string (from Steam's language setting) for the specified Xbox controller origin. - virtual const char *GetStringForXboxOrigin( EXboxOrigin eOrigin ) = 0; - - // Get a local path to art for on-screen glyph for a particular Xbox controller origin. - virtual const char *GetGlyphForXboxOrigin( EXboxOrigin eOrigin ) = 0; - - // Get the equivalent ActionOrigin for a given Xbox controller origin this can be chained with GetGlyphForActionOrigin to provide future proof glyphs for - // non-Steam Input API action games. Note - this only translates the buttons directly and doesn't take into account any remapping a user has made in their configuration - virtual EControllerActionOrigin GetActionOriginFromXboxOrigin( ControllerHandle_t controllerHandle, EXboxOrigin eOrigin ) = 0; - - // Convert an origin to another controller type - for inputs not present on the other controller type this will return k_EControllerActionOrigin_None - virtual EControllerActionOrigin TranslateActionOrigin( ESteamInputType eDestinationInputType, EControllerActionOrigin eSourceOrigin ) = 0; - - // Get the binding revision for a given device. Returns false if the handle was not valid or if a mapping is not yet loaded for the device - virtual bool GetControllerBindingRevision( ControllerHandle_t controllerHandle, int *pMajor, int *pMinor ) = 0; -}; - -#define STEAMCONTROLLER_INTERFACE_VERSION "SteamController008" - -// Global interface accessor -inline ISteamController *SteamController(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamController *, SteamController, STEAMCONTROLLER_INTERFACE_VERSION ); - -#endif // ISTEAMCONTROLLER_H +//====== Copyright 1996-2018, Valve Corporation, All rights reserved. ======= +// Note: The older ISteamController interface has been deprecated in favor of ISteamInput - this interface +// was updated in this SDK but will be removed from future SDK's. The Steam Client will retain +// compatibility with the older interfaces so your any existing integrations should be unaffected. +// +// Purpose: Steam Input is a flexible input API that supports over three hundred devices including all +// common variants of Xbox, Playstation, Nintendo Switch Pro, and Steam Controllers. +// For more info including a getting started guide for developers +// please visit: https://partner.steamgames.com/doc/features/steam_controller +// +//============================================================================= + +#ifndef ISTEAMCONTROLLER_H +#define ISTEAMCONTROLLER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" +#include "isteaminput.h" + +#define STEAM_CONTROLLER_MAX_COUNT 16 + +#define STEAM_CONTROLLER_MAX_ANALOG_ACTIONS 16 + +#define STEAM_CONTROLLER_MAX_DIGITAL_ACTIONS 128 + +#define STEAM_CONTROLLER_MAX_ORIGINS 8 + +#define STEAM_CONTROLLER_MAX_ACTIVE_LAYERS 16 + +// When sending an option to a specific controller handle, you can send to all controllers via this command +#define STEAM_CONTROLLER_HANDLE_ALL_CONTROLLERS UINT64_MAX + +#define STEAM_CONTROLLER_MIN_ANALOG_ACTION_DATA -1.0f +#define STEAM_CONTROLLER_MAX_ANALOG_ACTION_DATA 1.0f + +#ifndef ISTEAMINPUT_H +enum ESteamControllerPad +{ + k_ESteamControllerPad_Left, + k_ESteamControllerPad_Right +}; +#endif + +// Note: Please do not use action origins as a way to identify controller types. There is no +// guarantee that they will be added in a contiguous manner - use GetInputTypeForHandle instead +// Versions of Steam that add new controller types in the future will extend this enum if you're +// using a lookup table please check the bounds of any origins returned by Steam. +enum EControllerActionOrigin +{ + // Steam Controller + k_EControllerActionOrigin_None, + k_EControllerActionOrigin_A, + k_EControllerActionOrigin_B, + k_EControllerActionOrigin_X, + k_EControllerActionOrigin_Y, + k_EControllerActionOrigin_LeftBumper, + k_EControllerActionOrigin_RightBumper, + k_EControllerActionOrigin_LeftGrip, + k_EControllerActionOrigin_RightGrip, + k_EControllerActionOrigin_Start, + k_EControllerActionOrigin_Back, + k_EControllerActionOrigin_LeftPad_Touch, + k_EControllerActionOrigin_LeftPad_Swipe, + k_EControllerActionOrigin_LeftPad_Click, + k_EControllerActionOrigin_LeftPad_DPadNorth, + k_EControllerActionOrigin_LeftPad_DPadSouth, + k_EControllerActionOrigin_LeftPad_DPadWest, + k_EControllerActionOrigin_LeftPad_DPadEast, + k_EControllerActionOrigin_RightPad_Touch, + k_EControllerActionOrigin_RightPad_Swipe, + k_EControllerActionOrigin_RightPad_Click, + k_EControllerActionOrigin_RightPad_DPadNorth, + k_EControllerActionOrigin_RightPad_DPadSouth, + k_EControllerActionOrigin_RightPad_DPadWest, + k_EControllerActionOrigin_RightPad_DPadEast, + k_EControllerActionOrigin_LeftTrigger_Pull, + k_EControllerActionOrigin_LeftTrigger_Click, + k_EControllerActionOrigin_RightTrigger_Pull, + k_EControllerActionOrigin_RightTrigger_Click, + k_EControllerActionOrigin_LeftStick_Move, + k_EControllerActionOrigin_LeftStick_Click, + k_EControllerActionOrigin_LeftStick_DPadNorth, + k_EControllerActionOrigin_LeftStick_DPadSouth, + k_EControllerActionOrigin_LeftStick_DPadWest, + k_EControllerActionOrigin_LeftStick_DPadEast, + k_EControllerActionOrigin_Gyro_Move, + k_EControllerActionOrigin_Gyro_Pitch, + k_EControllerActionOrigin_Gyro_Yaw, + k_EControllerActionOrigin_Gyro_Roll, + + // PS4 Dual Shock + k_EControllerActionOrigin_PS4_X, + k_EControllerActionOrigin_PS4_Circle, + k_EControllerActionOrigin_PS4_Triangle, + k_EControllerActionOrigin_PS4_Square, + k_EControllerActionOrigin_PS4_LeftBumper, + k_EControllerActionOrigin_PS4_RightBumper, + k_EControllerActionOrigin_PS4_Options, //Start + k_EControllerActionOrigin_PS4_Share, //Back + k_EControllerActionOrigin_PS4_LeftPad_Touch, + k_EControllerActionOrigin_PS4_LeftPad_Swipe, + k_EControllerActionOrigin_PS4_LeftPad_Click, + k_EControllerActionOrigin_PS4_LeftPad_DPadNorth, + k_EControllerActionOrigin_PS4_LeftPad_DPadSouth, + k_EControllerActionOrigin_PS4_LeftPad_DPadWest, + k_EControllerActionOrigin_PS4_LeftPad_DPadEast, + k_EControllerActionOrigin_PS4_RightPad_Touch, + k_EControllerActionOrigin_PS4_RightPad_Swipe, + k_EControllerActionOrigin_PS4_RightPad_Click, + k_EControllerActionOrigin_PS4_RightPad_DPadNorth, + k_EControllerActionOrigin_PS4_RightPad_DPadSouth, + k_EControllerActionOrigin_PS4_RightPad_DPadWest, + k_EControllerActionOrigin_PS4_RightPad_DPadEast, + k_EControllerActionOrigin_PS4_CenterPad_Touch, + k_EControllerActionOrigin_PS4_CenterPad_Swipe, + k_EControllerActionOrigin_PS4_CenterPad_Click, + k_EControllerActionOrigin_PS4_CenterPad_DPadNorth, + k_EControllerActionOrigin_PS4_CenterPad_DPadSouth, + k_EControllerActionOrigin_PS4_CenterPad_DPadWest, + k_EControllerActionOrigin_PS4_CenterPad_DPadEast, + k_EControllerActionOrigin_PS4_LeftTrigger_Pull, + k_EControllerActionOrigin_PS4_LeftTrigger_Click, + k_EControllerActionOrigin_PS4_RightTrigger_Pull, + k_EControllerActionOrigin_PS4_RightTrigger_Click, + k_EControllerActionOrigin_PS4_LeftStick_Move, + k_EControllerActionOrigin_PS4_LeftStick_Click, + k_EControllerActionOrigin_PS4_LeftStick_DPadNorth, + k_EControllerActionOrigin_PS4_LeftStick_DPadSouth, + k_EControllerActionOrigin_PS4_LeftStick_DPadWest, + k_EControllerActionOrigin_PS4_LeftStick_DPadEast, + k_EControllerActionOrigin_PS4_RightStick_Move, + k_EControllerActionOrigin_PS4_RightStick_Click, + k_EControllerActionOrigin_PS4_RightStick_DPadNorth, + k_EControllerActionOrigin_PS4_RightStick_DPadSouth, + k_EControllerActionOrigin_PS4_RightStick_DPadWest, + k_EControllerActionOrigin_PS4_RightStick_DPadEast, + k_EControllerActionOrigin_PS4_DPad_North, + k_EControllerActionOrigin_PS4_DPad_South, + k_EControllerActionOrigin_PS4_DPad_West, + k_EControllerActionOrigin_PS4_DPad_East, + k_EControllerActionOrigin_PS4_Gyro_Move, + k_EControllerActionOrigin_PS4_Gyro_Pitch, + k_EControllerActionOrigin_PS4_Gyro_Yaw, + k_EControllerActionOrigin_PS4_Gyro_Roll, + + // XBox One + k_EControllerActionOrigin_XBoxOne_A, + k_EControllerActionOrigin_XBoxOne_B, + k_EControllerActionOrigin_XBoxOne_X, + k_EControllerActionOrigin_XBoxOne_Y, + k_EControllerActionOrigin_XBoxOne_LeftBumper, + k_EControllerActionOrigin_XBoxOne_RightBumper, + k_EControllerActionOrigin_XBoxOne_Menu, //Start + k_EControllerActionOrigin_XBoxOne_View, //Back + k_EControllerActionOrigin_XBoxOne_LeftTrigger_Pull, + k_EControllerActionOrigin_XBoxOne_LeftTrigger_Click, + k_EControllerActionOrigin_XBoxOne_RightTrigger_Pull, + k_EControllerActionOrigin_XBoxOne_RightTrigger_Click, + k_EControllerActionOrigin_XBoxOne_LeftStick_Move, + k_EControllerActionOrigin_XBoxOne_LeftStick_Click, + k_EControllerActionOrigin_XBoxOne_LeftStick_DPadNorth, + k_EControllerActionOrigin_XBoxOne_LeftStick_DPadSouth, + k_EControllerActionOrigin_XBoxOne_LeftStick_DPadWest, + k_EControllerActionOrigin_XBoxOne_LeftStick_DPadEast, + k_EControllerActionOrigin_XBoxOne_RightStick_Move, + k_EControllerActionOrigin_XBoxOne_RightStick_Click, + k_EControllerActionOrigin_XBoxOne_RightStick_DPadNorth, + k_EControllerActionOrigin_XBoxOne_RightStick_DPadSouth, + k_EControllerActionOrigin_XBoxOne_RightStick_DPadWest, + k_EControllerActionOrigin_XBoxOne_RightStick_DPadEast, + k_EControllerActionOrigin_XBoxOne_DPad_North, + k_EControllerActionOrigin_XBoxOne_DPad_South, + k_EControllerActionOrigin_XBoxOne_DPad_West, + k_EControllerActionOrigin_XBoxOne_DPad_East, + + // XBox 360 + k_EControllerActionOrigin_XBox360_A, + k_EControllerActionOrigin_XBox360_B, + k_EControllerActionOrigin_XBox360_X, + k_EControllerActionOrigin_XBox360_Y, + k_EControllerActionOrigin_XBox360_LeftBumper, + k_EControllerActionOrigin_XBox360_RightBumper, + k_EControllerActionOrigin_XBox360_Start, //Start + k_EControllerActionOrigin_XBox360_Back, //Back + k_EControllerActionOrigin_XBox360_LeftTrigger_Pull, + k_EControllerActionOrigin_XBox360_LeftTrigger_Click, + k_EControllerActionOrigin_XBox360_RightTrigger_Pull, + k_EControllerActionOrigin_XBox360_RightTrigger_Click, + k_EControllerActionOrigin_XBox360_LeftStick_Move, + k_EControllerActionOrigin_XBox360_LeftStick_Click, + k_EControllerActionOrigin_XBox360_LeftStick_DPadNorth, + k_EControllerActionOrigin_XBox360_LeftStick_DPadSouth, + k_EControllerActionOrigin_XBox360_LeftStick_DPadWest, + k_EControllerActionOrigin_XBox360_LeftStick_DPadEast, + k_EControllerActionOrigin_XBox360_RightStick_Move, + k_EControllerActionOrigin_XBox360_RightStick_Click, + k_EControllerActionOrigin_XBox360_RightStick_DPadNorth, + k_EControllerActionOrigin_XBox360_RightStick_DPadSouth, + k_EControllerActionOrigin_XBox360_RightStick_DPadWest, + k_EControllerActionOrigin_XBox360_RightStick_DPadEast, + k_EControllerActionOrigin_XBox360_DPad_North, + k_EControllerActionOrigin_XBox360_DPad_South, + k_EControllerActionOrigin_XBox360_DPad_West, + k_EControllerActionOrigin_XBox360_DPad_East, + + // SteamController V2 + k_EControllerActionOrigin_SteamV2_A, + k_EControllerActionOrigin_SteamV2_B, + k_EControllerActionOrigin_SteamV2_X, + k_EControllerActionOrigin_SteamV2_Y, + k_EControllerActionOrigin_SteamV2_LeftBumper, + k_EControllerActionOrigin_SteamV2_RightBumper, + k_EControllerActionOrigin_SteamV2_LeftGrip_Lower, + k_EControllerActionOrigin_SteamV2_LeftGrip_Upper, + k_EControllerActionOrigin_SteamV2_RightGrip_Lower, + k_EControllerActionOrigin_SteamV2_RightGrip_Upper, + k_EControllerActionOrigin_SteamV2_LeftBumper_Pressure, + k_EControllerActionOrigin_SteamV2_RightBumper_Pressure, + k_EControllerActionOrigin_SteamV2_LeftGrip_Pressure, + k_EControllerActionOrigin_SteamV2_RightGrip_Pressure, + k_EControllerActionOrigin_SteamV2_LeftGrip_Upper_Pressure, + k_EControllerActionOrigin_SteamV2_RightGrip_Upper_Pressure, + k_EControllerActionOrigin_SteamV2_Start, + k_EControllerActionOrigin_SteamV2_Back, + k_EControllerActionOrigin_SteamV2_LeftPad_Touch, + k_EControllerActionOrigin_SteamV2_LeftPad_Swipe, + k_EControllerActionOrigin_SteamV2_LeftPad_Click, + k_EControllerActionOrigin_SteamV2_LeftPad_Pressure, + k_EControllerActionOrigin_SteamV2_LeftPad_DPadNorth, + k_EControllerActionOrigin_SteamV2_LeftPad_DPadSouth, + k_EControllerActionOrigin_SteamV2_LeftPad_DPadWest, + k_EControllerActionOrigin_SteamV2_LeftPad_DPadEast, + k_EControllerActionOrigin_SteamV2_RightPad_Touch, + k_EControllerActionOrigin_SteamV2_RightPad_Swipe, + k_EControllerActionOrigin_SteamV2_RightPad_Click, + k_EControllerActionOrigin_SteamV2_RightPad_Pressure, + k_EControllerActionOrigin_SteamV2_RightPad_DPadNorth, + k_EControllerActionOrigin_SteamV2_RightPad_DPadSouth, + k_EControllerActionOrigin_SteamV2_RightPad_DPadWest, + k_EControllerActionOrigin_SteamV2_RightPad_DPadEast, + k_EControllerActionOrigin_SteamV2_LeftTrigger_Pull, + k_EControllerActionOrigin_SteamV2_LeftTrigger_Click, + k_EControllerActionOrigin_SteamV2_RightTrigger_Pull, + k_EControllerActionOrigin_SteamV2_RightTrigger_Click, + k_EControllerActionOrigin_SteamV2_LeftStick_Move, + k_EControllerActionOrigin_SteamV2_LeftStick_Click, + k_EControllerActionOrigin_SteamV2_LeftStick_DPadNorth, + k_EControllerActionOrigin_SteamV2_LeftStick_DPadSouth, + k_EControllerActionOrigin_SteamV2_LeftStick_DPadWest, + k_EControllerActionOrigin_SteamV2_LeftStick_DPadEast, + k_EControllerActionOrigin_SteamV2_Gyro_Move, + k_EControllerActionOrigin_SteamV2_Gyro_Pitch, + k_EControllerActionOrigin_SteamV2_Gyro_Yaw, + k_EControllerActionOrigin_SteamV2_Gyro_Roll, + + // Switch - Pro or Joycons used as a single input device. + // This does not apply to a single joycon + k_EControllerActionOrigin_Switch_A, + k_EControllerActionOrigin_Switch_B, + k_EControllerActionOrigin_Switch_X, + k_EControllerActionOrigin_Switch_Y, + k_EControllerActionOrigin_Switch_LeftBumper, + k_EControllerActionOrigin_Switch_RightBumper, + k_EControllerActionOrigin_Switch_Plus, //Start + k_EControllerActionOrigin_Switch_Minus, //Back + k_EControllerActionOrigin_Switch_Capture, + k_EControllerActionOrigin_Switch_LeftTrigger_Pull, + k_EControllerActionOrigin_Switch_LeftTrigger_Click, + k_EControllerActionOrigin_Switch_RightTrigger_Pull, + k_EControllerActionOrigin_Switch_RightTrigger_Click, + k_EControllerActionOrigin_Switch_LeftStick_Move, + k_EControllerActionOrigin_Switch_LeftStick_Click, + k_EControllerActionOrigin_Switch_LeftStick_DPadNorth, + k_EControllerActionOrigin_Switch_LeftStick_DPadSouth, + k_EControllerActionOrigin_Switch_LeftStick_DPadWest, + k_EControllerActionOrigin_Switch_LeftStick_DPadEast, + k_EControllerActionOrigin_Switch_RightStick_Move, + k_EControllerActionOrigin_Switch_RightStick_Click, + k_EControllerActionOrigin_Switch_RightStick_DPadNorth, + k_EControllerActionOrigin_Switch_RightStick_DPadSouth, + k_EControllerActionOrigin_Switch_RightStick_DPadWest, + k_EControllerActionOrigin_Switch_RightStick_DPadEast, + k_EControllerActionOrigin_Switch_DPad_North, + k_EControllerActionOrigin_Switch_DPad_South, + k_EControllerActionOrigin_Switch_DPad_West, + k_EControllerActionOrigin_Switch_DPad_East, + k_EControllerActionOrigin_Switch_ProGyro_Move, // Primary Gyro in Pro Controller, or Right JoyCon + k_EControllerActionOrigin_Switch_ProGyro_Pitch, // Primary Gyro in Pro Controller, or Right JoyCon + k_EControllerActionOrigin_Switch_ProGyro_Yaw, // Primary Gyro in Pro Controller, or Right JoyCon + k_EControllerActionOrigin_Switch_ProGyro_Roll, // Primary Gyro in Pro Controller, or Right JoyCon + // Switch JoyCon Specific + k_EControllerActionOrigin_Switch_RightGyro_Move, // Right JoyCon Gyro generally should correspond to Pro's single gyro + k_EControllerActionOrigin_Switch_RightGyro_Pitch, // Right JoyCon Gyro generally should correspond to Pro's single gyro + k_EControllerActionOrigin_Switch_RightGyro_Yaw, // Right JoyCon Gyro generally should correspond to Pro's single gyro + k_EControllerActionOrigin_Switch_RightGyro_Roll, // Right JoyCon Gyro generally should correspond to Pro's single gyro + k_EControllerActionOrigin_Switch_LeftGyro_Move, + k_EControllerActionOrigin_Switch_LeftGyro_Pitch, + k_EControllerActionOrigin_Switch_LeftGyro_Yaw, + k_EControllerActionOrigin_Switch_LeftGyro_Roll, + k_EControllerActionOrigin_Switch_LeftGrip_Lower, // Left JoyCon SR Button + k_EControllerActionOrigin_Switch_LeftGrip_Upper, // Left JoyCon SL Button + k_EControllerActionOrigin_Switch_RightGrip_Lower, // Right JoyCon SL Button + k_EControllerActionOrigin_Switch_RightGrip_Upper, // Right JoyCon SR Button + + // Added in SDK 1.45 + k_EControllerActionOrigin_PS4_DPad_Move, + k_EControllerActionOrigin_XBoxOne_DPad_Move, + k_EControllerActionOrigin_XBox360_DPad_Move, + k_EControllerActionOrigin_Switch_DPad_Move, + + // Added in SDK 1.51 + k_EControllerActionOrigin_PS5_X, + k_EControllerActionOrigin_PS5_Circle, + k_EControllerActionOrigin_PS5_Triangle, + k_EControllerActionOrigin_PS5_Square, + k_EControllerActionOrigin_PS5_LeftBumper, + k_EControllerActionOrigin_PS5_RightBumper, + k_EControllerActionOrigin_PS5_Option, //Start + k_EControllerActionOrigin_PS5_Create, //Back + k_EControllerActionOrigin_PS5_Mute, + k_EControllerActionOrigin_PS5_LeftPad_Touch, + k_EControllerActionOrigin_PS5_LeftPad_Swipe, + k_EControllerActionOrigin_PS5_LeftPad_Click, + k_EControllerActionOrigin_PS5_LeftPad_DPadNorth, + k_EControllerActionOrigin_PS5_LeftPad_DPadSouth, + k_EControllerActionOrigin_PS5_LeftPad_DPadWest, + k_EControllerActionOrigin_PS5_LeftPad_DPadEast, + k_EControllerActionOrigin_PS5_RightPad_Touch, + k_EControllerActionOrigin_PS5_RightPad_Swipe, + k_EControllerActionOrigin_PS5_RightPad_Click, + k_EControllerActionOrigin_PS5_RightPad_DPadNorth, + k_EControllerActionOrigin_PS5_RightPad_DPadSouth, + k_EControllerActionOrigin_PS5_RightPad_DPadWest, + k_EControllerActionOrigin_PS5_RightPad_DPadEast, + k_EControllerActionOrigin_PS5_CenterPad_Touch, + k_EControllerActionOrigin_PS5_CenterPad_Swipe, + k_EControllerActionOrigin_PS5_CenterPad_Click, + k_EControllerActionOrigin_PS5_CenterPad_DPadNorth, + k_EControllerActionOrigin_PS5_CenterPad_DPadSouth, + k_EControllerActionOrigin_PS5_CenterPad_DPadWest, + k_EControllerActionOrigin_PS5_CenterPad_DPadEast, + k_EControllerActionOrigin_PS5_LeftTrigger_Pull, + k_EControllerActionOrigin_PS5_LeftTrigger_Click, + k_EControllerActionOrigin_PS5_RightTrigger_Pull, + k_EControllerActionOrigin_PS5_RightTrigger_Click, + k_EControllerActionOrigin_PS5_LeftStick_Move, + k_EControllerActionOrigin_PS5_LeftStick_Click, + k_EControllerActionOrigin_PS5_LeftStick_DPadNorth, + k_EControllerActionOrigin_PS5_LeftStick_DPadSouth, + k_EControllerActionOrigin_PS5_LeftStick_DPadWest, + k_EControllerActionOrigin_PS5_LeftStick_DPadEast, + k_EControllerActionOrigin_PS5_RightStick_Move, + k_EControllerActionOrigin_PS5_RightStick_Click, + k_EControllerActionOrigin_PS5_RightStick_DPadNorth, + k_EControllerActionOrigin_PS5_RightStick_DPadSouth, + k_EControllerActionOrigin_PS5_RightStick_DPadWest, + k_EControllerActionOrigin_PS5_RightStick_DPadEast, + k_EControllerActionOrigin_PS5_DPad_Move, + k_EControllerActionOrigin_PS5_DPad_North, + k_EControllerActionOrigin_PS5_DPad_South, + k_EControllerActionOrigin_PS5_DPad_West, + k_EControllerActionOrigin_PS5_DPad_East, + k_EControllerActionOrigin_PS5_Gyro_Move, + k_EControllerActionOrigin_PS5_Gyro_Pitch, + k_EControllerActionOrigin_PS5_Gyro_Yaw, + k_EControllerActionOrigin_PS5_Gyro_Roll, + + + k_EControllerActionOrigin_Count, // If Steam has added support for new controllers origins will go here. + k_EControllerActionOrigin_MaximumPossibleValue = 32767, // Origins are currently a maximum of 16 bits. +}; + +#ifndef ISTEAMINPUT_H +enum EXboxOrigin +{ + k_EXboxOrigin_A, + k_EXboxOrigin_B, + k_EXboxOrigin_X, + k_EXboxOrigin_Y, + k_EXboxOrigin_LeftBumper, + k_EXboxOrigin_RightBumper, + k_EXboxOrigin_Menu, //Start + k_EXboxOrigin_View, //Back + k_EXboxOrigin_LeftTrigger_Pull, + k_EXboxOrigin_LeftTrigger_Click, + k_EXboxOrigin_RightTrigger_Pull, + k_EXboxOrigin_RightTrigger_Click, + k_EXboxOrigin_LeftStick_Move, + k_EXboxOrigin_LeftStick_Click, + k_EXboxOrigin_LeftStick_DPadNorth, + k_EXboxOrigin_LeftStick_DPadSouth, + k_EXboxOrigin_LeftStick_DPadWest, + k_EXboxOrigin_LeftStick_DPadEast, + k_EXboxOrigin_RightStick_Move, + k_EXboxOrigin_RightStick_Click, + k_EXboxOrigin_RightStick_DPadNorth, + k_EXboxOrigin_RightStick_DPadSouth, + k_EXboxOrigin_RightStick_DPadWest, + k_EXboxOrigin_RightStick_DPadEast, + k_EXboxOrigin_DPad_North, + k_EXboxOrigin_DPad_South, + k_EXboxOrigin_DPad_West, + k_EXboxOrigin_DPad_East, +}; + +enum ESteamInputType +{ + k_ESteamInputType_Unknown, + k_ESteamInputType_SteamController, + k_ESteamInputType_XBox360Controller, + k_ESteamInputType_XBoxOneController, + k_ESteamInputType_GenericGamepad, // DirectInput controllers + k_ESteamInputType_PS4Controller, + k_ESteamInputType_AppleMFiController, // Unused + k_ESteamInputType_AndroidController, // Unused + k_ESteamInputType_SwitchJoyConPair, // Unused + k_ESteamInputType_SwitchJoyConSingle, // Unused + k_ESteamInputType_SwitchProController, + k_ESteamInputType_MobileTouch, // Steam Link App On-screen Virtual Controller + k_ESteamInputType_PS3Controller, // Currently uses PS4 Origins + k_ESteamInputType_PS5Controller, // Added in SDK 151 + k_ESteamInputType_Count, + k_ESteamInputType_MaximumPossibleValue = 255, +}; +#endif + +enum ESteamControllerLEDFlag +{ + k_ESteamControllerLEDFlag_SetColor, + k_ESteamControllerLEDFlag_RestoreUserDefault +}; + +// ControllerHandle_t is used to refer to a specific controller. +// This handle will consistently identify a controller, even if it is disconnected and re-connected +typedef uint64 ControllerHandle_t; + + +// These handles are used to refer to a specific in-game action or action set +// All action handles should be queried during initialization for performance reasons +typedef uint64 ControllerActionSetHandle_t; +typedef uint64 ControllerDigitalActionHandle_t; +typedef uint64 ControllerAnalogActionHandle_t; + +#pragma pack( push, 1 ) + +#ifdef ISTEAMINPUT_H +#define ControllerAnalogActionData_t InputAnalogActionData_t +#define ControllerDigitalActionData_t InputDigitalActionData_t +#define ControllerMotionData_t InputMotionData_t +#else +struct ControllerAnalogActionData_t +{ + // Type of data coming from this action, this will match what got specified in the action set + EControllerSourceMode eMode; + + // The current state of this action; will be delta updates for mouse actions + float x, y; + + // Whether or not this action is currently available to be bound in the active action set + bool bActive; +}; + +struct ControllerDigitalActionData_t +{ + // The current state of this action; will be true if currently pressed + bool bState; + + // Whether or not this action is currently available to be bound in the active action set + bool bActive; +}; + +struct ControllerMotionData_t +{ + // Sensor-fused absolute rotation; will drift in heading + float rotQuatX; + float rotQuatY; + float rotQuatZ; + float rotQuatW; + + // Positional acceleration + float posAccelX; + float posAccelY; + float posAccelZ; + + // Angular velocity + float rotVelX; + float rotVelY; + float rotVelZ; +}; +#endif +#pragma pack( pop ) + + +//----------------------------------------------------------------------------- +// Purpose: Steam Input API +//----------------------------------------------------------------------------- +class ISteamController +{ +public: + + // Init and Shutdown must be called when starting/ending use of this interface + virtual bool Init() = 0; + virtual bool Shutdown() = 0; + + // Synchronize API state with the latest Steam Controller inputs available. This + // is performed automatically by SteamAPI_RunCallbacks, but for the absolute lowest + // possible latency, you call this directly before reading controller state. This must + // be called from somewhere before GetConnectedControllers will return any handles + virtual void RunFrame() = 0; + + // Enumerate currently connected controllers + // handlesOut should point to a STEAM_CONTROLLER_MAX_COUNT sized array of ControllerHandle_t handles + // Returns the number of handles written to handlesOut + virtual int GetConnectedControllers( STEAM_OUT_ARRAY_COUNT( STEAM_CONTROLLER_MAX_COUNT, Receives list of connected controllers ) ControllerHandle_t *handlesOut ) = 0; + + //----------------------------------------------------------------------------- + // ACTION SETS + //----------------------------------------------------------------------------- + + // Lookup the handle for an Action Set. Best to do this once on startup, and store the handles for all future API calls. + virtual ControllerActionSetHandle_t GetActionSetHandle( const char *pszActionSetName ) = 0; + + // Reconfigure the controller to use the specified action set (ie 'Menu', 'Walk' or 'Drive') + // This is cheap, and can be safely called repeatedly. It's often easier to repeatedly call it in + // your state loops, instead of trying to place it in all of your state transitions. + virtual void ActivateActionSet( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle ) = 0; + virtual ControllerActionSetHandle_t GetCurrentActionSet( ControllerHandle_t controllerHandle ) = 0; + + // ACTION SET LAYERS + virtual void ActivateActionSetLayer( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle ) = 0; + virtual void DeactivateActionSetLayer( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle ) = 0; + virtual void DeactivateAllActionSetLayers( ControllerHandle_t controllerHandle ) = 0; + // Enumerate currently active layers + // handlesOut should point to a STEAM_CONTROLLER_MAX_ACTIVE_LAYERS sized array of ControllerActionSetHandle_t handles. + // Returns the number of handles written to handlesOut + virtual int GetActiveActionSetLayers( ControllerHandle_t controllerHandle, STEAM_OUT_ARRAY_COUNT( STEAM_CONTROLLER_MAX_ACTIVE_LAYERS, Receives list of active layers ) ControllerActionSetHandle_t *handlesOut ) = 0; + + //----------------------------------------------------------------------------- + // ACTIONS + //----------------------------------------------------------------------------- + + // Lookup the handle for a digital action. Best to do this once on startup, and store the handles for all future API calls. + virtual ControllerDigitalActionHandle_t GetDigitalActionHandle( const char *pszActionName ) = 0; + + // Returns the current state of the supplied digital game action + virtual ControllerDigitalActionData_t GetDigitalActionData( ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle ) = 0; + + // Get the origin(s) for a digital action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. + // originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles. The EControllerActionOrigin enum will get extended as support for new controller controllers gets added to + // the Steam client and will exceed the values from this header, please check bounds if you are using a look up table. + virtual int GetDigitalActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, STEAM_OUT_ARRAY_COUNT( STEAM_CONTROLLER_MAX_ORIGINS, Receives list of aciton origins ) EControllerActionOrigin *originsOut ) = 0; + + // Lookup the handle for an analog action. Best to do this once on startup, and store the handles for all future API calls. + virtual ControllerAnalogActionHandle_t GetAnalogActionHandle( const char *pszActionName ) = 0; + + // Returns the current state of these supplied analog game action + virtual ControllerAnalogActionData_t GetAnalogActionData( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle ) = 0; + + // Get the origin(s) for an analog action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. + // originsOut should point to a STEAM_CONTROLLER_MAX_ORIGINS sized array of EControllerActionOrigin handles. The EControllerActionOrigin enum will get extended as support for new controller controllers gets added to + // the Steam client and will exceed the values from this header, please check bounds if you are using a look up table. + virtual int GetAnalogActionOrigins( ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, STEAM_OUT_ARRAY_COUNT( STEAM_CONTROLLER_MAX_ORIGINS, Receives list of action origins ) EControllerActionOrigin *originsOut ) = 0; + + // Get a local path to art for on-screen glyph for a particular origin - this call is cheap + virtual const char *GetGlyphForActionOrigin( EControllerActionOrigin eOrigin ) = 0; + + // Returns a localized string (from Steam's language setting) for the specified origin - this call is serialized + virtual const char *GetStringForActionOrigin( EControllerActionOrigin eOrigin ) = 0; + + virtual void StopAnalogActionMomentum( ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction ) = 0; + + // Returns raw motion data from the specified controller + virtual ControllerMotionData_t GetMotionData( ControllerHandle_t controllerHandle ) = 0; + + //----------------------------------------------------------------------------- + // OUTPUTS + //----------------------------------------------------------------------------- + + // Trigger a haptic pulse on a controller + virtual void TriggerHapticPulse( ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ) = 0; + + // Trigger a pulse with a duty cycle of usDurationMicroSec / usOffMicroSec, unRepeat times. + // nFlags is currently unused and reserved for future use. + virtual void TriggerRepeatedHapticPulse( ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ) = 0; + + // Trigger a vibration event on supported controllers. + virtual void TriggerVibration( ControllerHandle_t controllerHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed ) = 0; + + // Set the controller LED color on supported controllers. + virtual void SetLEDColor( ControllerHandle_t controllerHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags ) = 0; + + //----------------------------------------------------------------------------- + // Utility functions availible without using the rest of Steam Input API + //----------------------------------------------------------------------------- + + // Invokes the Steam overlay and brings up the binding screen if the user is using Big Picture Mode + // If the user is not in Big Picture Mode it will open up the binding in a new window + virtual bool ShowBindingPanel( ControllerHandle_t controllerHandle ) = 0; + + // Returns the input type for a particular handle - unlike EControllerActionOrigin which update with Steam and may return unrecognized values + // ESteamInputType will remain static and only return valid values from your SDK version + virtual ESteamInputType GetInputTypeForHandle( ControllerHandle_t controllerHandle ) = 0; + + // Returns the associated controller handle for the specified emulated gamepad - can be used with the above 2 functions + // to identify controllers presented to your game over Xinput. Returns 0 if the Xinput index isn't associated with Steam Input + virtual ControllerHandle_t GetControllerForGamepadIndex( int nIndex ) = 0; + + // Returns the associated gamepad index for the specified controller, if emulating a gamepad or -1 if not associated with an Xinput index + virtual int GetGamepadIndexForController( ControllerHandle_t ulControllerHandle ) = 0; + + // Returns a localized string (from Steam's language setting) for the specified Xbox controller origin. + virtual const char *GetStringForXboxOrigin( EXboxOrigin eOrigin ) = 0; + + // Get a local path to art for on-screen glyph for a particular Xbox controller origin. + virtual const char *GetGlyphForXboxOrigin( EXboxOrigin eOrigin ) = 0; + + // Get the equivalent ActionOrigin for a given Xbox controller origin this can be chained with GetGlyphForActionOrigin to provide future proof glyphs for + // non-Steam Input API action games. Note - this only translates the buttons directly and doesn't take into account any remapping a user has made in their configuration + virtual EControllerActionOrigin GetActionOriginFromXboxOrigin( ControllerHandle_t controllerHandle, EXboxOrigin eOrigin ) = 0; + + // Convert an origin to another controller type - for inputs not present on the other controller type this will return k_EControllerActionOrigin_None + virtual EControllerActionOrigin TranslateActionOrigin( ESteamInputType eDestinationInputType, EControllerActionOrigin eSourceOrigin ) = 0; + + // Get the binding revision for a given device. Returns false if the handle was not valid or if a mapping is not yet loaded for the device + virtual bool GetControllerBindingRevision( ControllerHandle_t controllerHandle, int *pMajor, int *pMinor ) = 0; +}; + +#define STEAMCONTROLLER_INTERFACE_VERSION "SteamController008" + +// Global interface accessor +inline ISteamController *SteamController(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamController *, SteamController, STEAMCONTROLLER_INTERFACE_VERSION ); + +#endif // ISTEAMCONTROLLER_H diff --git a/CodeGen/steam/isteamfriends.h b/CodeGen/steam/isteamfriends.h index a40cfbbe..b7ebc735 100644 --- a/CodeGen/steam/isteamfriends.h +++ b/CodeGen/steam/isteamfriends.h @@ -1,693 +1,693 @@ -//====== Copyright Valve Corporation, All rights reserved. ==================== -// -// Purpose: interface to both friends list data and general information about users -// -//============================================================================= - -#ifndef ISTEAMFRIENDS_H -#define ISTEAMFRIENDS_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" - -//----------------------------------------------------------------------------- -// Purpose: set of relationships to other users -//----------------------------------------------------------------------------- -enum EFriendRelationship -{ - k_EFriendRelationshipNone = 0, - k_EFriendRelationshipBlocked = 1, // this doesn't get stored; the user has just done an Ignore on an friendship invite - k_EFriendRelationshipRequestRecipient = 2, - k_EFriendRelationshipFriend = 3, - k_EFriendRelationshipRequestInitiator = 4, - k_EFriendRelationshipIgnored = 5, // this is stored; the user has explicit blocked this other user from comments/chat/etc - k_EFriendRelationshipIgnoredFriend = 6, - k_EFriendRelationshipSuggested_DEPRECATED = 7, // was used by the original implementation of the facebook linking feature, but now unused. - - // keep this updated - k_EFriendRelationshipMax = 8, -}; - -// maximum length of friend group name (not including terminating nul!) -const int k_cchMaxFriendsGroupName = 64; - -// maximum number of groups a single user is allowed -const int k_cFriendsGroupLimit = 100; - -// friends group identifier type -typedef int16 FriendsGroupID_t; - -// invalid friends group identifier constant -const FriendsGroupID_t k_FriendsGroupID_Invalid = -1; - -const int k_cEnumerateFollowersMax = 50; - - -//----------------------------------------------------------------------------- -// Purpose: list of states a friend can be in -//----------------------------------------------------------------------------- -enum EPersonaState -{ - k_EPersonaStateOffline = 0, // friend is not currently logged on - k_EPersonaStateOnline = 1, // friend is logged on - k_EPersonaStateBusy = 2, // user is on, but busy - k_EPersonaStateAway = 3, // auto-away feature - k_EPersonaStateSnooze = 4, // auto-away for a long time - k_EPersonaStateLookingToTrade = 5, // Online, trading - k_EPersonaStateLookingToPlay = 6, // Online, wanting to play - k_EPersonaStateInvisible = 7, // Online, but appears offline to friends. This status is never published to clients. - k_EPersonaStateMax, -}; - - -//----------------------------------------------------------------------------- -// Purpose: flags for enumerating friends list, or quickly checking a the relationship between users -//----------------------------------------------------------------------------- -enum EFriendFlags -{ - k_EFriendFlagNone = 0x00, - k_EFriendFlagBlocked = 0x01, - k_EFriendFlagFriendshipRequested = 0x02, - k_EFriendFlagImmediate = 0x04, // "regular" friend - k_EFriendFlagClanMember = 0x08, - k_EFriendFlagOnGameServer = 0x10, - // k_EFriendFlagHasPlayedWith = 0x20, // not currently used - // k_EFriendFlagFriendOfFriend = 0x40, // not currently used - k_EFriendFlagRequestingFriendship = 0x80, - k_EFriendFlagRequestingInfo = 0x100, - k_EFriendFlagIgnored = 0x200, - k_EFriendFlagIgnoredFriend = 0x400, - // k_EFriendFlagSuggested = 0x800, // not used - k_EFriendFlagChatMember = 0x1000, - k_EFriendFlagAll = 0xFFFF, -}; - - -// friend game played information -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif -struct FriendGameInfo_t -{ - CGameID m_gameID; - uint32 m_unGameIP; - uint16 m_usGamePort; - uint16 m_usQueryPort; - CSteamID m_steamIDLobby; -}; -#pragma pack( pop ) - -// maximum number of characters in a user's name. Two flavors; one for UTF-8 and one for UTF-16. -// The UTF-8 version has to be very generous to accomodate characters that get large when encoded -// in UTF-8. -enum -{ - k_cchPersonaNameMax = 128, - k_cwchPersonaNameMax = 32, -}; - -//----------------------------------------------------------------------------- -// Purpose: user restriction flags -//----------------------------------------------------------------------------- -enum EUserRestriction -{ - k_nUserRestrictionNone = 0, // no known chat/content restriction - k_nUserRestrictionUnknown = 1, // we don't know yet (user offline) - k_nUserRestrictionAnyChat = 2, // user is not allowed to (or can't) send/recv any chat - k_nUserRestrictionVoiceChat = 4, // user is not allowed to (or can't) send/recv voice chat - k_nUserRestrictionGroupChat = 8, // user is not allowed to (or can't) send/recv group chat - k_nUserRestrictionRating = 16, // user is too young according to rating in current region - k_nUserRestrictionGameInvites = 32, // user cannot send or recv game invites (e.g. mobile) - k_nUserRestrictionTrading = 64, // user cannot participate in trading (console, mobile) -}; - -// size limit on chat room or member metadata -const uint32 k_cubChatMetadataMax = 8192; - -// size limits on Rich Presence data -enum { k_cchMaxRichPresenceKeys = 30 }; -enum { k_cchMaxRichPresenceKeyLength = 64 }; -enum { k_cchMaxRichPresenceValueLength = 256 }; - -// These values are passed as parameters to the store -enum EOverlayToStoreFlag -{ - k_EOverlayToStoreFlag_None = 0, - k_EOverlayToStoreFlag_AddToCart = 1, - k_EOverlayToStoreFlag_AddToCartAndShow = 2, -}; - - -//----------------------------------------------------------------------------- -// Purpose: Tells Steam where to place the browser window inside the overlay -//----------------------------------------------------------------------------- -enum EActivateGameOverlayToWebPageMode -{ - k_EActivateGameOverlayToWebPageMode_Default = 0, // Browser will open next to all other windows that the user has open in the overlay. - // The window will remain open, even if the user closes then re-opens the overlay. - - k_EActivateGameOverlayToWebPageMode_Modal = 1 // Browser will be opened in a special overlay configuration which hides all other windows - // that the user has open in the overlay. When the user closes the overlay, the browser window - // will also close. When the user closes the browser window, the overlay will automatically close. -}; - - -//----------------------------------------------------------------------------- -// Purpose: interface to accessing information about individual users, -// that can be a friend, in a group, on a game server or in a lobby with the local user -//----------------------------------------------------------------------------- -class ISteamFriends -{ -public: - // returns the local players name - guaranteed to not be NULL. - // this is the same name as on the users community profile page - // this is stored in UTF-8 format - // like all the other interface functions that return a char *, it's important that this pointer is not saved - // off; it will eventually be free'd or re-allocated - virtual const char *GetPersonaName() = 0; - - // Sets the player name, stores it on the server and publishes the changes to all friends who are online. - // Changes take place locally immediately, and a PersonaStateChange_t is posted, presuming success. - // - // The final results are available through the return value SteamAPICall_t, using SetPersonaNameResponse_t. - // - // If the name change fails to happen on the server, then an additional global PersonaStateChange_t will be posted - // to change the name back, in addition to the SetPersonaNameResponse_t callback. - STEAM_CALL_RESULT( SetPersonaNameResponse_t ) - virtual SteamAPICall_t SetPersonaName( const char *pchPersonaName ) = 0; - - // gets the status of the current user - virtual EPersonaState GetPersonaState() = 0; - - // friend iteration - // takes a set of k_EFriendFlags, and returns the number of users the client knows about who meet that criteria - // then GetFriendByIndex() can then be used to return the id's of each of those users - virtual int GetFriendCount( int iFriendFlags ) = 0; - - // returns the steamID of a user - // iFriend is a index of range [0, GetFriendCount()) - // iFriendsFlags must be the same value as used in GetFriendCount() - // the returned CSteamID can then be used by all the functions below to access details about the user - virtual CSteamID GetFriendByIndex( int iFriend, int iFriendFlags ) = 0; - - // returns a relationship to a user - virtual EFriendRelationship GetFriendRelationship( CSteamID steamIDFriend ) = 0; - - // returns the current status of the specified user - // this will only be known by the local user if steamIDFriend is in their friends list; on the same game server; in a chat room or lobby; or in a small group with the local user - virtual EPersonaState GetFriendPersonaState( CSteamID steamIDFriend ) = 0; - - // returns the name another user - guaranteed to not be NULL. - // same rules as GetFriendPersonaState() apply as to whether or not the user knowns the name of the other user - // note that on first joining a lobby, chat room or game server the local user will not known the name of the other users automatically; that information will arrive asyncronously - // - virtual const char *GetFriendPersonaName( CSteamID steamIDFriend ) = 0; - - // returns true if the friend is actually in a game, and fills in pFriendGameInfo with an extra details - virtual bool GetFriendGamePlayed( CSteamID steamIDFriend, STEAM_OUT_STRUCT() FriendGameInfo_t *pFriendGameInfo ) = 0; - // accesses old friends names - returns an empty string when their are no more items in the history - virtual const char *GetFriendPersonaNameHistory( CSteamID steamIDFriend, int iPersonaName ) = 0; - // friends steam level - virtual int GetFriendSteamLevel( CSteamID steamIDFriend ) = 0; - - // Returns nickname the current user has set for the specified player. Returns NULL if the no nickname has been set for that player. - // DEPRECATED: GetPersonaName follows the Steam nickname preferences, so apps shouldn't need to care about nicknames explicitly. - virtual const char *GetPlayerNickname( CSteamID steamIDPlayer ) = 0; - - // friend grouping (tag) apis - // returns the number of friends groups - virtual int GetFriendsGroupCount() = 0; - // returns the friends group ID for the given index (invalid indices return k_FriendsGroupID_Invalid) - virtual FriendsGroupID_t GetFriendsGroupIDByIndex( int iFG ) = 0; - // returns the name for the given friends group (NULL in the case of invalid friends group IDs) - virtual const char *GetFriendsGroupName( FriendsGroupID_t friendsGroupID ) = 0; - // returns the number of members in a given friends group - virtual int GetFriendsGroupMembersCount( FriendsGroupID_t friendsGroupID ) = 0; - // gets up to nMembersCount members of the given friends group, if fewer exist than requested those positions' SteamIDs will be invalid - virtual void GetFriendsGroupMembersList( FriendsGroupID_t friendsGroupID, STEAM_OUT_ARRAY_CALL(nMembersCount, GetFriendsGroupMembersCount, friendsGroupID ) CSteamID *pOutSteamIDMembers, int nMembersCount ) = 0; - - // returns true if the specified user meets any of the criteria specified in iFriendFlags - // iFriendFlags can be the union (binary or, |) of one or more k_EFriendFlags values - virtual bool HasFriend( CSteamID steamIDFriend, int iFriendFlags ) = 0; - - // clan (group) iteration and access functions - virtual int GetClanCount() = 0; - virtual CSteamID GetClanByIndex( int iClan ) = 0; - virtual const char *GetClanName( CSteamID steamIDClan ) = 0; - virtual const char *GetClanTag( CSteamID steamIDClan ) = 0; - // returns the most recent information we have about what's happening in a clan - virtual bool GetClanActivityCounts( CSteamID steamIDClan, int *pnOnline, int *pnInGame, int *pnChatting ) = 0; - - // for clans a user is a member of, they will have reasonably up-to-date information, but for others you'll have to download the info to have the latest - STEAM_CALL_RESULT( DownloadClanActivityCountsResult_t ) - virtual SteamAPICall_t DownloadClanActivityCounts( STEAM_ARRAY_COUNT(cClansToRequest) CSteamID *psteamIDClans, int cClansToRequest ) = 0; - - // iterators for getting users in a chat room, lobby, game server or clan - // note that large clans that cannot be iterated by the local user - // note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby - // steamIDSource can be the steamID of a group, game server, lobby or chat room - virtual int GetFriendCountFromSource( CSteamID steamIDSource ) = 0; - virtual CSteamID GetFriendFromSourceByIndex( CSteamID steamIDSource, int iFriend ) = 0; - - // returns true if the local user can see that steamIDUser is a member or in steamIDSource - virtual bool IsUserInSource( CSteamID steamIDUser, CSteamID steamIDSource ) = 0; - - // User is in a game pressing the talk button (will suppress the microphone for all voice comms from the Steam friends UI) - virtual void SetInGameVoiceSpeaking( CSteamID steamIDUser, bool bSpeaking ) = 0; - - // activates the game overlay, with an optional dialog to open - // valid options include "Friends", "Community", "Players", "Settings", "OfficialGameGroup", "Stats", "Achievements", - // "chatroomgroup/nnnn" - virtual void ActivateGameOverlay( const char *pchDialog ) = 0; - - // activates game overlay to a specific place - // valid options are - // "steamid" - opens the overlay web browser to the specified user or groups profile - // "chat" - opens a chat window to the specified user, or joins the group chat - // "jointrade" - opens a window to a Steam Trading session that was started with the ISteamEconomy/StartTrade Web API - // "stats" - opens the overlay web browser to the specified user's stats - // "achievements" - opens the overlay web browser to the specified user's achievements - // "friendadd" - opens the overlay in minimal mode prompting the user to add the target user as a friend - // "friendremove" - opens the overlay in minimal mode prompting the user to remove the target friend - // "friendrequestaccept" - opens the overlay in minimal mode prompting the user to accept an incoming friend invite - // "friendrequestignore" - opens the overlay in minimal mode prompting the user to ignore an incoming friend invite - virtual void ActivateGameOverlayToUser( const char *pchDialog, CSteamID steamID ) = 0; - - // activates game overlay web browser directly to the specified URL - // full address with protocol type is required, e.g. http://www.steamgames.com/ - virtual void ActivateGameOverlayToWebPage( const char *pchURL, EActivateGameOverlayToWebPageMode eMode = k_EActivateGameOverlayToWebPageMode_Default ) = 0; - - // activates game overlay to store page for app - virtual void ActivateGameOverlayToStore( AppId_t nAppID, EOverlayToStoreFlag eFlag ) = 0; - - // Mark a target user as 'played with'. This is a client-side only feature that requires that the calling user is - // in game - virtual void SetPlayedWith( CSteamID steamIDUserPlayedWith ) = 0; - - // activates game overlay to open the invite dialog. Invitations will be sent for the provided lobby. - virtual void ActivateGameOverlayInviteDialog( CSteamID steamIDLobby ) = 0; - - // gets the small (32x32) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set - virtual int GetSmallFriendAvatar( CSteamID steamIDFriend ) = 0; - - // gets the medium (64x64) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set - virtual int GetMediumFriendAvatar( CSteamID steamIDFriend ) = 0; - - // gets the large (184x184) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set - // returns -1 if this image has yet to be loaded, in this case wait for a AvatarImageLoaded_t callback and then call this again - virtual int GetLargeFriendAvatar( CSteamID steamIDFriend ) = 0; - - // requests information about a user - persona name & avatar - // if bRequireNameOnly is set, then the avatar of a user isn't downloaded - // - it's a lot slower to download avatars and churns the local cache, so if you don't need avatars, don't request them - // if returns true, it means that data is being requested, and a PersonaStateChanged_t callback will be posted when it's retrieved - // if returns false, it means that we already have all the details about that user, and functions can be called immediately - virtual bool RequestUserInformation( CSteamID steamIDUser, bool bRequireNameOnly ) = 0; - - // requests information about a clan officer list - // when complete, data is returned in ClanOfficerListResponse_t call result - // this makes available the calls below - // you can only ask about clans that a user is a member of - // note that this won't download avatars automatically; if you get an officer, - // and no avatar image is available, call RequestUserInformation( steamID, false ) to download the avatar - STEAM_CALL_RESULT( ClanOfficerListResponse_t ) - virtual SteamAPICall_t RequestClanOfficerList( CSteamID steamIDClan ) = 0; - - // iteration of clan officers - can only be done when a RequestClanOfficerList() call has completed - - // returns the steamID of the clan owner - virtual CSteamID GetClanOwner( CSteamID steamIDClan ) = 0; - // returns the number of officers in a clan (including the owner) - virtual int GetClanOfficerCount( CSteamID steamIDClan ) = 0; - // returns the steamID of a clan officer, by index, of range [0,GetClanOfficerCount) - virtual CSteamID GetClanOfficerByIndex( CSteamID steamIDClan, int iOfficer ) = 0; - // if current user is chat restricted, he can't send or receive any text/voice chat messages. - // the user can't see custom avatars. But the user can be online and send/recv game invites. - // a chat restricted user can't add friends or join any groups. - virtual uint32 GetUserRestrictions() = 0; - - // Rich Presence data is automatically shared between friends who are in the same game - // Each user has a set of Key/Value pairs - // Note the following limits: k_cchMaxRichPresenceKeys, k_cchMaxRichPresenceKeyLength, k_cchMaxRichPresenceValueLength - // There are five magic keys: - // "status" - a UTF-8 string that will show up in the 'view game info' dialog in the Steam friends list - // "connect" - a UTF-8 string that contains the command-line for how a friend can connect to a game - // "steam_display" - Names a rich presence localization token that will be displayed in the viewing user's selected language - // in the Steam client UI. For more info: https://partner.steamgames.com/doc/api/ISteamFriends#richpresencelocalization - // "steam_player_group" - When set, indicates to the Steam client that the player is a member of a particular group. Players in the same group - // may be organized together in various places in the Steam UI. - // "steam_player_group_size" - When set, indicates the total number of players in the steam_player_group. The Steam client may use this number to - // display additional information about a group when all of the members are not part of a user's friends list. - // GetFriendRichPresence() returns an empty string "" if no value is set - // SetRichPresence() to a NULL or an empty string deletes the key - // You can iterate the current set of keys for a friend with GetFriendRichPresenceKeyCount() - // and GetFriendRichPresenceKeyByIndex() (typically only used for debugging) - virtual bool SetRichPresence( const char *pchKey, const char *pchValue ) = 0; - virtual void ClearRichPresence() = 0; - virtual const char *GetFriendRichPresence( CSteamID steamIDFriend, const char *pchKey ) = 0; - virtual int GetFriendRichPresenceKeyCount( CSteamID steamIDFriend ) = 0; - virtual const char *GetFriendRichPresenceKeyByIndex( CSteamID steamIDFriend, int iKey ) = 0; - // Requests rich presence for a specific user. - virtual void RequestFriendRichPresence( CSteamID steamIDFriend ) = 0; - - // Rich invite support. - // If the target accepts the invite, a GameRichPresenceJoinRequested_t callback is posted containing the connect string. - // (Or you can configure your game so that it is passed on the command line instead. This is a deprecated path; ask us if you really need this.) - virtual bool InviteUserToGame( CSteamID steamIDFriend, const char *pchConnectString ) = 0; - - // recently-played-with friends iteration - // this iterates the entire list of users recently played with, across games - // GetFriendCoplayTime() returns as a unix time - virtual int GetCoplayFriendCount() = 0; - virtual CSteamID GetCoplayFriend( int iCoplayFriend ) = 0; - virtual int GetFriendCoplayTime( CSteamID steamIDFriend ) = 0; - virtual AppId_t GetFriendCoplayGame( CSteamID steamIDFriend ) = 0; - - // chat interface for games - // this allows in-game access to group (clan) chats from in the game - // the behavior is somewhat sophisticated, because the user may or may not be already in the group chat from outside the game or in the overlay - // use ActivateGameOverlayToUser( "chat", steamIDClan ) to open the in-game overlay version of the chat - STEAM_CALL_RESULT( JoinClanChatRoomCompletionResult_t ) - virtual SteamAPICall_t JoinClanChatRoom( CSteamID steamIDClan ) = 0; - virtual bool LeaveClanChatRoom( CSteamID steamIDClan ) = 0; - virtual int GetClanChatMemberCount( CSteamID steamIDClan ) = 0; - virtual CSteamID GetChatMemberByIndex( CSteamID steamIDClan, int iUser ) = 0; - virtual bool SendClanChatMessage( CSteamID steamIDClanChat, const char *pchText ) = 0; - virtual int GetClanChatMessage( CSteamID steamIDClanChat, int iMessage, void *prgchText, int cchTextMax, EChatEntryType *peChatEntryType, STEAM_OUT_STRUCT() CSteamID *psteamidChatter ) = 0; - virtual bool IsClanChatAdmin( CSteamID steamIDClanChat, CSteamID steamIDUser ) = 0; - - // interact with the Steam (game overlay / desktop) - virtual bool IsClanChatWindowOpenInSteam( CSteamID steamIDClanChat ) = 0; - virtual bool OpenClanChatWindowInSteam( CSteamID steamIDClanChat ) = 0; - virtual bool CloseClanChatWindowInSteam( CSteamID steamIDClanChat ) = 0; - - // peer-to-peer chat interception - // this is so you can show P2P chats inline in the game - virtual bool SetListenForFriendsMessages( bool bInterceptEnabled ) = 0; - virtual bool ReplyToFriendMessage( CSteamID steamIDFriend, const char *pchMsgToSend ) = 0; - virtual int GetFriendMessage( CSteamID steamIDFriend, int iMessageID, void *pvData, int cubData, EChatEntryType *peChatEntryType ) = 0; - - // following apis - STEAM_CALL_RESULT( FriendsGetFollowerCount_t ) - virtual SteamAPICall_t GetFollowerCount( CSteamID steamID ) = 0; - STEAM_CALL_RESULT( FriendsIsFollowing_t ) - virtual SteamAPICall_t IsFollowing( CSteamID steamID ) = 0; - STEAM_CALL_RESULT( FriendsEnumerateFollowingList_t ) - virtual SteamAPICall_t EnumerateFollowingList( uint32 unStartIndex ) = 0; - - virtual bool IsClanPublic( CSteamID steamIDClan ) = 0; - virtual bool IsClanOfficialGameGroup( CSteamID steamIDClan ) = 0; - - /// Return the number of chats (friends or chat rooms) with unread messages. - /// A "priority" message is one that would generate some sort of toast or - /// notification, and depends on user settings. - /// - /// You can register for UnreadChatMessagesChanged_t callbacks to know when this - /// has potentially changed. - virtual int GetNumChatsWithUnreadPriorityMessages() = 0; - - // activates game overlay to open the remote play together invite dialog. Invitations will be sent for remote play together - virtual void ActivateGameOverlayRemotePlayTogetherInviteDialog( CSteamID steamIDLobby ) = 0; - - // Call this before calling ActivateGameOverlayToWebPage() to have the Steam Overlay Browser block navigations - // to your specified protocol (scheme) uris and instead dispatch a OverlayBrowserProtocolNavigation_t callback to your game. - // ActivateGameOverlayToWebPage() must have been called with k_EActivateGameOverlayToWebPageMode_Modal - virtual bool RegisterProtocolInOverlayBrowser( const char *pchProtocol ) = 0; - - // Activates the game overlay to open an invite dialog that will send the provided Rich Presence connect string to selected friends - virtual void ActivateGameOverlayInviteDialogConnectString( const char *pchConnectString ) = 0; -}; - -#define STEAMFRIENDS_INTERFACE_VERSION "SteamFriends017" - -// Global interface accessor -inline ISteamFriends *SteamFriends(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamFriends *, SteamFriends, STEAMFRIENDS_INTERFACE_VERSION ); - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - -//----------------------------------------------------------------------------- -// Purpose: called when a friends' status changes -//----------------------------------------------------------------------------- -struct PersonaStateChange_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 4 }; - - uint64 m_ulSteamID; // steamID of the friend who changed - int m_nChangeFlags; // what's changed -}; - - -// used in PersonaStateChange_t::m_nChangeFlags to describe what's changed about a user -// these flags describe what the client has learned has changed recently, so on startup you'll see a name, avatar & relationship change for every friend -enum EPersonaChange -{ - k_EPersonaChangeName = 0x0001, - k_EPersonaChangeStatus = 0x0002, - k_EPersonaChangeComeOnline = 0x0004, - k_EPersonaChangeGoneOffline = 0x0008, - k_EPersonaChangeGamePlayed = 0x0010, - k_EPersonaChangeGameServer = 0x0020, - k_EPersonaChangeAvatar = 0x0040, - k_EPersonaChangeJoinedSource= 0x0080, - k_EPersonaChangeLeftSource = 0x0100, - k_EPersonaChangeRelationshipChanged = 0x0200, - k_EPersonaChangeNameFirstSet = 0x0400, - k_EPersonaChangeBroadcast = 0x0800, - k_EPersonaChangeNickname = 0x1000, - k_EPersonaChangeSteamLevel = 0x2000, - k_EPersonaChangeRichPresence = 0x4000, -}; - - -//----------------------------------------------------------------------------- -// Purpose: posted when game overlay activates or deactivates -// the game can use this to be pause or resume single player games -//----------------------------------------------------------------------------- -struct GameOverlayActivated_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 31 }; - uint8 m_bActive; // true if it's just been activated, false otherwise -}; - - -//----------------------------------------------------------------------------- -// Purpose: called when the user tries to join a different game server from their friends list -// game client should attempt to connect to specified server when this is received -//----------------------------------------------------------------------------- -struct GameServerChangeRequested_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 32 }; - char m_rgchServer[64]; // server address ("127.0.0.1:27015", "tf2.valvesoftware.com") - char m_rgchPassword[64]; // server password, if any -}; - - -//----------------------------------------------------------------------------- -// Purpose: called when the user tries to join a lobby from their friends list -// game client should attempt to connect to specified lobby when this is received -//----------------------------------------------------------------------------- -struct GameLobbyJoinRequested_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 33 }; - CSteamID m_steamIDLobby; - - // The friend they did the join via (will be invalid if not directly via a friend) - // - // On PS3, the friend will be invalid if this was triggered by a PSN invite via the XMB, but - // the account type will be console user so you can tell at least that this was from a PSN friend - // rather than a Steam friend. - CSteamID m_steamIDFriend; -}; - - -//----------------------------------------------------------------------------- -// Purpose: called when an avatar is loaded in from a previous GetLargeFriendAvatar() call -// if the image wasn't already available -//----------------------------------------------------------------------------- -struct AvatarImageLoaded_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 34 }; - CSteamID m_steamID; // steamid the avatar has been loaded for - int m_iImage; // the image index of the now loaded image - int m_iWide; // width of the loaded image - int m_iTall; // height of the loaded image -}; - - -//----------------------------------------------------------------------------- -// Purpose: marks the return of a request officer list call -//----------------------------------------------------------------------------- -struct ClanOfficerListResponse_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 35 }; - CSteamID m_steamIDClan; - int m_cOfficers; - uint8 m_bSuccess; -}; - - -//----------------------------------------------------------------------------- -// Purpose: callback indicating updated data about friends rich presence information -//----------------------------------------------------------------------------- -struct FriendRichPresenceUpdate_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 36 }; - CSteamID m_steamIDFriend; // friend who's rich presence has changed - AppId_t m_nAppID; // the appID of the game (should always be the current game) -}; - - -//----------------------------------------------------------------------------- -// Purpose: called when the user tries to join a game from their friends list -// rich presence will have been set with the "connect" key which is set here -//----------------------------------------------------------------------------- -struct GameRichPresenceJoinRequested_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 37 }; - CSteamID m_steamIDFriend; // the friend they did the join via (will be invalid if not directly via a friend) - char m_rgchConnect[k_cchMaxRichPresenceValueLength]; -}; - - -//----------------------------------------------------------------------------- -// Purpose: a chat message has been received for a clan chat the game has joined -//----------------------------------------------------------------------------- -struct GameConnectedClanChatMsg_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 38 }; - CSteamID m_steamIDClanChat; - CSteamID m_steamIDUser; - int m_iMessageID; -}; - - -//----------------------------------------------------------------------------- -// Purpose: a user has joined a clan chat -//----------------------------------------------------------------------------- -struct GameConnectedChatJoin_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 39 }; - CSteamID m_steamIDClanChat; - CSteamID m_steamIDUser; -}; - - -//----------------------------------------------------------------------------- -// Purpose: a user has left the chat we're in -//----------------------------------------------------------------------------- -struct GameConnectedChatLeave_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 40 }; - CSteamID m_steamIDClanChat; - CSteamID m_steamIDUser; - bool m_bKicked; // true if admin kicked - bool m_bDropped; // true if Steam connection dropped -}; - - -//----------------------------------------------------------------------------- -// Purpose: a DownloadClanActivityCounts() call has finished -//----------------------------------------------------------------------------- -struct DownloadClanActivityCountsResult_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 41 }; - bool m_bSuccess; -}; - - -//----------------------------------------------------------------------------- -// Purpose: a JoinClanChatRoom() call has finished -//----------------------------------------------------------------------------- -struct JoinClanChatRoomCompletionResult_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 42 }; - CSteamID m_steamIDClanChat; - EChatRoomEnterResponse m_eChatRoomEnterResponse; -}; - -//----------------------------------------------------------------------------- -// Purpose: a chat message has been received from a user -//----------------------------------------------------------------------------- -struct GameConnectedFriendChatMsg_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 43 }; - CSteamID m_steamIDUser; - int m_iMessageID; -}; - - -struct FriendsGetFollowerCount_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 44 }; - EResult m_eResult; - CSteamID m_steamID; - int m_nCount; -}; - - -struct FriendsIsFollowing_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 45 }; - EResult m_eResult; - CSteamID m_steamID; - bool m_bIsFollowing; -}; - - -struct FriendsEnumerateFollowingList_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 46 }; - EResult m_eResult; - CSteamID m_rgSteamID[ k_cEnumerateFollowersMax ]; - int32 m_nResultsReturned; - int32 m_nTotalResultCount; -}; - -//----------------------------------------------------------------------------- -// Purpose: reports the result of an attempt to change the user's persona name -//----------------------------------------------------------------------------- -struct SetPersonaNameResponse_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 47 }; - - bool m_bSuccess; // true if name change succeeded completely. - bool m_bLocalSuccess; // true if name change was retained locally. (We might not have been able to communicate with Steam) - EResult m_result; // detailed result code -}; - -//----------------------------------------------------------------------------- -// Purpose: Invoked when the status of unread messages changes -//----------------------------------------------------------------------------- -struct UnreadChatMessagesChanged_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 48 }; -}; - - -//----------------------------------------------------------------------------- -// Purpose: Dispatched when an overlay browser instance is navigated to a protocol/scheme registered by RegisterProtocolInOverlayBrowser() -//----------------------------------------------------------------------------- -struct OverlayBrowserProtocolNavigation_t -{ - enum { k_iCallback = k_iSteamFriendsCallbacks + 49 }; - char rgchURI[ 1024 ]; -}; - - -#pragma pack( pop ) - -#endif // ISTEAMFRIENDS_H +//====== Copyright Valve Corporation, All rights reserved. ==================== +// +// Purpose: interface to both friends list data and general information about users +// +//============================================================================= + +#ifndef ISTEAMFRIENDS_H +#define ISTEAMFRIENDS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + +//----------------------------------------------------------------------------- +// Purpose: set of relationships to other users +//----------------------------------------------------------------------------- +enum EFriendRelationship +{ + k_EFriendRelationshipNone = 0, + k_EFriendRelationshipBlocked = 1, // this doesn't get stored; the user has just done an Ignore on an friendship invite + k_EFriendRelationshipRequestRecipient = 2, + k_EFriendRelationshipFriend = 3, + k_EFriendRelationshipRequestInitiator = 4, + k_EFriendRelationshipIgnored = 5, // this is stored; the user has explicit blocked this other user from comments/chat/etc + k_EFriendRelationshipIgnoredFriend = 6, + k_EFriendRelationshipSuggested_DEPRECATED = 7, // was used by the original implementation of the facebook linking feature, but now unused. + + // keep this updated + k_EFriendRelationshipMax = 8, +}; + +// maximum length of friend group name (not including terminating nul!) +const int k_cchMaxFriendsGroupName = 64; + +// maximum number of groups a single user is allowed +const int k_cFriendsGroupLimit = 100; + +// friends group identifier type +typedef int16 FriendsGroupID_t; + +// invalid friends group identifier constant +const FriendsGroupID_t k_FriendsGroupID_Invalid = -1; + +const int k_cEnumerateFollowersMax = 50; + + +//----------------------------------------------------------------------------- +// Purpose: list of states a friend can be in +//----------------------------------------------------------------------------- +enum EPersonaState +{ + k_EPersonaStateOffline = 0, // friend is not currently logged on + k_EPersonaStateOnline = 1, // friend is logged on + k_EPersonaStateBusy = 2, // user is on, but busy + k_EPersonaStateAway = 3, // auto-away feature + k_EPersonaStateSnooze = 4, // auto-away for a long time + k_EPersonaStateLookingToTrade = 5, // Online, trading + k_EPersonaStateLookingToPlay = 6, // Online, wanting to play + k_EPersonaStateInvisible = 7, // Online, but appears offline to friends. This status is never published to clients. + k_EPersonaStateMax, +}; + + +//----------------------------------------------------------------------------- +// Purpose: flags for enumerating friends list, or quickly checking a the relationship between users +//----------------------------------------------------------------------------- +enum EFriendFlags +{ + k_EFriendFlagNone = 0x00, + k_EFriendFlagBlocked = 0x01, + k_EFriendFlagFriendshipRequested = 0x02, + k_EFriendFlagImmediate = 0x04, // "regular" friend + k_EFriendFlagClanMember = 0x08, + k_EFriendFlagOnGameServer = 0x10, + // k_EFriendFlagHasPlayedWith = 0x20, // not currently used + // k_EFriendFlagFriendOfFriend = 0x40, // not currently used + k_EFriendFlagRequestingFriendship = 0x80, + k_EFriendFlagRequestingInfo = 0x100, + k_EFriendFlagIgnored = 0x200, + k_EFriendFlagIgnoredFriend = 0x400, + // k_EFriendFlagSuggested = 0x800, // not used + k_EFriendFlagChatMember = 0x1000, + k_EFriendFlagAll = 0xFFFF, +}; + + +// friend game played information +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif +struct FriendGameInfo_t +{ + CGameID m_gameID; + uint32 m_unGameIP; + uint16 m_usGamePort; + uint16 m_usQueryPort; + CSteamID m_steamIDLobby; +}; +#pragma pack( pop ) + +// maximum number of characters in a user's name. Two flavors; one for UTF-8 and one for UTF-16. +// The UTF-8 version has to be very generous to accomodate characters that get large when encoded +// in UTF-8. +enum +{ + k_cchPersonaNameMax = 128, + k_cwchPersonaNameMax = 32, +}; + +//----------------------------------------------------------------------------- +// Purpose: user restriction flags +//----------------------------------------------------------------------------- +enum EUserRestriction +{ + k_nUserRestrictionNone = 0, // no known chat/content restriction + k_nUserRestrictionUnknown = 1, // we don't know yet (user offline) + k_nUserRestrictionAnyChat = 2, // user is not allowed to (or can't) send/recv any chat + k_nUserRestrictionVoiceChat = 4, // user is not allowed to (or can't) send/recv voice chat + k_nUserRestrictionGroupChat = 8, // user is not allowed to (or can't) send/recv group chat + k_nUserRestrictionRating = 16, // user is too young according to rating in current region + k_nUserRestrictionGameInvites = 32, // user cannot send or recv game invites (e.g. mobile) + k_nUserRestrictionTrading = 64, // user cannot participate in trading (console, mobile) +}; + +// size limit on chat room or member metadata +const uint32 k_cubChatMetadataMax = 8192; + +// size limits on Rich Presence data +enum { k_cchMaxRichPresenceKeys = 30 }; +enum { k_cchMaxRichPresenceKeyLength = 64 }; +enum { k_cchMaxRichPresenceValueLength = 256 }; + +// These values are passed as parameters to the store +enum EOverlayToStoreFlag +{ + k_EOverlayToStoreFlag_None = 0, + k_EOverlayToStoreFlag_AddToCart = 1, + k_EOverlayToStoreFlag_AddToCartAndShow = 2, +}; + + +//----------------------------------------------------------------------------- +// Purpose: Tells Steam where to place the browser window inside the overlay +//----------------------------------------------------------------------------- +enum EActivateGameOverlayToWebPageMode +{ + k_EActivateGameOverlayToWebPageMode_Default = 0, // Browser will open next to all other windows that the user has open in the overlay. + // The window will remain open, even if the user closes then re-opens the overlay. + + k_EActivateGameOverlayToWebPageMode_Modal = 1 // Browser will be opened in a special overlay configuration which hides all other windows + // that the user has open in the overlay. When the user closes the overlay, the browser window + // will also close. When the user closes the browser window, the overlay will automatically close. +}; + + +//----------------------------------------------------------------------------- +// Purpose: interface to accessing information about individual users, +// that can be a friend, in a group, on a game server or in a lobby with the local user +//----------------------------------------------------------------------------- +class ISteamFriends +{ +public: + // returns the local players name - guaranteed to not be NULL. + // this is the same name as on the users community profile page + // this is stored in UTF-8 format + // like all the other interface functions that return a char *, it's important that this pointer is not saved + // off; it will eventually be free'd or re-allocated + virtual const char *GetPersonaName() = 0; + + // Sets the player name, stores it on the server and publishes the changes to all friends who are online. + // Changes take place locally immediately, and a PersonaStateChange_t is posted, presuming success. + // + // The final results are available through the return value SteamAPICall_t, using SetPersonaNameResponse_t. + // + // If the name change fails to happen on the server, then an additional global PersonaStateChange_t will be posted + // to change the name back, in addition to the SetPersonaNameResponse_t callback. + STEAM_CALL_RESULT( SetPersonaNameResponse_t ) + virtual SteamAPICall_t SetPersonaName( const char *pchPersonaName ) = 0; + + // gets the status of the current user + virtual EPersonaState GetPersonaState() = 0; + + // friend iteration + // takes a set of k_EFriendFlags, and returns the number of users the client knows about who meet that criteria + // then GetFriendByIndex() can then be used to return the id's of each of those users + virtual int GetFriendCount( int iFriendFlags ) = 0; + + // returns the steamID of a user + // iFriend is a index of range [0, GetFriendCount()) + // iFriendsFlags must be the same value as used in GetFriendCount() + // the returned CSteamID can then be used by all the functions below to access details about the user + virtual CSteamID GetFriendByIndex( int iFriend, int iFriendFlags ) = 0; + + // returns a relationship to a user + virtual EFriendRelationship GetFriendRelationship( CSteamID steamIDFriend ) = 0; + + // returns the current status of the specified user + // this will only be known by the local user if steamIDFriend is in their friends list; on the same game server; in a chat room or lobby; or in a small group with the local user + virtual EPersonaState GetFriendPersonaState( CSteamID steamIDFriend ) = 0; + + // returns the name another user - guaranteed to not be NULL. + // same rules as GetFriendPersonaState() apply as to whether or not the user knowns the name of the other user + // note that on first joining a lobby, chat room or game server the local user will not known the name of the other users automatically; that information will arrive asyncronously + // + virtual const char *GetFriendPersonaName( CSteamID steamIDFriend ) = 0; + + // returns true if the friend is actually in a game, and fills in pFriendGameInfo with an extra details + virtual bool GetFriendGamePlayed( CSteamID steamIDFriend, STEAM_OUT_STRUCT() FriendGameInfo_t *pFriendGameInfo ) = 0; + // accesses old friends names - returns an empty string when their are no more items in the history + virtual const char *GetFriendPersonaNameHistory( CSteamID steamIDFriend, int iPersonaName ) = 0; + // friends steam level + virtual int GetFriendSteamLevel( CSteamID steamIDFriend ) = 0; + + // Returns nickname the current user has set for the specified player. Returns NULL if the no nickname has been set for that player. + // DEPRECATED: GetPersonaName follows the Steam nickname preferences, so apps shouldn't need to care about nicknames explicitly. + virtual const char *GetPlayerNickname( CSteamID steamIDPlayer ) = 0; + + // friend grouping (tag) apis + // returns the number of friends groups + virtual int GetFriendsGroupCount() = 0; + // returns the friends group ID for the given index (invalid indices return k_FriendsGroupID_Invalid) + virtual FriendsGroupID_t GetFriendsGroupIDByIndex( int iFG ) = 0; + // returns the name for the given friends group (NULL in the case of invalid friends group IDs) + virtual const char *GetFriendsGroupName( FriendsGroupID_t friendsGroupID ) = 0; + // returns the number of members in a given friends group + virtual int GetFriendsGroupMembersCount( FriendsGroupID_t friendsGroupID ) = 0; + // gets up to nMembersCount members of the given friends group, if fewer exist than requested those positions' SteamIDs will be invalid + virtual void GetFriendsGroupMembersList( FriendsGroupID_t friendsGroupID, STEAM_OUT_ARRAY_CALL(nMembersCount, GetFriendsGroupMembersCount, friendsGroupID ) CSteamID *pOutSteamIDMembers, int nMembersCount ) = 0; + + // returns true if the specified user meets any of the criteria specified in iFriendFlags + // iFriendFlags can be the union (binary or, |) of one or more k_EFriendFlags values + virtual bool HasFriend( CSteamID steamIDFriend, int iFriendFlags ) = 0; + + // clan (group) iteration and access functions + virtual int GetClanCount() = 0; + virtual CSteamID GetClanByIndex( int iClan ) = 0; + virtual const char *GetClanName( CSteamID steamIDClan ) = 0; + virtual const char *GetClanTag( CSteamID steamIDClan ) = 0; + // returns the most recent information we have about what's happening in a clan + virtual bool GetClanActivityCounts( CSteamID steamIDClan, int *pnOnline, int *pnInGame, int *pnChatting ) = 0; + + // for clans a user is a member of, they will have reasonably up-to-date information, but for others you'll have to download the info to have the latest + STEAM_CALL_RESULT( DownloadClanActivityCountsResult_t ) + virtual SteamAPICall_t DownloadClanActivityCounts( STEAM_ARRAY_COUNT(cClansToRequest) CSteamID *psteamIDClans, int cClansToRequest ) = 0; + + // iterators for getting users in a chat room, lobby, game server or clan + // note that large clans that cannot be iterated by the local user + // note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby + // steamIDSource can be the steamID of a group, game server, lobby or chat room + virtual int GetFriendCountFromSource( CSteamID steamIDSource ) = 0; + virtual CSteamID GetFriendFromSourceByIndex( CSteamID steamIDSource, int iFriend ) = 0; + + // returns true if the local user can see that steamIDUser is a member or in steamIDSource + virtual bool IsUserInSource( CSteamID steamIDUser, CSteamID steamIDSource ) = 0; + + // User is in a game pressing the talk button (will suppress the microphone for all voice comms from the Steam friends UI) + virtual void SetInGameVoiceSpeaking( CSteamID steamIDUser, bool bSpeaking ) = 0; + + // activates the game overlay, with an optional dialog to open + // valid options include "Friends", "Community", "Players", "Settings", "OfficialGameGroup", "Stats", "Achievements", + // "chatroomgroup/nnnn" + virtual void ActivateGameOverlay( const char *pchDialog ) = 0; + + // activates game overlay to a specific place + // valid options are + // "steamid" - opens the overlay web browser to the specified user or groups profile + // "chat" - opens a chat window to the specified user, or joins the group chat + // "jointrade" - opens a window to a Steam Trading session that was started with the ISteamEconomy/StartTrade Web API + // "stats" - opens the overlay web browser to the specified user's stats + // "achievements" - opens the overlay web browser to the specified user's achievements + // "friendadd" - opens the overlay in minimal mode prompting the user to add the target user as a friend + // "friendremove" - opens the overlay in minimal mode prompting the user to remove the target friend + // "friendrequestaccept" - opens the overlay in minimal mode prompting the user to accept an incoming friend invite + // "friendrequestignore" - opens the overlay in minimal mode prompting the user to ignore an incoming friend invite + virtual void ActivateGameOverlayToUser( const char *pchDialog, CSteamID steamID ) = 0; + + // activates game overlay web browser directly to the specified URL + // full address with protocol type is required, e.g. http://www.steamgames.com/ + virtual void ActivateGameOverlayToWebPage( const char *pchURL, EActivateGameOverlayToWebPageMode eMode = k_EActivateGameOverlayToWebPageMode_Default ) = 0; + + // activates game overlay to store page for app + virtual void ActivateGameOverlayToStore( AppId_t nAppID, EOverlayToStoreFlag eFlag ) = 0; + + // Mark a target user as 'played with'. This is a client-side only feature that requires that the calling user is + // in game + virtual void SetPlayedWith( CSteamID steamIDUserPlayedWith ) = 0; + + // activates game overlay to open the invite dialog. Invitations will be sent for the provided lobby. + virtual void ActivateGameOverlayInviteDialog( CSteamID steamIDLobby ) = 0; + + // gets the small (32x32) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set + virtual int GetSmallFriendAvatar( CSteamID steamIDFriend ) = 0; + + // gets the medium (64x64) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set + virtual int GetMediumFriendAvatar( CSteamID steamIDFriend ) = 0; + + // gets the large (184x184) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set + // returns -1 if this image has yet to be loaded, in this case wait for a AvatarImageLoaded_t callback and then call this again + virtual int GetLargeFriendAvatar( CSteamID steamIDFriend ) = 0; + + // requests information about a user - persona name & avatar + // if bRequireNameOnly is set, then the avatar of a user isn't downloaded + // - it's a lot slower to download avatars and churns the local cache, so if you don't need avatars, don't request them + // if returns true, it means that data is being requested, and a PersonaStateChanged_t callback will be posted when it's retrieved + // if returns false, it means that we already have all the details about that user, and functions can be called immediately + virtual bool RequestUserInformation( CSteamID steamIDUser, bool bRequireNameOnly ) = 0; + + // requests information about a clan officer list + // when complete, data is returned in ClanOfficerListResponse_t call result + // this makes available the calls below + // you can only ask about clans that a user is a member of + // note that this won't download avatars automatically; if you get an officer, + // and no avatar image is available, call RequestUserInformation( steamID, false ) to download the avatar + STEAM_CALL_RESULT( ClanOfficerListResponse_t ) + virtual SteamAPICall_t RequestClanOfficerList( CSteamID steamIDClan ) = 0; + + // iteration of clan officers - can only be done when a RequestClanOfficerList() call has completed + + // returns the steamID of the clan owner + virtual CSteamID GetClanOwner( CSteamID steamIDClan ) = 0; + // returns the number of officers in a clan (including the owner) + virtual int GetClanOfficerCount( CSteamID steamIDClan ) = 0; + // returns the steamID of a clan officer, by index, of range [0,GetClanOfficerCount) + virtual CSteamID GetClanOfficerByIndex( CSteamID steamIDClan, int iOfficer ) = 0; + // if current user is chat restricted, he can't send or receive any text/voice chat messages. + // the user can't see custom avatars. But the user can be online and send/recv game invites. + // a chat restricted user can't add friends or join any groups. + virtual uint32 GetUserRestrictions() = 0; + + // Rich Presence data is automatically shared between friends who are in the same game + // Each user has a set of Key/Value pairs + // Note the following limits: k_cchMaxRichPresenceKeys, k_cchMaxRichPresenceKeyLength, k_cchMaxRichPresenceValueLength + // There are five magic keys: + // "status" - a UTF-8 string that will show up in the 'view game info' dialog in the Steam friends list + // "connect" - a UTF-8 string that contains the command-line for how a friend can connect to a game + // "steam_display" - Names a rich presence localization token that will be displayed in the viewing user's selected language + // in the Steam client UI. For more info: https://partner.steamgames.com/doc/api/ISteamFriends#richpresencelocalization + // "steam_player_group" - When set, indicates to the Steam client that the player is a member of a particular group. Players in the same group + // may be organized together in various places in the Steam UI. + // "steam_player_group_size" - When set, indicates the total number of players in the steam_player_group. The Steam client may use this number to + // display additional information about a group when all of the members are not part of a user's friends list. + // GetFriendRichPresence() returns an empty string "" if no value is set + // SetRichPresence() to a NULL or an empty string deletes the key + // You can iterate the current set of keys for a friend with GetFriendRichPresenceKeyCount() + // and GetFriendRichPresenceKeyByIndex() (typically only used for debugging) + virtual bool SetRichPresence( const char *pchKey, const char *pchValue ) = 0; + virtual void ClearRichPresence() = 0; + virtual const char *GetFriendRichPresence( CSteamID steamIDFriend, const char *pchKey ) = 0; + virtual int GetFriendRichPresenceKeyCount( CSteamID steamIDFriend ) = 0; + virtual const char *GetFriendRichPresenceKeyByIndex( CSteamID steamIDFriend, int iKey ) = 0; + // Requests rich presence for a specific user. + virtual void RequestFriendRichPresence( CSteamID steamIDFriend ) = 0; + + // Rich invite support. + // If the target accepts the invite, a GameRichPresenceJoinRequested_t callback is posted containing the connect string. + // (Or you can configure your game so that it is passed on the command line instead. This is a deprecated path; ask us if you really need this.) + virtual bool InviteUserToGame( CSteamID steamIDFriend, const char *pchConnectString ) = 0; + + // recently-played-with friends iteration + // this iterates the entire list of users recently played with, across games + // GetFriendCoplayTime() returns as a unix time + virtual int GetCoplayFriendCount() = 0; + virtual CSteamID GetCoplayFriend( int iCoplayFriend ) = 0; + virtual int GetFriendCoplayTime( CSteamID steamIDFriend ) = 0; + virtual AppId_t GetFriendCoplayGame( CSteamID steamIDFriend ) = 0; + + // chat interface for games + // this allows in-game access to group (clan) chats from in the game + // the behavior is somewhat sophisticated, because the user may or may not be already in the group chat from outside the game or in the overlay + // use ActivateGameOverlayToUser( "chat", steamIDClan ) to open the in-game overlay version of the chat + STEAM_CALL_RESULT( JoinClanChatRoomCompletionResult_t ) + virtual SteamAPICall_t JoinClanChatRoom( CSteamID steamIDClan ) = 0; + virtual bool LeaveClanChatRoom( CSteamID steamIDClan ) = 0; + virtual int GetClanChatMemberCount( CSteamID steamIDClan ) = 0; + virtual CSteamID GetChatMemberByIndex( CSteamID steamIDClan, int iUser ) = 0; + virtual bool SendClanChatMessage( CSteamID steamIDClanChat, const char *pchText ) = 0; + virtual int GetClanChatMessage( CSteamID steamIDClanChat, int iMessage, void *prgchText, int cchTextMax, EChatEntryType *peChatEntryType, STEAM_OUT_STRUCT() CSteamID *psteamidChatter ) = 0; + virtual bool IsClanChatAdmin( CSteamID steamIDClanChat, CSteamID steamIDUser ) = 0; + + // interact with the Steam (game overlay / desktop) + virtual bool IsClanChatWindowOpenInSteam( CSteamID steamIDClanChat ) = 0; + virtual bool OpenClanChatWindowInSteam( CSteamID steamIDClanChat ) = 0; + virtual bool CloseClanChatWindowInSteam( CSteamID steamIDClanChat ) = 0; + + // peer-to-peer chat interception + // this is so you can show P2P chats inline in the game + virtual bool SetListenForFriendsMessages( bool bInterceptEnabled ) = 0; + virtual bool ReplyToFriendMessage( CSteamID steamIDFriend, const char *pchMsgToSend ) = 0; + virtual int GetFriendMessage( CSteamID steamIDFriend, int iMessageID, void *pvData, int cubData, EChatEntryType *peChatEntryType ) = 0; + + // following apis + STEAM_CALL_RESULT( FriendsGetFollowerCount_t ) + virtual SteamAPICall_t GetFollowerCount( CSteamID steamID ) = 0; + STEAM_CALL_RESULT( FriendsIsFollowing_t ) + virtual SteamAPICall_t IsFollowing( CSteamID steamID ) = 0; + STEAM_CALL_RESULT( FriendsEnumerateFollowingList_t ) + virtual SteamAPICall_t EnumerateFollowingList( uint32 unStartIndex ) = 0; + + virtual bool IsClanPublic( CSteamID steamIDClan ) = 0; + virtual bool IsClanOfficialGameGroup( CSteamID steamIDClan ) = 0; + + /// Return the number of chats (friends or chat rooms) with unread messages. + /// A "priority" message is one that would generate some sort of toast or + /// notification, and depends on user settings. + /// + /// You can register for UnreadChatMessagesChanged_t callbacks to know when this + /// has potentially changed. + virtual int GetNumChatsWithUnreadPriorityMessages() = 0; + + // activates game overlay to open the remote play together invite dialog. Invitations will be sent for remote play together + virtual void ActivateGameOverlayRemotePlayTogetherInviteDialog( CSteamID steamIDLobby ) = 0; + + // Call this before calling ActivateGameOverlayToWebPage() to have the Steam Overlay Browser block navigations + // to your specified protocol (scheme) uris and instead dispatch a OverlayBrowserProtocolNavigation_t callback to your game. + // ActivateGameOverlayToWebPage() must have been called with k_EActivateGameOverlayToWebPageMode_Modal + virtual bool RegisterProtocolInOverlayBrowser( const char *pchProtocol ) = 0; + + // Activates the game overlay to open an invite dialog that will send the provided Rich Presence connect string to selected friends + virtual void ActivateGameOverlayInviteDialogConnectString( const char *pchConnectString ) = 0; +}; + +#define STEAMFRIENDS_INTERFACE_VERSION "SteamFriends017" + +// Global interface accessor +inline ISteamFriends *SteamFriends(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamFriends *, SteamFriends, STEAMFRIENDS_INTERFACE_VERSION ); + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when a friends' status changes +//----------------------------------------------------------------------------- +struct PersonaStateChange_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 4 }; + + uint64 m_ulSteamID; // steamID of the friend who changed + int m_nChangeFlags; // what's changed +}; + + +// used in PersonaStateChange_t::m_nChangeFlags to describe what's changed about a user +// these flags describe what the client has learned has changed recently, so on startup you'll see a name, avatar & relationship change for every friend +enum EPersonaChange +{ + k_EPersonaChangeName = 0x0001, + k_EPersonaChangeStatus = 0x0002, + k_EPersonaChangeComeOnline = 0x0004, + k_EPersonaChangeGoneOffline = 0x0008, + k_EPersonaChangeGamePlayed = 0x0010, + k_EPersonaChangeGameServer = 0x0020, + k_EPersonaChangeAvatar = 0x0040, + k_EPersonaChangeJoinedSource= 0x0080, + k_EPersonaChangeLeftSource = 0x0100, + k_EPersonaChangeRelationshipChanged = 0x0200, + k_EPersonaChangeNameFirstSet = 0x0400, + k_EPersonaChangeBroadcast = 0x0800, + k_EPersonaChangeNickname = 0x1000, + k_EPersonaChangeSteamLevel = 0x2000, + k_EPersonaChangeRichPresence = 0x4000, +}; + + +//----------------------------------------------------------------------------- +// Purpose: posted when game overlay activates or deactivates +// the game can use this to be pause or resume single player games +//----------------------------------------------------------------------------- +struct GameOverlayActivated_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 31 }; + uint8 m_bActive; // true if it's just been activated, false otherwise +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the user tries to join a different game server from their friends list +// game client should attempt to connect to specified server when this is received +//----------------------------------------------------------------------------- +struct GameServerChangeRequested_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 32 }; + char m_rgchServer[64]; // server address ("127.0.0.1:27015", "tf2.valvesoftware.com") + char m_rgchPassword[64]; // server password, if any +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the user tries to join a lobby from their friends list +// game client should attempt to connect to specified lobby when this is received +//----------------------------------------------------------------------------- +struct GameLobbyJoinRequested_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 33 }; + CSteamID m_steamIDLobby; + + // The friend they did the join via (will be invalid if not directly via a friend) + // + // On PS3, the friend will be invalid if this was triggered by a PSN invite via the XMB, but + // the account type will be console user so you can tell at least that this was from a PSN friend + // rather than a Steam friend. + CSteamID m_steamIDFriend; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when an avatar is loaded in from a previous GetLargeFriendAvatar() call +// if the image wasn't already available +//----------------------------------------------------------------------------- +struct AvatarImageLoaded_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 34 }; + CSteamID m_steamID; // steamid the avatar has been loaded for + int m_iImage; // the image index of the now loaded image + int m_iWide; // width of the loaded image + int m_iTall; // height of the loaded image +}; + + +//----------------------------------------------------------------------------- +// Purpose: marks the return of a request officer list call +//----------------------------------------------------------------------------- +struct ClanOfficerListResponse_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 35 }; + CSteamID m_steamIDClan; + int m_cOfficers; + uint8 m_bSuccess; +}; + + +//----------------------------------------------------------------------------- +// Purpose: callback indicating updated data about friends rich presence information +//----------------------------------------------------------------------------- +struct FriendRichPresenceUpdate_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 36 }; + CSteamID m_steamIDFriend; // friend who's rich presence has changed + AppId_t m_nAppID; // the appID of the game (should always be the current game) +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the user tries to join a game from their friends list +// rich presence will have been set with the "connect" key which is set here +//----------------------------------------------------------------------------- +struct GameRichPresenceJoinRequested_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 37 }; + CSteamID m_steamIDFriend; // the friend they did the join via (will be invalid if not directly via a friend) + char m_rgchConnect[k_cchMaxRichPresenceValueLength]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a chat message has been received for a clan chat the game has joined +//----------------------------------------------------------------------------- +struct GameConnectedClanChatMsg_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 38 }; + CSteamID m_steamIDClanChat; + CSteamID m_steamIDUser; + int m_iMessageID; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a user has joined a clan chat +//----------------------------------------------------------------------------- +struct GameConnectedChatJoin_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 39 }; + CSteamID m_steamIDClanChat; + CSteamID m_steamIDUser; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a user has left the chat we're in +//----------------------------------------------------------------------------- +struct GameConnectedChatLeave_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 40 }; + CSteamID m_steamIDClanChat; + CSteamID m_steamIDUser; + bool m_bKicked; // true if admin kicked + bool m_bDropped; // true if Steam connection dropped +}; + + +//----------------------------------------------------------------------------- +// Purpose: a DownloadClanActivityCounts() call has finished +//----------------------------------------------------------------------------- +struct DownloadClanActivityCountsResult_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 41 }; + bool m_bSuccess; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a JoinClanChatRoom() call has finished +//----------------------------------------------------------------------------- +struct JoinClanChatRoomCompletionResult_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 42 }; + CSteamID m_steamIDClanChat; + EChatRoomEnterResponse m_eChatRoomEnterResponse; +}; + +//----------------------------------------------------------------------------- +// Purpose: a chat message has been received from a user +//----------------------------------------------------------------------------- +struct GameConnectedFriendChatMsg_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 43 }; + CSteamID m_steamIDUser; + int m_iMessageID; +}; + + +struct FriendsGetFollowerCount_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 44 }; + EResult m_eResult; + CSteamID m_steamID; + int m_nCount; +}; + + +struct FriendsIsFollowing_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 45 }; + EResult m_eResult; + CSteamID m_steamID; + bool m_bIsFollowing; +}; + + +struct FriendsEnumerateFollowingList_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 46 }; + EResult m_eResult; + CSteamID m_rgSteamID[ k_cEnumerateFollowersMax ]; + int32 m_nResultsReturned; + int32 m_nTotalResultCount; +}; + +//----------------------------------------------------------------------------- +// Purpose: reports the result of an attempt to change the user's persona name +//----------------------------------------------------------------------------- +struct SetPersonaNameResponse_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 47 }; + + bool m_bSuccess; // true if name change succeeded completely. + bool m_bLocalSuccess; // true if name change was retained locally. (We might not have been able to communicate with Steam) + EResult m_result; // detailed result code +}; + +//----------------------------------------------------------------------------- +// Purpose: Invoked when the status of unread messages changes +//----------------------------------------------------------------------------- +struct UnreadChatMessagesChanged_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 48 }; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Dispatched when an overlay browser instance is navigated to a protocol/scheme registered by RegisterProtocolInOverlayBrowser() +//----------------------------------------------------------------------------- +struct OverlayBrowserProtocolNavigation_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 49 }; + char rgchURI[ 1024 ]; +}; + + +#pragma pack( pop ) + +#endif // ISTEAMFRIENDS_H diff --git a/CodeGen/steam/isteamgamecoordinator.h b/CodeGen/steam/isteamgamecoordinator.h index 9e3d76d7..89b740d7 100644 --- a/CodeGen/steam/isteamgamecoordinator.h +++ b/CodeGen/steam/isteamgamecoordinator.h @@ -1,74 +1,74 @@ -//====== Copyright ©, Valve Corporation, All rights reserved. ======= -// -// Purpose: interface to the game coordinator for this application -// -//============================================================================= - -#ifndef ISTEAMGAMECOORDINATOR -#define ISTEAMGAMECOORDINATOR -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" - - -// list of possible return values from the ISteamGameCoordinator API -enum EGCResults -{ - k_EGCResultOK = 0, - k_EGCResultNoMessage = 1, // There is no message in the queue - k_EGCResultBufferTooSmall = 2, // The buffer is too small for the requested message - k_EGCResultNotLoggedOn = 3, // The client is not logged onto Steam - k_EGCResultInvalidMessage = 4, // Something was wrong with the message being sent with SendMessage -}; - - -//----------------------------------------------------------------------------- -// Purpose: Functions for sending and receiving messages from the Game Coordinator -// for this application -//----------------------------------------------------------------------------- -class ISteamGameCoordinator -{ -public: - - // sends a message to the Game Coordinator - virtual EGCResults SendMessage( uint32 unMsgType, const void *pubData, uint32 cubData ) = 0; - - // returns true if there is a message waiting from the game coordinator - virtual bool IsMessageAvailable( uint32 *pcubMsgSize ) = 0; - - // fills the provided buffer with the first message in the queue and returns k_EGCResultOK or - // returns k_EGCResultNoMessage if there is no message waiting. pcubMsgSize is filled with the message size. - // If the provided buffer is not large enough to fit the entire message, k_EGCResultBufferTooSmall is returned - // and the message remains at the head of the queue. - virtual EGCResults RetrieveMessage( uint32 *punMsgType, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize ) = 0; - -}; -#define STEAMGAMECOORDINATOR_INTERFACE_VERSION "SteamGameCoordinator001" - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - -// callback notification - A new message is available for reading from the message queue -struct GCMessageAvailable_t -{ - enum { k_iCallback = k_iSteamGameCoordinatorCallbacks + 1 }; - uint32 m_nMessageSize; -}; - -// callback notification - A message failed to make it to the GC. It may be down temporarily -struct GCMessageFailed_t -{ - enum { k_iCallback = k_iSteamGameCoordinatorCallbacks + 2 }; -}; - -#pragma pack( pop ) - -#endif // ISTEAMGAMECOORDINATOR +//====== Copyright ©, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to the game coordinator for this application +// +//============================================================================= + +#ifndef ISTEAMGAMECOORDINATOR +#define ISTEAMGAMECOORDINATOR +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + + +// list of possible return values from the ISteamGameCoordinator API +enum EGCResults +{ + k_EGCResultOK = 0, + k_EGCResultNoMessage = 1, // There is no message in the queue + k_EGCResultBufferTooSmall = 2, // The buffer is too small for the requested message + k_EGCResultNotLoggedOn = 3, // The client is not logged onto Steam + k_EGCResultInvalidMessage = 4, // Something was wrong with the message being sent with SendMessage +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions for sending and receiving messages from the Game Coordinator +// for this application +//----------------------------------------------------------------------------- +class ISteamGameCoordinator +{ +public: + + // sends a message to the Game Coordinator + virtual EGCResults SendMessage( uint32 unMsgType, const void *pubData, uint32 cubData ) = 0; + + // returns true if there is a message waiting from the game coordinator + virtual bool IsMessageAvailable( uint32 *pcubMsgSize ) = 0; + + // fills the provided buffer with the first message in the queue and returns k_EGCResultOK or + // returns k_EGCResultNoMessage if there is no message waiting. pcubMsgSize is filled with the message size. + // If the provided buffer is not large enough to fit the entire message, k_EGCResultBufferTooSmall is returned + // and the message remains at the head of the queue. + virtual EGCResults RetrieveMessage( uint32 *punMsgType, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize ) = 0; + +}; +#define STEAMGAMECOORDINATOR_INTERFACE_VERSION "SteamGameCoordinator001" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + +// callback notification - A new message is available for reading from the message queue +struct GCMessageAvailable_t +{ + enum { k_iCallback = k_iSteamGameCoordinatorCallbacks + 1 }; + uint32 m_nMessageSize; +}; + +// callback notification - A message failed to make it to the GC. It may be down temporarily +struct GCMessageFailed_t +{ + enum { k_iCallback = k_iSteamGameCoordinatorCallbacks + 2 }; +}; + +#pragma pack( pop ) + +#endif // ISTEAMGAMECOORDINATOR diff --git a/CodeGen/steam/isteamgameserver.h b/CodeGen/steam/isteamgameserver.h index deea2547..612ef3d0 100644 --- a/CodeGen/steam/isteamgameserver.h +++ b/CodeGen/steam/isteamgameserver.h @@ -1,376 +1,376 @@ -//====== Copyright (c) 1996-2008, Valve Corporation, All rights reserved. ======= -// -// Purpose: interface to steam for game servers -// -//============================================================================= - -#ifndef ISTEAMGAMESERVER_H -#define ISTEAMGAMESERVER_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" - -//----------------------------------------------------------------------------- -// Purpose: Functions for authenticating users via Steam to play on a game server -//----------------------------------------------------------------------------- -class ISteamGameServer -{ -public: - -// -// Basic server data. These properties, if set, must be set before before calling LogOn. They -// may not be changed after logged in. -// - - /// This is called by SteamGameServer_Init, and you will usually not need to call it directly - STEAM_PRIVATE_API( virtual bool InitGameServer( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, uint32 unFlags, AppId_t nGameAppId, const char *pchVersionString ) = 0; ) - - /// Game product identifier. This is currently used by the master server for version checking purposes. - /// It's a required field, but will eventually will go away, and the AppID will be used for this purpose. - virtual void SetProduct( const char *pszProduct ) = 0; - - /// Description of the game. This is a required field and is displayed in the steam server browser....for now. - /// This is a required field, but it will go away eventually, as the data should be determined from the AppID. - virtual void SetGameDescription( const char *pszGameDescription ) = 0; - - /// If your game is a "mod," pass the string that identifies it. The default is an empty string, meaning - /// this application is the original game, not a mod. - /// - /// @see k_cbMaxGameServerGameDir - virtual void SetModDir( const char *pszModDir ) = 0; - - /// Is this is a dedicated server? The default value is false. - virtual void SetDedicatedServer( bool bDedicated ) = 0; - -// -// Login -// - - /// Begin process to login to a persistent game server account - /// - /// You need to register for callbacks to determine the result of this operation. - /// @see SteamServersConnected_t - /// @see SteamServerConnectFailure_t - /// @see SteamServersDisconnected_t - virtual void LogOn( const char *pszToken ) = 0; - - /// Login to a generic, anonymous account. - /// - /// Note: in previous versions of the SDK, this was automatically called within SteamGameServer_Init, - /// but this is no longer the case. - virtual void LogOnAnonymous() = 0; - - /// Begin process of logging game server out of steam - virtual void LogOff() = 0; - - // status functions - virtual bool BLoggedOn() = 0; - virtual bool BSecure() = 0; - virtual CSteamID GetSteamID() = 0; - - /// Returns true if the master server has requested a restart. - /// Only returns true once per request. - virtual bool WasRestartRequested() = 0; - -// -// Server state. These properties may be changed at any time. -// - - /// Max player count that will be reported to server browser and client queries - virtual void SetMaxPlayerCount( int cPlayersMax ) = 0; - - /// Number of bots. Default value is zero - virtual void SetBotPlayerCount( int cBotplayers ) = 0; - - /// Set the name of server as it will appear in the server browser - /// - /// @see k_cbMaxGameServerName - virtual void SetServerName( const char *pszServerName ) = 0; - - /// Set name of map to report in the server browser - /// - /// @see k_cbMaxGameServerName - virtual void SetMapName( const char *pszMapName ) = 0; - - /// Let people know if your server will require a password - virtual void SetPasswordProtected( bool bPasswordProtected ) = 0; - - /// Spectator server. The default value is zero, meaning the service - /// is not used. - virtual void SetSpectatorPort( uint16 unSpectatorPort ) = 0; - - /// Name of the spectator server. (Only used if spectator port is nonzero.) - /// - /// @see k_cbMaxGameServerMapName - virtual void SetSpectatorServerName( const char *pszSpectatorServerName ) = 0; - - /// Call this to clear the whole list of key/values that are sent in rules queries. - virtual void ClearAllKeyValues() = 0; - - /// Call this to add/update a key/value pair. - virtual void SetKeyValue( const char *pKey, const char *pValue ) = 0; - - /// Sets a string defining the "gametags" for this server, this is optional, but if it is set - /// it allows users to filter in the matchmaking/server-browser interfaces based on the value - /// - /// @see k_cbMaxGameServerTags - virtual void SetGameTags( const char *pchGameTags ) = 0; - - /// Sets a string defining the "gamedata" for this server, this is optional, but if it is set - /// it allows users to filter in the matchmaking/server-browser interfaces based on the value - /// don't set this unless it actually changes, its only uploaded to the master once (when - /// acknowledged) - /// - /// @see k_cbMaxGameServerGameData - virtual void SetGameData( const char *pchGameData ) = 0; - - /// Region identifier. This is an optional field, the default value is empty, meaning the "world" region - virtual void SetRegion( const char *pszRegion ) = 0; - -// -// Player list management / authentication -// - - // Handles receiving a new connection from a Steam user. This call will ask the Steam - // servers to validate the users identity, app ownership, and VAC status. If the Steam servers - // are off-line, then it will validate the cached ticket itself which will validate app ownership - // and identity. The AuthBlob here should be acquired on the game client using SteamUser()->InitiateGameConnection() - // and must then be sent up to the game server for authentication. - // - // Return Value: returns true if the users ticket passes basic checks. pSteamIDUser will contain the Steam ID of this user. pSteamIDUser must NOT be NULL - // If the call succeeds then you should expect a GSClientApprove_t or GSClientDeny_t callback which will tell you whether authentication - // for the user has succeeded or failed (the steamid in the callback will match the one returned by this call) - virtual bool SendUserConnectAndAuthenticate( uint32 unIPClient, const void *pvAuthBlob, uint32 cubAuthBlobSize, CSteamID *pSteamIDUser ) = 0; - - // Creates a fake user (ie, a bot) which will be listed as playing on the server, but skips validation. - // - // Return Value: Returns a SteamID for the user to be tracked with, you should call HandleUserDisconnect() - // when this user leaves the server just like you would for a real user. - virtual CSteamID CreateUnauthenticatedUserConnection() = 0; - - // Should be called whenever a user leaves our game server, this lets Steam internally - // track which users are currently on which servers for the purposes of preventing a single - // account being logged into multiple servers, showing who is currently on a server, etc. - virtual void SendUserDisconnect( CSteamID steamIDUser ) = 0; - - // Update the data to be displayed in the server browser and matchmaking interfaces for a user - // currently connected to the server. For regular users you must call this after you receive a - // GSUserValidationSuccess callback. - // - // Return Value: true if successful, false if failure (ie, steamIDUser wasn't for an active player) - virtual bool BUpdateUserData( CSteamID steamIDUser, const char *pchPlayerName, uint32 uScore ) = 0; - - // New auth system APIs - do not mix with the old auth system APIs. - // ---------------------------------------------------------------- - - // Retrieve ticket to be sent to the entity who wishes to authenticate you ( using BeginAuthSession API ). - // pcbTicket retrieves the length of the actual ticket. - virtual HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; - - // Authenticate ticket ( from GetAuthSessionTicket ) from entity steamID to be sure it is valid and isnt reused - // Registers for callbacks if the entity goes offline or cancels the ticket ( see ValidateAuthTicketResponse_t callback and EAuthSessionResponse ) - virtual EBeginAuthSessionResult BeginAuthSession( const void *pAuthTicket, int cbAuthTicket, CSteamID steamID ) = 0; - - // Stop tracking started by BeginAuthSession - called when no longer playing game with this entity - virtual void EndAuthSession( CSteamID steamID ) = 0; - - // Cancel auth ticket from GetAuthSessionTicket, called when no longer playing game with the entity you gave the ticket to - virtual void CancelAuthTicket( HAuthTicket hAuthTicket ) = 0; - - // After receiving a user's authentication data, and passing it to SendUserConnectAndAuthenticate, use this function - // to determine if the user owns downloadable content specified by the provided AppID. - virtual EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID ) = 0; - - // Ask if a user in in the specified group, results returns async by GSUserGroupStatus_t - // returns false if we're not connected to the steam servers and thus cannot ask - virtual bool RequestUserGroupStatus( CSteamID steamIDUser, CSteamID steamIDGroup ) = 0; - - - // these two functions s are deprecated, and will not return results - // they will be removed in a future version of the SDK - virtual void GetGameplayStats( ) = 0; - STEAM_CALL_RESULT( GSReputation_t ) - virtual SteamAPICall_t GetServerReputation() = 0; - - // Returns the public IP of the server according to Steam, useful when the server is - // behind NAT and you want to advertise its IP in a lobby for other clients to directly - // connect to - virtual SteamIPAddress_t GetPublicIP() = 0; - -// These are in GameSocketShare mode, where instead of ISteamGameServer creating its own -// socket to talk to the master server on, it lets the game use its socket to forward messages -// back and forth. This prevents us from requiring server ops to open up yet another port -// in their firewalls. -// -// the IP address and port should be in host order, i.e 127.0.0.1 == 0x7f000001 - - // These are used when you've elected to multiplex the game server's UDP socket - // rather than having the master server updater use its own sockets. - // - // Source games use this to simplify the job of the server admins, so they - // don't have to open up more ports on their firewalls. - - // Call this when a packet that starts with 0xFFFFFFFF comes in. That means - // it's for us. - virtual bool HandleIncomingPacket( const void *pData, int cbData, uint32 srcIP, uint16 srcPort ) = 0; - - // AFTER calling HandleIncomingPacket for any packets that came in that frame, call this. - // This gets a packet that the master server updater needs to send out on UDP. - // It returns the length of the packet it wants to send, or 0 if there are no more packets to send. - // Call this each frame until it returns 0. - virtual int GetNextOutgoingPacket( void *pOut, int cbMaxOut, uint32 *pNetAdr, uint16 *pPort ) = 0; - -// -// Control heartbeats / advertisement with master server -// - - // Call this as often as you like to tell the master server updater whether or not - // you want it to be active (default: off). - virtual void EnableHeartbeats( bool bActive ) = 0; - - // You usually don't need to modify this. - // Pass -1 to use the default value for iHeartbeatInterval. - // Some mods change this. - virtual void SetHeartbeatInterval( int iHeartbeatInterval ) = 0; - - // Force a heartbeat to steam at the next opportunity - virtual void ForceHeartbeat() = 0; - - // associate this game server with this clan for the purposes of computing player compat - STEAM_CALL_RESULT( AssociateWithClanResult_t ) - virtual SteamAPICall_t AssociateWithClan( CSteamID steamIDClan ) = 0; - - // ask if any of the current players dont want to play with this new player - or vice versa - STEAM_CALL_RESULT( ComputeNewPlayerCompatibilityResult_t ) - virtual SteamAPICall_t ComputeNewPlayerCompatibility( CSteamID steamIDNewPlayer ) = 0; - -}; - -#define STEAMGAMESERVER_INTERFACE_VERSION "SteamGameServer013" - -// Global accessor -inline ISteamGameServer *SteamGameServer(); -STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamGameServer *, SteamGameServer, STEAMGAMESERVER_INTERFACE_VERSION ); - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - - -// client has been approved to connect to this game server -struct GSClientApprove_t -{ - enum { k_iCallback = k_iSteamGameServerCallbacks + 1 }; - CSteamID m_SteamID; // SteamID of approved player - CSteamID m_OwnerSteamID; // SteamID of original owner for game license -}; - - -// client has been denied to connection to this game server -struct GSClientDeny_t -{ - enum { k_iCallback = k_iSteamGameServerCallbacks + 2 }; - CSteamID m_SteamID; - EDenyReason m_eDenyReason; - char m_rgchOptionalText[128]; -}; - - -// request the game server should kick the user -struct GSClientKick_t -{ - enum { k_iCallback = k_iSteamGameServerCallbacks + 3 }; - CSteamID m_SteamID; - EDenyReason m_eDenyReason; -}; - -// NOTE: callback values 4 and 5 are skipped because they are used for old deprecated callbacks, -// do not reuse them here. - - -// client achievement info -struct GSClientAchievementStatus_t -{ - enum { k_iCallback = k_iSteamGameServerCallbacks + 6 }; - uint64 m_SteamID; - char m_pchAchievement[128]; - bool m_bUnlocked; -}; - -// received when the game server requests to be displayed as secure (VAC protected) -// m_bSecure is true if the game server should display itself as secure to users, false otherwise -struct GSPolicyResponse_t -{ - enum { k_iCallback = k_iSteamUserCallbacks + 15 }; - uint8 m_bSecure; -}; - -// GS gameplay stats info -struct GSGameplayStats_t -{ - enum { k_iCallback = k_iSteamGameServerCallbacks + 7 }; - EResult m_eResult; // Result of the call - int32 m_nRank; // Overall rank of the server (0-based) - uint32 m_unTotalConnects; // Total number of clients who have ever connected to the server - uint32 m_unTotalMinutesPlayed; // Total number of minutes ever played on the server -}; - -// send as a reply to RequestUserGroupStatus() -struct GSClientGroupStatus_t -{ - enum { k_iCallback = k_iSteamGameServerCallbacks + 8 }; - CSteamID m_SteamIDUser; - CSteamID m_SteamIDGroup; - bool m_bMember; - bool m_bOfficer; -}; - -// Sent as a reply to GetServerReputation() -struct GSReputation_t -{ - enum { k_iCallback = k_iSteamGameServerCallbacks + 9 }; - EResult m_eResult; // Result of the call; - uint32 m_unReputationScore; // The reputation score for the game server - bool m_bBanned; // True if the server is banned from the Steam - // master servers - - // The following members are only filled out if m_bBanned is true. They will all - // be set to zero otherwise. Master server bans are by IP so it is possible to be - // banned even when the score is good high if there is a bad server on another port. - // This information can be used to determine which server is bad. - - uint32 m_unBannedIP; // The IP of the banned server - uint16 m_usBannedPort; // The port of the banned server - uint64 m_ulBannedGameID; // The game ID the banned server is serving - uint32 m_unBanExpires; // Time the ban expires, expressed in the Unix epoch (seconds since 1/1/1970) -}; - -// Sent as a reply to AssociateWithClan() -struct AssociateWithClanResult_t -{ - enum { k_iCallback = k_iSteamGameServerCallbacks + 10 }; - EResult m_eResult; // Result of the call; -}; - -// Sent as a reply to ComputeNewPlayerCompatibility() -struct ComputeNewPlayerCompatibilityResult_t -{ - enum { k_iCallback = k_iSteamGameServerCallbacks + 11 }; - EResult m_eResult; // Result of the call; - int m_cPlayersThatDontLikeCandidate; - int m_cPlayersThatCandidateDoesntLike; - int m_cClanPlayersThatDontLikeCandidate; - CSteamID m_SteamIDCandidate; -}; - - -#pragma pack( pop ) - -#endif // ISTEAMGAMESERVER_H +//====== Copyright (c) 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam for game servers +// +//============================================================================= + +#ifndef ISTEAMGAMESERVER_H +#define ISTEAMGAMESERVER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + +//----------------------------------------------------------------------------- +// Purpose: Functions for authenticating users via Steam to play on a game server +//----------------------------------------------------------------------------- +class ISteamGameServer +{ +public: + +// +// Basic server data. These properties, if set, must be set before before calling LogOn. They +// may not be changed after logged in. +// + + /// This is called by SteamGameServer_Init, and you will usually not need to call it directly + STEAM_PRIVATE_API( virtual bool InitGameServer( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, uint32 unFlags, AppId_t nGameAppId, const char *pchVersionString ) = 0; ) + + /// Game product identifier. This is currently used by the master server for version checking purposes. + /// It's a required field, but will eventually will go away, and the AppID will be used for this purpose. + virtual void SetProduct( const char *pszProduct ) = 0; + + /// Description of the game. This is a required field and is displayed in the steam server browser....for now. + /// This is a required field, but it will go away eventually, as the data should be determined from the AppID. + virtual void SetGameDescription( const char *pszGameDescription ) = 0; + + /// If your game is a "mod," pass the string that identifies it. The default is an empty string, meaning + /// this application is the original game, not a mod. + /// + /// @see k_cbMaxGameServerGameDir + virtual void SetModDir( const char *pszModDir ) = 0; + + /// Is this is a dedicated server? The default value is false. + virtual void SetDedicatedServer( bool bDedicated ) = 0; + +// +// Login +// + + /// Begin process to login to a persistent game server account + /// + /// You need to register for callbacks to determine the result of this operation. + /// @see SteamServersConnected_t + /// @see SteamServerConnectFailure_t + /// @see SteamServersDisconnected_t + virtual void LogOn( const char *pszToken ) = 0; + + /// Login to a generic, anonymous account. + /// + /// Note: in previous versions of the SDK, this was automatically called within SteamGameServer_Init, + /// but this is no longer the case. + virtual void LogOnAnonymous() = 0; + + /// Begin process of logging game server out of steam + virtual void LogOff() = 0; + + // status functions + virtual bool BLoggedOn() = 0; + virtual bool BSecure() = 0; + virtual CSteamID GetSteamID() = 0; + + /// Returns true if the master server has requested a restart. + /// Only returns true once per request. + virtual bool WasRestartRequested() = 0; + +// +// Server state. These properties may be changed at any time. +// + + /// Max player count that will be reported to server browser and client queries + virtual void SetMaxPlayerCount( int cPlayersMax ) = 0; + + /// Number of bots. Default value is zero + virtual void SetBotPlayerCount( int cBotplayers ) = 0; + + /// Set the name of server as it will appear in the server browser + /// + /// @see k_cbMaxGameServerName + virtual void SetServerName( const char *pszServerName ) = 0; + + /// Set name of map to report in the server browser + /// + /// @see k_cbMaxGameServerName + virtual void SetMapName( const char *pszMapName ) = 0; + + /// Let people know if your server will require a password + virtual void SetPasswordProtected( bool bPasswordProtected ) = 0; + + /// Spectator server. The default value is zero, meaning the service + /// is not used. + virtual void SetSpectatorPort( uint16 unSpectatorPort ) = 0; + + /// Name of the spectator server. (Only used if spectator port is nonzero.) + /// + /// @see k_cbMaxGameServerMapName + virtual void SetSpectatorServerName( const char *pszSpectatorServerName ) = 0; + + /// Call this to clear the whole list of key/values that are sent in rules queries. + virtual void ClearAllKeyValues() = 0; + + /// Call this to add/update a key/value pair. + virtual void SetKeyValue( const char *pKey, const char *pValue ) = 0; + + /// Sets a string defining the "gametags" for this server, this is optional, but if it is set + /// it allows users to filter in the matchmaking/server-browser interfaces based on the value + /// + /// @see k_cbMaxGameServerTags + virtual void SetGameTags( const char *pchGameTags ) = 0; + + /// Sets a string defining the "gamedata" for this server, this is optional, but if it is set + /// it allows users to filter in the matchmaking/server-browser interfaces based on the value + /// don't set this unless it actually changes, its only uploaded to the master once (when + /// acknowledged) + /// + /// @see k_cbMaxGameServerGameData + virtual void SetGameData( const char *pchGameData ) = 0; + + /// Region identifier. This is an optional field, the default value is empty, meaning the "world" region + virtual void SetRegion( const char *pszRegion ) = 0; + +// +// Player list management / authentication +// + + // Handles receiving a new connection from a Steam user. This call will ask the Steam + // servers to validate the users identity, app ownership, and VAC status. If the Steam servers + // are off-line, then it will validate the cached ticket itself which will validate app ownership + // and identity. The AuthBlob here should be acquired on the game client using SteamUser()->InitiateGameConnection() + // and must then be sent up to the game server for authentication. + // + // Return Value: returns true if the users ticket passes basic checks. pSteamIDUser will contain the Steam ID of this user. pSteamIDUser must NOT be NULL + // If the call succeeds then you should expect a GSClientApprove_t or GSClientDeny_t callback which will tell you whether authentication + // for the user has succeeded or failed (the steamid in the callback will match the one returned by this call) + virtual bool SendUserConnectAndAuthenticate( uint32 unIPClient, const void *pvAuthBlob, uint32 cubAuthBlobSize, CSteamID *pSteamIDUser ) = 0; + + // Creates a fake user (ie, a bot) which will be listed as playing on the server, but skips validation. + // + // Return Value: Returns a SteamID for the user to be tracked with, you should call HandleUserDisconnect() + // when this user leaves the server just like you would for a real user. + virtual CSteamID CreateUnauthenticatedUserConnection() = 0; + + // Should be called whenever a user leaves our game server, this lets Steam internally + // track which users are currently on which servers for the purposes of preventing a single + // account being logged into multiple servers, showing who is currently on a server, etc. + virtual void SendUserDisconnect( CSteamID steamIDUser ) = 0; + + // Update the data to be displayed in the server browser and matchmaking interfaces for a user + // currently connected to the server. For regular users you must call this after you receive a + // GSUserValidationSuccess callback. + // + // Return Value: true if successful, false if failure (ie, steamIDUser wasn't for an active player) + virtual bool BUpdateUserData( CSteamID steamIDUser, const char *pchPlayerName, uint32 uScore ) = 0; + + // New auth system APIs - do not mix with the old auth system APIs. + // ---------------------------------------------------------------- + + // Retrieve ticket to be sent to the entity who wishes to authenticate you ( using BeginAuthSession API ). + // pcbTicket retrieves the length of the actual ticket. + virtual HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; + + // Authenticate ticket ( from GetAuthSessionTicket ) from entity steamID to be sure it is valid and isnt reused + // Registers for callbacks if the entity goes offline or cancels the ticket ( see ValidateAuthTicketResponse_t callback and EAuthSessionResponse ) + virtual EBeginAuthSessionResult BeginAuthSession( const void *pAuthTicket, int cbAuthTicket, CSteamID steamID ) = 0; + + // Stop tracking started by BeginAuthSession - called when no longer playing game with this entity + virtual void EndAuthSession( CSteamID steamID ) = 0; + + // Cancel auth ticket from GetAuthSessionTicket, called when no longer playing game with the entity you gave the ticket to + virtual void CancelAuthTicket( HAuthTicket hAuthTicket ) = 0; + + // After receiving a user's authentication data, and passing it to SendUserConnectAndAuthenticate, use this function + // to determine if the user owns downloadable content specified by the provided AppID. + virtual EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID ) = 0; + + // Ask if a user in in the specified group, results returns async by GSUserGroupStatus_t + // returns false if we're not connected to the steam servers and thus cannot ask + virtual bool RequestUserGroupStatus( CSteamID steamIDUser, CSteamID steamIDGroup ) = 0; + + + // these two functions s are deprecated, and will not return results + // they will be removed in a future version of the SDK + virtual void GetGameplayStats( ) = 0; + STEAM_CALL_RESULT( GSReputation_t ) + virtual SteamAPICall_t GetServerReputation() = 0; + + // Returns the public IP of the server according to Steam, useful when the server is + // behind NAT and you want to advertise its IP in a lobby for other clients to directly + // connect to + virtual SteamIPAddress_t GetPublicIP() = 0; + +// These are in GameSocketShare mode, where instead of ISteamGameServer creating its own +// socket to talk to the master server on, it lets the game use its socket to forward messages +// back and forth. This prevents us from requiring server ops to open up yet another port +// in their firewalls. +// +// the IP address and port should be in host order, i.e 127.0.0.1 == 0x7f000001 + + // These are used when you've elected to multiplex the game server's UDP socket + // rather than having the master server updater use its own sockets. + // + // Source games use this to simplify the job of the server admins, so they + // don't have to open up more ports on their firewalls. + + // Call this when a packet that starts with 0xFFFFFFFF comes in. That means + // it's for us. + virtual bool HandleIncomingPacket( const void *pData, int cbData, uint32 srcIP, uint16 srcPort ) = 0; + + // AFTER calling HandleIncomingPacket for any packets that came in that frame, call this. + // This gets a packet that the master server updater needs to send out on UDP. + // It returns the length of the packet it wants to send, or 0 if there are no more packets to send. + // Call this each frame until it returns 0. + virtual int GetNextOutgoingPacket( void *pOut, int cbMaxOut, uint32 *pNetAdr, uint16 *pPort ) = 0; + +// +// Control heartbeats / advertisement with master server +// + + // Call this as often as you like to tell the master server updater whether or not + // you want it to be active (default: off). + virtual void EnableHeartbeats( bool bActive ) = 0; + + // You usually don't need to modify this. + // Pass -1 to use the default value for iHeartbeatInterval. + // Some mods change this. + virtual void SetHeartbeatInterval( int iHeartbeatInterval ) = 0; + + // Force a heartbeat to steam at the next opportunity + virtual void ForceHeartbeat() = 0; + + // associate this game server with this clan for the purposes of computing player compat + STEAM_CALL_RESULT( AssociateWithClanResult_t ) + virtual SteamAPICall_t AssociateWithClan( CSteamID steamIDClan ) = 0; + + // ask if any of the current players dont want to play with this new player - or vice versa + STEAM_CALL_RESULT( ComputeNewPlayerCompatibilityResult_t ) + virtual SteamAPICall_t ComputeNewPlayerCompatibility( CSteamID steamIDNewPlayer ) = 0; + +}; + +#define STEAMGAMESERVER_INTERFACE_VERSION "SteamGameServer013" + +// Global accessor +inline ISteamGameServer *SteamGameServer(); +STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamGameServer *, SteamGameServer, STEAMGAMESERVER_INTERFACE_VERSION ); + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + + +// client has been approved to connect to this game server +struct GSClientApprove_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 1 }; + CSteamID m_SteamID; // SteamID of approved player + CSteamID m_OwnerSteamID; // SteamID of original owner for game license +}; + + +// client has been denied to connection to this game server +struct GSClientDeny_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 2 }; + CSteamID m_SteamID; + EDenyReason m_eDenyReason; + char m_rgchOptionalText[128]; +}; + + +// request the game server should kick the user +struct GSClientKick_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 3 }; + CSteamID m_SteamID; + EDenyReason m_eDenyReason; +}; + +// NOTE: callback values 4 and 5 are skipped because they are used for old deprecated callbacks, +// do not reuse them here. + + +// client achievement info +struct GSClientAchievementStatus_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 6 }; + uint64 m_SteamID; + char m_pchAchievement[128]; + bool m_bUnlocked; +}; + +// received when the game server requests to be displayed as secure (VAC protected) +// m_bSecure is true if the game server should display itself as secure to users, false otherwise +struct GSPolicyResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 15 }; + uint8 m_bSecure; +}; + +// GS gameplay stats info +struct GSGameplayStats_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 7 }; + EResult m_eResult; // Result of the call + int32 m_nRank; // Overall rank of the server (0-based) + uint32 m_unTotalConnects; // Total number of clients who have ever connected to the server + uint32 m_unTotalMinutesPlayed; // Total number of minutes ever played on the server +}; + +// send as a reply to RequestUserGroupStatus() +struct GSClientGroupStatus_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 8 }; + CSteamID m_SteamIDUser; + CSteamID m_SteamIDGroup; + bool m_bMember; + bool m_bOfficer; +}; + +// Sent as a reply to GetServerReputation() +struct GSReputation_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 9 }; + EResult m_eResult; // Result of the call; + uint32 m_unReputationScore; // The reputation score for the game server + bool m_bBanned; // True if the server is banned from the Steam + // master servers + + // The following members are only filled out if m_bBanned is true. They will all + // be set to zero otherwise. Master server bans are by IP so it is possible to be + // banned even when the score is good high if there is a bad server on another port. + // This information can be used to determine which server is bad. + + uint32 m_unBannedIP; // The IP of the banned server + uint16 m_usBannedPort; // The port of the banned server + uint64 m_ulBannedGameID; // The game ID the banned server is serving + uint32 m_unBanExpires; // Time the ban expires, expressed in the Unix epoch (seconds since 1/1/1970) +}; + +// Sent as a reply to AssociateWithClan() +struct AssociateWithClanResult_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 10 }; + EResult m_eResult; // Result of the call; +}; + +// Sent as a reply to ComputeNewPlayerCompatibility() +struct ComputeNewPlayerCompatibilityResult_t +{ + enum { k_iCallback = k_iSteamGameServerCallbacks + 11 }; + EResult m_eResult; // Result of the call; + int m_cPlayersThatDontLikeCandidate; + int m_cPlayersThatCandidateDoesntLike; + int m_cClanPlayersThatDontLikeCandidate; + CSteamID m_SteamIDCandidate; +}; + + +#pragma pack( pop ) + +#endif // ISTEAMGAMESERVER_H diff --git a/CodeGen/steam/isteamgameserverstats.h b/CodeGen/steam/isteamgameserverstats.h index f20d1018..50192794 100644 --- a/CodeGen/steam/isteamgameserverstats.h +++ b/CodeGen/steam/isteamgameserverstats.h @@ -1,114 +1,114 @@ -//====== Copyright © Valve Corporation, All rights reserved. ======= -// -// Purpose: interface for game servers to steam stats and achievements -// -//============================================================================= - -#ifndef ISTEAMGAMESERVERSTATS_H -#define ISTEAMGAMESERVERSTATS_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" - -//----------------------------------------------------------------------------- -// Purpose: Functions for authenticating users via Steam to play on a game server -//----------------------------------------------------------------------------- -class ISteamGameServerStats -{ -public: - // downloads stats for the user - // returns a GSStatsReceived_t callback when completed - // if the user has no stats, GSStatsReceived_t.m_eResult will be set to k_EResultFail - // these stats will only be auto-updated for clients playing on the server. For other - // users you'll need to call RequestUserStats() again to refresh any data - STEAM_CALL_RESULT( GSStatsReceived_t ) - virtual SteamAPICall_t RequestUserStats( CSteamID steamIDUser ) = 0; - - // requests stat information for a user, usable after a successful call to RequestUserStats() - STEAM_FLAT_NAME( GetUserStatInt32 ) - virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, int32 *pData ) = 0; - - STEAM_FLAT_NAME( GetUserStatFloat ) - virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, float *pData ) = 0; - - virtual bool GetUserAchievement( CSteamID steamIDUser, const char *pchName, bool *pbAchieved ) = 0; - - // Set / update stats and achievements. - // Note: These updates will work only on stats game servers are allowed to edit and only for - // game servers that have been declared as officially controlled by the game creators. - // Set the IP range of your official servers on the Steamworks page - - STEAM_FLAT_NAME( SetUserStatInt32 ) - virtual bool SetUserStat( CSteamID steamIDUser, const char *pchName, int32 nData ) = 0; - - STEAM_FLAT_NAME( SetUserStatFloat ) - virtual bool SetUserStat( CSteamID steamIDUser, const char *pchName, float fData ) = 0; - - virtual bool UpdateUserAvgRateStat( CSteamID steamIDUser, const char *pchName, float flCountThisSession, double dSessionLength ) = 0; - - virtual bool SetUserAchievement( CSteamID steamIDUser, const char *pchName ) = 0; - virtual bool ClearUserAchievement( CSteamID steamIDUser, const char *pchName ) = 0; - - // Store the current data on the server, will get a GSStatsStored_t callback when set. - // - // If the callback has a result of k_EResultInvalidParam, one or more stats - // uploaded has been rejected, either because they broke constraints - // or were out of date. In this case the server sends back updated values. - // The stats should be re-iterated to keep in sync. - STEAM_CALL_RESULT( GSStatsStored_t ) - virtual SteamAPICall_t StoreUserStats( CSteamID steamIDUser ) = 0; -}; -#define STEAMGAMESERVERSTATS_INTERFACE_VERSION "SteamGameServerStats001" - -// Global accessor -inline ISteamGameServerStats *SteamGameServerStats(); -STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamGameServerStats *, SteamGameServerStats, STEAMGAMESERVERSTATS_INTERFACE_VERSION ); - - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - -//----------------------------------------------------------------------------- -// Purpose: called when the latests stats and achievements have been received -// from the server -//----------------------------------------------------------------------------- -struct GSStatsReceived_t -{ - enum { k_iCallback = k_iSteamGameServerStatsCallbacks }; - EResult m_eResult; // Success / error fetching the stats - CSteamID m_steamIDUser; // The user for whom the stats are retrieved for -}; - - -//----------------------------------------------------------------------------- -// Purpose: result of a request to store the user stats for a game -//----------------------------------------------------------------------------- -struct GSStatsStored_t -{ - enum { k_iCallback = k_iSteamGameServerStatsCallbacks + 1 }; - EResult m_eResult; // success / error - CSteamID m_steamIDUser; // The user for whom the stats were stored -}; - -//----------------------------------------------------------------------------- -// Purpose: Callback indicating that a user's stats have been unloaded. -// Call RequestUserStats again to access stats for this user -//----------------------------------------------------------------------------- -struct GSStatsUnloaded_t -{ - enum { k_iCallback = k_iSteamUserStatsCallbacks + 8 }; - CSteamID m_steamIDUser; // User whose stats have been unloaded -}; - -#pragma pack( pop ) - - -#endif // ISTEAMGAMESERVERSTATS_H +//====== Copyright © Valve Corporation, All rights reserved. ======= +// +// Purpose: interface for game servers to steam stats and achievements +// +//============================================================================= + +#ifndef ISTEAMGAMESERVERSTATS_H +#define ISTEAMGAMESERVERSTATS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + +//----------------------------------------------------------------------------- +// Purpose: Functions for authenticating users via Steam to play on a game server +//----------------------------------------------------------------------------- +class ISteamGameServerStats +{ +public: + // downloads stats for the user + // returns a GSStatsReceived_t callback when completed + // if the user has no stats, GSStatsReceived_t.m_eResult will be set to k_EResultFail + // these stats will only be auto-updated for clients playing on the server. For other + // users you'll need to call RequestUserStats() again to refresh any data + STEAM_CALL_RESULT( GSStatsReceived_t ) + virtual SteamAPICall_t RequestUserStats( CSteamID steamIDUser ) = 0; + + // requests stat information for a user, usable after a successful call to RequestUserStats() + STEAM_FLAT_NAME( GetUserStatInt32 ) + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, int32 *pData ) = 0; + + STEAM_FLAT_NAME( GetUserStatFloat ) + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, float *pData ) = 0; + + virtual bool GetUserAchievement( CSteamID steamIDUser, const char *pchName, bool *pbAchieved ) = 0; + + // Set / update stats and achievements. + // Note: These updates will work only on stats game servers are allowed to edit and only for + // game servers that have been declared as officially controlled by the game creators. + // Set the IP range of your official servers on the Steamworks page + + STEAM_FLAT_NAME( SetUserStatInt32 ) + virtual bool SetUserStat( CSteamID steamIDUser, const char *pchName, int32 nData ) = 0; + + STEAM_FLAT_NAME( SetUserStatFloat ) + virtual bool SetUserStat( CSteamID steamIDUser, const char *pchName, float fData ) = 0; + + virtual bool UpdateUserAvgRateStat( CSteamID steamIDUser, const char *pchName, float flCountThisSession, double dSessionLength ) = 0; + + virtual bool SetUserAchievement( CSteamID steamIDUser, const char *pchName ) = 0; + virtual bool ClearUserAchievement( CSteamID steamIDUser, const char *pchName ) = 0; + + // Store the current data on the server, will get a GSStatsStored_t callback when set. + // + // If the callback has a result of k_EResultInvalidParam, one or more stats + // uploaded has been rejected, either because they broke constraints + // or were out of date. In this case the server sends back updated values. + // The stats should be re-iterated to keep in sync. + STEAM_CALL_RESULT( GSStatsStored_t ) + virtual SteamAPICall_t StoreUserStats( CSteamID steamIDUser ) = 0; +}; +#define STEAMGAMESERVERSTATS_INTERFACE_VERSION "SteamGameServerStats001" + +// Global accessor +inline ISteamGameServerStats *SteamGameServerStats(); +STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamGameServerStats *, SteamGameServerStats, STEAMGAMESERVERSTATS_INTERFACE_VERSION ); + + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when the latests stats and achievements have been received +// from the server +//----------------------------------------------------------------------------- +struct GSStatsReceived_t +{ + enum { k_iCallback = k_iSteamGameServerStatsCallbacks }; + EResult m_eResult; // Success / error fetching the stats + CSteamID m_steamIDUser; // The user for whom the stats are retrieved for +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of a request to store the user stats for a game +//----------------------------------------------------------------------------- +struct GSStatsStored_t +{ + enum { k_iCallback = k_iSteamGameServerStatsCallbacks + 1 }; + EResult m_eResult; // success / error + CSteamID m_steamIDUser; // The user for whom the stats were stored +}; + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that a user's stats have been unloaded. +// Call RequestUserStats again to access stats for this user +//----------------------------------------------------------------------------- +struct GSStatsUnloaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 8 }; + CSteamID m_steamIDUser; // User whose stats have been unloaded +}; + +#pragma pack( pop ) + + +#endif // ISTEAMGAMESERVERSTATS_H diff --git a/CodeGen/steam/isteamhtmlsurface.h b/CodeGen/steam/isteamhtmlsurface.h index dbc81242..086a842d 100644 --- a/CodeGen/steam/isteamhtmlsurface.h +++ b/CodeGen/steam/isteamhtmlsurface.h @@ -1,480 +1,480 @@ -//====== Copyright 1996-2013, Valve Corporation, All rights reserved. ======= -// -// Purpose: interface to display html pages in a texture -// -//============================================================================= - -#ifndef ISTEAMHTMLSURFACE_H -#define ISTEAMHTMLSURFACE_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" - -typedef uint32 HHTMLBrowser; -const uint32 INVALID_HTMLBROWSER = 0; - -//----------------------------------------------------------------------------- -// Purpose: Functions for displaying HTML pages and interacting with them -//----------------------------------------------------------------------------- -class ISteamHTMLSurface -{ -public: - virtual ~ISteamHTMLSurface() {} - - // Must call init and shutdown when starting/ending use of the interface - virtual bool Init() = 0; - virtual bool Shutdown() = 0; - - // Create a browser object for display of a html page, when creation is complete the call handle - // will return a HTML_BrowserReady_t callback for the HHTMLBrowser of your new browser. - // The user agent string is a substring to be added to the general user agent string so you can - // identify your client on web servers. - // The userCSS string lets you apply a CSS style sheet to every displayed page, leave null if - // you do not require this functionality. - // - // YOU MUST HAVE IMPLEMENTED HANDLERS FOR HTML_BrowserReady_t, HTML_StartRequest_t, - // HTML_JSAlert_t, HTML_JSConfirm_t, and HTML_FileOpenDialog_t! See the CALLBACKS - // section of this interface (AllowStartRequest, etc) for more details. If you do - // not implement these callback handlers, the browser may appear to hang instead of - // navigating to new pages or triggering javascript popups. - // - STEAM_CALL_RESULT( HTML_BrowserReady_t ) - virtual SteamAPICall_t CreateBrowser( const char *pchUserAgent, const char *pchUserCSS ) = 0; - - // Call this when you are done with a html surface, this lets us free the resources being used by it - virtual void RemoveBrowser( HHTMLBrowser unBrowserHandle ) = 0; - - // Navigate to this URL, results in a HTML_StartRequest_t as the request commences - virtual void LoadURL( HHTMLBrowser unBrowserHandle, const char *pchURL, const char *pchPostData ) = 0; - - // Tells the surface the size in pixels to display the surface - virtual void SetSize( HHTMLBrowser unBrowserHandle, uint32 unWidth, uint32 unHeight ) = 0; - - // Stop the load of the current html page - virtual void StopLoad( HHTMLBrowser unBrowserHandle ) = 0; - // Reload (most likely from local cache) the current page - virtual void Reload( HHTMLBrowser unBrowserHandle ) = 0; - // navigate back in the page history - virtual void GoBack( HHTMLBrowser unBrowserHandle ) = 0; - // navigate forward in the page history - virtual void GoForward( HHTMLBrowser unBrowserHandle ) = 0; - - // add this header to any url requests from this browser - virtual void AddHeader( HHTMLBrowser unBrowserHandle, const char *pchKey, const char *pchValue ) = 0; - // run this javascript script in the currently loaded page - virtual void ExecuteJavascript( HHTMLBrowser unBrowserHandle, const char *pchScript ) = 0; - - enum EHTMLMouseButton - { - eHTMLMouseButton_Left = 0, - eHTMLMouseButton_Right = 1, - eHTMLMouseButton_Middle = 2, - }; - - // Mouse click and mouse movement commands - virtual void MouseUp( HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton ) = 0; - virtual void MouseDown( HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton ) = 0; - virtual void MouseDoubleClick( HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton ) = 0; - // x and y are relative to the HTML bounds - virtual void MouseMove( HHTMLBrowser unBrowserHandle, int x, int y ) = 0; - // nDelta is pixels of scroll - virtual void MouseWheel( HHTMLBrowser unBrowserHandle, int32 nDelta ) = 0; - - enum EMouseCursor - { - dc_user = 0, - dc_none, - dc_arrow, - dc_ibeam, - dc_hourglass, - dc_waitarrow, - dc_crosshair, - dc_up, - dc_sizenw, - dc_sizese, - dc_sizene, - dc_sizesw, - dc_sizew, - dc_sizee, - dc_sizen, - dc_sizes, - dc_sizewe, - dc_sizens, - dc_sizeall, - dc_no, - dc_hand, - dc_blank, // don't show any custom cursor, just use your default - dc_middle_pan, - dc_north_pan, - dc_north_east_pan, - dc_east_pan, - dc_south_east_pan, - dc_south_pan, - dc_south_west_pan, - dc_west_pan, - dc_north_west_pan, - dc_alias, - dc_cell, - dc_colresize, - dc_copycur, - dc_verticaltext, - dc_rowresize, - dc_zoomin, - dc_zoomout, - dc_help, - dc_custom, - - dc_last, // custom cursors start from this value and up - }; - - enum EHTMLKeyModifiers - { - k_eHTMLKeyModifier_None = 0, - k_eHTMLKeyModifier_AltDown = 1 << 0, - k_eHTMLKeyModifier_CtrlDown = 1 << 1, - k_eHTMLKeyModifier_ShiftDown = 1 << 2, - }; - - // keyboard interactions, native keycode is the virtual key code value from your OS, system key flags the key to not - // be sent as a typed character as well as a key down - virtual void KeyDown( HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, EHTMLKeyModifiers eHTMLKeyModifiers, bool bIsSystemKey = false ) = 0; - virtual void KeyUp( HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, EHTMLKeyModifiers eHTMLKeyModifiers ) = 0; - // cUnicodeChar is the unicode character point for this keypress (and potentially multiple chars per press) - virtual void KeyChar( HHTMLBrowser unBrowserHandle, uint32 cUnicodeChar, EHTMLKeyModifiers eHTMLKeyModifiers ) = 0; - - // programmatically scroll this many pixels on the page - virtual void SetHorizontalScroll( HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll ) = 0; - virtual void SetVerticalScroll( HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll ) = 0; - - // tell the html control if it has key focus currently, controls showing the I-beam cursor in text controls amongst other things - virtual void SetKeyFocus( HHTMLBrowser unBrowserHandle, bool bHasKeyFocus ) = 0; - - // open the current pages html code in the local editor of choice, used for debugging - virtual void ViewSource( HHTMLBrowser unBrowserHandle ) = 0; - // copy the currently selected text on the html page to the local clipboard - virtual void CopyToClipboard( HHTMLBrowser unBrowserHandle ) = 0; - // paste from the local clipboard to the current html page - virtual void PasteFromClipboard( HHTMLBrowser unBrowserHandle ) = 0; - - // find this string in the browser, if bCurrentlyInFind is true then instead cycle to the next matching element - virtual void Find( HHTMLBrowser unBrowserHandle, const char *pchSearchStr, bool bCurrentlyInFind, bool bReverse ) = 0; - // cancel a currently running find - virtual void StopFind( HHTMLBrowser unBrowserHandle ) = 0; - - // return details about the link at position x,y on the current page - virtual void GetLinkAtPosition( HHTMLBrowser unBrowserHandle, int x, int y ) = 0; - - // set a webcookie for the hostname in question - virtual void SetCookie( const char *pchHostname, const char *pchKey, const char *pchValue, const char *pchPath = "/", RTime32 nExpires = 0, bool bSecure = false, bool bHTTPOnly = false ) = 0; - - // Zoom the current page by flZoom ( from 0.0 to 2.0, so to zoom to 120% use 1.2 ), zooming around point X,Y in the page (use 0,0 if you don't care) - virtual void SetPageScaleFactor( HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY ) = 0; - - // Enable/disable low-resource background mode, where javascript and repaint timers are throttled, resources are - // more aggressively purged from memory, and audio/video elements are paused. When background mode is enabled, - // all HTML5 video and audio objects will execute ".pause()" and gain the property "._steam_background_paused = 1". - // When background mode is disabled, any video or audio objects with that property will resume with ".play()". - virtual void SetBackgroundMode( HHTMLBrowser unBrowserHandle, bool bBackgroundMode ) = 0; - - // Scale the output display space by this factor, this is useful when displaying content on high dpi devices. - // Specifies the ratio between physical and logical pixels. - virtual void SetDPIScalingFactor( HHTMLBrowser unBrowserHandle, float flDPIScaling ) = 0; - - // Open HTML/JS developer tools - virtual void OpenDeveloperTools( HHTMLBrowser unBrowserHandle ) = 0; - - // CALLBACKS - // - // These set of functions are used as responses to callback requests - // - - // You MUST call this in response to a HTML_StartRequest_t callback - // Set bAllowed to true to allow this navigation, false to cancel it and stay - // on the current page. You can use this feature to limit the valid pages - // allowed in your HTML surface. - virtual void AllowStartRequest( HHTMLBrowser unBrowserHandle, bool bAllowed ) = 0; - - // You MUST call this in response to a HTML_JSAlert_t or HTML_JSConfirm_t callback - // Set bResult to true for the OK option of a confirm, use false otherwise - virtual void JSDialogResponse( HHTMLBrowser unBrowserHandle, bool bResult ) = 0; - - // You MUST call this in response to a HTML_FileOpenDialog_t callback - STEAM_IGNOREATTR() - virtual void FileLoadDialogResponse( HHTMLBrowser unBrowserHandle, const char **pchSelectedFiles ) = 0; -}; - -#define STEAMHTMLSURFACE_INTERFACE_VERSION "STEAMHTMLSURFACE_INTERFACE_VERSION_005" - -// Global interface accessor -inline ISteamHTMLSurface *SteamHTMLSurface(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamHTMLSurface *, SteamHTMLSurface, STEAMHTMLSURFACE_INTERFACE_VERSION ); - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - - -//----------------------------------------------------------------------------- -// Purpose: The browser is ready for use -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_BrowserReady_t, k_iSteamHTMLSurfaceCallbacks + 1 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // this browser is now fully created and ready to navigate to pages -STEAM_CALLBACK_END(1) - - -//----------------------------------------------------------------------------- -// Purpose: the browser has a pending paint -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN(HTML_NeedsPaint_t, k_iSteamHTMLSurfaceCallbacks + 2) -STEAM_CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the browser that needs the paint -STEAM_CALLBACK_MEMBER(1, const char *, pBGRA ) // a pointer to the B8G8R8A8 data for this surface, valid until SteamAPI_RunCallbacks is next called -STEAM_CALLBACK_MEMBER(2, uint32, unWide) // the total width of the pBGRA texture -STEAM_CALLBACK_MEMBER(3, uint32, unTall) // the total height of the pBGRA texture -STEAM_CALLBACK_MEMBER(4, uint32, unUpdateX) // the offset in X for the damage rect for this update -STEAM_CALLBACK_MEMBER(5, uint32, unUpdateY) // the offset in Y for the damage rect for this update -STEAM_CALLBACK_MEMBER(6, uint32, unUpdateWide) // the width of the damage rect for this update -STEAM_CALLBACK_MEMBER(7, uint32, unUpdateTall) // the height of the damage rect for this update -STEAM_CALLBACK_MEMBER(8, uint32, unScrollX) // the page scroll the browser was at when this texture was rendered -STEAM_CALLBACK_MEMBER(9, uint32, unScrollY) // the page scroll the browser was at when this texture was rendered -STEAM_CALLBACK_MEMBER(10, float, flPageScale) // the page scale factor on this page when rendered -STEAM_CALLBACK_MEMBER(11, uint32, unPageSerial) // incremented on each new page load, you can use this to reject draws while navigating to new pages -STEAM_CALLBACK_END(12) - - -//----------------------------------------------------------------------------- -// Purpose: The browser wanted to navigate to a new page -// NOTE - you MUST call AllowStartRequest in response to this callback -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN(HTML_StartRequest_t, k_iSteamHTMLSurfaceCallbacks + 3) -STEAM_CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the handle of the surface navigating -STEAM_CALLBACK_MEMBER(1, const char *, pchURL) // the url they wish to navigate to -STEAM_CALLBACK_MEMBER(2, const char *, pchTarget) // the html link target type (i.e _blank, _self, _parent, _top ) -STEAM_CALLBACK_MEMBER(3, const char *, pchPostData ) // any posted data for the request -STEAM_CALLBACK_MEMBER(4, bool, bIsRedirect) // true if this was a http/html redirect from the last load request -STEAM_CALLBACK_END(5) - - -//----------------------------------------------------------------------------- -// Purpose: The browser has been requested to close due to user interaction (usually from a javascript window.close() call) -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN(HTML_CloseBrowser_t, k_iSteamHTMLSurfaceCallbacks + 4) -STEAM_CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the handle of the surface -STEAM_CALLBACK_END(1) - - -//----------------------------------------------------------------------------- -// Purpose: the browser is navigating to a new url -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_URLChanged_t, k_iSteamHTMLSurfaceCallbacks + 5 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface navigating -STEAM_CALLBACK_MEMBER( 1, const char *, pchURL ) // the url they wish to navigate to -STEAM_CALLBACK_MEMBER( 2, const char *, pchPostData ) // any posted data for the request -STEAM_CALLBACK_MEMBER( 3, bool, bIsRedirect ) // true if this was a http/html redirect from the last load request -STEAM_CALLBACK_MEMBER( 4, const char *, pchPageTitle ) // the title of the page -STEAM_CALLBACK_MEMBER( 5, bool, bNewNavigation ) // true if this was from a fresh tab and not a click on an existing page -STEAM_CALLBACK_END(6) - - -//----------------------------------------------------------------------------- -// Purpose: A page is finished loading -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_FinishedRequest_t, k_iSteamHTMLSurfaceCallbacks + 6 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface -STEAM_CALLBACK_MEMBER( 1, const char *, pchURL ) // -STEAM_CALLBACK_MEMBER( 2, const char *, pchPageTitle ) // -STEAM_CALLBACK_END(3) - - -//----------------------------------------------------------------------------- -// Purpose: a request to load this url in a new tab -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_OpenLinkInNewTab_t, k_iSteamHTMLSurfaceCallbacks + 7 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface -STEAM_CALLBACK_MEMBER( 1, const char *, pchURL ) // -STEAM_CALLBACK_END(2) - - -//----------------------------------------------------------------------------- -// Purpose: the page has a new title now -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_ChangedTitle_t, k_iSteamHTMLSurfaceCallbacks + 8 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface -STEAM_CALLBACK_MEMBER( 1, const char *, pchTitle ) // -STEAM_CALLBACK_END(2) - - -//----------------------------------------------------------------------------- -// Purpose: results from a search -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_SearchResults_t, k_iSteamHTMLSurfaceCallbacks + 9 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface -STEAM_CALLBACK_MEMBER( 1, uint32, unResults ) // -STEAM_CALLBACK_MEMBER( 2, uint32, unCurrentMatch ) // -STEAM_CALLBACK_END(3) - - -//----------------------------------------------------------------------------- -// Purpose: page history status changed on the ability to go backwards and forward -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_CanGoBackAndForward_t, k_iSteamHTMLSurfaceCallbacks + 10 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface -STEAM_CALLBACK_MEMBER( 1, bool, bCanGoBack ) // -STEAM_CALLBACK_MEMBER( 2, bool, bCanGoForward ) // -STEAM_CALLBACK_END(3) - - -//----------------------------------------------------------------------------- -// Purpose: details on the visibility and size of the horizontal scrollbar -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_HorizontalScroll_t, k_iSteamHTMLSurfaceCallbacks + 11 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface -STEAM_CALLBACK_MEMBER( 1, uint32, unScrollMax ) // -STEAM_CALLBACK_MEMBER( 2, uint32, unScrollCurrent ) // -STEAM_CALLBACK_MEMBER( 3, float, flPageScale ) // -STEAM_CALLBACK_MEMBER( 4, bool , bVisible ) // -STEAM_CALLBACK_MEMBER( 5, uint32, unPageSize ) // -STEAM_CALLBACK_END(6) - - -//----------------------------------------------------------------------------- -// Purpose: details on the visibility and size of the vertical scrollbar -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_VerticalScroll_t, k_iSteamHTMLSurfaceCallbacks + 12 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface -STEAM_CALLBACK_MEMBER( 1, uint32, unScrollMax ) // -STEAM_CALLBACK_MEMBER( 2, uint32, unScrollCurrent ) // -STEAM_CALLBACK_MEMBER( 3, float, flPageScale ) // -STEAM_CALLBACK_MEMBER( 4, bool, bVisible ) // -STEAM_CALLBACK_MEMBER( 5, uint32, unPageSize ) // -STEAM_CALLBACK_END(6) - - -//----------------------------------------------------------------------------- -// Purpose: response to GetLinkAtPosition call -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_LinkAtPosition_t, k_iSteamHTMLSurfaceCallbacks + 13 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface -STEAM_CALLBACK_MEMBER( 1, uint32, x ) // NOTE - Not currently set -STEAM_CALLBACK_MEMBER( 2, uint32, y ) // NOTE - Not currently set -STEAM_CALLBACK_MEMBER( 3, const char *, pchURL ) // -STEAM_CALLBACK_MEMBER( 4, bool, bInput ) // -STEAM_CALLBACK_MEMBER( 5, bool, bLiveLink ) // -STEAM_CALLBACK_END(6) - - - -//----------------------------------------------------------------------------- -// Purpose: show a Javascript alert dialog, call JSDialogResponse -// when the user dismisses this dialog (or right away to ignore it) -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_JSAlert_t, k_iSteamHTMLSurfaceCallbacks + 14 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface -STEAM_CALLBACK_MEMBER( 1, const char *, pchMessage ) // -STEAM_CALLBACK_END(2) - - -//----------------------------------------------------------------------------- -// Purpose: show a Javascript confirmation dialog, call JSDialogResponse -// when the user dismisses this dialog (or right away to ignore it) -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_JSConfirm_t, k_iSteamHTMLSurfaceCallbacks + 15 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface -STEAM_CALLBACK_MEMBER( 1, const char *, pchMessage ) // -STEAM_CALLBACK_END(2) - - -//----------------------------------------------------------------------------- -// Purpose: when received show a file open dialog -// then call FileLoadDialogResponse with the file(s) the user selected. -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_FileOpenDialog_t, k_iSteamHTMLSurfaceCallbacks + 16 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface -STEAM_CALLBACK_MEMBER( 1, const char *, pchTitle ) // -STEAM_CALLBACK_MEMBER( 2, const char *, pchInitialFile ) // -STEAM_CALLBACK_END(3) - - -//----------------------------------------------------------------------------- -// Purpose: a new html window is being created. -// -// IMPORTANT NOTE: at this time, the API does not allow you to acknowledge or -// render the contents of this new window, so the new window is always destroyed -// immediately. The URL and other parameters of the new window are passed here -// to give your application the opportunity to call CreateBrowser and set up -// a new browser in response to the attempted popup, if you wish to do so. -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_NewWindow_t, k_iSteamHTMLSurfaceCallbacks + 21 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the current surface -STEAM_CALLBACK_MEMBER( 1, const char *, pchURL ) // the page to load -STEAM_CALLBACK_MEMBER( 2, uint32, unX ) // the x pos into the page to display the popup -STEAM_CALLBACK_MEMBER( 3, uint32, unY ) // the y pos into the page to display the popup -STEAM_CALLBACK_MEMBER( 4, uint32, unWide ) // the total width of the pBGRA texture -STEAM_CALLBACK_MEMBER( 5, uint32, unTall ) // the total height of the pBGRA texture -STEAM_CALLBACK_MEMBER( 6, HHTMLBrowser, unNewWindow_BrowserHandle_IGNORE ) -STEAM_CALLBACK_END(7) - - -//----------------------------------------------------------------------------- -// Purpose: change the cursor to display -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_SetCursor_t, k_iSteamHTMLSurfaceCallbacks + 22 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface -STEAM_CALLBACK_MEMBER( 1, uint32, eMouseCursor ) // the EMouseCursor to display -STEAM_CALLBACK_END(2) - - -//----------------------------------------------------------------------------- -// Purpose: informational message from the browser -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_StatusText_t, k_iSteamHTMLSurfaceCallbacks + 23 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface -STEAM_CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display -STEAM_CALLBACK_END(2) - - -//----------------------------------------------------------------------------- -// Purpose: show a tooltip -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_ShowToolTip_t, k_iSteamHTMLSurfaceCallbacks + 24 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface -STEAM_CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display -STEAM_CALLBACK_END(2) - - -//----------------------------------------------------------------------------- -// Purpose: update the text of an existing tooltip -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_UpdateToolTip_t, k_iSteamHTMLSurfaceCallbacks + 25 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface -STEAM_CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display -STEAM_CALLBACK_END(2) - - -//----------------------------------------------------------------------------- -// Purpose: hide the tooltip you are showing -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_HideToolTip_t, k_iSteamHTMLSurfaceCallbacks + 26 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface -STEAM_CALLBACK_END(1) - - -//----------------------------------------------------------------------------- -// Purpose: The browser has restarted due to an internal failure, use this new handle value -//----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( HTML_BrowserRestarted_t, k_iSteamHTMLSurfaceCallbacks + 27 ) -STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // this is the new browser handle after the restart -STEAM_CALLBACK_MEMBER( 1, HHTMLBrowser, unOldBrowserHandle ) // the handle for the browser before the restart, if your handle was this then switch to using unBrowserHandle for API calls -STEAM_CALLBACK_END(2) - - -#pragma pack( pop ) - - -#endif // ISTEAMHTMLSURFACE_H +//====== Copyright 1996-2013, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to display html pages in a texture +// +//============================================================================= + +#ifndef ISTEAMHTMLSURFACE_H +#define ISTEAMHTMLSURFACE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + +typedef uint32 HHTMLBrowser; +const uint32 INVALID_HTMLBROWSER = 0; + +//----------------------------------------------------------------------------- +// Purpose: Functions for displaying HTML pages and interacting with them +//----------------------------------------------------------------------------- +class ISteamHTMLSurface +{ +public: + virtual ~ISteamHTMLSurface() {} + + // Must call init and shutdown when starting/ending use of the interface + virtual bool Init() = 0; + virtual bool Shutdown() = 0; + + // Create a browser object for display of a html page, when creation is complete the call handle + // will return a HTML_BrowserReady_t callback for the HHTMLBrowser of your new browser. + // The user agent string is a substring to be added to the general user agent string so you can + // identify your client on web servers. + // The userCSS string lets you apply a CSS style sheet to every displayed page, leave null if + // you do not require this functionality. + // + // YOU MUST HAVE IMPLEMENTED HANDLERS FOR HTML_BrowserReady_t, HTML_StartRequest_t, + // HTML_JSAlert_t, HTML_JSConfirm_t, and HTML_FileOpenDialog_t! See the CALLBACKS + // section of this interface (AllowStartRequest, etc) for more details. If you do + // not implement these callback handlers, the browser may appear to hang instead of + // navigating to new pages or triggering javascript popups. + // + STEAM_CALL_RESULT( HTML_BrowserReady_t ) + virtual SteamAPICall_t CreateBrowser( const char *pchUserAgent, const char *pchUserCSS ) = 0; + + // Call this when you are done with a html surface, this lets us free the resources being used by it + virtual void RemoveBrowser( HHTMLBrowser unBrowserHandle ) = 0; + + // Navigate to this URL, results in a HTML_StartRequest_t as the request commences + virtual void LoadURL( HHTMLBrowser unBrowserHandle, const char *pchURL, const char *pchPostData ) = 0; + + // Tells the surface the size in pixels to display the surface + virtual void SetSize( HHTMLBrowser unBrowserHandle, uint32 unWidth, uint32 unHeight ) = 0; + + // Stop the load of the current html page + virtual void StopLoad( HHTMLBrowser unBrowserHandle ) = 0; + // Reload (most likely from local cache) the current page + virtual void Reload( HHTMLBrowser unBrowserHandle ) = 0; + // navigate back in the page history + virtual void GoBack( HHTMLBrowser unBrowserHandle ) = 0; + // navigate forward in the page history + virtual void GoForward( HHTMLBrowser unBrowserHandle ) = 0; + + // add this header to any url requests from this browser + virtual void AddHeader( HHTMLBrowser unBrowserHandle, const char *pchKey, const char *pchValue ) = 0; + // run this javascript script in the currently loaded page + virtual void ExecuteJavascript( HHTMLBrowser unBrowserHandle, const char *pchScript ) = 0; + + enum EHTMLMouseButton + { + eHTMLMouseButton_Left = 0, + eHTMLMouseButton_Right = 1, + eHTMLMouseButton_Middle = 2, + }; + + // Mouse click and mouse movement commands + virtual void MouseUp( HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton ) = 0; + virtual void MouseDown( HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton ) = 0; + virtual void MouseDoubleClick( HHTMLBrowser unBrowserHandle, EHTMLMouseButton eMouseButton ) = 0; + // x and y are relative to the HTML bounds + virtual void MouseMove( HHTMLBrowser unBrowserHandle, int x, int y ) = 0; + // nDelta is pixels of scroll + virtual void MouseWheel( HHTMLBrowser unBrowserHandle, int32 nDelta ) = 0; + + enum EMouseCursor + { + dc_user = 0, + dc_none, + dc_arrow, + dc_ibeam, + dc_hourglass, + dc_waitarrow, + dc_crosshair, + dc_up, + dc_sizenw, + dc_sizese, + dc_sizene, + dc_sizesw, + dc_sizew, + dc_sizee, + dc_sizen, + dc_sizes, + dc_sizewe, + dc_sizens, + dc_sizeall, + dc_no, + dc_hand, + dc_blank, // don't show any custom cursor, just use your default + dc_middle_pan, + dc_north_pan, + dc_north_east_pan, + dc_east_pan, + dc_south_east_pan, + dc_south_pan, + dc_south_west_pan, + dc_west_pan, + dc_north_west_pan, + dc_alias, + dc_cell, + dc_colresize, + dc_copycur, + dc_verticaltext, + dc_rowresize, + dc_zoomin, + dc_zoomout, + dc_help, + dc_custom, + + dc_last, // custom cursors start from this value and up + }; + + enum EHTMLKeyModifiers + { + k_eHTMLKeyModifier_None = 0, + k_eHTMLKeyModifier_AltDown = 1 << 0, + k_eHTMLKeyModifier_CtrlDown = 1 << 1, + k_eHTMLKeyModifier_ShiftDown = 1 << 2, + }; + + // keyboard interactions, native keycode is the virtual key code value from your OS, system key flags the key to not + // be sent as a typed character as well as a key down + virtual void KeyDown( HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, EHTMLKeyModifiers eHTMLKeyModifiers, bool bIsSystemKey = false ) = 0; + virtual void KeyUp( HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, EHTMLKeyModifiers eHTMLKeyModifiers ) = 0; + // cUnicodeChar is the unicode character point for this keypress (and potentially multiple chars per press) + virtual void KeyChar( HHTMLBrowser unBrowserHandle, uint32 cUnicodeChar, EHTMLKeyModifiers eHTMLKeyModifiers ) = 0; + + // programmatically scroll this many pixels on the page + virtual void SetHorizontalScroll( HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll ) = 0; + virtual void SetVerticalScroll( HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll ) = 0; + + // tell the html control if it has key focus currently, controls showing the I-beam cursor in text controls amongst other things + virtual void SetKeyFocus( HHTMLBrowser unBrowserHandle, bool bHasKeyFocus ) = 0; + + // open the current pages html code in the local editor of choice, used for debugging + virtual void ViewSource( HHTMLBrowser unBrowserHandle ) = 0; + // copy the currently selected text on the html page to the local clipboard + virtual void CopyToClipboard( HHTMLBrowser unBrowserHandle ) = 0; + // paste from the local clipboard to the current html page + virtual void PasteFromClipboard( HHTMLBrowser unBrowserHandle ) = 0; + + // find this string in the browser, if bCurrentlyInFind is true then instead cycle to the next matching element + virtual void Find( HHTMLBrowser unBrowserHandle, const char *pchSearchStr, bool bCurrentlyInFind, bool bReverse ) = 0; + // cancel a currently running find + virtual void StopFind( HHTMLBrowser unBrowserHandle ) = 0; + + // return details about the link at position x,y on the current page + virtual void GetLinkAtPosition( HHTMLBrowser unBrowserHandle, int x, int y ) = 0; + + // set a webcookie for the hostname in question + virtual void SetCookie( const char *pchHostname, const char *pchKey, const char *pchValue, const char *pchPath = "/", RTime32 nExpires = 0, bool bSecure = false, bool bHTTPOnly = false ) = 0; + + // Zoom the current page by flZoom ( from 0.0 to 2.0, so to zoom to 120% use 1.2 ), zooming around point X,Y in the page (use 0,0 if you don't care) + virtual void SetPageScaleFactor( HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY ) = 0; + + // Enable/disable low-resource background mode, where javascript and repaint timers are throttled, resources are + // more aggressively purged from memory, and audio/video elements are paused. When background mode is enabled, + // all HTML5 video and audio objects will execute ".pause()" and gain the property "._steam_background_paused = 1". + // When background mode is disabled, any video or audio objects with that property will resume with ".play()". + virtual void SetBackgroundMode( HHTMLBrowser unBrowserHandle, bool bBackgroundMode ) = 0; + + // Scale the output display space by this factor, this is useful when displaying content on high dpi devices. + // Specifies the ratio between physical and logical pixels. + virtual void SetDPIScalingFactor( HHTMLBrowser unBrowserHandle, float flDPIScaling ) = 0; + + // Open HTML/JS developer tools + virtual void OpenDeveloperTools( HHTMLBrowser unBrowserHandle ) = 0; + + // CALLBACKS + // + // These set of functions are used as responses to callback requests + // + + // You MUST call this in response to a HTML_StartRequest_t callback + // Set bAllowed to true to allow this navigation, false to cancel it and stay + // on the current page. You can use this feature to limit the valid pages + // allowed in your HTML surface. + virtual void AllowStartRequest( HHTMLBrowser unBrowserHandle, bool bAllowed ) = 0; + + // You MUST call this in response to a HTML_JSAlert_t or HTML_JSConfirm_t callback + // Set bResult to true for the OK option of a confirm, use false otherwise + virtual void JSDialogResponse( HHTMLBrowser unBrowserHandle, bool bResult ) = 0; + + // You MUST call this in response to a HTML_FileOpenDialog_t callback + STEAM_IGNOREATTR() + virtual void FileLoadDialogResponse( HHTMLBrowser unBrowserHandle, const char **pchSelectedFiles ) = 0; +}; + +#define STEAMHTMLSURFACE_INTERFACE_VERSION "STEAMHTMLSURFACE_INTERFACE_VERSION_005" + +// Global interface accessor +inline ISteamHTMLSurface *SteamHTMLSurface(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamHTMLSurface *, SteamHTMLSurface, STEAMHTMLSURFACE_INTERFACE_VERSION ); + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + + +//----------------------------------------------------------------------------- +// Purpose: The browser is ready for use +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_BrowserReady_t, k_iSteamHTMLSurfaceCallbacks + 1 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // this browser is now fully created and ready to navigate to pages +STEAM_CALLBACK_END(1) + + +//----------------------------------------------------------------------------- +// Purpose: the browser has a pending paint +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN(HTML_NeedsPaint_t, k_iSteamHTMLSurfaceCallbacks + 2) +STEAM_CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the browser that needs the paint +STEAM_CALLBACK_MEMBER(1, const char *, pBGRA ) // a pointer to the B8G8R8A8 data for this surface, valid until SteamAPI_RunCallbacks is next called +STEAM_CALLBACK_MEMBER(2, uint32, unWide) // the total width of the pBGRA texture +STEAM_CALLBACK_MEMBER(3, uint32, unTall) // the total height of the pBGRA texture +STEAM_CALLBACK_MEMBER(4, uint32, unUpdateX) // the offset in X for the damage rect for this update +STEAM_CALLBACK_MEMBER(5, uint32, unUpdateY) // the offset in Y for the damage rect for this update +STEAM_CALLBACK_MEMBER(6, uint32, unUpdateWide) // the width of the damage rect for this update +STEAM_CALLBACK_MEMBER(7, uint32, unUpdateTall) // the height of the damage rect for this update +STEAM_CALLBACK_MEMBER(8, uint32, unScrollX) // the page scroll the browser was at when this texture was rendered +STEAM_CALLBACK_MEMBER(9, uint32, unScrollY) // the page scroll the browser was at when this texture was rendered +STEAM_CALLBACK_MEMBER(10, float, flPageScale) // the page scale factor on this page when rendered +STEAM_CALLBACK_MEMBER(11, uint32, unPageSerial) // incremented on each new page load, you can use this to reject draws while navigating to new pages +STEAM_CALLBACK_END(12) + + +//----------------------------------------------------------------------------- +// Purpose: The browser wanted to navigate to a new page +// NOTE - you MUST call AllowStartRequest in response to this callback +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN(HTML_StartRequest_t, k_iSteamHTMLSurfaceCallbacks + 3) +STEAM_CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the handle of the surface navigating +STEAM_CALLBACK_MEMBER(1, const char *, pchURL) // the url they wish to navigate to +STEAM_CALLBACK_MEMBER(2, const char *, pchTarget) // the html link target type (i.e _blank, _self, _parent, _top ) +STEAM_CALLBACK_MEMBER(3, const char *, pchPostData ) // any posted data for the request +STEAM_CALLBACK_MEMBER(4, bool, bIsRedirect) // true if this was a http/html redirect from the last load request +STEAM_CALLBACK_END(5) + + +//----------------------------------------------------------------------------- +// Purpose: The browser has been requested to close due to user interaction (usually from a javascript window.close() call) +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN(HTML_CloseBrowser_t, k_iSteamHTMLSurfaceCallbacks + 4) +STEAM_CALLBACK_MEMBER(0, HHTMLBrowser, unBrowserHandle) // the handle of the surface +STEAM_CALLBACK_END(1) + + +//----------------------------------------------------------------------------- +// Purpose: the browser is navigating to a new url +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_URLChanged_t, k_iSteamHTMLSurfaceCallbacks + 5 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface navigating +STEAM_CALLBACK_MEMBER( 1, const char *, pchURL ) // the url they wish to navigate to +STEAM_CALLBACK_MEMBER( 2, const char *, pchPostData ) // any posted data for the request +STEAM_CALLBACK_MEMBER( 3, bool, bIsRedirect ) // true if this was a http/html redirect from the last load request +STEAM_CALLBACK_MEMBER( 4, const char *, pchPageTitle ) // the title of the page +STEAM_CALLBACK_MEMBER( 5, bool, bNewNavigation ) // true if this was from a fresh tab and not a click on an existing page +STEAM_CALLBACK_END(6) + + +//----------------------------------------------------------------------------- +// Purpose: A page is finished loading +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_FinishedRequest_t, k_iSteamHTMLSurfaceCallbacks + 6 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +STEAM_CALLBACK_MEMBER( 1, const char *, pchURL ) // +STEAM_CALLBACK_MEMBER( 2, const char *, pchPageTitle ) // +STEAM_CALLBACK_END(3) + + +//----------------------------------------------------------------------------- +// Purpose: a request to load this url in a new tab +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_OpenLinkInNewTab_t, k_iSteamHTMLSurfaceCallbacks + 7 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +STEAM_CALLBACK_MEMBER( 1, const char *, pchURL ) // +STEAM_CALLBACK_END(2) + + +//----------------------------------------------------------------------------- +// Purpose: the page has a new title now +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_ChangedTitle_t, k_iSteamHTMLSurfaceCallbacks + 8 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +STEAM_CALLBACK_MEMBER( 1, const char *, pchTitle ) // +STEAM_CALLBACK_END(2) + + +//----------------------------------------------------------------------------- +// Purpose: results from a search +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_SearchResults_t, k_iSteamHTMLSurfaceCallbacks + 9 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +STEAM_CALLBACK_MEMBER( 1, uint32, unResults ) // +STEAM_CALLBACK_MEMBER( 2, uint32, unCurrentMatch ) // +STEAM_CALLBACK_END(3) + + +//----------------------------------------------------------------------------- +// Purpose: page history status changed on the ability to go backwards and forward +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_CanGoBackAndForward_t, k_iSteamHTMLSurfaceCallbacks + 10 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +STEAM_CALLBACK_MEMBER( 1, bool, bCanGoBack ) // +STEAM_CALLBACK_MEMBER( 2, bool, bCanGoForward ) // +STEAM_CALLBACK_END(3) + + +//----------------------------------------------------------------------------- +// Purpose: details on the visibility and size of the horizontal scrollbar +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_HorizontalScroll_t, k_iSteamHTMLSurfaceCallbacks + 11 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +STEAM_CALLBACK_MEMBER( 1, uint32, unScrollMax ) // +STEAM_CALLBACK_MEMBER( 2, uint32, unScrollCurrent ) // +STEAM_CALLBACK_MEMBER( 3, float, flPageScale ) // +STEAM_CALLBACK_MEMBER( 4, bool , bVisible ) // +STEAM_CALLBACK_MEMBER( 5, uint32, unPageSize ) // +STEAM_CALLBACK_END(6) + + +//----------------------------------------------------------------------------- +// Purpose: details on the visibility and size of the vertical scrollbar +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_VerticalScroll_t, k_iSteamHTMLSurfaceCallbacks + 12 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +STEAM_CALLBACK_MEMBER( 1, uint32, unScrollMax ) // +STEAM_CALLBACK_MEMBER( 2, uint32, unScrollCurrent ) // +STEAM_CALLBACK_MEMBER( 3, float, flPageScale ) // +STEAM_CALLBACK_MEMBER( 4, bool, bVisible ) // +STEAM_CALLBACK_MEMBER( 5, uint32, unPageSize ) // +STEAM_CALLBACK_END(6) + + +//----------------------------------------------------------------------------- +// Purpose: response to GetLinkAtPosition call +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_LinkAtPosition_t, k_iSteamHTMLSurfaceCallbacks + 13 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +STEAM_CALLBACK_MEMBER( 1, uint32, x ) // NOTE - Not currently set +STEAM_CALLBACK_MEMBER( 2, uint32, y ) // NOTE - Not currently set +STEAM_CALLBACK_MEMBER( 3, const char *, pchURL ) // +STEAM_CALLBACK_MEMBER( 4, bool, bInput ) // +STEAM_CALLBACK_MEMBER( 5, bool, bLiveLink ) // +STEAM_CALLBACK_END(6) + + + +//----------------------------------------------------------------------------- +// Purpose: show a Javascript alert dialog, call JSDialogResponse +// when the user dismisses this dialog (or right away to ignore it) +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_JSAlert_t, k_iSteamHTMLSurfaceCallbacks + 14 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +STEAM_CALLBACK_MEMBER( 1, const char *, pchMessage ) // +STEAM_CALLBACK_END(2) + + +//----------------------------------------------------------------------------- +// Purpose: show a Javascript confirmation dialog, call JSDialogResponse +// when the user dismisses this dialog (or right away to ignore it) +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_JSConfirm_t, k_iSteamHTMLSurfaceCallbacks + 15 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +STEAM_CALLBACK_MEMBER( 1, const char *, pchMessage ) // +STEAM_CALLBACK_END(2) + + +//----------------------------------------------------------------------------- +// Purpose: when received show a file open dialog +// then call FileLoadDialogResponse with the file(s) the user selected. +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_FileOpenDialog_t, k_iSteamHTMLSurfaceCallbacks + 16 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +STEAM_CALLBACK_MEMBER( 1, const char *, pchTitle ) // +STEAM_CALLBACK_MEMBER( 2, const char *, pchInitialFile ) // +STEAM_CALLBACK_END(3) + + +//----------------------------------------------------------------------------- +// Purpose: a new html window is being created. +// +// IMPORTANT NOTE: at this time, the API does not allow you to acknowledge or +// render the contents of this new window, so the new window is always destroyed +// immediately. The URL and other parameters of the new window are passed here +// to give your application the opportunity to call CreateBrowser and set up +// a new browser in response to the attempted popup, if you wish to do so. +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_NewWindow_t, k_iSteamHTMLSurfaceCallbacks + 21 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the current surface +STEAM_CALLBACK_MEMBER( 1, const char *, pchURL ) // the page to load +STEAM_CALLBACK_MEMBER( 2, uint32, unX ) // the x pos into the page to display the popup +STEAM_CALLBACK_MEMBER( 3, uint32, unY ) // the y pos into the page to display the popup +STEAM_CALLBACK_MEMBER( 4, uint32, unWide ) // the total width of the pBGRA texture +STEAM_CALLBACK_MEMBER( 5, uint32, unTall ) // the total height of the pBGRA texture +STEAM_CALLBACK_MEMBER( 6, HHTMLBrowser, unNewWindow_BrowserHandle_IGNORE ) +STEAM_CALLBACK_END(7) + + +//----------------------------------------------------------------------------- +// Purpose: change the cursor to display +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_SetCursor_t, k_iSteamHTMLSurfaceCallbacks + 22 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +STEAM_CALLBACK_MEMBER( 1, uint32, eMouseCursor ) // the EMouseCursor to display +STEAM_CALLBACK_END(2) + + +//----------------------------------------------------------------------------- +// Purpose: informational message from the browser +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_StatusText_t, k_iSteamHTMLSurfaceCallbacks + 23 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +STEAM_CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display +STEAM_CALLBACK_END(2) + + +//----------------------------------------------------------------------------- +// Purpose: show a tooltip +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_ShowToolTip_t, k_iSteamHTMLSurfaceCallbacks + 24 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +STEAM_CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display +STEAM_CALLBACK_END(2) + + +//----------------------------------------------------------------------------- +// Purpose: update the text of an existing tooltip +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_UpdateToolTip_t, k_iSteamHTMLSurfaceCallbacks + 25 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +STEAM_CALLBACK_MEMBER( 1, const char *, pchMsg ) // the EMouseCursor to display +STEAM_CALLBACK_END(2) + + +//----------------------------------------------------------------------------- +// Purpose: hide the tooltip you are showing +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_HideToolTip_t, k_iSteamHTMLSurfaceCallbacks + 26 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // the handle of the surface +STEAM_CALLBACK_END(1) + + +//----------------------------------------------------------------------------- +// Purpose: The browser has restarted due to an internal failure, use this new handle value +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( HTML_BrowserRestarted_t, k_iSteamHTMLSurfaceCallbacks + 27 ) +STEAM_CALLBACK_MEMBER( 0, HHTMLBrowser, unBrowserHandle ) // this is the new browser handle after the restart +STEAM_CALLBACK_MEMBER( 1, HHTMLBrowser, unOldBrowserHandle ) // the handle for the browser before the restart, if your handle was this then switch to using unBrowserHandle for API calls +STEAM_CALLBACK_END(2) + + +#pragma pack( pop ) + + +#endif // ISTEAMHTMLSURFACE_H diff --git a/CodeGen/steam/isteamhttp.h b/CodeGen/steam/isteamhttp.h index 9447b39d..26a02b35 100644 --- a/CodeGen/steam/isteamhttp.h +++ b/CodeGen/steam/isteamhttp.h @@ -1,219 +1,219 @@ -//====== Copyright © 1996-2009, Valve Corporation, All rights reserved. ======= -// -// Purpose: interface to http client -// -//============================================================================= - -#ifndef ISTEAMHTTP_H -#define ISTEAMHTTP_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" -#include "steamhttpenums.h" - -// Handle to a HTTP Request handle -typedef uint32 HTTPRequestHandle; -#define INVALID_HTTPREQUEST_HANDLE 0 - -typedef uint32 HTTPCookieContainerHandle; -#define INVALID_HTTPCOOKIE_HANDLE 0 - -//----------------------------------------------------------------------------- -// Purpose: interface to http client -//----------------------------------------------------------------------------- -class ISteamHTTP -{ -public: - - // Initializes a new HTTP request, returning a handle to use in further operations on it. Requires - // the method (GET or POST) and the absolute URL for the request. Both http and https are supported, - // so this string must start with http:// or https:// and should look like http://store.steampowered.com/app/250/ - // or such. - virtual HTTPRequestHandle CreateHTTPRequest( EHTTPMethod eHTTPRequestMethod, const char *pchAbsoluteURL ) = 0; - - // Set a context value for the request, which will be returned in the HTTPRequestCompleted_t callback after - // sending the request. This is just so the caller can easily keep track of which callbacks go with which request data. - virtual bool SetHTTPRequestContextValue( HTTPRequestHandle hRequest, uint64 ulContextValue ) = 0; - - // Set a timeout in seconds for the HTTP request, must be called prior to sending the request. Default - // timeout is 60 seconds if you don't call this. Returns false if the handle is invalid, or the request - // has already been sent. - virtual bool SetHTTPRequestNetworkActivityTimeout( HTTPRequestHandle hRequest, uint32 unTimeoutSeconds ) = 0; - - // Set a request header value for the request, must be called prior to sending the request. Will - // return false if the handle is invalid or the request is already sent. - virtual bool SetHTTPRequestHeaderValue( HTTPRequestHandle hRequest, const char *pchHeaderName, const char *pchHeaderValue ) = 0; - - // Set a GET or POST parameter value on the request, which is set will depend on the EHTTPMethod specified - // when creating the request. Must be called prior to sending the request. Will return false if the - // handle is invalid or the request is already sent. - virtual bool SetHTTPRequestGetOrPostParameter( HTTPRequestHandle hRequest, const char *pchParamName, const char *pchParamValue ) = 0; - - // Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on - // asynchronous response via callback. - // - // Note: If the user is in offline mode in Steam, then this will add a only-if-cached cache-control - // header and only do a local cache lookup rather than sending any actual remote request. - virtual bool SendHTTPRequest( HTTPRequestHandle hRequest, SteamAPICall_t *pCallHandle ) = 0; - - // Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on - // asynchronous response via callback for completion, and listen for HTTPRequestHeadersReceived_t and - // HTTPRequestDataReceived_t callbacks while streaming. - virtual bool SendHTTPRequestAndStreamResponse( HTTPRequestHandle hRequest, SteamAPICall_t *pCallHandle ) = 0; - - // Defers a request you have sent, the actual HTTP client code may have many requests queued, and this will move - // the specified request to the tail of the queue. Returns false on invalid handle, or if the request is not yet sent. - virtual bool DeferHTTPRequest( HTTPRequestHandle hRequest ) = 0; - - // Prioritizes a request you have sent, the actual HTTP client code may have many requests queued, and this will move - // the specified request to the head of the queue. Returns false on invalid handle, or if the request is not yet sent. - virtual bool PrioritizeHTTPRequest( HTTPRequestHandle hRequest ) = 0; - - // Checks if a response header is present in a HTTP response given a handle from HTTPRequestCompleted_t, also - // returns the size of the header value if present so the caller and allocate a correctly sized buffer for - // GetHTTPResponseHeaderValue. - virtual bool GetHTTPResponseHeaderSize( HTTPRequestHandle hRequest, const char *pchHeaderName, uint32 *unResponseHeaderSize ) = 0; - - // Gets header values from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the - // header is not present or if your buffer is too small to contain it's value. You should first call - // BGetHTTPResponseHeaderSize to check for the presence of the header and to find out the size buffer needed. - virtual bool GetHTTPResponseHeaderValue( HTTPRequestHandle hRequest, const char *pchHeaderName, uint8 *pHeaderValueBuffer, uint32 unBufferSize ) = 0; - - // Gets the size of the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the - // handle is invalid. - virtual bool GetHTTPResponseBodySize( HTTPRequestHandle hRequest, uint32 *unBodySize ) = 0; - - // Gets the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the - // handle is invalid or is to a streaming response, or if the provided buffer is not the correct size. Use BGetHTTPResponseBodySize first to find out - // the correct buffer size to use. - virtual bool GetHTTPResponseBodyData( HTTPRequestHandle hRequest, uint8 *pBodyDataBuffer, uint32 unBufferSize ) = 0; - - // Gets the body data from a streaming HTTP response given a handle from HTTPRequestDataReceived_t. Will return false if the - // handle is invalid or is to a non-streaming response (meaning it wasn't sent with SendHTTPRequestAndStreamResponse), or if the buffer size and offset - // do not match the size and offset sent in HTTPRequestDataReceived_t. - virtual bool GetHTTPStreamingResponseBodyData( HTTPRequestHandle hRequest, uint32 cOffset, uint8 *pBodyDataBuffer, uint32 unBufferSize ) = 0; - - // Releases an HTTP response handle, should always be called to free resources after receiving a HTTPRequestCompleted_t - // callback and finishing using the response. - virtual bool ReleaseHTTPRequest( HTTPRequestHandle hRequest ) = 0; - - // Gets progress on downloading the body for the request. This will be zero unless a response header has already been - // received which included a content-length field. For responses that contain no content-length it will report - // zero for the duration of the request as the size is unknown until the connection closes. - virtual bool GetHTTPDownloadProgressPct( HTTPRequestHandle hRequest, float *pflPercentOut ) = 0; - - // Sets the body for an HTTP Post request. Will fail and return false on a GET request, and will fail if POST params - // have already been set for the request. Setting this raw body makes it the only contents for the post, the pchContentType - // parameter will set the content-type header for the request so the server may know how to interpret the body. - virtual bool SetHTTPRequestRawPostBody( HTTPRequestHandle hRequest, const char *pchContentType, uint8 *pubBody, uint32 unBodyLen ) = 0; - - // Creates a cookie container handle which you must later free with ReleaseCookieContainer(). If bAllowResponsesToModify=true - // than any response to your requests using this cookie container may add new cookies which may be transmitted with - // future requests. If bAllowResponsesToModify=false than only cookies you explicitly set will be sent. This API is just for - // during process lifetime, after steam restarts no cookies are persisted and you have no way to access the cookie container across - // repeat executions of your process. - virtual HTTPCookieContainerHandle CreateCookieContainer( bool bAllowResponsesToModify ) = 0; - - // Release a cookie container you are finished using, freeing it's memory - virtual bool ReleaseCookieContainer( HTTPCookieContainerHandle hCookieContainer ) = 0; - - // Adds a cookie to the specified cookie container that will be used with future requests. - virtual bool SetCookie( HTTPCookieContainerHandle hCookieContainer, const char *pchHost, const char *pchUrl, const char *pchCookie ) = 0; - - // Set the cookie container to use for a HTTP request - virtual bool SetHTTPRequestCookieContainer( HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer ) = 0; - - // Set the extra user agent info for a request, this doesn't clobber the normal user agent, it just adds the extra info on the end - virtual bool SetHTTPRequestUserAgentInfo( HTTPRequestHandle hRequest, const char *pchUserAgentInfo ) = 0; - - // Disable or re-enable verification of SSL/TLS certificates. - // By default, certificates are checked for all HTTPS requests. - virtual bool SetHTTPRequestRequiresVerifiedCertificate( HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate ) = 0; - - // Set an absolute timeout on the HTTP request, this is just a total time timeout different than the network activity timeout - // which can bump everytime we get more data - virtual bool SetHTTPRequestAbsoluteTimeoutMS( HTTPRequestHandle hRequest, uint32 unMilliseconds ) = 0; - - // Check if the reason the request failed was because we timed it out (rather than some harder failure) - virtual bool GetHTTPRequestWasTimedOut( HTTPRequestHandle hRequest, bool *pbWasTimedOut ) = 0; -}; - -#define STEAMHTTP_INTERFACE_VERSION "STEAMHTTP_INTERFACE_VERSION003" - -// Global interface accessor -inline ISteamHTTP *SteamHTTP(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamHTTP *, SteamHTTP, STEAMHTTP_INTERFACE_VERSION ); - -// Global accessor for the gameserver client -inline ISteamHTTP *SteamGameServerHTTP(); -STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamHTTP *, SteamGameServerHTTP, STEAMHTTP_INTERFACE_VERSION ); - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - -struct HTTPRequestCompleted_t -{ - enum { k_iCallback = k_iClientHTTPCallbacks + 1 }; - - // Handle value for the request that has completed. - HTTPRequestHandle m_hRequest; - - // Context value that the user defined on the request that this callback is associated with, 0 if - // no context value was set. - uint64 m_ulContextValue; - - // This will be true if we actually got any sort of response from the server (even an error). - // It will be false if we failed due to an internal error or client side network failure. - bool m_bRequestSuccessful; - - // Will be the HTTP status code value returned by the server, k_EHTTPStatusCode200OK is the normal - // OK response, if you get something else you probably need to treat it as a failure. - EHTTPStatusCode m_eStatusCode; - - uint32 m_unBodySize; // Same as GetHTTPResponseBodySize() -}; - - -struct HTTPRequestHeadersReceived_t -{ - enum { k_iCallback = k_iClientHTTPCallbacks + 2 }; - - // Handle value for the request that has received headers. - HTTPRequestHandle m_hRequest; - - // Context value that the user defined on the request that this callback is associated with, 0 if - // no context value was set. - uint64 m_ulContextValue; -}; - -struct HTTPRequestDataReceived_t -{ - enum { k_iCallback = k_iClientHTTPCallbacks + 3 }; - - // Handle value for the request that has received data. - HTTPRequestHandle m_hRequest; - - // Context value that the user defined on the request that this callback is associated with, 0 if - // no context value was set. - uint64 m_ulContextValue; - - - // Offset to provide to GetHTTPStreamingResponseBodyData to get this chunk of data - uint32 m_cOffset; - - // Size to provide to GetHTTPStreamingResponseBodyData to get this chunk of data - uint32 m_cBytesReceived; -}; - - -#pragma pack( pop ) - +//====== Copyright © 1996-2009, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to http client +// +//============================================================================= + +#ifndef ISTEAMHTTP_H +#define ISTEAMHTTP_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" +#include "steamhttpenums.h" + +// Handle to a HTTP Request handle +typedef uint32 HTTPRequestHandle; +#define INVALID_HTTPREQUEST_HANDLE 0 + +typedef uint32 HTTPCookieContainerHandle; +#define INVALID_HTTPCOOKIE_HANDLE 0 + +//----------------------------------------------------------------------------- +// Purpose: interface to http client +//----------------------------------------------------------------------------- +class ISteamHTTP +{ +public: + + // Initializes a new HTTP request, returning a handle to use in further operations on it. Requires + // the method (GET or POST) and the absolute URL for the request. Both http and https are supported, + // so this string must start with http:// or https:// and should look like http://store.steampowered.com/app/250/ + // or such. + virtual HTTPRequestHandle CreateHTTPRequest( EHTTPMethod eHTTPRequestMethod, const char *pchAbsoluteURL ) = 0; + + // Set a context value for the request, which will be returned in the HTTPRequestCompleted_t callback after + // sending the request. This is just so the caller can easily keep track of which callbacks go with which request data. + virtual bool SetHTTPRequestContextValue( HTTPRequestHandle hRequest, uint64 ulContextValue ) = 0; + + // Set a timeout in seconds for the HTTP request, must be called prior to sending the request. Default + // timeout is 60 seconds if you don't call this. Returns false if the handle is invalid, or the request + // has already been sent. + virtual bool SetHTTPRequestNetworkActivityTimeout( HTTPRequestHandle hRequest, uint32 unTimeoutSeconds ) = 0; + + // Set a request header value for the request, must be called prior to sending the request. Will + // return false if the handle is invalid or the request is already sent. + virtual bool SetHTTPRequestHeaderValue( HTTPRequestHandle hRequest, const char *pchHeaderName, const char *pchHeaderValue ) = 0; + + // Set a GET or POST parameter value on the request, which is set will depend on the EHTTPMethod specified + // when creating the request. Must be called prior to sending the request. Will return false if the + // handle is invalid or the request is already sent. + virtual bool SetHTTPRequestGetOrPostParameter( HTTPRequestHandle hRequest, const char *pchParamName, const char *pchParamValue ) = 0; + + // Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on + // asynchronous response via callback. + // + // Note: If the user is in offline mode in Steam, then this will add a only-if-cached cache-control + // header and only do a local cache lookup rather than sending any actual remote request. + virtual bool SendHTTPRequest( HTTPRequestHandle hRequest, SteamAPICall_t *pCallHandle ) = 0; + + // Sends the HTTP request, will return false on a bad handle, otherwise use SteamCallHandle to wait on + // asynchronous response via callback for completion, and listen for HTTPRequestHeadersReceived_t and + // HTTPRequestDataReceived_t callbacks while streaming. + virtual bool SendHTTPRequestAndStreamResponse( HTTPRequestHandle hRequest, SteamAPICall_t *pCallHandle ) = 0; + + // Defers a request you have sent, the actual HTTP client code may have many requests queued, and this will move + // the specified request to the tail of the queue. Returns false on invalid handle, or if the request is not yet sent. + virtual bool DeferHTTPRequest( HTTPRequestHandle hRequest ) = 0; + + // Prioritizes a request you have sent, the actual HTTP client code may have many requests queued, and this will move + // the specified request to the head of the queue. Returns false on invalid handle, or if the request is not yet sent. + virtual bool PrioritizeHTTPRequest( HTTPRequestHandle hRequest ) = 0; + + // Checks if a response header is present in a HTTP response given a handle from HTTPRequestCompleted_t, also + // returns the size of the header value if present so the caller and allocate a correctly sized buffer for + // GetHTTPResponseHeaderValue. + virtual bool GetHTTPResponseHeaderSize( HTTPRequestHandle hRequest, const char *pchHeaderName, uint32 *unResponseHeaderSize ) = 0; + + // Gets header values from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + // header is not present or if your buffer is too small to contain it's value. You should first call + // BGetHTTPResponseHeaderSize to check for the presence of the header and to find out the size buffer needed. + virtual bool GetHTTPResponseHeaderValue( HTTPRequestHandle hRequest, const char *pchHeaderName, uint8 *pHeaderValueBuffer, uint32 unBufferSize ) = 0; + + // Gets the size of the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + // handle is invalid. + virtual bool GetHTTPResponseBodySize( HTTPRequestHandle hRequest, uint32 *unBodySize ) = 0; + + // Gets the body data from a HTTP response given a handle from HTTPRequestCompleted_t, will return false if the + // handle is invalid or is to a streaming response, or if the provided buffer is not the correct size. Use BGetHTTPResponseBodySize first to find out + // the correct buffer size to use. + virtual bool GetHTTPResponseBodyData( HTTPRequestHandle hRequest, uint8 *pBodyDataBuffer, uint32 unBufferSize ) = 0; + + // Gets the body data from a streaming HTTP response given a handle from HTTPRequestDataReceived_t. Will return false if the + // handle is invalid or is to a non-streaming response (meaning it wasn't sent with SendHTTPRequestAndStreamResponse), or if the buffer size and offset + // do not match the size and offset sent in HTTPRequestDataReceived_t. + virtual bool GetHTTPStreamingResponseBodyData( HTTPRequestHandle hRequest, uint32 cOffset, uint8 *pBodyDataBuffer, uint32 unBufferSize ) = 0; + + // Releases an HTTP response handle, should always be called to free resources after receiving a HTTPRequestCompleted_t + // callback and finishing using the response. + virtual bool ReleaseHTTPRequest( HTTPRequestHandle hRequest ) = 0; + + // Gets progress on downloading the body for the request. This will be zero unless a response header has already been + // received which included a content-length field. For responses that contain no content-length it will report + // zero for the duration of the request as the size is unknown until the connection closes. + virtual bool GetHTTPDownloadProgressPct( HTTPRequestHandle hRequest, float *pflPercentOut ) = 0; + + // Sets the body for an HTTP Post request. Will fail and return false on a GET request, and will fail if POST params + // have already been set for the request. Setting this raw body makes it the only contents for the post, the pchContentType + // parameter will set the content-type header for the request so the server may know how to interpret the body. + virtual bool SetHTTPRequestRawPostBody( HTTPRequestHandle hRequest, const char *pchContentType, uint8 *pubBody, uint32 unBodyLen ) = 0; + + // Creates a cookie container handle which you must later free with ReleaseCookieContainer(). If bAllowResponsesToModify=true + // than any response to your requests using this cookie container may add new cookies which may be transmitted with + // future requests. If bAllowResponsesToModify=false than only cookies you explicitly set will be sent. This API is just for + // during process lifetime, after steam restarts no cookies are persisted and you have no way to access the cookie container across + // repeat executions of your process. + virtual HTTPCookieContainerHandle CreateCookieContainer( bool bAllowResponsesToModify ) = 0; + + // Release a cookie container you are finished using, freeing it's memory + virtual bool ReleaseCookieContainer( HTTPCookieContainerHandle hCookieContainer ) = 0; + + // Adds a cookie to the specified cookie container that will be used with future requests. + virtual bool SetCookie( HTTPCookieContainerHandle hCookieContainer, const char *pchHost, const char *pchUrl, const char *pchCookie ) = 0; + + // Set the cookie container to use for a HTTP request + virtual bool SetHTTPRequestCookieContainer( HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer ) = 0; + + // Set the extra user agent info for a request, this doesn't clobber the normal user agent, it just adds the extra info on the end + virtual bool SetHTTPRequestUserAgentInfo( HTTPRequestHandle hRequest, const char *pchUserAgentInfo ) = 0; + + // Disable or re-enable verification of SSL/TLS certificates. + // By default, certificates are checked for all HTTPS requests. + virtual bool SetHTTPRequestRequiresVerifiedCertificate( HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate ) = 0; + + // Set an absolute timeout on the HTTP request, this is just a total time timeout different than the network activity timeout + // which can bump everytime we get more data + virtual bool SetHTTPRequestAbsoluteTimeoutMS( HTTPRequestHandle hRequest, uint32 unMilliseconds ) = 0; + + // Check if the reason the request failed was because we timed it out (rather than some harder failure) + virtual bool GetHTTPRequestWasTimedOut( HTTPRequestHandle hRequest, bool *pbWasTimedOut ) = 0; +}; + +#define STEAMHTTP_INTERFACE_VERSION "STEAMHTTP_INTERFACE_VERSION003" + +// Global interface accessor +inline ISteamHTTP *SteamHTTP(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamHTTP *, SteamHTTP, STEAMHTTP_INTERFACE_VERSION ); + +// Global accessor for the gameserver client +inline ISteamHTTP *SteamGameServerHTTP(); +STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamHTTP *, SteamGameServerHTTP, STEAMHTTP_INTERFACE_VERSION ); + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + +struct HTTPRequestCompleted_t +{ + enum { k_iCallback = k_iClientHTTPCallbacks + 1 }; + + // Handle value for the request that has completed. + HTTPRequestHandle m_hRequest; + + // Context value that the user defined on the request that this callback is associated with, 0 if + // no context value was set. + uint64 m_ulContextValue; + + // This will be true if we actually got any sort of response from the server (even an error). + // It will be false if we failed due to an internal error or client side network failure. + bool m_bRequestSuccessful; + + // Will be the HTTP status code value returned by the server, k_EHTTPStatusCode200OK is the normal + // OK response, if you get something else you probably need to treat it as a failure. + EHTTPStatusCode m_eStatusCode; + + uint32 m_unBodySize; // Same as GetHTTPResponseBodySize() +}; + + +struct HTTPRequestHeadersReceived_t +{ + enum { k_iCallback = k_iClientHTTPCallbacks + 2 }; + + // Handle value for the request that has received headers. + HTTPRequestHandle m_hRequest; + + // Context value that the user defined on the request that this callback is associated with, 0 if + // no context value was set. + uint64 m_ulContextValue; +}; + +struct HTTPRequestDataReceived_t +{ + enum { k_iCallback = k_iClientHTTPCallbacks + 3 }; + + // Handle value for the request that has received data. + HTTPRequestHandle m_hRequest; + + // Context value that the user defined on the request that this callback is associated with, 0 if + // no context value was set. + uint64 m_ulContextValue; + + + // Offset to provide to GetHTTPStreamingResponseBodyData to get this chunk of data + uint32 m_cOffset; + + // Size to provide to GetHTTPStreamingResponseBodyData to get this chunk of data + uint32 m_cBytesReceived; +}; + + +#pragma pack( pop ) + #endif // ISTEAMHTTP_H \ No newline at end of file diff --git a/CodeGen/steam/isteaminput.h b/CodeGen/steam/isteaminput.h index 200776b3..66c385bf 100644 --- a/CodeGen/steam/isteaminput.h +++ b/CodeGen/steam/isteaminput.h @@ -1,688 +1,688 @@ -//====== Copyright 1996-2018, Valve Corporation, All rights reserved. ======= -// -// Purpose: Steam Input is a flexible input API that supports over three hundred devices including all -// common variants of Xbox, Playstation, Nintendo Switch Pro, and Steam Controllers. -// For more info including a getting started guide for developers -// please visit: https://partner.steamgames.com/doc/features/steam_controller -// -//============================================================================= - -#ifndef ISTEAMINPUT_H -#define ISTEAMINPUT_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" - -#define STEAM_INPUT_MAX_COUNT 16 - -#define STEAM_INPUT_MAX_ANALOG_ACTIONS 16 - -#define STEAM_INPUT_MAX_DIGITAL_ACTIONS 128 - -#define STEAM_INPUT_MAX_ORIGINS 8 - -#define STEAM_INPUT_MAX_ACTIVE_LAYERS 16 - -// When sending an option to a specific controller handle, you can send to all devices via this command -#define STEAM_INPUT_HANDLE_ALL_CONTROLLERS UINT64_MAX - -#define STEAM_INPUT_MIN_ANALOG_ACTION_DATA -1.0f -#define STEAM_INPUT_MAX_ANALOG_ACTION_DATA 1.0f - -enum EInputSourceMode -{ - k_EInputSourceMode_None, - k_EInputSourceMode_Dpad, - k_EInputSourceMode_Buttons, - k_EInputSourceMode_FourButtons, - k_EInputSourceMode_AbsoluteMouse, - k_EInputSourceMode_RelativeMouse, - k_EInputSourceMode_JoystickMove, - k_EInputSourceMode_JoystickMouse, - k_EInputSourceMode_JoystickCamera, - k_EInputSourceMode_ScrollWheel, - k_EInputSourceMode_Trigger, - k_EInputSourceMode_TouchMenu, - k_EInputSourceMode_MouseJoystick, - k_EInputSourceMode_MouseRegion, - k_EInputSourceMode_RadialMenu, - k_EInputSourceMode_SingleButton, - k_EInputSourceMode_Switches -}; - -// Note: Please do not use action origins as a way to identify controller types. There is no -// guarantee that they will be added in a contiguous manner - use GetInputTypeForHandle instead. -// Versions of Steam that add new controller types in the future will extend this enum so if you're -// using a lookup table please check the bounds of any origins returned by Steam. -enum EInputActionOrigin -{ - // Steam Controller - k_EInputActionOrigin_None, - k_EInputActionOrigin_SteamController_A, - k_EInputActionOrigin_SteamController_B, - k_EInputActionOrigin_SteamController_X, - k_EInputActionOrigin_SteamController_Y, - k_EInputActionOrigin_SteamController_LeftBumper, - k_EInputActionOrigin_SteamController_RightBumper, - k_EInputActionOrigin_SteamController_LeftGrip, - k_EInputActionOrigin_SteamController_RightGrip, - k_EInputActionOrigin_SteamController_Start, - k_EInputActionOrigin_SteamController_Back, - k_EInputActionOrigin_SteamController_LeftPad_Touch, - k_EInputActionOrigin_SteamController_LeftPad_Swipe, - k_EInputActionOrigin_SteamController_LeftPad_Click, - k_EInputActionOrigin_SteamController_LeftPad_DPadNorth, - k_EInputActionOrigin_SteamController_LeftPad_DPadSouth, - k_EInputActionOrigin_SteamController_LeftPad_DPadWest, - k_EInputActionOrigin_SteamController_LeftPad_DPadEast, - k_EInputActionOrigin_SteamController_RightPad_Touch, - k_EInputActionOrigin_SteamController_RightPad_Swipe, - k_EInputActionOrigin_SteamController_RightPad_Click, - k_EInputActionOrigin_SteamController_RightPad_DPadNorth, - k_EInputActionOrigin_SteamController_RightPad_DPadSouth, - k_EInputActionOrigin_SteamController_RightPad_DPadWest, - k_EInputActionOrigin_SteamController_RightPad_DPadEast, - k_EInputActionOrigin_SteamController_LeftTrigger_Pull, - k_EInputActionOrigin_SteamController_LeftTrigger_Click, - k_EInputActionOrigin_SteamController_RightTrigger_Pull, - k_EInputActionOrigin_SteamController_RightTrigger_Click, - k_EInputActionOrigin_SteamController_LeftStick_Move, - k_EInputActionOrigin_SteamController_LeftStick_Click, - k_EInputActionOrigin_SteamController_LeftStick_DPadNorth, - k_EInputActionOrigin_SteamController_LeftStick_DPadSouth, - k_EInputActionOrigin_SteamController_LeftStick_DPadWest, - k_EInputActionOrigin_SteamController_LeftStick_DPadEast, - k_EInputActionOrigin_SteamController_Gyro_Move, - k_EInputActionOrigin_SteamController_Gyro_Pitch, - k_EInputActionOrigin_SteamController_Gyro_Yaw, - k_EInputActionOrigin_SteamController_Gyro_Roll, - k_EInputActionOrigin_SteamController_Reserved0, - k_EInputActionOrigin_SteamController_Reserved1, - k_EInputActionOrigin_SteamController_Reserved2, - k_EInputActionOrigin_SteamController_Reserved3, - k_EInputActionOrigin_SteamController_Reserved4, - k_EInputActionOrigin_SteamController_Reserved5, - k_EInputActionOrigin_SteamController_Reserved6, - k_EInputActionOrigin_SteamController_Reserved7, - k_EInputActionOrigin_SteamController_Reserved8, - k_EInputActionOrigin_SteamController_Reserved9, - k_EInputActionOrigin_SteamController_Reserved10, - - // PS4 Dual Shock - k_EInputActionOrigin_PS4_X, - k_EInputActionOrigin_PS4_Circle, - k_EInputActionOrigin_PS4_Triangle, - k_EInputActionOrigin_PS4_Square, - k_EInputActionOrigin_PS4_LeftBumper, - k_EInputActionOrigin_PS4_RightBumper, - k_EInputActionOrigin_PS4_Options, //Start - k_EInputActionOrigin_PS4_Share, //Back - k_EInputActionOrigin_PS4_LeftPad_Touch, - k_EInputActionOrigin_PS4_LeftPad_Swipe, - k_EInputActionOrigin_PS4_LeftPad_Click, - k_EInputActionOrigin_PS4_LeftPad_DPadNorth, - k_EInputActionOrigin_PS4_LeftPad_DPadSouth, - k_EInputActionOrigin_PS4_LeftPad_DPadWest, - k_EInputActionOrigin_PS4_LeftPad_DPadEast, - k_EInputActionOrigin_PS4_RightPad_Touch, - k_EInputActionOrigin_PS4_RightPad_Swipe, - k_EInputActionOrigin_PS4_RightPad_Click, - k_EInputActionOrigin_PS4_RightPad_DPadNorth, - k_EInputActionOrigin_PS4_RightPad_DPadSouth, - k_EInputActionOrigin_PS4_RightPad_DPadWest, - k_EInputActionOrigin_PS4_RightPad_DPadEast, - k_EInputActionOrigin_PS4_CenterPad_Touch, - k_EInputActionOrigin_PS4_CenterPad_Swipe, - k_EInputActionOrigin_PS4_CenterPad_Click, - k_EInputActionOrigin_PS4_CenterPad_DPadNorth, - k_EInputActionOrigin_PS4_CenterPad_DPadSouth, - k_EInputActionOrigin_PS4_CenterPad_DPadWest, - k_EInputActionOrigin_PS4_CenterPad_DPadEast, - k_EInputActionOrigin_PS4_LeftTrigger_Pull, - k_EInputActionOrigin_PS4_LeftTrigger_Click, - k_EInputActionOrigin_PS4_RightTrigger_Pull, - k_EInputActionOrigin_PS4_RightTrigger_Click, - k_EInputActionOrigin_PS4_LeftStick_Move, - k_EInputActionOrigin_PS4_LeftStick_Click, - k_EInputActionOrigin_PS4_LeftStick_DPadNorth, - k_EInputActionOrigin_PS4_LeftStick_DPadSouth, - k_EInputActionOrigin_PS4_LeftStick_DPadWest, - k_EInputActionOrigin_PS4_LeftStick_DPadEast, - k_EInputActionOrigin_PS4_RightStick_Move, - k_EInputActionOrigin_PS4_RightStick_Click, - k_EInputActionOrigin_PS4_RightStick_DPadNorth, - k_EInputActionOrigin_PS4_RightStick_DPadSouth, - k_EInputActionOrigin_PS4_RightStick_DPadWest, - k_EInputActionOrigin_PS4_RightStick_DPadEast, - k_EInputActionOrigin_PS4_DPad_North, - k_EInputActionOrigin_PS4_DPad_South, - k_EInputActionOrigin_PS4_DPad_West, - k_EInputActionOrigin_PS4_DPad_East, - k_EInputActionOrigin_PS4_Gyro_Move, - k_EInputActionOrigin_PS4_Gyro_Pitch, - k_EInputActionOrigin_PS4_Gyro_Yaw, - k_EInputActionOrigin_PS4_Gyro_Roll, - k_EInputActionOrigin_PS4_DPad_Move, - k_EInputActionOrigin_PS4_Reserved1, - k_EInputActionOrigin_PS4_Reserved2, - k_EInputActionOrigin_PS4_Reserved3, - k_EInputActionOrigin_PS4_Reserved4, - k_EInputActionOrigin_PS4_Reserved5, - k_EInputActionOrigin_PS4_Reserved6, - k_EInputActionOrigin_PS4_Reserved7, - k_EInputActionOrigin_PS4_Reserved8, - k_EInputActionOrigin_PS4_Reserved9, - k_EInputActionOrigin_PS4_Reserved10, - - // XBox One - k_EInputActionOrigin_XBoxOne_A, - k_EInputActionOrigin_XBoxOne_B, - k_EInputActionOrigin_XBoxOne_X, - k_EInputActionOrigin_XBoxOne_Y, - k_EInputActionOrigin_XBoxOne_LeftBumper, - k_EInputActionOrigin_XBoxOne_RightBumper, - k_EInputActionOrigin_XBoxOne_Menu, //Start - k_EInputActionOrigin_XBoxOne_View, //Back - k_EInputActionOrigin_XBoxOne_LeftTrigger_Pull, - k_EInputActionOrigin_XBoxOne_LeftTrigger_Click, - k_EInputActionOrigin_XBoxOne_RightTrigger_Pull, - k_EInputActionOrigin_XBoxOne_RightTrigger_Click, - k_EInputActionOrigin_XBoxOne_LeftStick_Move, - k_EInputActionOrigin_XBoxOne_LeftStick_Click, - k_EInputActionOrigin_XBoxOne_LeftStick_DPadNorth, - k_EInputActionOrigin_XBoxOne_LeftStick_DPadSouth, - k_EInputActionOrigin_XBoxOne_LeftStick_DPadWest, - k_EInputActionOrigin_XBoxOne_LeftStick_DPadEast, - k_EInputActionOrigin_XBoxOne_RightStick_Move, - k_EInputActionOrigin_XBoxOne_RightStick_Click, - k_EInputActionOrigin_XBoxOne_RightStick_DPadNorth, - k_EInputActionOrigin_XBoxOne_RightStick_DPadSouth, - k_EInputActionOrigin_XBoxOne_RightStick_DPadWest, - k_EInputActionOrigin_XBoxOne_RightStick_DPadEast, - k_EInputActionOrigin_XBoxOne_DPad_North, - k_EInputActionOrigin_XBoxOne_DPad_South, - k_EInputActionOrigin_XBoxOne_DPad_West, - k_EInputActionOrigin_XBoxOne_DPad_East, - k_EInputActionOrigin_XBoxOne_DPad_Move, - k_EInputActionOrigin_XBoxOne_Reserved1, - k_EInputActionOrigin_XBoxOne_Reserved2, - k_EInputActionOrigin_XBoxOne_Reserved3, - k_EInputActionOrigin_XBoxOne_Reserved4, - k_EInputActionOrigin_XBoxOne_Reserved5, - k_EInputActionOrigin_XBoxOne_Reserved6, - k_EInputActionOrigin_XBoxOne_Reserved7, - k_EInputActionOrigin_XBoxOne_Reserved8, - k_EInputActionOrigin_XBoxOne_Reserved9, - k_EInputActionOrigin_XBoxOne_Reserved10, - - // XBox 360 - k_EInputActionOrigin_XBox360_A, - k_EInputActionOrigin_XBox360_B, - k_EInputActionOrigin_XBox360_X, - k_EInputActionOrigin_XBox360_Y, - k_EInputActionOrigin_XBox360_LeftBumper, - k_EInputActionOrigin_XBox360_RightBumper, - k_EInputActionOrigin_XBox360_Start, //Start - k_EInputActionOrigin_XBox360_Back, //Back - k_EInputActionOrigin_XBox360_LeftTrigger_Pull, - k_EInputActionOrigin_XBox360_LeftTrigger_Click, - k_EInputActionOrigin_XBox360_RightTrigger_Pull, - k_EInputActionOrigin_XBox360_RightTrigger_Click, - k_EInputActionOrigin_XBox360_LeftStick_Move, - k_EInputActionOrigin_XBox360_LeftStick_Click, - k_EInputActionOrigin_XBox360_LeftStick_DPadNorth, - k_EInputActionOrigin_XBox360_LeftStick_DPadSouth, - k_EInputActionOrigin_XBox360_LeftStick_DPadWest, - k_EInputActionOrigin_XBox360_LeftStick_DPadEast, - k_EInputActionOrigin_XBox360_RightStick_Move, - k_EInputActionOrigin_XBox360_RightStick_Click, - k_EInputActionOrigin_XBox360_RightStick_DPadNorth, - k_EInputActionOrigin_XBox360_RightStick_DPadSouth, - k_EInputActionOrigin_XBox360_RightStick_DPadWest, - k_EInputActionOrigin_XBox360_RightStick_DPadEast, - k_EInputActionOrigin_XBox360_DPad_North, - k_EInputActionOrigin_XBox360_DPad_South, - k_EInputActionOrigin_XBox360_DPad_West, - k_EInputActionOrigin_XBox360_DPad_East, - k_EInputActionOrigin_XBox360_DPad_Move, - k_EInputActionOrigin_XBox360_Reserved1, - k_EInputActionOrigin_XBox360_Reserved2, - k_EInputActionOrigin_XBox360_Reserved3, - k_EInputActionOrigin_XBox360_Reserved4, - k_EInputActionOrigin_XBox360_Reserved5, - k_EInputActionOrigin_XBox360_Reserved6, - k_EInputActionOrigin_XBox360_Reserved7, - k_EInputActionOrigin_XBox360_Reserved8, - k_EInputActionOrigin_XBox360_Reserved9, - k_EInputActionOrigin_XBox360_Reserved10, - - - // Switch - Pro or Joycons used as a single input device. - // This does not apply to a single joycon - k_EInputActionOrigin_Switch_A, - k_EInputActionOrigin_Switch_B, - k_EInputActionOrigin_Switch_X, - k_EInputActionOrigin_Switch_Y, - k_EInputActionOrigin_Switch_LeftBumper, - k_EInputActionOrigin_Switch_RightBumper, - k_EInputActionOrigin_Switch_Plus, //Start - k_EInputActionOrigin_Switch_Minus, //Back - k_EInputActionOrigin_Switch_Capture, - k_EInputActionOrigin_Switch_LeftTrigger_Pull, - k_EInputActionOrigin_Switch_LeftTrigger_Click, - k_EInputActionOrigin_Switch_RightTrigger_Pull, - k_EInputActionOrigin_Switch_RightTrigger_Click, - k_EInputActionOrigin_Switch_LeftStick_Move, - k_EInputActionOrigin_Switch_LeftStick_Click, - k_EInputActionOrigin_Switch_LeftStick_DPadNorth, - k_EInputActionOrigin_Switch_LeftStick_DPadSouth, - k_EInputActionOrigin_Switch_LeftStick_DPadWest, - k_EInputActionOrigin_Switch_LeftStick_DPadEast, - k_EInputActionOrigin_Switch_RightStick_Move, - k_EInputActionOrigin_Switch_RightStick_Click, - k_EInputActionOrigin_Switch_RightStick_DPadNorth, - k_EInputActionOrigin_Switch_RightStick_DPadSouth, - k_EInputActionOrigin_Switch_RightStick_DPadWest, - k_EInputActionOrigin_Switch_RightStick_DPadEast, - k_EInputActionOrigin_Switch_DPad_North, - k_EInputActionOrigin_Switch_DPad_South, - k_EInputActionOrigin_Switch_DPad_West, - k_EInputActionOrigin_Switch_DPad_East, - k_EInputActionOrigin_Switch_ProGyro_Move, // Primary Gyro in Pro Controller, or Right JoyCon - k_EInputActionOrigin_Switch_ProGyro_Pitch, // Primary Gyro in Pro Controller, or Right JoyCon - k_EInputActionOrigin_Switch_ProGyro_Yaw, // Primary Gyro in Pro Controller, or Right JoyCon - k_EInputActionOrigin_Switch_ProGyro_Roll, // Primary Gyro in Pro Controller, or Right JoyCon - k_EInputActionOrigin_Switch_DPad_Move, - k_EInputActionOrigin_Switch_Reserved1, - k_EInputActionOrigin_Switch_Reserved2, - k_EInputActionOrigin_Switch_Reserved3, - k_EInputActionOrigin_Switch_Reserved4, - k_EInputActionOrigin_Switch_Reserved5, - k_EInputActionOrigin_Switch_Reserved6, - k_EInputActionOrigin_Switch_Reserved7, - k_EInputActionOrigin_Switch_Reserved8, - k_EInputActionOrigin_Switch_Reserved9, - k_EInputActionOrigin_Switch_Reserved10, - - // Switch JoyCon Specific - k_EInputActionOrigin_Switch_RightGyro_Move, // Right JoyCon Gyro generally should correspond to Pro's single gyro - k_EInputActionOrigin_Switch_RightGyro_Pitch, // Right JoyCon Gyro generally should correspond to Pro's single gyro - k_EInputActionOrigin_Switch_RightGyro_Yaw, // Right JoyCon Gyro generally should correspond to Pro's single gyro - k_EInputActionOrigin_Switch_RightGyro_Roll, // Right JoyCon Gyro generally should correspond to Pro's single gyro - k_EInputActionOrigin_Switch_LeftGyro_Move, - k_EInputActionOrigin_Switch_LeftGyro_Pitch, - k_EInputActionOrigin_Switch_LeftGyro_Yaw, - k_EInputActionOrigin_Switch_LeftGyro_Roll, - k_EInputActionOrigin_Switch_LeftGrip_Lower, // Left JoyCon SR Button - k_EInputActionOrigin_Switch_LeftGrip_Upper, // Left JoyCon SL Button - k_EInputActionOrigin_Switch_RightGrip_Lower, // Right JoyCon SL Button - k_EInputActionOrigin_Switch_RightGrip_Upper, // Right JoyCon SR Button - k_EInputActionOrigin_Switch_Reserved11, - k_EInputActionOrigin_Switch_Reserved12, - k_EInputActionOrigin_Switch_Reserved13, - k_EInputActionOrigin_Switch_Reserved14, - k_EInputActionOrigin_Switch_Reserved15, - k_EInputActionOrigin_Switch_Reserved16, - k_EInputActionOrigin_Switch_Reserved17, - k_EInputActionOrigin_Switch_Reserved18, - k_EInputActionOrigin_Switch_Reserved19, - k_EInputActionOrigin_Switch_Reserved20, - - // Added in SDK 1.51 - k_EInputActionOrigin_PS5_X, - k_EInputActionOrigin_PS5_Circle, - k_EInputActionOrigin_PS5_Triangle, - k_EInputActionOrigin_PS5_Square, - k_EInputActionOrigin_PS5_LeftBumper, - k_EInputActionOrigin_PS5_RightBumper, - k_EInputActionOrigin_PS5_Option, //Start - k_EInputActionOrigin_PS5_Create, //Back - k_EInputActionOrigin_PS5_Mute, - k_EInputActionOrigin_PS5_LeftPad_Touch, - k_EInputActionOrigin_PS5_LeftPad_Swipe, - k_EInputActionOrigin_PS5_LeftPad_Click, - k_EInputActionOrigin_PS5_LeftPad_DPadNorth, - k_EInputActionOrigin_PS5_LeftPad_DPadSouth, - k_EInputActionOrigin_PS5_LeftPad_DPadWest, - k_EInputActionOrigin_PS5_LeftPad_DPadEast, - k_EInputActionOrigin_PS5_RightPad_Touch, - k_EInputActionOrigin_PS5_RightPad_Swipe, - k_EInputActionOrigin_PS5_RightPad_Click, - k_EInputActionOrigin_PS5_RightPad_DPadNorth, - k_EInputActionOrigin_PS5_RightPad_DPadSouth, - k_EInputActionOrigin_PS5_RightPad_DPadWest, - k_EInputActionOrigin_PS5_RightPad_DPadEast, - k_EInputActionOrigin_PS5_CenterPad_Touch, - k_EInputActionOrigin_PS5_CenterPad_Swipe, - k_EInputActionOrigin_PS5_CenterPad_Click, - k_EInputActionOrigin_PS5_CenterPad_DPadNorth, - k_EInputActionOrigin_PS5_CenterPad_DPadSouth, - k_EInputActionOrigin_PS5_CenterPad_DPadWest, - k_EInputActionOrigin_PS5_CenterPad_DPadEast, - k_EInputActionOrigin_PS5_LeftTrigger_Pull, - k_EInputActionOrigin_PS5_LeftTrigger_Click, - k_EInputActionOrigin_PS5_RightTrigger_Pull, - k_EInputActionOrigin_PS5_RightTrigger_Click, - k_EInputActionOrigin_PS5_LeftStick_Move, - k_EInputActionOrigin_PS5_LeftStick_Click, - k_EInputActionOrigin_PS5_LeftStick_DPadNorth, - k_EInputActionOrigin_PS5_LeftStick_DPadSouth, - k_EInputActionOrigin_PS5_LeftStick_DPadWest, - k_EInputActionOrigin_PS5_LeftStick_DPadEast, - k_EInputActionOrigin_PS5_RightStick_Move, - k_EInputActionOrigin_PS5_RightStick_Click, - k_EInputActionOrigin_PS5_RightStick_DPadNorth, - k_EInputActionOrigin_PS5_RightStick_DPadSouth, - k_EInputActionOrigin_PS5_RightStick_DPadWest, - k_EInputActionOrigin_PS5_RightStick_DPadEast, - k_EInputActionOrigin_PS5_DPad_North, - k_EInputActionOrigin_PS5_DPad_South, - k_EInputActionOrigin_PS5_DPad_West, - k_EInputActionOrigin_PS5_DPad_East, - k_EInputActionOrigin_PS5_Gyro_Move, - k_EInputActionOrigin_PS5_Gyro_Pitch, - k_EInputActionOrigin_PS5_Gyro_Yaw, - k_EInputActionOrigin_PS5_Gyro_Roll, - k_EInputActionOrigin_PS5_DPad_Move, - k_EInputActionOrigin_PS5_Reserved1, - k_EInputActionOrigin_PS5_Reserved2, - k_EInputActionOrigin_PS5_Reserved3, - k_EInputActionOrigin_PS5_Reserved4, - k_EInputActionOrigin_PS5_Reserved5, - k_EInputActionOrigin_PS5_Reserved6, - k_EInputActionOrigin_PS5_Reserved7, - k_EInputActionOrigin_PS5_Reserved8, - k_EInputActionOrigin_PS5_Reserved9, - k_EInputActionOrigin_PS5_Reserved10, - k_EInputActionOrigin_PS5_Reserved11, - k_EInputActionOrigin_PS5_Reserved12, - k_EInputActionOrigin_PS5_Reserved13, - k_EInputActionOrigin_PS5_Reserved14, - k_EInputActionOrigin_PS5_Reserved15, - k_EInputActionOrigin_PS5_Reserved16, - k_EInputActionOrigin_PS5_Reserved17, - k_EInputActionOrigin_PS5_Reserved18, - k_EInputActionOrigin_PS5_Reserved19, - k_EInputActionOrigin_PS5_Reserved20, - - k_EInputActionOrigin_Count, // If Steam has added support for new controllers origins will go here. - k_EInputActionOrigin_MaximumPossibleValue = 32767, // Origins are currently a maximum of 16 bits. -}; - -enum EXboxOrigin -{ - k_EXboxOrigin_A, - k_EXboxOrigin_B, - k_EXboxOrigin_X, - k_EXboxOrigin_Y, - k_EXboxOrigin_LeftBumper, - k_EXboxOrigin_RightBumper, - k_EXboxOrigin_Menu, //Start - k_EXboxOrigin_View, //Back - k_EXboxOrigin_LeftTrigger_Pull, - k_EXboxOrigin_LeftTrigger_Click, - k_EXboxOrigin_RightTrigger_Pull, - k_EXboxOrigin_RightTrigger_Click, - k_EXboxOrigin_LeftStick_Move, - k_EXboxOrigin_LeftStick_Click, - k_EXboxOrigin_LeftStick_DPadNorth, - k_EXboxOrigin_LeftStick_DPadSouth, - k_EXboxOrigin_LeftStick_DPadWest, - k_EXboxOrigin_LeftStick_DPadEast, - k_EXboxOrigin_RightStick_Move, - k_EXboxOrigin_RightStick_Click, - k_EXboxOrigin_RightStick_DPadNorth, - k_EXboxOrigin_RightStick_DPadSouth, - k_EXboxOrigin_RightStick_DPadWest, - k_EXboxOrigin_RightStick_DPadEast, - k_EXboxOrigin_DPad_North, - k_EXboxOrigin_DPad_South, - k_EXboxOrigin_DPad_West, - k_EXboxOrigin_DPad_East, - k_EXboxOrigin_Count, -}; - -enum ESteamControllerPad -{ - k_ESteamControllerPad_Left, - k_ESteamControllerPad_Right -}; - -enum ESteamInputType -{ - k_ESteamInputType_Unknown, - k_ESteamInputType_SteamController, - k_ESteamInputType_XBox360Controller, - k_ESteamInputType_XBoxOneController, - k_ESteamInputType_GenericGamepad, // DirectInput controllers - k_ESteamInputType_PS4Controller, - k_ESteamInputType_AppleMFiController, // Unused - k_ESteamInputType_AndroidController, // Unused - k_ESteamInputType_SwitchJoyConPair, // Unused - k_ESteamInputType_SwitchJoyConSingle, // Unused - k_ESteamInputType_SwitchProController, - k_ESteamInputType_MobileTouch, // Steam Link App On-screen Virtual Controller - k_ESteamInputType_PS3Controller, // Currently uses PS4 Origins - k_ESteamInputType_PS5Controller, // Added in SDK 151 - k_ESteamInputType_Count, - k_ESteamInputType_MaximumPossibleValue = 255, -}; - -// These values are passed into SetLEDColor -enum ESteamInputLEDFlag -{ - k_ESteamInputLEDFlag_SetColor, - // Restore the LED color to the user's preference setting as set in the controller personalization menu. - // This also happens automatically on exit of your game. - k_ESteamInputLEDFlag_RestoreUserDefault -}; - -// InputHandle_t is used to refer to a specific controller. -// This handle will consistently identify a controller, even if it is disconnected and re-connected -typedef uint64 InputHandle_t; - - -// These handles are used to refer to a specific in-game action or action set -// All action handles should be queried during initialization for performance reasons -typedef uint64 InputActionSetHandle_t; -typedef uint64 InputDigitalActionHandle_t; -typedef uint64 InputAnalogActionHandle_t; - -#pragma pack( push, 1 ) - -struct InputAnalogActionData_t -{ - // Type of data coming from this action, this will match what got specified in the action set - EInputSourceMode eMode; - - // The current state of this action; will be delta updates for mouse actions - float x, y; - - // Whether or not this action is currently available to be bound in the active action set - bool bActive; -}; - -struct InputDigitalActionData_t -{ - // The current state of this action; will be true if currently pressed - bool bState; - - // Whether or not this action is currently available to be bound in the active action set - bool bActive; -}; - -struct InputMotionData_t -{ - // Sensor-fused absolute rotation; will drift in heading - float rotQuatX; - float rotQuatY; - float rotQuatZ; - float rotQuatW; - - // Positional acceleration - float posAccelX; - float posAccelY; - float posAccelZ; - - // Angular velocity - float rotVelX; - float rotVelY; - float rotVelZ; -}; - -#pragma pack( pop ) - - -//----------------------------------------------------------------------------- -// Purpose: Steam Input API -//----------------------------------------------------------------------------- -class ISteamInput -{ -public: - - // Init and Shutdown must be called when starting/ending use of this interface - virtual bool Init() = 0; - virtual bool Shutdown() = 0; - - // Synchronize API state with the latest Steam Controller inputs available. This - // is performed automatically by SteamAPI_RunCallbacks, but for the absolute lowest - // possible latency, you call this directly before reading controller state. This must - // be called from somewhere before GetConnectedControllers will return any handles - virtual void RunFrame() = 0; - - // Enumerate currently connected Steam Input enabled devices - developers can opt in controller by type (ex: Xbox/Playstation/etc) via - // the Steam Input settings in the Steamworks site or users can opt-in in their controller settings in Steam. - // handlesOut should point to a STEAM_INPUT_MAX_COUNT sized array of InputHandle_t handles - // Returns the number of handles written to handlesOut - virtual int GetConnectedControllers( STEAM_OUT_ARRAY_COUNT( STEAM_INPUT_MAX_COUNT, Receives list of connected controllers ) InputHandle_t *handlesOut ) = 0; - - //----------------------------------------------------------------------------- - // ACTION SETS - //----------------------------------------------------------------------------- - - // Lookup the handle for an Action Set. Best to do this once on startup, and store the handles for all future API calls. - virtual InputActionSetHandle_t GetActionSetHandle( const char *pszActionSetName ) = 0; - - // Reconfigure the controller to use the specified action set (ie 'Menu', 'Walk' or 'Drive') - // This is cheap, and can be safely called repeatedly. It's often easier to repeatedly call it in - // your state loops, instead of trying to place it in all of your state transitions. - virtual void ActivateActionSet( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle ) = 0; - virtual InputActionSetHandle_t GetCurrentActionSet( InputHandle_t inputHandle ) = 0; - - // ACTION SET LAYERS - virtual void ActivateActionSetLayer( InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ) = 0; - virtual void DeactivateActionSetLayer( InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ) = 0; - virtual void DeactivateAllActionSetLayers( InputHandle_t inputHandle ) = 0; - // Enumerate currently active layers. - // handlesOut should point to a STEAM_INPUT_MAX_ACTIVE_LAYERS sized array of ControllerActionSetHandle_t handles - // Returns the number of handles written to handlesOut - virtual int GetActiveActionSetLayers( InputHandle_t inputHandle, STEAM_OUT_ARRAY_COUNT( STEAM_INPUT_MAX_ACTIVE_LAYERS, Receives list of active layers ) InputActionSetHandle_t *handlesOut ) = 0; - - //----------------------------------------------------------------------------- - // ACTIONS - //----------------------------------------------------------------------------- - - // Lookup the handle for a digital action. Best to do this once on startup, and store the handles for all future API calls. - virtual InputDigitalActionHandle_t GetDigitalActionHandle( const char *pszActionName ) = 0; - - // Returns the current state of the supplied digital game action - virtual InputDigitalActionData_t GetDigitalActionData( InputHandle_t inputHandle, InputDigitalActionHandle_t digitalActionHandle ) = 0; - - // Get the origin(s) for a digital action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. - // originsOut should point to a STEAM_INPUT_MAX_ORIGINS sized array of EInputActionOrigin handles. The EInputActionOrigin enum will get extended as support for new controller controllers gets added to - // the Steam client and will exceed the values from this header, please check bounds if you are using a look up table. - virtual int GetDigitalActionOrigins( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputDigitalActionHandle_t digitalActionHandle, STEAM_OUT_ARRAY_COUNT( STEAM_INPUT_MAX_ORIGINS, Receives list of action origins ) EInputActionOrigin *originsOut ) = 0; - - // Lookup the handle for an analog action. Best to do this once on startup, and store the handles for all future API calls. - virtual InputAnalogActionHandle_t GetAnalogActionHandle( const char *pszActionName ) = 0; - - // Returns the current state of these supplied analog game action - virtual InputAnalogActionData_t GetAnalogActionData( InputHandle_t inputHandle, InputAnalogActionHandle_t analogActionHandle ) = 0; - - // Get the origin(s) for an analog action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. - // originsOut should point to a STEAM_INPUT_MAX_ORIGINS sized array of EInputActionOrigin handles. The EInputActionOrigin enum will get extended as support for new controller controllers gets added to - // the Steam client and will exceed the values from this header, please check bounds if you are using a look up table. - virtual int GetAnalogActionOrigins( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputAnalogActionHandle_t analogActionHandle, STEAM_OUT_ARRAY_COUNT( STEAM_INPUT_MAX_ORIGINS, Receives list of action origins ) EInputActionOrigin *originsOut ) = 0; - - // Get a local path to art for on-screen glyph for a particular origin - virtual const char *GetGlyphForActionOrigin( EInputActionOrigin eOrigin ) = 0; - - // Returns a localized string (from Steam's language setting) for the specified origin. - virtual const char *GetStringForActionOrigin( EInputActionOrigin eOrigin ) = 0; - - // Stop analog momentum for the action if it is a mouse action in trackball mode - virtual void StopAnalogActionMomentum( InputHandle_t inputHandle, InputAnalogActionHandle_t eAction ) = 0; - - // Returns raw motion data from the specified device - virtual InputMotionData_t GetMotionData( InputHandle_t inputHandle ) = 0; - - //----------------------------------------------------------------------------- - // OUTPUTS - //----------------------------------------------------------------------------- - - // Trigger a vibration event on supported controllers - Steam will translate these commands into haptic pulses for Steam Controllers - virtual void TriggerVibration( InputHandle_t inputHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed ) = 0; - - // Set the controller LED color on supported controllers. nFlags is a bitmask of values from ESteamInputLEDFlag - 0 will default to setting a color. Steam will handle - // the behavior on exit of your program so you don't need to try restore the default as you are shutting down - virtual void SetLEDColor( InputHandle_t inputHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags ) = 0; - - // Trigger a haptic pulse on a Steam Controller - if you are approximating rumble you may want to use TriggerVibration instead. - // Good uses for Haptic pulses include chimes, noises, or directional gameplay feedback (taking damage, footstep locations, etc). - virtual void TriggerHapticPulse( InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ) = 0; - - // Trigger a haptic pulse with a duty cycle of usDurationMicroSec / usOffMicroSec, unRepeat times. If you are approximating rumble you may want to use TriggerVibration instead. - // nFlags is currently unused and reserved for future use. - virtual void TriggerRepeatedHapticPulse( InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ) = 0; - - //----------------------------------------------------------------------------- - // Utility functions availible without using the rest of Steam Input API - //----------------------------------------------------------------------------- - - // Invokes the Steam overlay and brings up the binding screen if the user is using Big Picture Mode - // If the user is not in Big Picture Mode it will open up the binding in a new window - virtual bool ShowBindingPanel( InputHandle_t inputHandle ) = 0; - - // Returns the input type for a particular handle - unlike EInputActionOrigin which update with Steam and may return unrecognized values - // ESteamInputType will remain static and only return valid values from your SDK version - virtual ESteamInputType GetInputTypeForHandle( InputHandle_t inputHandle ) = 0; - - // Returns the associated controller handle for the specified emulated gamepad - can be used with the above 2 functions - // to identify controllers presented to your game over Xinput. Returns 0 if the Xinput index isn't associated with Steam Input - virtual InputHandle_t GetControllerForGamepadIndex( int nIndex ) = 0; - - // Returns the associated gamepad index for the specified controller, if emulating a gamepad or -1 if not associated with an Xinput index - virtual int GetGamepadIndexForController( InputHandle_t ulinputHandle ) = 0; - - // Returns a localized string (from Steam's language setting) for the specified Xbox controller origin. - virtual const char *GetStringForXboxOrigin( EXboxOrigin eOrigin ) = 0; - - // Get a local path to art for on-screen glyph for a particular Xbox controller origin - virtual const char *GetGlyphForXboxOrigin( EXboxOrigin eOrigin ) = 0; - - // Get the equivalent ActionOrigin for a given Xbox controller origin this can be chained with GetGlyphForActionOrigin to provide future proof glyphs for - // non-Steam Input API action games. Note - this only translates the buttons directly and doesn't take into account any remapping a user has made in their configuration - virtual EInputActionOrigin GetActionOriginFromXboxOrigin( InputHandle_t inputHandle, EXboxOrigin eOrigin ) = 0; - - // Convert an origin to another controller type - for inputs not present on the other controller type this will return k_EInputActionOrigin_None - // When a new input type is added you will be able to pass in k_ESteamInputType_Unknown and the closest origin that your version of the SDK recognized will be returned - // ex: if a Playstation 5 controller was released this function would return Playstation 4 origins. - virtual EInputActionOrigin TranslateActionOrigin( ESteamInputType eDestinationInputType, EInputActionOrigin eSourceOrigin ) = 0; - - // Get the binding revision for a given device. Returns false if the handle was not valid or if a mapping is not yet loaded for the device - virtual bool GetDeviceBindingRevision( InputHandle_t inputHandle, int *pMajor, int *pMinor ) = 0; - - // Get the Steam Remote Play session ID associated with a device, or 0 if there is no session associated with it - // See isteamremoteplay.h for more information on Steam Remote Play sessions - virtual uint32 GetRemotePlaySessionID( InputHandle_t inputHandle ) = 0; -}; - -#define STEAMINPUT_INTERFACE_VERSION "SteamInput002" - -// Global interface accessor -inline ISteamInput *SteamInput(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamInput *, SteamInput, STEAMINPUT_INTERFACE_VERSION ); - +//====== Copyright 1996-2018, Valve Corporation, All rights reserved. ======= +// +// Purpose: Steam Input is a flexible input API that supports over three hundred devices including all +// common variants of Xbox, Playstation, Nintendo Switch Pro, and Steam Controllers. +// For more info including a getting started guide for developers +// please visit: https://partner.steamgames.com/doc/features/steam_controller +// +//============================================================================= + +#ifndef ISTEAMINPUT_H +#define ISTEAMINPUT_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + +#define STEAM_INPUT_MAX_COUNT 16 + +#define STEAM_INPUT_MAX_ANALOG_ACTIONS 16 + +#define STEAM_INPUT_MAX_DIGITAL_ACTIONS 128 + +#define STEAM_INPUT_MAX_ORIGINS 8 + +#define STEAM_INPUT_MAX_ACTIVE_LAYERS 16 + +// When sending an option to a specific controller handle, you can send to all devices via this command +#define STEAM_INPUT_HANDLE_ALL_CONTROLLERS UINT64_MAX + +#define STEAM_INPUT_MIN_ANALOG_ACTION_DATA -1.0f +#define STEAM_INPUT_MAX_ANALOG_ACTION_DATA 1.0f + +enum EInputSourceMode +{ + k_EInputSourceMode_None, + k_EInputSourceMode_Dpad, + k_EInputSourceMode_Buttons, + k_EInputSourceMode_FourButtons, + k_EInputSourceMode_AbsoluteMouse, + k_EInputSourceMode_RelativeMouse, + k_EInputSourceMode_JoystickMove, + k_EInputSourceMode_JoystickMouse, + k_EInputSourceMode_JoystickCamera, + k_EInputSourceMode_ScrollWheel, + k_EInputSourceMode_Trigger, + k_EInputSourceMode_TouchMenu, + k_EInputSourceMode_MouseJoystick, + k_EInputSourceMode_MouseRegion, + k_EInputSourceMode_RadialMenu, + k_EInputSourceMode_SingleButton, + k_EInputSourceMode_Switches +}; + +// Note: Please do not use action origins as a way to identify controller types. There is no +// guarantee that they will be added in a contiguous manner - use GetInputTypeForHandle instead. +// Versions of Steam that add new controller types in the future will extend this enum so if you're +// using a lookup table please check the bounds of any origins returned by Steam. +enum EInputActionOrigin +{ + // Steam Controller + k_EInputActionOrigin_None, + k_EInputActionOrigin_SteamController_A, + k_EInputActionOrigin_SteamController_B, + k_EInputActionOrigin_SteamController_X, + k_EInputActionOrigin_SteamController_Y, + k_EInputActionOrigin_SteamController_LeftBumper, + k_EInputActionOrigin_SteamController_RightBumper, + k_EInputActionOrigin_SteamController_LeftGrip, + k_EInputActionOrigin_SteamController_RightGrip, + k_EInputActionOrigin_SteamController_Start, + k_EInputActionOrigin_SteamController_Back, + k_EInputActionOrigin_SteamController_LeftPad_Touch, + k_EInputActionOrigin_SteamController_LeftPad_Swipe, + k_EInputActionOrigin_SteamController_LeftPad_Click, + k_EInputActionOrigin_SteamController_LeftPad_DPadNorth, + k_EInputActionOrigin_SteamController_LeftPad_DPadSouth, + k_EInputActionOrigin_SteamController_LeftPad_DPadWest, + k_EInputActionOrigin_SteamController_LeftPad_DPadEast, + k_EInputActionOrigin_SteamController_RightPad_Touch, + k_EInputActionOrigin_SteamController_RightPad_Swipe, + k_EInputActionOrigin_SteamController_RightPad_Click, + k_EInputActionOrigin_SteamController_RightPad_DPadNorth, + k_EInputActionOrigin_SteamController_RightPad_DPadSouth, + k_EInputActionOrigin_SteamController_RightPad_DPadWest, + k_EInputActionOrigin_SteamController_RightPad_DPadEast, + k_EInputActionOrigin_SteamController_LeftTrigger_Pull, + k_EInputActionOrigin_SteamController_LeftTrigger_Click, + k_EInputActionOrigin_SteamController_RightTrigger_Pull, + k_EInputActionOrigin_SteamController_RightTrigger_Click, + k_EInputActionOrigin_SteamController_LeftStick_Move, + k_EInputActionOrigin_SteamController_LeftStick_Click, + k_EInputActionOrigin_SteamController_LeftStick_DPadNorth, + k_EInputActionOrigin_SteamController_LeftStick_DPadSouth, + k_EInputActionOrigin_SteamController_LeftStick_DPadWest, + k_EInputActionOrigin_SteamController_LeftStick_DPadEast, + k_EInputActionOrigin_SteamController_Gyro_Move, + k_EInputActionOrigin_SteamController_Gyro_Pitch, + k_EInputActionOrigin_SteamController_Gyro_Yaw, + k_EInputActionOrigin_SteamController_Gyro_Roll, + k_EInputActionOrigin_SteamController_Reserved0, + k_EInputActionOrigin_SteamController_Reserved1, + k_EInputActionOrigin_SteamController_Reserved2, + k_EInputActionOrigin_SteamController_Reserved3, + k_EInputActionOrigin_SteamController_Reserved4, + k_EInputActionOrigin_SteamController_Reserved5, + k_EInputActionOrigin_SteamController_Reserved6, + k_EInputActionOrigin_SteamController_Reserved7, + k_EInputActionOrigin_SteamController_Reserved8, + k_EInputActionOrigin_SteamController_Reserved9, + k_EInputActionOrigin_SteamController_Reserved10, + + // PS4 Dual Shock + k_EInputActionOrigin_PS4_X, + k_EInputActionOrigin_PS4_Circle, + k_EInputActionOrigin_PS4_Triangle, + k_EInputActionOrigin_PS4_Square, + k_EInputActionOrigin_PS4_LeftBumper, + k_EInputActionOrigin_PS4_RightBumper, + k_EInputActionOrigin_PS4_Options, //Start + k_EInputActionOrigin_PS4_Share, //Back + k_EInputActionOrigin_PS4_LeftPad_Touch, + k_EInputActionOrigin_PS4_LeftPad_Swipe, + k_EInputActionOrigin_PS4_LeftPad_Click, + k_EInputActionOrigin_PS4_LeftPad_DPadNorth, + k_EInputActionOrigin_PS4_LeftPad_DPadSouth, + k_EInputActionOrigin_PS4_LeftPad_DPadWest, + k_EInputActionOrigin_PS4_LeftPad_DPadEast, + k_EInputActionOrigin_PS4_RightPad_Touch, + k_EInputActionOrigin_PS4_RightPad_Swipe, + k_EInputActionOrigin_PS4_RightPad_Click, + k_EInputActionOrigin_PS4_RightPad_DPadNorth, + k_EInputActionOrigin_PS4_RightPad_DPadSouth, + k_EInputActionOrigin_PS4_RightPad_DPadWest, + k_EInputActionOrigin_PS4_RightPad_DPadEast, + k_EInputActionOrigin_PS4_CenterPad_Touch, + k_EInputActionOrigin_PS4_CenterPad_Swipe, + k_EInputActionOrigin_PS4_CenterPad_Click, + k_EInputActionOrigin_PS4_CenterPad_DPadNorth, + k_EInputActionOrigin_PS4_CenterPad_DPadSouth, + k_EInputActionOrigin_PS4_CenterPad_DPadWest, + k_EInputActionOrigin_PS4_CenterPad_DPadEast, + k_EInputActionOrigin_PS4_LeftTrigger_Pull, + k_EInputActionOrigin_PS4_LeftTrigger_Click, + k_EInputActionOrigin_PS4_RightTrigger_Pull, + k_EInputActionOrigin_PS4_RightTrigger_Click, + k_EInputActionOrigin_PS4_LeftStick_Move, + k_EInputActionOrigin_PS4_LeftStick_Click, + k_EInputActionOrigin_PS4_LeftStick_DPadNorth, + k_EInputActionOrigin_PS4_LeftStick_DPadSouth, + k_EInputActionOrigin_PS4_LeftStick_DPadWest, + k_EInputActionOrigin_PS4_LeftStick_DPadEast, + k_EInputActionOrigin_PS4_RightStick_Move, + k_EInputActionOrigin_PS4_RightStick_Click, + k_EInputActionOrigin_PS4_RightStick_DPadNorth, + k_EInputActionOrigin_PS4_RightStick_DPadSouth, + k_EInputActionOrigin_PS4_RightStick_DPadWest, + k_EInputActionOrigin_PS4_RightStick_DPadEast, + k_EInputActionOrigin_PS4_DPad_North, + k_EInputActionOrigin_PS4_DPad_South, + k_EInputActionOrigin_PS4_DPad_West, + k_EInputActionOrigin_PS4_DPad_East, + k_EInputActionOrigin_PS4_Gyro_Move, + k_EInputActionOrigin_PS4_Gyro_Pitch, + k_EInputActionOrigin_PS4_Gyro_Yaw, + k_EInputActionOrigin_PS4_Gyro_Roll, + k_EInputActionOrigin_PS4_DPad_Move, + k_EInputActionOrigin_PS4_Reserved1, + k_EInputActionOrigin_PS4_Reserved2, + k_EInputActionOrigin_PS4_Reserved3, + k_EInputActionOrigin_PS4_Reserved4, + k_EInputActionOrigin_PS4_Reserved5, + k_EInputActionOrigin_PS4_Reserved6, + k_EInputActionOrigin_PS4_Reserved7, + k_EInputActionOrigin_PS4_Reserved8, + k_EInputActionOrigin_PS4_Reserved9, + k_EInputActionOrigin_PS4_Reserved10, + + // XBox One + k_EInputActionOrigin_XBoxOne_A, + k_EInputActionOrigin_XBoxOne_B, + k_EInputActionOrigin_XBoxOne_X, + k_EInputActionOrigin_XBoxOne_Y, + k_EInputActionOrigin_XBoxOne_LeftBumper, + k_EInputActionOrigin_XBoxOne_RightBumper, + k_EInputActionOrigin_XBoxOne_Menu, //Start + k_EInputActionOrigin_XBoxOne_View, //Back + k_EInputActionOrigin_XBoxOne_LeftTrigger_Pull, + k_EInputActionOrigin_XBoxOne_LeftTrigger_Click, + k_EInputActionOrigin_XBoxOne_RightTrigger_Pull, + k_EInputActionOrigin_XBoxOne_RightTrigger_Click, + k_EInputActionOrigin_XBoxOne_LeftStick_Move, + k_EInputActionOrigin_XBoxOne_LeftStick_Click, + k_EInputActionOrigin_XBoxOne_LeftStick_DPadNorth, + k_EInputActionOrigin_XBoxOne_LeftStick_DPadSouth, + k_EInputActionOrigin_XBoxOne_LeftStick_DPadWest, + k_EInputActionOrigin_XBoxOne_LeftStick_DPadEast, + k_EInputActionOrigin_XBoxOne_RightStick_Move, + k_EInputActionOrigin_XBoxOne_RightStick_Click, + k_EInputActionOrigin_XBoxOne_RightStick_DPadNorth, + k_EInputActionOrigin_XBoxOne_RightStick_DPadSouth, + k_EInputActionOrigin_XBoxOne_RightStick_DPadWest, + k_EInputActionOrigin_XBoxOne_RightStick_DPadEast, + k_EInputActionOrigin_XBoxOne_DPad_North, + k_EInputActionOrigin_XBoxOne_DPad_South, + k_EInputActionOrigin_XBoxOne_DPad_West, + k_EInputActionOrigin_XBoxOne_DPad_East, + k_EInputActionOrigin_XBoxOne_DPad_Move, + k_EInputActionOrigin_XBoxOne_Reserved1, + k_EInputActionOrigin_XBoxOne_Reserved2, + k_EInputActionOrigin_XBoxOne_Reserved3, + k_EInputActionOrigin_XBoxOne_Reserved4, + k_EInputActionOrigin_XBoxOne_Reserved5, + k_EInputActionOrigin_XBoxOne_Reserved6, + k_EInputActionOrigin_XBoxOne_Reserved7, + k_EInputActionOrigin_XBoxOne_Reserved8, + k_EInputActionOrigin_XBoxOne_Reserved9, + k_EInputActionOrigin_XBoxOne_Reserved10, + + // XBox 360 + k_EInputActionOrigin_XBox360_A, + k_EInputActionOrigin_XBox360_B, + k_EInputActionOrigin_XBox360_X, + k_EInputActionOrigin_XBox360_Y, + k_EInputActionOrigin_XBox360_LeftBumper, + k_EInputActionOrigin_XBox360_RightBumper, + k_EInputActionOrigin_XBox360_Start, //Start + k_EInputActionOrigin_XBox360_Back, //Back + k_EInputActionOrigin_XBox360_LeftTrigger_Pull, + k_EInputActionOrigin_XBox360_LeftTrigger_Click, + k_EInputActionOrigin_XBox360_RightTrigger_Pull, + k_EInputActionOrigin_XBox360_RightTrigger_Click, + k_EInputActionOrigin_XBox360_LeftStick_Move, + k_EInputActionOrigin_XBox360_LeftStick_Click, + k_EInputActionOrigin_XBox360_LeftStick_DPadNorth, + k_EInputActionOrigin_XBox360_LeftStick_DPadSouth, + k_EInputActionOrigin_XBox360_LeftStick_DPadWest, + k_EInputActionOrigin_XBox360_LeftStick_DPadEast, + k_EInputActionOrigin_XBox360_RightStick_Move, + k_EInputActionOrigin_XBox360_RightStick_Click, + k_EInputActionOrigin_XBox360_RightStick_DPadNorth, + k_EInputActionOrigin_XBox360_RightStick_DPadSouth, + k_EInputActionOrigin_XBox360_RightStick_DPadWest, + k_EInputActionOrigin_XBox360_RightStick_DPadEast, + k_EInputActionOrigin_XBox360_DPad_North, + k_EInputActionOrigin_XBox360_DPad_South, + k_EInputActionOrigin_XBox360_DPad_West, + k_EInputActionOrigin_XBox360_DPad_East, + k_EInputActionOrigin_XBox360_DPad_Move, + k_EInputActionOrigin_XBox360_Reserved1, + k_EInputActionOrigin_XBox360_Reserved2, + k_EInputActionOrigin_XBox360_Reserved3, + k_EInputActionOrigin_XBox360_Reserved4, + k_EInputActionOrigin_XBox360_Reserved5, + k_EInputActionOrigin_XBox360_Reserved6, + k_EInputActionOrigin_XBox360_Reserved7, + k_EInputActionOrigin_XBox360_Reserved8, + k_EInputActionOrigin_XBox360_Reserved9, + k_EInputActionOrigin_XBox360_Reserved10, + + + // Switch - Pro or Joycons used as a single input device. + // This does not apply to a single joycon + k_EInputActionOrigin_Switch_A, + k_EInputActionOrigin_Switch_B, + k_EInputActionOrigin_Switch_X, + k_EInputActionOrigin_Switch_Y, + k_EInputActionOrigin_Switch_LeftBumper, + k_EInputActionOrigin_Switch_RightBumper, + k_EInputActionOrigin_Switch_Plus, //Start + k_EInputActionOrigin_Switch_Minus, //Back + k_EInputActionOrigin_Switch_Capture, + k_EInputActionOrigin_Switch_LeftTrigger_Pull, + k_EInputActionOrigin_Switch_LeftTrigger_Click, + k_EInputActionOrigin_Switch_RightTrigger_Pull, + k_EInputActionOrigin_Switch_RightTrigger_Click, + k_EInputActionOrigin_Switch_LeftStick_Move, + k_EInputActionOrigin_Switch_LeftStick_Click, + k_EInputActionOrigin_Switch_LeftStick_DPadNorth, + k_EInputActionOrigin_Switch_LeftStick_DPadSouth, + k_EInputActionOrigin_Switch_LeftStick_DPadWest, + k_EInputActionOrigin_Switch_LeftStick_DPadEast, + k_EInputActionOrigin_Switch_RightStick_Move, + k_EInputActionOrigin_Switch_RightStick_Click, + k_EInputActionOrigin_Switch_RightStick_DPadNorth, + k_EInputActionOrigin_Switch_RightStick_DPadSouth, + k_EInputActionOrigin_Switch_RightStick_DPadWest, + k_EInputActionOrigin_Switch_RightStick_DPadEast, + k_EInputActionOrigin_Switch_DPad_North, + k_EInputActionOrigin_Switch_DPad_South, + k_EInputActionOrigin_Switch_DPad_West, + k_EInputActionOrigin_Switch_DPad_East, + k_EInputActionOrigin_Switch_ProGyro_Move, // Primary Gyro in Pro Controller, or Right JoyCon + k_EInputActionOrigin_Switch_ProGyro_Pitch, // Primary Gyro in Pro Controller, or Right JoyCon + k_EInputActionOrigin_Switch_ProGyro_Yaw, // Primary Gyro in Pro Controller, or Right JoyCon + k_EInputActionOrigin_Switch_ProGyro_Roll, // Primary Gyro in Pro Controller, or Right JoyCon + k_EInputActionOrigin_Switch_DPad_Move, + k_EInputActionOrigin_Switch_Reserved1, + k_EInputActionOrigin_Switch_Reserved2, + k_EInputActionOrigin_Switch_Reserved3, + k_EInputActionOrigin_Switch_Reserved4, + k_EInputActionOrigin_Switch_Reserved5, + k_EInputActionOrigin_Switch_Reserved6, + k_EInputActionOrigin_Switch_Reserved7, + k_EInputActionOrigin_Switch_Reserved8, + k_EInputActionOrigin_Switch_Reserved9, + k_EInputActionOrigin_Switch_Reserved10, + + // Switch JoyCon Specific + k_EInputActionOrigin_Switch_RightGyro_Move, // Right JoyCon Gyro generally should correspond to Pro's single gyro + k_EInputActionOrigin_Switch_RightGyro_Pitch, // Right JoyCon Gyro generally should correspond to Pro's single gyro + k_EInputActionOrigin_Switch_RightGyro_Yaw, // Right JoyCon Gyro generally should correspond to Pro's single gyro + k_EInputActionOrigin_Switch_RightGyro_Roll, // Right JoyCon Gyro generally should correspond to Pro's single gyro + k_EInputActionOrigin_Switch_LeftGyro_Move, + k_EInputActionOrigin_Switch_LeftGyro_Pitch, + k_EInputActionOrigin_Switch_LeftGyro_Yaw, + k_EInputActionOrigin_Switch_LeftGyro_Roll, + k_EInputActionOrigin_Switch_LeftGrip_Lower, // Left JoyCon SR Button + k_EInputActionOrigin_Switch_LeftGrip_Upper, // Left JoyCon SL Button + k_EInputActionOrigin_Switch_RightGrip_Lower, // Right JoyCon SL Button + k_EInputActionOrigin_Switch_RightGrip_Upper, // Right JoyCon SR Button + k_EInputActionOrigin_Switch_Reserved11, + k_EInputActionOrigin_Switch_Reserved12, + k_EInputActionOrigin_Switch_Reserved13, + k_EInputActionOrigin_Switch_Reserved14, + k_EInputActionOrigin_Switch_Reserved15, + k_EInputActionOrigin_Switch_Reserved16, + k_EInputActionOrigin_Switch_Reserved17, + k_EInputActionOrigin_Switch_Reserved18, + k_EInputActionOrigin_Switch_Reserved19, + k_EInputActionOrigin_Switch_Reserved20, + + // Added in SDK 1.51 + k_EInputActionOrigin_PS5_X, + k_EInputActionOrigin_PS5_Circle, + k_EInputActionOrigin_PS5_Triangle, + k_EInputActionOrigin_PS5_Square, + k_EInputActionOrigin_PS5_LeftBumper, + k_EInputActionOrigin_PS5_RightBumper, + k_EInputActionOrigin_PS5_Option, //Start + k_EInputActionOrigin_PS5_Create, //Back + k_EInputActionOrigin_PS5_Mute, + k_EInputActionOrigin_PS5_LeftPad_Touch, + k_EInputActionOrigin_PS5_LeftPad_Swipe, + k_EInputActionOrigin_PS5_LeftPad_Click, + k_EInputActionOrigin_PS5_LeftPad_DPadNorth, + k_EInputActionOrigin_PS5_LeftPad_DPadSouth, + k_EInputActionOrigin_PS5_LeftPad_DPadWest, + k_EInputActionOrigin_PS5_LeftPad_DPadEast, + k_EInputActionOrigin_PS5_RightPad_Touch, + k_EInputActionOrigin_PS5_RightPad_Swipe, + k_EInputActionOrigin_PS5_RightPad_Click, + k_EInputActionOrigin_PS5_RightPad_DPadNorth, + k_EInputActionOrigin_PS5_RightPad_DPadSouth, + k_EInputActionOrigin_PS5_RightPad_DPadWest, + k_EInputActionOrigin_PS5_RightPad_DPadEast, + k_EInputActionOrigin_PS5_CenterPad_Touch, + k_EInputActionOrigin_PS5_CenterPad_Swipe, + k_EInputActionOrigin_PS5_CenterPad_Click, + k_EInputActionOrigin_PS5_CenterPad_DPadNorth, + k_EInputActionOrigin_PS5_CenterPad_DPadSouth, + k_EInputActionOrigin_PS5_CenterPad_DPadWest, + k_EInputActionOrigin_PS5_CenterPad_DPadEast, + k_EInputActionOrigin_PS5_LeftTrigger_Pull, + k_EInputActionOrigin_PS5_LeftTrigger_Click, + k_EInputActionOrigin_PS5_RightTrigger_Pull, + k_EInputActionOrigin_PS5_RightTrigger_Click, + k_EInputActionOrigin_PS5_LeftStick_Move, + k_EInputActionOrigin_PS5_LeftStick_Click, + k_EInputActionOrigin_PS5_LeftStick_DPadNorth, + k_EInputActionOrigin_PS5_LeftStick_DPadSouth, + k_EInputActionOrigin_PS5_LeftStick_DPadWest, + k_EInputActionOrigin_PS5_LeftStick_DPadEast, + k_EInputActionOrigin_PS5_RightStick_Move, + k_EInputActionOrigin_PS5_RightStick_Click, + k_EInputActionOrigin_PS5_RightStick_DPadNorth, + k_EInputActionOrigin_PS5_RightStick_DPadSouth, + k_EInputActionOrigin_PS5_RightStick_DPadWest, + k_EInputActionOrigin_PS5_RightStick_DPadEast, + k_EInputActionOrigin_PS5_DPad_North, + k_EInputActionOrigin_PS5_DPad_South, + k_EInputActionOrigin_PS5_DPad_West, + k_EInputActionOrigin_PS5_DPad_East, + k_EInputActionOrigin_PS5_Gyro_Move, + k_EInputActionOrigin_PS5_Gyro_Pitch, + k_EInputActionOrigin_PS5_Gyro_Yaw, + k_EInputActionOrigin_PS5_Gyro_Roll, + k_EInputActionOrigin_PS5_DPad_Move, + k_EInputActionOrigin_PS5_Reserved1, + k_EInputActionOrigin_PS5_Reserved2, + k_EInputActionOrigin_PS5_Reserved3, + k_EInputActionOrigin_PS5_Reserved4, + k_EInputActionOrigin_PS5_Reserved5, + k_EInputActionOrigin_PS5_Reserved6, + k_EInputActionOrigin_PS5_Reserved7, + k_EInputActionOrigin_PS5_Reserved8, + k_EInputActionOrigin_PS5_Reserved9, + k_EInputActionOrigin_PS5_Reserved10, + k_EInputActionOrigin_PS5_Reserved11, + k_EInputActionOrigin_PS5_Reserved12, + k_EInputActionOrigin_PS5_Reserved13, + k_EInputActionOrigin_PS5_Reserved14, + k_EInputActionOrigin_PS5_Reserved15, + k_EInputActionOrigin_PS5_Reserved16, + k_EInputActionOrigin_PS5_Reserved17, + k_EInputActionOrigin_PS5_Reserved18, + k_EInputActionOrigin_PS5_Reserved19, + k_EInputActionOrigin_PS5_Reserved20, + + k_EInputActionOrigin_Count, // If Steam has added support for new controllers origins will go here. + k_EInputActionOrigin_MaximumPossibleValue = 32767, // Origins are currently a maximum of 16 bits. +}; + +enum EXboxOrigin +{ + k_EXboxOrigin_A, + k_EXboxOrigin_B, + k_EXboxOrigin_X, + k_EXboxOrigin_Y, + k_EXboxOrigin_LeftBumper, + k_EXboxOrigin_RightBumper, + k_EXboxOrigin_Menu, //Start + k_EXboxOrigin_View, //Back + k_EXboxOrigin_LeftTrigger_Pull, + k_EXboxOrigin_LeftTrigger_Click, + k_EXboxOrigin_RightTrigger_Pull, + k_EXboxOrigin_RightTrigger_Click, + k_EXboxOrigin_LeftStick_Move, + k_EXboxOrigin_LeftStick_Click, + k_EXboxOrigin_LeftStick_DPadNorth, + k_EXboxOrigin_LeftStick_DPadSouth, + k_EXboxOrigin_LeftStick_DPadWest, + k_EXboxOrigin_LeftStick_DPadEast, + k_EXboxOrigin_RightStick_Move, + k_EXboxOrigin_RightStick_Click, + k_EXboxOrigin_RightStick_DPadNorth, + k_EXboxOrigin_RightStick_DPadSouth, + k_EXboxOrigin_RightStick_DPadWest, + k_EXboxOrigin_RightStick_DPadEast, + k_EXboxOrigin_DPad_North, + k_EXboxOrigin_DPad_South, + k_EXboxOrigin_DPad_West, + k_EXboxOrigin_DPad_East, + k_EXboxOrigin_Count, +}; + +enum ESteamControllerPad +{ + k_ESteamControllerPad_Left, + k_ESteamControllerPad_Right +}; + +enum ESteamInputType +{ + k_ESteamInputType_Unknown, + k_ESteamInputType_SteamController, + k_ESteamInputType_XBox360Controller, + k_ESteamInputType_XBoxOneController, + k_ESteamInputType_GenericGamepad, // DirectInput controllers + k_ESteamInputType_PS4Controller, + k_ESteamInputType_AppleMFiController, // Unused + k_ESteamInputType_AndroidController, // Unused + k_ESteamInputType_SwitchJoyConPair, // Unused + k_ESteamInputType_SwitchJoyConSingle, // Unused + k_ESteamInputType_SwitchProController, + k_ESteamInputType_MobileTouch, // Steam Link App On-screen Virtual Controller + k_ESteamInputType_PS3Controller, // Currently uses PS4 Origins + k_ESteamInputType_PS5Controller, // Added in SDK 151 + k_ESteamInputType_Count, + k_ESteamInputType_MaximumPossibleValue = 255, +}; + +// These values are passed into SetLEDColor +enum ESteamInputLEDFlag +{ + k_ESteamInputLEDFlag_SetColor, + // Restore the LED color to the user's preference setting as set in the controller personalization menu. + // This also happens automatically on exit of your game. + k_ESteamInputLEDFlag_RestoreUserDefault +}; + +// InputHandle_t is used to refer to a specific controller. +// This handle will consistently identify a controller, even if it is disconnected and re-connected +typedef uint64 InputHandle_t; + + +// These handles are used to refer to a specific in-game action or action set +// All action handles should be queried during initialization for performance reasons +typedef uint64 InputActionSetHandle_t; +typedef uint64 InputDigitalActionHandle_t; +typedef uint64 InputAnalogActionHandle_t; + +#pragma pack( push, 1 ) + +struct InputAnalogActionData_t +{ + // Type of data coming from this action, this will match what got specified in the action set + EInputSourceMode eMode; + + // The current state of this action; will be delta updates for mouse actions + float x, y; + + // Whether or not this action is currently available to be bound in the active action set + bool bActive; +}; + +struct InputDigitalActionData_t +{ + // The current state of this action; will be true if currently pressed + bool bState; + + // Whether or not this action is currently available to be bound in the active action set + bool bActive; +}; + +struct InputMotionData_t +{ + // Sensor-fused absolute rotation; will drift in heading + float rotQuatX; + float rotQuatY; + float rotQuatZ; + float rotQuatW; + + // Positional acceleration + float posAccelX; + float posAccelY; + float posAccelZ; + + // Angular velocity + float rotVelX; + float rotVelY; + float rotVelZ; +}; + +#pragma pack( pop ) + + +//----------------------------------------------------------------------------- +// Purpose: Steam Input API +//----------------------------------------------------------------------------- +class ISteamInput +{ +public: + + // Init and Shutdown must be called when starting/ending use of this interface + virtual bool Init() = 0; + virtual bool Shutdown() = 0; + + // Synchronize API state with the latest Steam Controller inputs available. This + // is performed automatically by SteamAPI_RunCallbacks, but for the absolute lowest + // possible latency, you call this directly before reading controller state. This must + // be called from somewhere before GetConnectedControllers will return any handles + virtual void RunFrame() = 0; + + // Enumerate currently connected Steam Input enabled devices - developers can opt in controller by type (ex: Xbox/Playstation/etc) via + // the Steam Input settings in the Steamworks site or users can opt-in in their controller settings in Steam. + // handlesOut should point to a STEAM_INPUT_MAX_COUNT sized array of InputHandle_t handles + // Returns the number of handles written to handlesOut + virtual int GetConnectedControllers( STEAM_OUT_ARRAY_COUNT( STEAM_INPUT_MAX_COUNT, Receives list of connected controllers ) InputHandle_t *handlesOut ) = 0; + + //----------------------------------------------------------------------------- + // ACTION SETS + //----------------------------------------------------------------------------- + + // Lookup the handle for an Action Set. Best to do this once on startup, and store the handles for all future API calls. + virtual InputActionSetHandle_t GetActionSetHandle( const char *pszActionSetName ) = 0; + + // Reconfigure the controller to use the specified action set (ie 'Menu', 'Walk' or 'Drive') + // This is cheap, and can be safely called repeatedly. It's often easier to repeatedly call it in + // your state loops, instead of trying to place it in all of your state transitions. + virtual void ActivateActionSet( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle ) = 0; + virtual InputActionSetHandle_t GetCurrentActionSet( InputHandle_t inputHandle ) = 0; + + // ACTION SET LAYERS + virtual void ActivateActionSetLayer( InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ) = 0; + virtual void DeactivateActionSetLayer( InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ) = 0; + virtual void DeactivateAllActionSetLayers( InputHandle_t inputHandle ) = 0; + // Enumerate currently active layers. + // handlesOut should point to a STEAM_INPUT_MAX_ACTIVE_LAYERS sized array of ControllerActionSetHandle_t handles + // Returns the number of handles written to handlesOut + virtual int GetActiveActionSetLayers( InputHandle_t inputHandle, STEAM_OUT_ARRAY_COUNT( STEAM_INPUT_MAX_ACTIVE_LAYERS, Receives list of active layers ) InputActionSetHandle_t *handlesOut ) = 0; + + //----------------------------------------------------------------------------- + // ACTIONS + //----------------------------------------------------------------------------- + + // Lookup the handle for a digital action. Best to do this once on startup, and store the handles for all future API calls. + virtual InputDigitalActionHandle_t GetDigitalActionHandle( const char *pszActionName ) = 0; + + // Returns the current state of the supplied digital game action + virtual InputDigitalActionData_t GetDigitalActionData( InputHandle_t inputHandle, InputDigitalActionHandle_t digitalActionHandle ) = 0; + + // Get the origin(s) for a digital action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. + // originsOut should point to a STEAM_INPUT_MAX_ORIGINS sized array of EInputActionOrigin handles. The EInputActionOrigin enum will get extended as support for new controller controllers gets added to + // the Steam client and will exceed the values from this header, please check bounds if you are using a look up table. + virtual int GetDigitalActionOrigins( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputDigitalActionHandle_t digitalActionHandle, STEAM_OUT_ARRAY_COUNT( STEAM_INPUT_MAX_ORIGINS, Receives list of action origins ) EInputActionOrigin *originsOut ) = 0; + + // Lookup the handle for an analog action. Best to do this once on startup, and store the handles for all future API calls. + virtual InputAnalogActionHandle_t GetAnalogActionHandle( const char *pszActionName ) = 0; + + // Returns the current state of these supplied analog game action + virtual InputAnalogActionData_t GetAnalogActionData( InputHandle_t inputHandle, InputAnalogActionHandle_t analogActionHandle ) = 0; + + // Get the origin(s) for an analog action within an action set. Returns the number of origins supplied in originsOut. Use this to display the appropriate on-screen prompt for the action. + // originsOut should point to a STEAM_INPUT_MAX_ORIGINS sized array of EInputActionOrigin handles. The EInputActionOrigin enum will get extended as support for new controller controllers gets added to + // the Steam client and will exceed the values from this header, please check bounds if you are using a look up table. + virtual int GetAnalogActionOrigins( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputAnalogActionHandle_t analogActionHandle, STEAM_OUT_ARRAY_COUNT( STEAM_INPUT_MAX_ORIGINS, Receives list of action origins ) EInputActionOrigin *originsOut ) = 0; + + // Get a local path to art for on-screen glyph for a particular origin + virtual const char *GetGlyphForActionOrigin( EInputActionOrigin eOrigin ) = 0; + + // Returns a localized string (from Steam's language setting) for the specified origin. + virtual const char *GetStringForActionOrigin( EInputActionOrigin eOrigin ) = 0; + + // Stop analog momentum for the action if it is a mouse action in trackball mode + virtual void StopAnalogActionMomentum( InputHandle_t inputHandle, InputAnalogActionHandle_t eAction ) = 0; + + // Returns raw motion data from the specified device + virtual InputMotionData_t GetMotionData( InputHandle_t inputHandle ) = 0; + + //----------------------------------------------------------------------------- + // OUTPUTS + //----------------------------------------------------------------------------- + + // Trigger a vibration event on supported controllers - Steam will translate these commands into haptic pulses for Steam Controllers + virtual void TriggerVibration( InputHandle_t inputHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed ) = 0; + + // Set the controller LED color on supported controllers. nFlags is a bitmask of values from ESteamInputLEDFlag - 0 will default to setting a color. Steam will handle + // the behavior on exit of your program so you don't need to try restore the default as you are shutting down + virtual void SetLEDColor( InputHandle_t inputHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags ) = 0; + + // Trigger a haptic pulse on a Steam Controller - if you are approximating rumble you may want to use TriggerVibration instead. + // Good uses for Haptic pulses include chimes, noises, or directional gameplay feedback (taking damage, footstep locations, etc). + virtual void TriggerHapticPulse( InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ) = 0; + + // Trigger a haptic pulse with a duty cycle of usDurationMicroSec / usOffMicroSec, unRepeat times. If you are approximating rumble you may want to use TriggerVibration instead. + // nFlags is currently unused and reserved for future use. + virtual void TriggerRepeatedHapticPulse( InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ) = 0; + + //----------------------------------------------------------------------------- + // Utility functions availible without using the rest of Steam Input API + //----------------------------------------------------------------------------- + + // Invokes the Steam overlay and brings up the binding screen if the user is using Big Picture Mode + // If the user is not in Big Picture Mode it will open up the binding in a new window + virtual bool ShowBindingPanel( InputHandle_t inputHandle ) = 0; + + // Returns the input type for a particular handle - unlike EInputActionOrigin which update with Steam and may return unrecognized values + // ESteamInputType will remain static and only return valid values from your SDK version + virtual ESteamInputType GetInputTypeForHandle( InputHandle_t inputHandle ) = 0; + + // Returns the associated controller handle for the specified emulated gamepad - can be used with the above 2 functions + // to identify controllers presented to your game over Xinput. Returns 0 if the Xinput index isn't associated with Steam Input + virtual InputHandle_t GetControllerForGamepadIndex( int nIndex ) = 0; + + // Returns the associated gamepad index for the specified controller, if emulating a gamepad or -1 if not associated with an Xinput index + virtual int GetGamepadIndexForController( InputHandle_t ulinputHandle ) = 0; + + // Returns a localized string (from Steam's language setting) for the specified Xbox controller origin. + virtual const char *GetStringForXboxOrigin( EXboxOrigin eOrigin ) = 0; + + // Get a local path to art for on-screen glyph for a particular Xbox controller origin + virtual const char *GetGlyphForXboxOrigin( EXboxOrigin eOrigin ) = 0; + + // Get the equivalent ActionOrigin for a given Xbox controller origin this can be chained with GetGlyphForActionOrigin to provide future proof glyphs for + // non-Steam Input API action games. Note - this only translates the buttons directly and doesn't take into account any remapping a user has made in their configuration + virtual EInputActionOrigin GetActionOriginFromXboxOrigin( InputHandle_t inputHandle, EXboxOrigin eOrigin ) = 0; + + // Convert an origin to another controller type - for inputs not present on the other controller type this will return k_EInputActionOrigin_None + // When a new input type is added you will be able to pass in k_ESteamInputType_Unknown and the closest origin that your version of the SDK recognized will be returned + // ex: if a Playstation 5 controller was released this function would return Playstation 4 origins. + virtual EInputActionOrigin TranslateActionOrigin( ESteamInputType eDestinationInputType, EInputActionOrigin eSourceOrigin ) = 0; + + // Get the binding revision for a given device. Returns false if the handle was not valid or if a mapping is not yet loaded for the device + virtual bool GetDeviceBindingRevision( InputHandle_t inputHandle, int *pMajor, int *pMinor ) = 0; + + // Get the Steam Remote Play session ID associated with a device, or 0 if there is no session associated with it + // See isteamremoteplay.h for more information on Steam Remote Play sessions + virtual uint32 GetRemotePlaySessionID( InputHandle_t inputHandle ) = 0; +}; + +#define STEAMINPUT_INTERFACE_VERSION "SteamInput002" + +// Global interface accessor +inline ISteamInput *SteamInput(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamInput *, SteamInput, STEAMINPUT_INTERFACE_VERSION ); + #endif // ISTEAMINPUT_H \ No newline at end of file diff --git a/CodeGen/steam/isteaminventory.h b/CodeGen/steam/isteaminventory.h index e5e987c8..4d19cc9a 100644 --- a/CodeGen/steam/isteaminventory.h +++ b/CodeGen/steam/isteaminventory.h @@ -1,448 +1,448 @@ -//====== Copyright © 1996-2014 Valve Corporation, All rights reserved. ======= -// -// Purpose: interface to Steam Inventory -// -//============================================================================= - -#ifndef ISTEAMINVENTORY_H -#define ISTEAMINVENTORY_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - - -// Every individual instance of an item has a globally-unique ItemInstanceID. -// This ID is unique to the combination of (player, specific item instance) -// and will not be transferred to another player or re-used for another item. -typedef uint64 SteamItemInstanceID_t; - -static const SteamItemInstanceID_t k_SteamItemInstanceIDInvalid = (SteamItemInstanceID_t)~0; - -// Types of items in your game are identified by a 32-bit "item definition number". -// Valid definition numbers are between 1 and 999999999; numbers less than or equal to -// zero are invalid, and numbers greater than or equal to one billion (1x10^9) are -// reserved for internal Steam use. -typedef int32 SteamItemDef_t; - - -enum ESteamItemFlags -{ - // Item status flags - these flags are permanently attached to specific item instances - k_ESteamItemNoTrade = 1 << 0, // This item is account-locked and cannot be traded or given away. - - // Action confirmation flags - these flags are set one time only, as part of a result set - k_ESteamItemRemoved = 1 << 8, // The item has been destroyed, traded away, expired, or otherwise invalidated - k_ESteamItemConsumed = 1 << 9, // The item quantity has been decreased by 1 via ConsumeItem API. - - // All other flag bits are currently reserved for internal Steam use at this time. - // Do not assume anything about the state of other flags which are not defined here. -}; - -struct SteamItemDetails_t -{ - SteamItemInstanceID_t m_itemId; - SteamItemDef_t m_iDefinition; - uint16 m_unQuantity; - uint16 m_unFlags; // see ESteamItemFlags -}; - -typedef int32 SteamInventoryResult_t; - -static const SteamInventoryResult_t k_SteamInventoryResultInvalid = -1; - -typedef uint64 SteamInventoryUpdateHandle_t; -const SteamInventoryUpdateHandle_t k_SteamInventoryUpdateHandleInvalid = 0xffffffffffffffffull; - -//----------------------------------------------------------------------------- -// Purpose: Steam Inventory query and manipulation API -//----------------------------------------------------------------------------- -class ISteamInventory -{ -public: - - // INVENTORY ASYNC RESULT MANAGEMENT - // - // Asynchronous inventory queries always output a result handle which can be used with - // GetResultStatus, GetResultItems, etc. A SteamInventoryResultReady_t callback will - // be triggered when the asynchronous result becomes ready (or fails). - // - - // Find out the status of an asynchronous inventory result handle. Possible values: - // k_EResultPending - still in progress - // k_EResultOK - done, result ready - // k_EResultExpired - done, result ready, maybe out of date (see DeserializeResult) - // k_EResultInvalidParam - ERROR: invalid API call parameters - // k_EResultServiceUnavailable - ERROR: service temporarily down, you may retry later - // k_EResultLimitExceeded - ERROR: operation would exceed per-user inventory limits - // k_EResultFail - ERROR: unknown / generic error - STEAM_METHOD_DESC(Find out the status of an asynchronous inventory result handle.) - virtual EResult GetResultStatus( SteamInventoryResult_t resultHandle ) = 0; - - // Copies the contents of a result set into a flat array. The specific - // contents of the result set depend on which query which was used. - STEAM_METHOD_DESC(Copies the contents of a result set into a flat array. The specific contents of the result set depend on which query which was used.) - virtual bool GetResultItems( SteamInventoryResult_t resultHandle, - STEAM_OUT_ARRAY_COUNT( punOutItemsArraySize,Output array) SteamItemDetails_t *pOutItemsArray, - uint32 *punOutItemsArraySize ) = 0; - - // In combination with GetResultItems, you can use GetResultItemProperty to retrieve - // dynamic string properties for a given item returned in the result set. - // - // Property names are always composed of ASCII letters, numbers, and/or underscores. - // - // Pass a NULL pointer for pchPropertyName to get a comma - separated list of available - // property names. - // - // If pchValueBuffer is NULL, *punValueBufferSize will contain the - // suggested buffer size. Otherwise it will be the number of bytes actually copied - // to pchValueBuffer. If the results do not fit in the given buffer, partial - // results may be copied. - virtual bool GetResultItemProperty( SteamInventoryResult_t resultHandle, - uint32 unItemIndex, - const char *pchPropertyName, - STEAM_OUT_STRING_COUNT( punValueBufferSizeOut ) char *pchValueBuffer, uint32 *punValueBufferSizeOut ) = 0; - - // Returns the server time at which the result was generated. Compare against - // the value of IClientUtils::GetServerRealTime() to determine age. - STEAM_METHOD_DESC(Returns the server time at which the result was generated. Compare against the value of IClientUtils::GetServerRealTime() to determine age.) - virtual uint32 GetResultTimestamp( SteamInventoryResult_t resultHandle ) = 0; - - // Returns true if the result belongs to the target steam ID, false if the - // result does not. This is important when using DeserializeResult, to verify - // that a remote player is not pretending to have a different user's inventory. - STEAM_METHOD_DESC(Returns true if the result belongs to the target steam ID or false if the result does not. This is important when using DeserializeResult to verify that a remote player is not pretending to have a different users inventory.) - virtual bool CheckResultSteamID( SteamInventoryResult_t resultHandle, CSteamID steamIDExpected ) = 0; - - // Destroys a result handle and frees all associated memory. - STEAM_METHOD_DESC(Destroys a result handle and frees all associated memory.) - virtual void DestroyResult( SteamInventoryResult_t resultHandle ) = 0; - - - // INVENTORY ASYNC QUERY - // - - // Captures the entire state of the current user's Steam inventory. - // You must call DestroyResult on this handle when you are done with it. - // Returns false and sets *pResultHandle to zero if inventory is unavailable. - // Note: calls to this function are subject to rate limits and may return - // cached results if called too frequently. It is suggested that you call - // this function only when you are about to display the user's full inventory, - // or if you expect that the inventory may have changed. - STEAM_METHOD_DESC(Captures the entire state of the current users Steam inventory.) - virtual bool GetAllItems( SteamInventoryResult_t *pResultHandle ) = 0; - - - // Captures the state of a subset of the current user's Steam inventory, - // identified by an array of item instance IDs. The results from this call - // can be serialized and passed to other players to "prove" that the current - // user owns specific items, without exposing the user's entire inventory. - // For example, you could call GetItemsByID with the IDs of the user's - // currently equipped cosmetic items and serialize this to a buffer, and - // then transmit this buffer to other players upon joining a game. - STEAM_METHOD_DESC(Captures the state of a subset of the current users Steam inventory identified by an array of item instance IDs.) - virtual bool GetItemsByID( SteamInventoryResult_t *pResultHandle, STEAM_ARRAY_COUNT( unCountInstanceIDs ) const SteamItemInstanceID_t *pInstanceIDs, uint32 unCountInstanceIDs ) = 0; - - - // RESULT SERIALIZATION AND AUTHENTICATION - // - // Serialized result sets contain a short signature which can't be forged - // or replayed across different game sessions. A result set can be serialized - // on the local client, transmitted to other players via your game networking, - // and deserialized by the remote players. This is a secure way of preventing - // hackers from lying about posessing rare/high-value items. - - // Serializes a result set with signature bytes to an output buffer. Pass - // NULL as an output buffer to get the required size via punOutBufferSize. - // The size of a serialized result depends on the number items which are being - // serialized. When securely transmitting items to other players, it is - // recommended to use "GetItemsByID" first to create a minimal result set. - // Results have a built-in timestamp which will be considered "expired" after - // an hour has elapsed. See DeserializeResult for expiration handling. - virtual bool SerializeResult( SteamInventoryResult_t resultHandle, STEAM_OUT_BUFFER_COUNT(punOutBufferSize) void *pOutBuffer, uint32 *punOutBufferSize ) = 0; - - // Deserializes a result set and verifies the signature bytes. Returns false - // if bRequireFullOnlineVerify is set but Steam is running in Offline mode. - // Otherwise returns true and then delivers error codes via GetResultStatus. - // - // The bRESERVED_MUST_BE_FALSE flag is reserved for future use and should not - // be set to true by your game at this time. - // - // DeserializeResult has a potential soft-failure mode where the handle status - // is set to k_EResultExpired. GetResultItems() still succeeds in this mode. - // The "expired" result could indicate that the data may be out of date - not - // just due to timed expiration (one hour), but also because one of the items - // in the result set may have been traded or consumed since the result set was - // generated. You could compare the timestamp from GetResultTimestamp() to - // ISteamUtils::GetServerRealTime() to determine how old the data is. You could - // simply ignore the "expired" result code and continue as normal, or you - // could challenge the player with expired data to send an updated result set. - virtual bool DeserializeResult( SteamInventoryResult_t *pOutResultHandle, STEAM_BUFFER_COUNT(punOutBufferSize) const void *pBuffer, uint32 unBufferSize, bool bRESERVED_MUST_BE_FALSE = false ) = 0; - - - // INVENTORY ASYNC MODIFICATION - // - - // GenerateItems() creates one or more items and then generates a SteamInventoryCallback_t - // notification with a matching nCallbackContext parameter. This API is only intended - // for prototyping - it is only usable by Steam accounts that belong to the publisher group - // for your game. - // If punArrayQuantity is not NULL, it should be the same length as pArrayItems and should - // describe the quantity of each item to generate. - virtual bool GenerateItems( SteamInventoryResult_t *pResultHandle, STEAM_ARRAY_COUNT(unArrayLength) const SteamItemDef_t *pArrayItemDefs, STEAM_ARRAY_COUNT(unArrayLength) const uint32 *punArrayQuantity, uint32 unArrayLength ) = 0; - - // GrantPromoItems() checks the list of promotional items for which the user may be eligible - // and grants the items (one time only). On success, the result set will include items which - // were granted, if any. If no items were granted because the user isn't eligible for any - // promotions, this is still considered a success. - STEAM_METHOD_DESC(GrantPromoItems() checks the list of promotional items for which the user may be eligible and grants the items (one time only).) - virtual bool GrantPromoItems( SteamInventoryResult_t *pResultHandle ) = 0; - - // AddPromoItem() / AddPromoItems() are restricted versions of GrantPromoItems(). Instead of - // scanning for all eligible promotional items, the check is restricted to a single item - // definition or set of item definitions. This can be useful if your game has custom UI for - // showing a specific promo item to the user. - virtual bool AddPromoItem( SteamInventoryResult_t *pResultHandle, SteamItemDef_t itemDef ) = 0; - virtual bool AddPromoItems( SteamInventoryResult_t *pResultHandle, STEAM_ARRAY_COUNT(unArrayLength) const SteamItemDef_t *pArrayItemDefs, uint32 unArrayLength ) = 0; - - // ConsumeItem() removes items from the inventory, permanently. They cannot be recovered. - // Not for the faint of heart - if your game implements item removal at all, a high-friction - // UI confirmation process is highly recommended. - STEAM_METHOD_DESC(ConsumeItem() removes items from the inventory permanently.) - virtual bool ConsumeItem( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity ) = 0; - - // ExchangeItems() is an atomic combination of item generation and consumption. - // It can be used to implement crafting recipes or transmutations, or items which unpack - // themselves into other items (e.g., a chest). - // Exchange recipes are defined in the ItemDef, and explicitly list the required item - // types and resulting generated type. - // Exchange recipes are evaluated atomically by the Inventory Service; if the supplied - // components do not match the recipe, or do not contain sufficient quantity, the - // exchange will fail. - virtual bool ExchangeItems( SteamInventoryResult_t *pResultHandle, - STEAM_ARRAY_COUNT(unArrayGenerateLength) const SteamItemDef_t *pArrayGenerate, STEAM_ARRAY_COUNT(unArrayGenerateLength) const uint32 *punArrayGenerateQuantity, uint32 unArrayGenerateLength, - STEAM_ARRAY_COUNT(unArrayDestroyLength) const SteamItemInstanceID_t *pArrayDestroy, STEAM_ARRAY_COUNT(unArrayDestroyLength) const uint32 *punArrayDestroyQuantity, uint32 unArrayDestroyLength ) = 0; - - - // TransferItemQuantity() is intended for use with items which are "stackable" (can have - // quantity greater than one). It can be used to split a stack into two, or to transfer - // quantity from one stack into another stack of identical items. To split one stack into - // two, pass k_SteamItemInstanceIDInvalid for itemIdDest and a new item will be generated. - virtual bool TransferItemQuantity( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest ) = 0; - - - // TIMED DROPS AND PLAYTIME CREDIT - // - - // Deprecated. Calling this method is not required for proper playtime accounting. - STEAM_METHOD_DESC( Deprecated method. Playtime accounting is performed on the Steam servers. ) - virtual void SendItemDropHeartbeat() = 0; - - // Playtime credit must be consumed and turned into item drops by your game. Only item - // definitions which are marked as "playtime item generators" can be spawned. The call - // will return an empty result set if there is not enough playtime credit for a drop. - // Your game should call TriggerItemDrop at an appropriate time for the user to receive - // new items, such as between rounds or while the player is dead. Note that players who - // hack their clients could modify the value of "dropListDefinition", so do not use it - // to directly control rarity. - // See your Steamworks configuration to set playtime drop rates for individual itemdefs. - // The client library will suppress too-frequent calls to this method. - STEAM_METHOD_DESC(Playtime credit must be consumed and turned into item drops by your game.) - virtual bool TriggerItemDrop( SteamInventoryResult_t *pResultHandle, SteamItemDef_t dropListDefinition ) = 0; - - - // Deprecated. This method is not supported. - virtual bool TradeItems( SteamInventoryResult_t *pResultHandle, CSteamID steamIDTradePartner, - STEAM_ARRAY_COUNT(nArrayGiveLength) const SteamItemInstanceID_t *pArrayGive, STEAM_ARRAY_COUNT(nArrayGiveLength) const uint32 *pArrayGiveQuantity, uint32 nArrayGiveLength, - STEAM_ARRAY_COUNT(nArrayGetLength) const SteamItemInstanceID_t *pArrayGet, STEAM_ARRAY_COUNT(nArrayGetLength) const uint32 *pArrayGetQuantity, uint32 nArrayGetLength ) = 0; - - - // ITEM DEFINITIONS - // - // Item definitions are a mapping of "definition IDs" (integers between 1 and 1000000) - // to a set of string properties. Some of these properties are required to display items - // on the Steam community web site. Other properties can be defined by applications. - // Use of these functions is optional; there is no reason to call LoadItemDefinitions - // if your game hardcodes the numeric definition IDs (eg, purple face mask = 20, blue - // weapon mod = 55) and does not allow for adding new item types without a client patch. - // - - // LoadItemDefinitions triggers the automatic load and refresh of item definitions. - // Every time new item definitions are available (eg, from the dynamic addition of new - // item types while players are still in-game), a SteamInventoryDefinitionUpdate_t - // callback will be fired. - STEAM_METHOD_DESC(LoadItemDefinitions triggers the automatic load and refresh of item definitions.) - virtual bool LoadItemDefinitions() = 0; - - // GetItemDefinitionIDs returns the set of all defined item definition IDs (which are - // defined via Steamworks configuration, and not necessarily contiguous integers). - // If pItemDefIDs is null, the call will return true and *punItemDefIDsArraySize will - // contain the total size necessary for a subsequent call. Otherwise, the call will - // return false if and only if there is not enough space in the output array. - virtual bool GetItemDefinitionIDs( - STEAM_OUT_ARRAY_COUNT(punItemDefIDsArraySize,List of item definition IDs) SteamItemDef_t *pItemDefIDs, - STEAM_DESC(Size of array is passed in and actual size used is returned in this param) uint32 *punItemDefIDsArraySize ) = 0; - - // GetItemDefinitionProperty returns a string property from a given item definition. - // Note that some properties (for example, "name") may be localized and will depend - // on the current Steam language settings (see ISteamApps::GetCurrentGameLanguage). - // Property names are always composed of ASCII letters, numbers, and/or underscores. - // Pass a NULL pointer for pchPropertyName to get a comma - separated list of available - // property names. If pchValueBuffer is NULL, *punValueBufferSize will contain the - // suggested buffer size. Otherwise it will be the number of bytes actually copied - // to pchValueBuffer. If the results do not fit in the given buffer, partial - // results may be copied. - virtual bool GetItemDefinitionProperty( SteamItemDef_t iDefinition, const char *pchPropertyName, - STEAM_OUT_STRING_COUNT(punValueBufferSizeOut) char *pchValueBuffer, uint32 *punValueBufferSizeOut ) = 0; - - // Request the list of "eligible" promo items that can be manually granted to the given - // user. These are promo items of type "manual" that won't be granted automatically. - // An example usage of this is an item that becomes available every week. - STEAM_CALL_RESULT( SteamInventoryEligiblePromoItemDefIDs_t ) - virtual SteamAPICall_t RequestEligiblePromoItemDefinitionsIDs( CSteamID steamID ) = 0; - - // After handling a SteamInventoryEligiblePromoItemDefIDs_t call result, use this - // function to pull out the list of item definition ids that the user can be - // manually granted via the AddPromoItems() call. - virtual bool GetEligiblePromoItemDefinitionIDs( - CSteamID steamID, - STEAM_OUT_ARRAY_COUNT(punItemDefIDsArraySize,List of item definition IDs) SteamItemDef_t *pItemDefIDs, - STEAM_DESC(Size of array is passed in and actual size used is returned in this param) uint32 *punItemDefIDsArraySize ) = 0; - - // Starts the purchase process for the given item definitions. The callback SteamInventoryStartPurchaseResult_t - // will be posted if Steam was able to initialize the transaction. - // - // Once the purchase has been authorized and completed by the user, the callback SteamInventoryResultReady_t - // will be posted. - STEAM_CALL_RESULT( SteamInventoryStartPurchaseResult_t ) - virtual SteamAPICall_t StartPurchase( STEAM_ARRAY_COUNT(unArrayLength) const SteamItemDef_t *pArrayItemDefs, STEAM_ARRAY_COUNT(unArrayLength) const uint32 *punArrayQuantity, uint32 unArrayLength ) = 0; - - // Request current prices for all applicable item definitions - STEAM_CALL_RESULT( SteamInventoryRequestPricesResult_t ) - virtual SteamAPICall_t RequestPrices() = 0; - - // Returns the number of items with prices. Need to call RequestPrices() first. - virtual uint32 GetNumItemsWithPrices() = 0; - - // Returns item definition ids and their prices in the user's local currency. - // Need to call RequestPrices() first. - virtual bool GetItemsWithPrices( STEAM_ARRAY_COUNT(unArrayLength) STEAM_OUT_ARRAY_COUNT(pArrayItemDefs, Items with prices) SteamItemDef_t *pArrayItemDefs, - STEAM_ARRAY_COUNT(unArrayLength) STEAM_OUT_ARRAY_COUNT(pPrices, List of prices for the given item defs) uint64 *pCurrentPrices, - STEAM_ARRAY_COUNT(unArrayLength) STEAM_OUT_ARRAY_COUNT(pPrices, List of prices for the given item defs) uint64 *pBasePrices, - uint32 unArrayLength ) = 0; - - // Retrieves the price for the item definition id - // Returns false if there is no price stored for the item definition. - virtual bool GetItemPrice( SteamItemDef_t iDefinition, uint64 *pCurrentPrice, uint64 *pBasePrice ) = 0; - - // Create a request to update properties on items - virtual SteamInventoryUpdateHandle_t StartUpdateProperties() = 0; - // Remove the property on the item - virtual bool RemoveProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName ) = 0; - // Accessor methods to set properties on items - - STEAM_FLAT_NAME( SetPropertyString ) - virtual bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, const char *pchPropertyValue ) = 0; - - STEAM_FLAT_NAME( SetPropertyBool ) - virtual bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, bool bValue ) = 0; - - STEAM_FLAT_NAME( SetPropertyInt64 ) - virtual bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, int64 nValue ) = 0; - - STEAM_FLAT_NAME( SetPropertyFloat ) - virtual bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, float flValue ) = 0; - - // Submit the update request by handle - virtual bool SubmitUpdateProperties( SteamInventoryUpdateHandle_t handle, SteamInventoryResult_t * pResultHandle ) = 0; - - STEAM_METHOD_DESC(Look up the given token and return a pseudo-Inventory item.) - virtual bool InspectItem( SteamInventoryResult_t *pResultHandle, const char *pchItemToken ) = 0; -}; - -#define STEAMINVENTORY_INTERFACE_VERSION "STEAMINVENTORY_INTERFACE_V003" - -// Global interface accessor -inline ISteamInventory *SteamInventory(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamInventory *, SteamInventory, STEAMINVENTORY_INTERFACE_VERSION ); - -// Global accessor for the gameserver client -inline ISteamInventory *SteamGameServerInventory(); -STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamInventory *, SteamGameServerInventory, STEAMINVENTORY_INTERFACE_VERSION ); - -// SteamInventoryResultReady_t callbacks are fired whenever asynchronous -// results transition from "Pending" to "OK" or an error state. There will -// always be exactly one callback per handle. -struct SteamInventoryResultReady_t -{ - enum { k_iCallback = k_iClientInventoryCallbacks + 0 }; - SteamInventoryResult_t m_handle; - EResult m_result; -}; - - -// SteamInventoryFullUpdate_t callbacks are triggered when GetAllItems -// successfully returns a result which is newer / fresher than the last -// known result. (It will not trigger if the inventory hasn't changed, -// or if results from two overlapping calls are reversed in flight and -// the earlier result is already known to be stale/out-of-date.) -// The normal ResultReady callback will still be triggered immediately -// afterwards; this is an additional notification for your convenience. -struct SteamInventoryFullUpdate_t -{ - enum { k_iCallback = k_iClientInventoryCallbacks + 1 }; - SteamInventoryResult_t m_handle; -}; - - -// A SteamInventoryDefinitionUpdate_t callback is triggered whenever -// item definitions have been updated, which could be in response to -// LoadItemDefinitions() or any other async request which required -// a definition update in order to process results from the server. -struct SteamInventoryDefinitionUpdate_t -{ - enum { k_iCallback = k_iClientInventoryCallbacks + 2 }; -}; - -// Returned -struct SteamInventoryEligiblePromoItemDefIDs_t -{ - enum { k_iCallback = k_iClientInventoryCallbacks + 3 }; - EResult m_result; - CSteamID m_steamID; - int m_numEligiblePromoItemDefs; - bool m_bCachedData; // indicates that the data was retrieved from the cache and not the server -}; - -// Triggered from StartPurchase call -struct SteamInventoryStartPurchaseResult_t -{ - enum { k_iCallback = k_iClientInventoryCallbacks + 4 }; - EResult m_result; - uint64 m_ulOrderID; - uint64 m_ulTransID; -}; - - -// Triggered from RequestPrices -struct SteamInventoryRequestPricesResult_t -{ - enum { k_iCallback = k_iClientInventoryCallbacks + 5 }; - EResult m_result; - char m_rgchCurrency[4]; -}; - -#pragma pack( pop ) - - -#endif // ISTEAMCONTROLLER_H +//====== Copyright © 1996-2014 Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to Steam Inventory +// +//============================================================================= + +#ifndef ISTEAMINVENTORY_H +#define ISTEAMINVENTORY_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + + +// Every individual instance of an item has a globally-unique ItemInstanceID. +// This ID is unique to the combination of (player, specific item instance) +// and will not be transferred to another player or re-used for another item. +typedef uint64 SteamItemInstanceID_t; + +static const SteamItemInstanceID_t k_SteamItemInstanceIDInvalid = (SteamItemInstanceID_t)~0; + +// Types of items in your game are identified by a 32-bit "item definition number". +// Valid definition numbers are between 1 and 999999999; numbers less than or equal to +// zero are invalid, and numbers greater than or equal to one billion (1x10^9) are +// reserved for internal Steam use. +typedef int32 SteamItemDef_t; + + +enum ESteamItemFlags +{ + // Item status flags - these flags are permanently attached to specific item instances + k_ESteamItemNoTrade = 1 << 0, // This item is account-locked and cannot be traded or given away. + + // Action confirmation flags - these flags are set one time only, as part of a result set + k_ESteamItemRemoved = 1 << 8, // The item has been destroyed, traded away, expired, or otherwise invalidated + k_ESteamItemConsumed = 1 << 9, // The item quantity has been decreased by 1 via ConsumeItem API. + + // All other flag bits are currently reserved for internal Steam use at this time. + // Do not assume anything about the state of other flags which are not defined here. +}; + +struct SteamItemDetails_t +{ + SteamItemInstanceID_t m_itemId; + SteamItemDef_t m_iDefinition; + uint16 m_unQuantity; + uint16 m_unFlags; // see ESteamItemFlags +}; + +typedef int32 SteamInventoryResult_t; + +static const SteamInventoryResult_t k_SteamInventoryResultInvalid = -1; + +typedef uint64 SteamInventoryUpdateHandle_t; +const SteamInventoryUpdateHandle_t k_SteamInventoryUpdateHandleInvalid = 0xffffffffffffffffull; + +//----------------------------------------------------------------------------- +// Purpose: Steam Inventory query and manipulation API +//----------------------------------------------------------------------------- +class ISteamInventory +{ +public: + + // INVENTORY ASYNC RESULT MANAGEMENT + // + // Asynchronous inventory queries always output a result handle which can be used with + // GetResultStatus, GetResultItems, etc. A SteamInventoryResultReady_t callback will + // be triggered when the asynchronous result becomes ready (or fails). + // + + // Find out the status of an asynchronous inventory result handle. Possible values: + // k_EResultPending - still in progress + // k_EResultOK - done, result ready + // k_EResultExpired - done, result ready, maybe out of date (see DeserializeResult) + // k_EResultInvalidParam - ERROR: invalid API call parameters + // k_EResultServiceUnavailable - ERROR: service temporarily down, you may retry later + // k_EResultLimitExceeded - ERROR: operation would exceed per-user inventory limits + // k_EResultFail - ERROR: unknown / generic error + STEAM_METHOD_DESC(Find out the status of an asynchronous inventory result handle.) + virtual EResult GetResultStatus( SteamInventoryResult_t resultHandle ) = 0; + + // Copies the contents of a result set into a flat array. The specific + // contents of the result set depend on which query which was used. + STEAM_METHOD_DESC(Copies the contents of a result set into a flat array. The specific contents of the result set depend on which query which was used.) + virtual bool GetResultItems( SteamInventoryResult_t resultHandle, + STEAM_OUT_ARRAY_COUNT( punOutItemsArraySize,Output array) SteamItemDetails_t *pOutItemsArray, + uint32 *punOutItemsArraySize ) = 0; + + // In combination with GetResultItems, you can use GetResultItemProperty to retrieve + // dynamic string properties for a given item returned in the result set. + // + // Property names are always composed of ASCII letters, numbers, and/or underscores. + // + // Pass a NULL pointer for pchPropertyName to get a comma - separated list of available + // property names. + // + // If pchValueBuffer is NULL, *punValueBufferSize will contain the + // suggested buffer size. Otherwise it will be the number of bytes actually copied + // to pchValueBuffer. If the results do not fit in the given buffer, partial + // results may be copied. + virtual bool GetResultItemProperty( SteamInventoryResult_t resultHandle, + uint32 unItemIndex, + const char *pchPropertyName, + STEAM_OUT_STRING_COUNT( punValueBufferSizeOut ) char *pchValueBuffer, uint32 *punValueBufferSizeOut ) = 0; + + // Returns the server time at which the result was generated. Compare against + // the value of IClientUtils::GetServerRealTime() to determine age. + STEAM_METHOD_DESC(Returns the server time at which the result was generated. Compare against the value of IClientUtils::GetServerRealTime() to determine age.) + virtual uint32 GetResultTimestamp( SteamInventoryResult_t resultHandle ) = 0; + + // Returns true if the result belongs to the target steam ID, false if the + // result does not. This is important when using DeserializeResult, to verify + // that a remote player is not pretending to have a different user's inventory. + STEAM_METHOD_DESC(Returns true if the result belongs to the target steam ID or false if the result does not. This is important when using DeserializeResult to verify that a remote player is not pretending to have a different users inventory.) + virtual bool CheckResultSteamID( SteamInventoryResult_t resultHandle, CSteamID steamIDExpected ) = 0; + + // Destroys a result handle and frees all associated memory. + STEAM_METHOD_DESC(Destroys a result handle and frees all associated memory.) + virtual void DestroyResult( SteamInventoryResult_t resultHandle ) = 0; + + + // INVENTORY ASYNC QUERY + // + + // Captures the entire state of the current user's Steam inventory. + // You must call DestroyResult on this handle when you are done with it. + // Returns false and sets *pResultHandle to zero if inventory is unavailable. + // Note: calls to this function are subject to rate limits and may return + // cached results if called too frequently. It is suggested that you call + // this function only when you are about to display the user's full inventory, + // or if you expect that the inventory may have changed. + STEAM_METHOD_DESC(Captures the entire state of the current users Steam inventory.) + virtual bool GetAllItems( SteamInventoryResult_t *pResultHandle ) = 0; + + + // Captures the state of a subset of the current user's Steam inventory, + // identified by an array of item instance IDs. The results from this call + // can be serialized and passed to other players to "prove" that the current + // user owns specific items, without exposing the user's entire inventory. + // For example, you could call GetItemsByID with the IDs of the user's + // currently equipped cosmetic items and serialize this to a buffer, and + // then transmit this buffer to other players upon joining a game. + STEAM_METHOD_DESC(Captures the state of a subset of the current users Steam inventory identified by an array of item instance IDs.) + virtual bool GetItemsByID( SteamInventoryResult_t *pResultHandle, STEAM_ARRAY_COUNT( unCountInstanceIDs ) const SteamItemInstanceID_t *pInstanceIDs, uint32 unCountInstanceIDs ) = 0; + + + // RESULT SERIALIZATION AND AUTHENTICATION + // + // Serialized result sets contain a short signature which can't be forged + // or replayed across different game sessions. A result set can be serialized + // on the local client, transmitted to other players via your game networking, + // and deserialized by the remote players. This is a secure way of preventing + // hackers from lying about posessing rare/high-value items. + + // Serializes a result set with signature bytes to an output buffer. Pass + // NULL as an output buffer to get the required size via punOutBufferSize. + // The size of a serialized result depends on the number items which are being + // serialized. When securely transmitting items to other players, it is + // recommended to use "GetItemsByID" first to create a minimal result set. + // Results have a built-in timestamp which will be considered "expired" after + // an hour has elapsed. See DeserializeResult for expiration handling. + virtual bool SerializeResult( SteamInventoryResult_t resultHandle, STEAM_OUT_BUFFER_COUNT(punOutBufferSize) void *pOutBuffer, uint32 *punOutBufferSize ) = 0; + + // Deserializes a result set and verifies the signature bytes. Returns false + // if bRequireFullOnlineVerify is set but Steam is running in Offline mode. + // Otherwise returns true and then delivers error codes via GetResultStatus. + // + // The bRESERVED_MUST_BE_FALSE flag is reserved for future use and should not + // be set to true by your game at this time. + // + // DeserializeResult has a potential soft-failure mode where the handle status + // is set to k_EResultExpired. GetResultItems() still succeeds in this mode. + // The "expired" result could indicate that the data may be out of date - not + // just due to timed expiration (one hour), but also because one of the items + // in the result set may have been traded or consumed since the result set was + // generated. You could compare the timestamp from GetResultTimestamp() to + // ISteamUtils::GetServerRealTime() to determine how old the data is. You could + // simply ignore the "expired" result code and continue as normal, or you + // could challenge the player with expired data to send an updated result set. + virtual bool DeserializeResult( SteamInventoryResult_t *pOutResultHandle, STEAM_BUFFER_COUNT(punOutBufferSize) const void *pBuffer, uint32 unBufferSize, bool bRESERVED_MUST_BE_FALSE = false ) = 0; + + + // INVENTORY ASYNC MODIFICATION + // + + // GenerateItems() creates one or more items and then generates a SteamInventoryCallback_t + // notification with a matching nCallbackContext parameter. This API is only intended + // for prototyping - it is only usable by Steam accounts that belong to the publisher group + // for your game. + // If punArrayQuantity is not NULL, it should be the same length as pArrayItems and should + // describe the quantity of each item to generate. + virtual bool GenerateItems( SteamInventoryResult_t *pResultHandle, STEAM_ARRAY_COUNT(unArrayLength) const SteamItemDef_t *pArrayItemDefs, STEAM_ARRAY_COUNT(unArrayLength) const uint32 *punArrayQuantity, uint32 unArrayLength ) = 0; + + // GrantPromoItems() checks the list of promotional items for which the user may be eligible + // and grants the items (one time only). On success, the result set will include items which + // were granted, if any. If no items were granted because the user isn't eligible for any + // promotions, this is still considered a success. + STEAM_METHOD_DESC(GrantPromoItems() checks the list of promotional items for which the user may be eligible and grants the items (one time only).) + virtual bool GrantPromoItems( SteamInventoryResult_t *pResultHandle ) = 0; + + // AddPromoItem() / AddPromoItems() are restricted versions of GrantPromoItems(). Instead of + // scanning for all eligible promotional items, the check is restricted to a single item + // definition or set of item definitions. This can be useful if your game has custom UI for + // showing a specific promo item to the user. + virtual bool AddPromoItem( SteamInventoryResult_t *pResultHandle, SteamItemDef_t itemDef ) = 0; + virtual bool AddPromoItems( SteamInventoryResult_t *pResultHandle, STEAM_ARRAY_COUNT(unArrayLength) const SteamItemDef_t *pArrayItemDefs, uint32 unArrayLength ) = 0; + + // ConsumeItem() removes items from the inventory, permanently. They cannot be recovered. + // Not for the faint of heart - if your game implements item removal at all, a high-friction + // UI confirmation process is highly recommended. + STEAM_METHOD_DESC(ConsumeItem() removes items from the inventory permanently.) + virtual bool ConsumeItem( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity ) = 0; + + // ExchangeItems() is an atomic combination of item generation and consumption. + // It can be used to implement crafting recipes or transmutations, or items which unpack + // themselves into other items (e.g., a chest). + // Exchange recipes are defined in the ItemDef, and explicitly list the required item + // types and resulting generated type. + // Exchange recipes are evaluated atomically by the Inventory Service; if the supplied + // components do not match the recipe, or do not contain sufficient quantity, the + // exchange will fail. + virtual bool ExchangeItems( SteamInventoryResult_t *pResultHandle, + STEAM_ARRAY_COUNT(unArrayGenerateLength) const SteamItemDef_t *pArrayGenerate, STEAM_ARRAY_COUNT(unArrayGenerateLength) const uint32 *punArrayGenerateQuantity, uint32 unArrayGenerateLength, + STEAM_ARRAY_COUNT(unArrayDestroyLength) const SteamItemInstanceID_t *pArrayDestroy, STEAM_ARRAY_COUNT(unArrayDestroyLength) const uint32 *punArrayDestroyQuantity, uint32 unArrayDestroyLength ) = 0; + + + // TransferItemQuantity() is intended for use with items which are "stackable" (can have + // quantity greater than one). It can be used to split a stack into two, or to transfer + // quantity from one stack into another stack of identical items. To split one stack into + // two, pass k_SteamItemInstanceIDInvalid for itemIdDest and a new item will be generated. + virtual bool TransferItemQuantity( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest ) = 0; + + + // TIMED DROPS AND PLAYTIME CREDIT + // + + // Deprecated. Calling this method is not required for proper playtime accounting. + STEAM_METHOD_DESC( Deprecated method. Playtime accounting is performed on the Steam servers. ) + virtual void SendItemDropHeartbeat() = 0; + + // Playtime credit must be consumed and turned into item drops by your game. Only item + // definitions which are marked as "playtime item generators" can be spawned. The call + // will return an empty result set if there is not enough playtime credit for a drop. + // Your game should call TriggerItemDrop at an appropriate time for the user to receive + // new items, such as between rounds or while the player is dead. Note that players who + // hack their clients could modify the value of "dropListDefinition", so do not use it + // to directly control rarity. + // See your Steamworks configuration to set playtime drop rates for individual itemdefs. + // The client library will suppress too-frequent calls to this method. + STEAM_METHOD_DESC(Playtime credit must be consumed and turned into item drops by your game.) + virtual bool TriggerItemDrop( SteamInventoryResult_t *pResultHandle, SteamItemDef_t dropListDefinition ) = 0; + + + // Deprecated. This method is not supported. + virtual bool TradeItems( SteamInventoryResult_t *pResultHandle, CSteamID steamIDTradePartner, + STEAM_ARRAY_COUNT(nArrayGiveLength) const SteamItemInstanceID_t *pArrayGive, STEAM_ARRAY_COUNT(nArrayGiveLength) const uint32 *pArrayGiveQuantity, uint32 nArrayGiveLength, + STEAM_ARRAY_COUNT(nArrayGetLength) const SteamItemInstanceID_t *pArrayGet, STEAM_ARRAY_COUNT(nArrayGetLength) const uint32 *pArrayGetQuantity, uint32 nArrayGetLength ) = 0; + + + // ITEM DEFINITIONS + // + // Item definitions are a mapping of "definition IDs" (integers between 1 and 1000000) + // to a set of string properties. Some of these properties are required to display items + // on the Steam community web site. Other properties can be defined by applications. + // Use of these functions is optional; there is no reason to call LoadItemDefinitions + // if your game hardcodes the numeric definition IDs (eg, purple face mask = 20, blue + // weapon mod = 55) and does not allow for adding new item types without a client patch. + // + + // LoadItemDefinitions triggers the automatic load and refresh of item definitions. + // Every time new item definitions are available (eg, from the dynamic addition of new + // item types while players are still in-game), a SteamInventoryDefinitionUpdate_t + // callback will be fired. + STEAM_METHOD_DESC(LoadItemDefinitions triggers the automatic load and refresh of item definitions.) + virtual bool LoadItemDefinitions() = 0; + + // GetItemDefinitionIDs returns the set of all defined item definition IDs (which are + // defined via Steamworks configuration, and not necessarily contiguous integers). + // If pItemDefIDs is null, the call will return true and *punItemDefIDsArraySize will + // contain the total size necessary for a subsequent call. Otherwise, the call will + // return false if and only if there is not enough space in the output array. + virtual bool GetItemDefinitionIDs( + STEAM_OUT_ARRAY_COUNT(punItemDefIDsArraySize,List of item definition IDs) SteamItemDef_t *pItemDefIDs, + STEAM_DESC(Size of array is passed in and actual size used is returned in this param) uint32 *punItemDefIDsArraySize ) = 0; + + // GetItemDefinitionProperty returns a string property from a given item definition. + // Note that some properties (for example, "name") may be localized and will depend + // on the current Steam language settings (see ISteamApps::GetCurrentGameLanguage). + // Property names are always composed of ASCII letters, numbers, and/or underscores. + // Pass a NULL pointer for pchPropertyName to get a comma - separated list of available + // property names. If pchValueBuffer is NULL, *punValueBufferSize will contain the + // suggested buffer size. Otherwise it will be the number of bytes actually copied + // to pchValueBuffer. If the results do not fit in the given buffer, partial + // results may be copied. + virtual bool GetItemDefinitionProperty( SteamItemDef_t iDefinition, const char *pchPropertyName, + STEAM_OUT_STRING_COUNT(punValueBufferSizeOut) char *pchValueBuffer, uint32 *punValueBufferSizeOut ) = 0; + + // Request the list of "eligible" promo items that can be manually granted to the given + // user. These are promo items of type "manual" that won't be granted automatically. + // An example usage of this is an item that becomes available every week. + STEAM_CALL_RESULT( SteamInventoryEligiblePromoItemDefIDs_t ) + virtual SteamAPICall_t RequestEligiblePromoItemDefinitionsIDs( CSteamID steamID ) = 0; + + // After handling a SteamInventoryEligiblePromoItemDefIDs_t call result, use this + // function to pull out the list of item definition ids that the user can be + // manually granted via the AddPromoItems() call. + virtual bool GetEligiblePromoItemDefinitionIDs( + CSteamID steamID, + STEAM_OUT_ARRAY_COUNT(punItemDefIDsArraySize,List of item definition IDs) SteamItemDef_t *pItemDefIDs, + STEAM_DESC(Size of array is passed in and actual size used is returned in this param) uint32 *punItemDefIDsArraySize ) = 0; + + // Starts the purchase process for the given item definitions. The callback SteamInventoryStartPurchaseResult_t + // will be posted if Steam was able to initialize the transaction. + // + // Once the purchase has been authorized and completed by the user, the callback SteamInventoryResultReady_t + // will be posted. + STEAM_CALL_RESULT( SteamInventoryStartPurchaseResult_t ) + virtual SteamAPICall_t StartPurchase( STEAM_ARRAY_COUNT(unArrayLength) const SteamItemDef_t *pArrayItemDefs, STEAM_ARRAY_COUNT(unArrayLength) const uint32 *punArrayQuantity, uint32 unArrayLength ) = 0; + + // Request current prices for all applicable item definitions + STEAM_CALL_RESULT( SteamInventoryRequestPricesResult_t ) + virtual SteamAPICall_t RequestPrices() = 0; + + // Returns the number of items with prices. Need to call RequestPrices() first. + virtual uint32 GetNumItemsWithPrices() = 0; + + // Returns item definition ids and their prices in the user's local currency. + // Need to call RequestPrices() first. + virtual bool GetItemsWithPrices( STEAM_ARRAY_COUNT(unArrayLength) STEAM_OUT_ARRAY_COUNT(pArrayItemDefs, Items with prices) SteamItemDef_t *pArrayItemDefs, + STEAM_ARRAY_COUNT(unArrayLength) STEAM_OUT_ARRAY_COUNT(pPrices, List of prices for the given item defs) uint64 *pCurrentPrices, + STEAM_ARRAY_COUNT(unArrayLength) STEAM_OUT_ARRAY_COUNT(pPrices, List of prices for the given item defs) uint64 *pBasePrices, + uint32 unArrayLength ) = 0; + + // Retrieves the price for the item definition id + // Returns false if there is no price stored for the item definition. + virtual bool GetItemPrice( SteamItemDef_t iDefinition, uint64 *pCurrentPrice, uint64 *pBasePrice ) = 0; + + // Create a request to update properties on items + virtual SteamInventoryUpdateHandle_t StartUpdateProperties() = 0; + // Remove the property on the item + virtual bool RemoveProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName ) = 0; + // Accessor methods to set properties on items + + STEAM_FLAT_NAME( SetPropertyString ) + virtual bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, const char *pchPropertyValue ) = 0; + + STEAM_FLAT_NAME( SetPropertyBool ) + virtual bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, bool bValue ) = 0; + + STEAM_FLAT_NAME( SetPropertyInt64 ) + virtual bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, int64 nValue ) = 0; + + STEAM_FLAT_NAME( SetPropertyFloat ) + virtual bool SetProperty( SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char *pchPropertyName, float flValue ) = 0; + + // Submit the update request by handle + virtual bool SubmitUpdateProperties( SteamInventoryUpdateHandle_t handle, SteamInventoryResult_t * pResultHandle ) = 0; + + STEAM_METHOD_DESC(Look up the given token and return a pseudo-Inventory item.) + virtual bool InspectItem( SteamInventoryResult_t *pResultHandle, const char *pchItemToken ) = 0; +}; + +#define STEAMINVENTORY_INTERFACE_VERSION "STEAMINVENTORY_INTERFACE_V003" + +// Global interface accessor +inline ISteamInventory *SteamInventory(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamInventory *, SteamInventory, STEAMINVENTORY_INTERFACE_VERSION ); + +// Global accessor for the gameserver client +inline ISteamInventory *SteamGameServerInventory(); +STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamInventory *, SteamGameServerInventory, STEAMINVENTORY_INTERFACE_VERSION ); + +// SteamInventoryResultReady_t callbacks are fired whenever asynchronous +// results transition from "Pending" to "OK" or an error state. There will +// always be exactly one callback per handle. +struct SteamInventoryResultReady_t +{ + enum { k_iCallback = k_iClientInventoryCallbacks + 0 }; + SteamInventoryResult_t m_handle; + EResult m_result; +}; + + +// SteamInventoryFullUpdate_t callbacks are triggered when GetAllItems +// successfully returns a result which is newer / fresher than the last +// known result. (It will not trigger if the inventory hasn't changed, +// or if results from two overlapping calls are reversed in flight and +// the earlier result is already known to be stale/out-of-date.) +// The normal ResultReady callback will still be triggered immediately +// afterwards; this is an additional notification for your convenience. +struct SteamInventoryFullUpdate_t +{ + enum { k_iCallback = k_iClientInventoryCallbacks + 1 }; + SteamInventoryResult_t m_handle; +}; + + +// A SteamInventoryDefinitionUpdate_t callback is triggered whenever +// item definitions have been updated, which could be in response to +// LoadItemDefinitions() or any other async request which required +// a definition update in order to process results from the server. +struct SteamInventoryDefinitionUpdate_t +{ + enum { k_iCallback = k_iClientInventoryCallbacks + 2 }; +}; + +// Returned +struct SteamInventoryEligiblePromoItemDefIDs_t +{ + enum { k_iCallback = k_iClientInventoryCallbacks + 3 }; + EResult m_result; + CSteamID m_steamID; + int m_numEligiblePromoItemDefs; + bool m_bCachedData; // indicates that the data was retrieved from the cache and not the server +}; + +// Triggered from StartPurchase call +struct SteamInventoryStartPurchaseResult_t +{ + enum { k_iCallback = k_iClientInventoryCallbacks + 4 }; + EResult m_result; + uint64 m_ulOrderID; + uint64 m_ulTransID; +}; + + +// Triggered from RequestPrices +struct SteamInventoryRequestPricesResult_t +{ + enum { k_iCallback = k_iClientInventoryCallbacks + 5 }; + EResult m_result; + char m_rgchCurrency[4]; +}; + +#pragma pack( pop ) + + +#endif // ISTEAMCONTROLLER_H diff --git a/CodeGen/steam/isteammasterserverupdater.h b/CodeGen/steam/isteammasterserverupdater.h index 19590019..4be0ca5c 100644 --- a/CodeGen/steam/isteammasterserverupdater.h +++ b/CodeGen/steam/isteammasterserverupdater.h @@ -1 +1 @@ -#error "This file isn't used any more" +#error "This file isn't used any more" diff --git a/CodeGen/steam/isteammatchmaking.h b/CodeGen/steam/isteammatchmaking.h index 0ec299ea..12189c72 100644 --- a/CodeGen/steam/isteammatchmaking.h +++ b/CodeGen/steam/isteammatchmaking.h @@ -1,1087 +1,1087 @@ -//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= -// -// Purpose: interface to steam managing game server/client match making -// -//============================================================================= - -#ifndef ISTEAMMATCHMAKING -#define ISTEAMMATCHMAKING -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" -#include "matchmakingtypes.h" -#include "isteamfriends.h" - -// lobby type description -enum ELobbyType -{ - k_ELobbyTypePrivate = 0, // only way to join the lobby is to invite to someone else - k_ELobbyTypeFriendsOnly = 1, // shows for friends or invitees, but not in lobby list - k_ELobbyTypePublic = 2, // visible for friends and in lobby list - k_ELobbyTypeInvisible = 3, // returned by search, but not visible to other friends - // useful if you want a user in two lobbies, for example matching groups together - // a user can be in only one regular lobby, and up to two invisible lobbies - k_ELobbyTypePrivateUnique = 4, // private, unique and does not delete when empty - only one of these may exist per unique keypair set - // can only create from webapi -}; - -// lobby search filter tools -enum ELobbyComparison -{ - k_ELobbyComparisonEqualToOrLessThan = -2, - k_ELobbyComparisonLessThan = -1, - k_ELobbyComparisonEqual = 0, - k_ELobbyComparisonGreaterThan = 1, - k_ELobbyComparisonEqualToOrGreaterThan = 2, - k_ELobbyComparisonNotEqual = 3, -}; - -// lobby search distance. Lobby results are sorted from closest to farthest. -enum ELobbyDistanceFilter -{ - k_ELobbyDistanceFilterClose, // only lobbies in the same immediate region will be returned - k_ELobbyDistanceFilterDefault, // only lobbies in the same region or near by regions - k_ELobbyDistanceFilterFar, // for games that don't have many latency requirements, will return lobbies about half-way around the globe - k_ELobbyDistanceFilterWorldwide, // no filtering, will match lobbies as far as India to NY (not recommended, expect multiple seconds of latency between the clients) -}; - -// maximum number of characters a lobby metadata key can be -#define k_nMaxLobbyKeyLength 255 - -//----------------------------------------------------------------------------- -// Purpose: Functions for match making services for clients to get to favorites -// and to operate on game lobbies. -//----------------------------------------------------------------------------- -class ISteamMatchmaking -{ -public: - // game server favorites storage - // saves basic details about a multiplayer game server locally - - // returns the number of favorites servers the user has stored - virtual int GetFavoriteGameCount() = 0; - - // returns the details of the game server - // iGame is of range [0,GetFavoriteGameCount()) - // *pnIP, *pnConnPort are filled in the with IP:port of the game server - // *punFlags specify whether the game server was stored as an explicit favorite or in the history of connections - // *pRTime32LastPlayedOnServer is filled in the with the Unix time the favorite was added - virtual bool GetFavoriteGame( int iGame, AppId_t *pnAppID, uint32 *pnIP, uint16 *pnConnPort, uint16 *pnQueryPort, uint32 *punFlags, uint32 *pRTime32LastPlayedOnServer ) = 0; - - // adds the game server to the local list; updates the time played of the server if it already exists in the list - virtual int AddFavoriteGame( AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer ) = 0; - - // removes the game server from the local storage; returns true if one was removed - virtual bool RemoveFavoriteGame( AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags ) = 0; - - /////// - // Game lobby functions - - // Get a list of relevant lobbies - // this is an asynchronous request - // results will be returned by LobbyMatchList_t callback & call result, with the number of lobbies found - // this will never return lobbies that are full - // to add more filter, the filter calls below need to be call before each and every RequestLobbyList() call - // use the CCallResult<> object in steam_api.h to match the SteamAPICall_t call result to a function in an object, e.g. - /* - class CMyLobbyListManager - { - CCallResult m_CallResultLobbyMatchList; - void FindLobbies() - { - // SteamMatchmaking()->AddRequestLobbyListFilter*() functions would be called here, before RequestLobbyList() - SteamAPICall_t hSteamAPICall = SteamMatchmaking()->RequestLobbyList(); - m_CallResultLobbyMatchList.Set( hSteamAPICall, this, &CMyLobbyListManager::OnLobbyMatchList ); - } - - void OnLobbyMatchList( LobbyMatchList_t *pLobbyMatchList, bool bIOFailure ) - { - // lobby list has be retrieved from Steam back-end, use results - } - } - */ - // - STEAM_CALL_RESULT( LobbyMatchList_t ) - virtual SteamAPICall_t RequestLobbyList() = 0; - // filters for lobbies - // this needs to be called before RequestLobbyList() to take effect - // these are cleared on each call to RequestLobbyList() - virtual void AddRequestLobbyListStringFilter( const char *pchKeyToMatch, const char *pchValueToMatch, ELobbyComparison eComparisonType ) = 0; - // numerical comparison - virtual void AddRequestLobbyListNumericalFilter( const char *pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType ) = 0; - // returns results closest to the specified value. Multiple near filters can be added, with early filters taking precedence - virtual void AddRequestLobbyListNearValueFilter( const char *pchKeyToMatch, int nValueToBeCloseTo ) = 0; - // returns only lobbies with the specified number of slots available - virtual void AddRequestLobbyListFilterSlotsAvailable( int nSlotsAvailable ) = 0; - // sets the distance for which we should search for lobbies (based on users IP address to location map on the Steam backed) - virtual void AddRequestLobbyListDistanceFilter( ELobbyDistanceFilter eLobbyDistanceFilter ) = 0; - // sets how many results to return, the lower the count the faster it is to download the lobby results & details to the client - virtual void AddRequestLobbyListResultCountFilter( int cMaxResults ) = 0; - - virtual void AddRequestLobbyListCompatibleMembersFilter( CSteamID steamIDLobby ) = 0; - - // returns the CSteamID of a lobby, as retrieved by a RequestLobbyList call - // should only be called after a LobbyMatchList_t callback is received - // iLobby is of the range [0, LobbyMatchList_t::m_nLobbiesMatching) - // the returned CSteamID::IsValid() will be false if iLobby is out of range - virtual CSteamID GetLobbyByIndex( int iLobby ) = 0; - - // Create a lobby on the Steam servers. - // If private, then the lobby will not be returned by any RequestLobbyList() call; the CSteamID - // of the lobby will need to be communicated via game channels or via InviteUserToLobby() - // this is an asynchronous request - // results will be returned by LobbyCreated_t callback and call result; lobby is joined & ready to use at this point - // a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) - STEAM_CALL_RESULT( LobbyCreated_t ) - virtual SteamAPICall_t CreateLobby( ELobbyType eLobbyType, int cMaxMembers ) = 0; - - // Joins an existing lobby - // this is an asynchronous request - // results will be returned by LobbyEnter_t callback & call result, check m_EChatRoomEnterResponse to see if was successful - // lobby metadata is available to use immediately on this call completing - STEAM_CALL_RESULT( LobbyEnter_t ) - virtual SteamAPICall_t JoinLobby( CSteamID steamIDLobby ) = 0; - - // Leave a lobby; this will take effect immediately on the client side - // other users in the lobby will be notified by a LobbyChatUpdate_t callback - virtual void LeaveLobby( CSteamID steamIDLobby ) = 0; - - // Invite another user to the lobby - // the target user will receive a LobbyInvite_t callback - // will return true if the invite is successfully sent, whether or not the target responds - // returns false if the local user is not connected to the Steam servers - // if the other user clicks the join link, a GameLobbyJoinRequested_t will be posted if the user is in-game, - // or if the game isn't running yet the game will be launched with the parameter +connect_lobby <64-bit lobby id> - virtual bool InviteUserToLobby( CSteamID steamIDLobby, CSteamID steamIDInvitee ) = 0; - - // Lobby iteration, for viewing details of users in a lobby - // only accessible if the lobby user is a member of the specified lobby - // persona information for other lobby members (name, avatar, etc.) will be asynchronously received - // and accessible via ISteamFriends interface - - // returns the number of users in the specified lobby - virtual int GetNumLobbyMembers( CSteamID steamIDLobby ) = 0; - // returns the CSteamID of a user in the lobby - // iMember is of range [0,GetNumLobbyMembers()) - // note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby - virtual CSteamID GetLobbyMemberByIndex( CSteamID steamIDLobby, int iMember ) = 0; - - // Get data associated with this lobby - // takes a simple key, and returns the string associated with it - // "" will be returned if no value is set, or if steamIDLobby is invalid - virtual const char *GetLobbyData( CSteamID steamIDLobby, const char *pchKey ) = 0; - // Sets a key/value pair in the lobby metadata - // each user in the lobby will be broadcast this new value, and any new users joining will receive any existing data - // this can be used to set lobby names, map, etc. - // to reset a key, just set it to "" - // other users in the lobby will receive notification of the lobby data change via a LobbyDataUpdate_t callback - virtual bool SetLobbyData( CSteamID steamIDLobby, const char *pchKey, const char *pchValue ) = 0; - - // returns the number of metadata keys set on the specified lobby - virtual int GetLobbyDataCount( CSteamID steamIDLobby ) = 0; - - // returns a lobby metadata key/values pair by index, of range [0, GetLobbyDataCount()) - virtual bool GetLobbyDataByIndex( CSteamID steamIDLobby, int iLobbyData, char *pchKey, int cchKeyBufferSize, char *pchValue, int cchValueBufferSize ) = 0; - - // removes a metadata key from the lobby - virtual bool DeleteLobbyData( CSteamID steamIDLobby, const char *pchKey ) = 0; - - // Gets per-user metadata for someone in this lobby - virtual const char *GetLobbyMemberData( CSteamID steamIDLobby, CSteamID steamIDUser, const char *pchKey ) = 0; - // Sets per-user metadata (for the local user implicitly) - virtual void SetLobbyMemberData( CSteamID steamIDLobby, const char *pchKey, const char *pchValue ) = 0; - - // Broadcasts a chat message to the all the users in the lobby - // users in the lobby (including the local user) will receive a LobbyChatMsg_t callback - // returns true if the message is successfully sent - // pvMsgBody can be binary or text data, up to 4k - // if pvMsgBody is text, cubMsgBody should be strlen( text ) + 1, to include the null terminator - virtual bool SendLobbyChatMsg( CSteamID steamIDLobby, const void *pvMsgBody, int cubMsgBody ) = 0; - // Get a chat message as specified in a LobbyChatMsg_t callback - // iChatID is the LobbyChatMsg_t::m_iChatID value in the callback - // *pSteamIDUser is filled in with the CSteamID of the member - // *pvData is filled in with the message itself - // return value is the number of bytes written into the buffer - virtual int GetLobbyChatEntry( CSteamID steamIDLobby, int iChatID, STEAM_OUT_STRUCT() CSteamID *pSteamIDUser, void *pvData, int cubData, EChatEntryType *peChatEntryType ) = 0; - - // Refreshes metadata for a lobby you're not necessarily in right now - // you never do this for lobbies you're a member of, only if your - // this will send down all the metadata associated with a lobby - // this is an asynchronous call - // returns false if the local user is not connected to the Steam servers - // results will be returned by a LobbyDataUpdate_t callback - // if the specified lobby doesn't exist, LobbyDataUpdate_t::m_bSuccess will be set to false - virtual bool RequestLobbyData( CSteamID steamIDLobby ) = 0; - - // sets the game server associated with the lobby - // usually at this point, the users will join the specified game server - // either the IP/Port or the steamID of the game server has to be valid, depending on how you want the clients to be able to connect - virtual void SetLobbyGameServer( CSteamID steamIDLobby, uint32 unGameServerIP, uint16 unGameServerPort, CSteamID steamIDGameServer ) = 0; - // returns the details of a game server set in a lobby - returns false if there is no game server set, or that lobby doesn't exist - virtual bool GetLobbyGameServer( CSteamID steamIDLobby, uint32 *punGameServerIP, uint16 *punGameServerPort, STEAM_OUT_STRUCT() CSteamID *psteamIDGameServer ) = 0; - - // set the limit on the # of users who can join the lobby - virtual bool SetLobbyMemberLimit( CSteamID steamIDLobby, int cMaxMembers ) = 0; - // returns the current limit on the # of users who can join the lobby; returns 0 if no limit is defined - virtual int GetLobbyMemberLimit( CSteamID steamIDLobby ) = 0; - - // updates which type of lobby it is - // only lobbies that are k_ELobbyTypePublic or k_ELobbyTypeInvisible, and are set to joinable, will be returned by RequestLobbyList() calls - virtual bool SetLobbyType( CSteamID steamIDLobby, ELobbyType eLobbyType ) = 0; - - // sets whether or not a lobby is joinable - defaults to true for a new lobby - // if set to false, no user can join, even if they are a friend or have been invited - virtual bool SetLobbyJoinable( CSteamID steamIDLobby, bool bLobbyJoinable ) = 0; - - // returns the current lobby owner - // you must be a member of the lobby to access this - // there always one lobby owner - if the current owner leaves, another user will become the owner - // it is possible (bur rare) to join a lobby just as the owner is leaving, thus entering a lobby with self as the owner - virtual CSteamID GetLobbyOwner( CSteamID steamIDLobby ) = 0; - - // changes who the lobby owner is - // you must be the lobby owner for this to succeed, and steamIDNewOwner must be in the lobby - // after completion, the local user will no longer be the owner - virtual bool SetLobbyOwner( CSteamID steamIDLobby, CSteamID steamIDNewOwner ) = 0; - - // link two lobbies for the purposes of checking player compatibility - // you must be the lobby owner of both lobbies - virtual bool SetLinkedLobby( CSteamID steamIDLobby, CSteamID steamIDLobbyDependent ) = 0; - -#ifdef _PS3 - // changes who the lobby owner is - // you must be the lobby owner for this to succeed, and steamIDNewOwner must be in the lobby - // after completion, the local user will no longer be the owner - virtual void CheckForPSNGameBootInvite( unsigned int iGameBootAttributes ) = 0; -#endif -}; -#define STEAMMATCHMAKING_INTERFACE_VERSION "SteamMatchMaking009" - -// Global interface accessor -inline ISteamMatchmaking *SteamMatchmaking(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamMatchmaking *, SteamMatchmaking, STEAMMATCHMAKING_INTERFACE_VERSION ); - -//----------------------------------------------------------------------------- -// Callback interfaces for server list functions (see ISteamMatchmakingServers below) -// -// The idea here is that your game code implements objects that implement these -// interfaces to receive callback notifications after calling asynchronous functions -// inside the ISteamMatchmakingServers() interface below. -// -// This is different than normal Steam callback handling due to the potentially -// large size of server lists. -//----------------------------------------------------------------------------- - -//----------------------------------------------------------------------------- -// Typedef for handle type you will receive when requesting server list. -//----------------------------------------------------------------------------- -typedef void* HServerListRequest; - -//----------------------------------------------------------------------------- -// Purpose: Callback interface for receiving responses after a server list refresh -// or an individual server update. -// -// Since you get these callbacks after requesting full list refreshes you will -// usually implement this interface inside an object like CServerBrowser. If that -// object is getting destructed you should use ISteamMatchMakingServers()->CancelQuery() -// to cancel any in-progress queries so you don't get a callback into the destructed -// object and crash. -//----------------------------------------------------------------------------- -class ISteamMatchmakingServerListResponse -{ -public: - // Server has responded ok with updated data - virtual void ServerResponded( HServerListRequest hRequest, int iServer ) = 0; - - // Server has failed to respond - virtual void ServerFailedToRespond( HServerListRequest hRequest, int iServer ) = 0; - - // A list refresh you had initiated is now 100% completed - virtual void RefreshComplete( HServerListRequest hRequest, EMatchMakingServerResponse response ) = 0; -}; - - -//----------------------------------------------------------------------------- -// Purpose: Callback interface for receiving responses after pinging an individual server -// -// These callbacks all occur in response to querying an individual server -// via the ISteamMatchmakingServers()->PingServer() call below. If you are -// destructing an object that implements this interface then you should call -// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query -// which is in progress. Failure to cancel in progress queries when destructing -// a callback handler may result in a crash when a callback later occurs. -//----------------------------------------------------------------------------- -class ISteamMatchmakingPingResponse -{ -public: - // Server has responded successfully and has updated data - virtual void ServerResponded( gameserveritem_t &server ) = 0; - - // Server failed to respond to the ping request - virtual void ServerFailedToRespond() = 0; -}; - - -//----------------------------------------------------------------------------- -// Purpose: Callback interface for receiving responses after requesting details on -// who is playing on a particular server. -// -// These callbacks all occur in response to querying an individual server -// via the ISteamMatchmakingServers()->PlayerDetails() call below. If you are -// destructing an object that implements this interface then you should call -// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query -// which is in progress. Failure to cancel in progress queries when destructing -// a callback handler may result in a crash when a callback later occurs. -//----------------------------------------------------------------------------- -class ISteamMatchmakingPlayersResponse -{ -public: - // Got data on a new player on the server -- you'll get this callback once per player - // on the server which you have requested player data on. - virtual void AddPlayerToList( const char *pchName, int nScore, float flTimePlayed ) = 0; - - // The server failed to respond to the request for player details - virtual void PlayersFailedToRespond() = 0; - - // The server has finished responding to the player details request - // (ie, you won't get anymore AddPlayerToList callbacks) - virtual void PlayersRefreshComplete() = 0; -}; - - -//----------------------------------------------------------------------------- -// Purpose: Callback interface for receiving responses after requesting rules -// details on a particular server. -// -// These callbacks all occur in response to querying an individual server -// via the ISteamMatchmakingServers()->ServerRules() call below. If you are -// destructing an object that implements this interface then you should call -// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query -// which is in progress. Failure to cancel in progress queries when destructing -// a callback handler may result in a crash when a callback later occurs. -//----------------------------------------------------------------------------- -class ISteamMatchmakingRulesResponse -{ -public: - // Got data on a rule on the server -- you'll get one of these per rule defined on - // the server you are querying - virtual void RulesResponded( const char *pchRule, const char *pchValue ) = 0; - - // The server failed to respond to the request for rule details - virtual void RulesFailedToRespond() = 0; - - // The server has finished responding to the rule details request - // (ie, you won't get anymore RulesResponded callbacks) - virtual void RulesRefreshComplete() = 0; -}; - - -//----------------------------------------------------------------------------- -// Typedef for handle type you will receive when querying details on an individual server. -//----------------------------------------------------------------------------- -typedef int HServerQuery; -const int HSERVERQUERY_INVALID = 0xffffffff; - -//----------------------------------------------------------------------------- -// Purpose: Functions for match making services for clients to get to game lists and details -//----------------------------------------------------------------------------- -class ISteamMatchmakingServers -{ -public: - // Request a new list of servers of a particular type. These calls each correspond to one of the EMatchMakingType values. - // Each call allocates a new asynchronous request object. - // Request object must be released by calling ReleaseRequest( hServerListRequest ) - virtual HServerListRequest RequestInternetServerList( AppId_t iApp, STEAM_ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; - virtual HServerListRequest RequestLANServerList( AppId_t iApp, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; - virtual HServerListRequest RequestFriendsServerList( AppId_t iApp, STEAM_ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; - virtual HServerListRequest RequestFavoritesServerList( AppId_t iApp, STEAM_ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; - virtual HServerListRequest RequestHistoryServerList( AppId_t iApp, STEAM_ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; - virtual HServerListRequest RequestSpectatorServerList( AppId_t iApp, STEAM_ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; - - // Releases the asynchronous request object and cancels any pending query on it if there's a pending query in progress. - // RefreshComplete callback is not posted when request is released. - virtual void ReleaseRequest( HServerListRequest hServerListRequest ) = 0; - - /* the filter operation codes that go in the key part of MatchMakingKeyValuePair_t should be one of these: - - "map" - - Server passes the filter if the server is playing the specified map. - "gamedataand" - - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains all of the - specified strings. The value field is a comma-delimited list of strings to match. - "gamedataor" - - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains at least one of the - specified strings. The value field is a comma-delimited list of strings to match. - "gamedatanor" - - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) does not contain any - of the specified strings. The value field is a comma-delimited list of strings to check. - "gametagsand" - - Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) contains all - of the specified strings. The value field is a comma-delimited list of strings to check. - "gametagsnor" - - Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) does not contain any - of the specified strings. The value field is a comma-delimited list of strings to check. - "and" (x1 && x2 && ... && xn) - "or" (x1 || x2 || ... || xn) - "nand" !(x1 && x2 && ... && xn) - "nor" !(x1 || x2 || ... || xn) - - Performs Boolean operation on the following filters. The operand to this filter specifies - the "size" of the Boolean inputs to the operation, in Key/value pairs. (The keyvalue - pairs must immediately follow, i.e. this is a prefix logical operator notation.) - In the simplest case where Boolean expressions are not nested, this is simply - the number of operands. - - For example, to match servers on a particular map or with a particular tag, would would - use these filters. - - ( server.map == "cp_dustbowl" || server.gametags.contains("payload") ) - "or", "2" - "map", "cp_dustbowl" - "gametagsand", "payload" - - If logical inputs are nested, then the operand specifies the size of the entire - "length" of its operands, not the number of immediate children. - - ( server.map == "cp_dustbowl" || ( server.gametags.contains("payload") && !server.gametags.contains("payloadrace") ) ) - "or", "4" - "map", "cp_dustbowl" - "and", "2" - "gametagsand", "payload" - "gametagsnor", "payloadrace" - - Unary NOT can be achieved using either "nand" or "nor" with a single operand. - - "addr" - - Server passes the filter if the server's query address matches the specified IP or IP:port. - "gameaddr" - - Server passes the filter if the server's game address matches the specified IP or IP:port. - - The following filter operations ignore the "value" part of MatchMakingKeyValuePair_t - - "dedicated" - - Server passes the filter if it passed true to SetDedicatedServer. - "secure" - - Server passes the filter if the server is VAC-enabled. - "notfull" - - Server passes the filter if the player count is less than the reported max player count. - "hasplayers" - - Server passes the filter if the player count is greater than zero. - "noplayers" - - Server passes the filter if it doesn't have any players. - "linux" - - Server passes the filter if it's a linux server - */ - - // Get details on a given server in the list, you can get the valid range of index - // values by calling GetServerCount(). You will also receive index values in - // ISteamMatchmakingServerListResponse::ServerResponded() callbacks - virtual gameserveritem_t *GetServerDetails( HServerListRequest hRequest, int iServer ) = 0; - - // Cancel an request which is operation on the given list type. You should call this to cancel - // any in-progress requests before destructing a callback object that may have been passed - // to one of the above list request calls. Not doing so may result in a crash when a callback - // occurs on the destructed object. - // Canceling a query does not release the allocated request handle. - // The request handle must be released using ReleaseRequest( hRequest ) - virtual void CancelQuery( HServerListRequest hRequest ) = 0; - - // Ping every server in your list again but don't update the list of servers - // Query callback installed when the server list was requested will be used - // again to post notifications and RefreshComplete, so the callback must remain - // valid until another RefreshComplete is called on it or the request - // is released with ReleaseRequest( hRequest ) - virtual void RefreshQuery( HServerListRequest hRequest ) = 0; - - // Returns true if the list is currently refreshing its server list - virtual bool IsRefreshing( HServerListRequest hRequest ) = 0; - - // How many servers in the given list, GetServerDetails above takes 0... GetServerCount() - 1 - virtual int GetServerCount( HServerListRequest hRequest ) = 0; - - // Refresh a single server inside of a query (rather than all the servers ) - virtual void RefreshServer( HServerListRequest hRequest, int iServer ) = 0; - - - //----------------------------------------------------------------------------- - // Queries to individual servers directly via IP/Port - //----------------------------------------------------------------------------- - - // Request updated ping time and other details from a single server - virtual HServerQuery PingServer( uint32 unIP, uint16 usPort, ISteamMatchmakingPingResponse *pRequestServersResponse ) = 0; - - // Request the list of players currently playing on a server - virtual HServerQuery PlayerDetails( uint32 unIP, uint16 usPort, ISteamMatchmakingPlayersResponse *pRequestServersResponse ) = 0; - - // Request the list of rules that the server is running (See ISteamGameServer::SetKeyValue() to set the rules server side) - virtual HServerQuery ServerRules( uint32 unIP, uint16 usPort, ISteamMatchmakingRulesResponse *pRequestServersResponse ) = 0; - - // Cancel an outstanding Ping/Players/Rules query from above. You should call this to cancel - // any in-progress requests before destructing a callback object that may have been passed - // to one of the above calls to avoid crashing when callbacks occur. - virtual void CancelServerQuery( HServerQuery hServerQuery ) = 0; -}; -#define STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION "SteamMatchMakingServers002" - -// Global interface accessor -inline ISteamMatchmakingServers *SteamMatchmakingServers(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamMatchmakingServers *, SteamMatchmakingServers, STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION ); - -// game server flags -const uint32 k_unFavoriteFlagNone = 0x00; -const uint32 k_unFavoriteFlagFavorite = 0x01; // this game favorite entry is for the favorites list -const uint32 k_unFavoriteFlagHistory = 0x02; // this game favorite entry is for the history list - - -//----------------------------------------------------------------------------- -// Purpose: Used in ChatInfo messages - fields specific to a chat member - must fit in a uint32 -//----------------------------------------------------------------------------- -enum EChatMemberStateChange -{ - // Specific to joining / leaving the chatroom - k_EChatMemberStateChangeEntered = 0x0001, // This user has joined or is joining the chat room - k_EChatMemberStateChangeLeft = 0x0002, // This user has left or is leaving the chat room - k_EChatMemberStateChangeDisconnected = 0x0004, // User disconnected without leaving the chat first - k_EChatMemberStateChangeKicked = 0x0008, // User kicked - k_EChatMemberStateChangeBanned = 0x0010, // User kicked and banned -}; - -// returns true of the flags indicate that a user has been removed from the chat -#define BChatMemberStateChangeRemoved( rgfChatMemberStateChangeFlags ) ( rgfChatMemberStateChangeFlags & ( k_EChatMemberStateChangeDisconnected | k_EChatMemberStateChangeLeft | k_EChatMemberStateChangeKicked | k_EChatMemberStateChangeBanned ) ) - - - -//----------------------------------------------------------------------------- -// Purpose: Functions for match making services for clients to get to favorites -// and to operate on game lobbies. -//----------------------------------------------------------------------------- -class ISteamGameSearch -{ -public: - // ============================================================================================= - // Game Player APIs - - // a keyname and a list of comma separated values: one of which is must be found in order for the match to qualify - // fails if a search is currently in progress - virtual EGameSearchErrorCode_t AddGameSearchParams( const char *pchKeyToFind, const char *pchValuesToFind ) = 0; - - // all players in lobby enter the queue and await a SearchForGameNotificationCallback_t callback. fails if another search is currently in progress - // if not the owner of the lobby or search already in progress this call fails - // periodic callbacks will be sent as queue time estimates change - virtual EGameSearchErrorCode_t SearchForGameWithLobby( CSteamID steamIDLobby, int nPlayerMin, int nPlayerMax ) = 0; - - // user enter the queue and await a SearchForGameNotificationCallback_t callback. fails if another search is currently in progress - // periodic callbacks will be sent as queue time estimates change - virtual EGameSearchErrorCode_t SearchForGameSolo( int nPlayerMin, int nPlayerMax ) = 0; - - // after receiving SearchForGameResultCallback_t, accept or decline the game - // multiple SearchForGameResultCallback_t will follow as players accept game until the host starts or cancels the game - virtual EGameSearchErrorCode_t AcceptGame() = 0; - virtual EGameSearchErrorCode_t DeclineGame() = 0; - - // after receiving GameStartedByHostCallback_t get connection details to server - virtual EGameSearchErrorCode_t RetrieveConnectionDetails( CSteamID steamIDHost, char *pchConnectionDetails, int cubConnectionDetails ) = 0; - - // leaves queue if still waiting - virtual EGameSearchErrorCode_t EndGameSearch() = 0; - - // ============================================================================================= - // Game Host APIs - - // a keyname and a list of comma separated values: all the values you allow - virtual EGameSearchErrorCode_t SetGameHostParams( const char *pchKey, const char *pchValue ) = 0; - - // set connection details for players once game is found so they can connect to this server - virtual EGameSearchErrorCode_t SetConnectionDetails( const char *pchConnectionDetails, int cubConnectionDetails ) = 0; - - // mark server as available for more players with nPlayerMin,nPlayerMax desired - // accept no lobbies with playercount greater than nMaxTeamSize - // the set of lobbies returned must be partitionable into teams of no more than nMaxTeamSize - // RequestPlayersForGameNotificationCallback_t callback will be sent when the search has started - // multple RequestPlayersForGameResultCallback_t callbacks will follow when players are found - virtual EGameSearchErrorCode_t RequestPlayersForGame( int nPlayerMin, int nPlayerMax, int nMaxTeamSize ) = 0; - - // accept the player list and release connection details to players - // players will only be given connection details and host steamid when this is called - // ( allows host to accept after all players confirm, some confirm, or none confirm. decision is entirely up to the host ) - virtual EGameSearchErrorCode_t HostConfirmGameStart( uint64 ullUniqueGameID ) = 0; - - // cancel request and leave the pool of game hosts looking for players - // if a set of players has already been sent to host, all players will receive SearchForGameHostFailedToConfirm_t - virtual EGameSearchErrorCode_t CancelRequestPlayersForGame() = 0; - - // submit a result for one player. does not end the game. ullUniqueGameID continues to describe this game - virtual EGameSearchErrorCode_t SubmitPlayerResult( uint64 ullUniqueGameID, CSteamID steamIDPlayer, EPlayerResult_t EPlayerResult ) = 0; - - // ends the game. no further SubmitPlayerResults for ullUniqueGameID will be accepted - // any future requests will provide a new ullUniqueGameID - virtual EGameSearchErrorCode_t EndGame( uint64 ullUniqueGameID ) = 0; - -}; -#define STEAMGAMESEARCH_INTERFACE_VERSION "SteamMatchGameSearch001" - -// Global interface accessor -inline ISteamGameSearch *SteamGameSearch(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamGameSearch *, SteamGameSearch, STEAMGAMESEARCH_INTERFACE_VERSION ); - - -//----------------------------------------------------------------------------- -// Purpose: Functions for quickly creating a Party with friends or acquaintances, -// EG from chat rooms. -//----------------------------------------------------------------------------- -enum ESteamPartyBeaconLocationType -{ - k_ESteamPartyBeaconLocationType_Invalid = 0, - k_ESteamPartyBeaconLocationType_ChatGroup = 1, - - k_ESteamPartyBeaconLocationType_Max, -}; - - -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - - -struct SteamPartyBeaconLocation_t -{ - ESteamPartyBeaconLocationType m_eType; - uint64 m_ulLocationID; -}; - -enum ESteamPartyBeaconLocationData -{ - k_ESteamPartyBeaconLocationDataInvalid = 0, - k_ESteamPartyBeaconLocationDataName = 1, - k_ESteamPartyBeaconLocationDataIconURLSmall = 2, - k_ESteamPartyBeaconLocationDataIconURLMedium = 3, - k_ESteamPartyBeaconLocationDataIconURLLarge = 4, -}; - -class ISteamParties -{ -public: - - // ============================================================================================= - // Party Client APIs - - // Enumerate any active beacons for parties you may wish to join - virtual uint32 GetNumActiveBeacons() = 0; - virtual PartyBeaconID_t GetBeaconByIndex( uint32 unIndex ) = 0; - virtual bool GetBeaconDetails( PartyBeaconID_t ulBeaconID, CSteamID *pSteamIDBeaconOwner, STEAM_OUT_STRUCT() SteamPartyBeaconLocation_t *pLocation, STEAM_OUT_STRING_COUNT(cchMetadata) char *pchMetadata, int cchMetadata ) = 0; - - // Join an open party. Steam will reserve one beacon slot for your SteamID, - // and return the necessary JoinGame string for you to use to connect - STEAM_CALL_RESULT( JoinPartyCallback_t ) - virtual SteamAPICall_t JoinParty( PartyBeaconID_t ulBeaconID ) = 0; - - // ============================================================================================= - // Party Host APIs - - // Get a list of possible beacon locations - virtual bool GetNumAvailableBeaconLocations( uint32 *puNumLocations ) = 0; - virtual bool GetAvailableBeaconLocations( SteamPartyBeaconLocation_t *pLocationList, uint32 uMaxNumLocations ) = 0; - - // Create a new party beacon and activate it in the selected location. - // unOpenSlots is the maximum number of users that Steam will send to you. - // When people begin responding to your beacon, Steam will send you - // PartyReservationCallback_t callbacks to let you know who is on the way. - STEAM_CALL_RESULT( CreateBeaconCallback_t ) - virtual SteamAPICall_t CreateBeacon( uint32 unOpenSlots, SteamPartyBeaconLocation_t *pBeaconLocation, const char *pchConnectString, const char *pchMetadata ) = 0; - - // Call this function when a user that had a reservation (see callback below) - // has successfully joined your party. - // Steam will manage the remaining open slots automatically. - virtual void OnReservationCompleted( PartyBeaconID_t ulBeacon, CSteamID steamIDUser ) = 0; - - // To cancel a reservation (due to timeout or user input), call this. - // Steam will open a new reservation slot. - // Note: The user may already be in-flight to your game, so it's possible they will still connect and try to join your party. - virtual void CancelReservation( PartyBeaconID_t ulBeacon, CSteamID steamIDUser ) = 0; - - // Change the number of open beacon reservation slots. - // Call this if, for example, someone without a reservation joins your party (eg a friend, or via your own matchmaking system). - STEAM_CALL_RESULT( ChangeNumOpenSlotsCallback_t ) - virtual SteamAPICall_t ChangeNumOpenSlots( PartyBeaconID_t ulBeacon, uint32 unOpenSlots ) = 0; - - // Turn off the beacon. - virtual bool DestroyBeacon( PartyBeaconID_t ulBeacon ) = 0; - - // Utils - virtual bool GetBeaconLocationData( SteamPartyBeaconLocation_t BeaconLocation, ESteamPartyBeaconLocationData eData, STEAM_OUT_STRING_COUNT(cchDataStringOut) char *pchDataStringOut, int cchDataStringOut ) = 0; - -}; -#define STEAMPARTIES_INTERFACE_VERSION "SteamParties002" - -// Global interface accessor -inline ISteamParties *SteamParties(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamParties *, SteamParties, STEAMPARTIES_INTERFACE_VERSION ); - - -//----------------------------------------------------------------------------- -// Callbacks for ISteamMatchmaking (which go through the regular Steam callback registration system) - -//----------------------------------------------------------------------------- -// Purpose: a server was added/removed from the favorites list, you should refresh now -//----------------------------------------------------------------------------- -struct FavoritesListChanged_t -{ - enum { k_iCallback = k_iSteamMatchmakingCallbacks + 2 }; - uint32 m_nIP; // an IP of 0 means reload the whole list, any other value means just one server - uint32 m_nQueryPort; - uint32 m_nConnPort; - uint32 m_nAppID; - uint32 m_nFlags; - bool m_bAdd; // true if this is adding the entry, otherwise it is a remove - AccountID_t m_unAccountId; -}; - - -//----------------------------------------------------------------------------- -// Purpose: Someone has invited you to join a Lobby -// normally you don't need to do anything with this, since -// the Steam UI will also display a ' has invited you to the lobby, join?' dialog -// -// if the user outside a game chooses to join, your game will be launched with the parameter "+connect_lobby <64-bit lobby id>", -// or with the callback GameLobbyJoinRequested_t if they're already in-game -//----------------------------------------------------------------------------- -struct LobbyInvite_t -{ - enum { k_iCallback = k_iSteamMatchmakingCallbacks + 3 }; - - uint64 m_ulSteamIDUser; // Steam ID of the person making the invite - uint64 m_ulSteamIDLobby; // Steam ID of the Lobby - uint64 m_ulGameID; // GameID of the Lobby -}; - - -//----------------------------------------------------------------------------- -// Purpose: Sent on entering a lobby, or on failing to enter -// m_EChatRoomEnterResponse will be set to k_EChatRoomEnterResponseSuccess on success, -// or a higher value on failure (see enum EChatRoomEnterResponse) -//----------------------------------------------------------------------------- -struct LobbyEnter_t -{ - enum { k_iCallback = k_iSteamMatchmakingCallbacks + 4 }; - - uint64 m_ulSteamIDLobby; // SteamID of the Lobby you have entered - uint32 m_rgfChatPermissions; // Permissions of the current user - bool m_bLocked; // If true, then only invited users may join - uint32 m_EChatRoomEnterResponse; // EChatRoomEnterResponse -}; - - -//----------------------------------------------------------------------------- -// Purpose: The lobby metadata has changed -// if m_ulSteamIDMember is the steamID of a lobby member, use GetLobbyMemberData() to access per-user details -// if m_ulSteamIDMember == m_ulSteamIDLobby, use GetLobbyData() to access lobby metadata -//----------------------------------------------------------------------------- -struct LobbyDataUpdate_t -{ - enum { k_iCallback = k_iSteamMatchmakingCallbacks + 5 }; - - uint64 m_ulSteamIDLobby; // steamID of the Lobby - uint64 m_ulSteamIDMember; // steamID of the member whose data changed, or the room itself - uint8 m_bSuccess; // true if we lobby data was successfully changed; - // will only be false if RequestLobbyData() was called on a lobby that no longer exists -}; - - -//----------------------------------------------------------------------------- -// Purpose: The lobby chat room state has changed -// this is usually sent when a user has joined or left the lobby -//----------------------------------------------------------------------------- -struct LobbyChatUpdate_t -{ - enum { k_iCallback = k_iSteamMatchmakingCallbacks + 6 }; - - uint64 m_ulSteamIDLobby; // Lobby ID - uint64 m_ulSteamIDUserChanged; // user who's status in the lobby just changed - can be recipient - uint64 m_ulSteamIDMakingChange; // Chat member who made the change (different from SteamIDUserChange if kicking, muting, etc.) - // for example, if one user kicks another from the lobby, this will be set to the id of the user who initiated the kick - uint32 m_rgfChatMemberStateChange; // bitfield of EChatMemberStateChange values -}; - - -//----------------------------------------------------------------------------- -// Purpose: A chat message for this lobby has been sent -// use GetLobbyChatEntry( m_iChatID ) to retrieve the contents of this message -//----------------------------------------------------------------------------- -struct LobbyChatMsg_t -{ - enum { k_iCallback = k_iSteamMatchmakingCallbacks + 7 }; - - uint64 m_ulSteamIDLobby; // the lobby id this is in - uint64 m_ulSteamIDUser; // steamID of the user who has sent this message - uint8 m_eChatEntryType; // type of message - uint32 m_iChatID; // index of the chat entry to lookup -}; - - -//----------------------------------------------------------------------------- -// Purpose: A game created a game for all the members of the lobby to join, -// as triggered by a SetLobbyGameServer() -// it's up to the individual clients to take action on this; the usual -// game behavior is to leave the lobby and connect to the specified game server -//----------------------------------------------------------------------------- -struct LobbyGameCreated_t -{ - enum { k_iCallback = k_iSteamMatchmakingCallbacks + 9 }; - - uint64 m_ulSteamIDLobby; // the lobby we were in - uint64 m_ulSteamIDGameServer; // the new game server that has been created or found for the lobby members - uint32 m_unIP; // IP & Port of the game server (if any) - uint16 m_usPort; -}; - - -//----------------------------------------------------------------------------- -// Purpose: Number of matching lobbies found -// iterate the returned lobbies with GetLobbyByIndex(), from values 0 to m_nLobbiesMatching-1 -//----------------------------------------------------------------------------- -struct LobbyMatchList_t -{ - enum { k_iCallback = k_iSteamMatchmakingCallbacks + 10 }; - uint32 m_nLobbiesMatching; // Number of lobbies that matched search criteria and we have SteamIDs for -}; - - -//----------------------------------------------------------------------------- -// Purpose: posted if a user is forcefully removed from a lobby -// can occur if a user loses connection to Steam -//----------------------------------------------------------------------------- -struct LobbyKicked_t -{ - enum { k_iCallback = k_iSteamMatchmakingCallbacks + 12 }; - uint64 m_ulSteamIDLobby; // Lobby - uint64 m_ulSteamIDAdmin; // User who kicked you - possibly the ID of the lobby itself - uint8 m_bKickedDueToDisconnect; // true if you were kicked from the lobby due to the user losing connection to Steam (currently always true) -}; - - -//----------------------------------------------------------------------------- -// Purpose: Result of our request to create a Lobby -// m_eResult == k_EResultOK on success -// at this point, the lobby has been joined and is ready for use -// a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) -//----------------------------------------------------------------------------- -struct LobbyCreated_t -{ - enum { k_iCallback = k_iSteamMatchmakingCallbacks + 13 }; - - EResult m_eResult; // k_EResultOK - the lobby was successfully created - // k_EResultNoConnection - your Steam client doesn't have a connection to the back-end - // k_EResultTimeout - you the message to the Steam servers, but it didn't respond - // k_EResultFail - the server responded, but with an unknown internal error - // k_EResultAccessDenied - your game isn't set to allow lobbies, or your client does haven't rights to play the game - // k_EResultLimitExceeded - your game client has created too many lobbies - - uint64 m_ulSteamIDLobby; // chat room, zero if failed -}; - -// used by now obsolete RequestFriendsLobbiesResponse_t -// enum { k_iCallback = k_iSteamMatchmakingCallbacks + 14 }; - - -//----------------------------------------------------------------------------- -// Purpose: Result of CheckForPSNGameBootInvite -// m_eResult == k_EResultOK on success -// at this point, the local user may not have finishing joining this lobby; -// game code should wait until the subsequent LobbyEnter_t callback is received -//----------------------------------------------------------------------------- -struct PSNGameBootInviteResult_t -{ - enum { k_iCallback = k_iSteamMatchmakingCallbacks + 15 }; - - bool m_bGameBootInviteExists; - CSteamID m_steamIDLobby; // Should be valid if m_bGameBootInviteExists == true -}; - - -//----------------------------------------------------------------------------- -// Purpose: Result of our request to create a Lobby -// m_eResult == k_EResultOK on success -// at this point, the lobby has been joined and is ready for use -// a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) -//----------------------------------------------------------------------------- -struct FavoritesListAccountsUpdated_t -{ - enum { k_iCallback = k_iSteamMatchmakingCallbacks + 16 }; - - EResult m_eResult; -}; - - - -//----------------------------------------------------------------------------- -// Callbacks for ISteamGameSearch (which go through the regular Steam callback registration system) - -struct SearchForGameProgressCallback_t -{ - enum { k_iCallback = k_iSteamGameSearchCallbacks + 1 }; - - uint64 m_ullSearchID; // all future callbacks referencing this search will include this Search ID - - EResult m_eResult; // if search has started this result will be k_EResultOK, any other value indicates search has failed to start or has terminated - CSteamID m_lobbyID; // lobby ID if lobby search, invalid steamID otherwise - CSteamID m_steamIDEndedSearch; // if search was terminated, steamID that terminated search - - int32 m_nSecondsRemainingEstimate; - int32 m_cPlayersSearching; -}; - -// notification to all players searching that a game has been found -struct SearchForGameResultCallback_t -{ - enum { k_iCallback = k_iSteamGameSearchCallbacks + 2 }; - - uint64 m_ullSearchID; - - EResult m_eResult; // if game/host was lost this will be an error value - - // if m_bGameFound is true the following are non-zero - int32 m_nCountPlayersInGame; - int32 m_nCountAcceptedGame; - // if m_steamIDHost is valid the host has started the game - CSteamID m_steamIDHost; - bool m_bFinalCallback; -}; - - -//----------------------------------------------------------------------------- -// ISteamGameSearch : Game Host API callbacks - -// callback from RequestPlayersForGame when the matchmaking service has started or ended search -// callback will also follow a call from CancelRequestPlayersForGame - m_bSearchInProgress will be false -struct RequestPlayersForGameProgressCallback_t -{ - enum { k_iCallback = k_iSteamGameSearchCallbacks + 11 }; - - EResult m_eResult; // m_ullSearchID will be non-zero if this is k_EResultOK - uint64 m_ullSearchID; // all future callbacks referencing this search will include this Search ID -}; - -// callback from RequestPlayersForGame -// one of these will be sent per player -// followed by additional callbacks when players accept or decline the game -struct RequestPlayersForGameResultCallback_t -{ - enum { k_iCallback = k_iSteamGameSearchCallbacks + 12 }; - - EResult m_eResult; // m_ullSearchID will be non-zero if this is k_EResultOK - uint64 m_ullSearchID; - - CSteamID m_SteamIDPlayerFound; // player steamID - CSteamID m_SteamIDLobby; // if the player is in a lobby, the lobby ID - enum PlayerAcceptState_t - { - k_EStateUnknown = 0, - k_EStatePlayerAccepted = 1, - k_EStatePlayerDeclined = 2, - }; - PlayerAcceptState_t m_ePlayerAcceptState; - int32 m_nPlayerIndex; - int32 m_nTotalPlayersFound; // expect this many callbacks at minimum - int32 m_nTotalPlayersAcceptedGame; - int32 m_nSuggestedTeamIndex; - uint64 m_ullUniqueGameID; -}; - - -struct RequestPlayersForGameFinalResultCallback_t -{ - enum { k_iCallback = k_iSteamGameSearchCallbacks + 13 }; - - EResult m_eResult; - uint64 m_ullSearchID; - uint64 m_ullUniqueGameID; -}; - - - -// this callback confirms that results were received by the matchmaking service for this player -struct SubmitPlayerResultResultCallback_t -{ - enum { k_iCallback = k_iSteamGameSearchCallbacks + 14 }; - - EResult m_eResult; - uint64 ullUniqueGameID; - CSteamID steamIDPlayer; -}; - - -// this callback confirms that the game is recorded as complete on the matchmaking service -// the next call to RequestPlayersForGame will generate a new unique game ID -struct EndGameResultCallback_t -{ - enum { k_iCallback = k_iSteamGameSearchCallbacks + 15 }; - - EResult m_eResult; - uint64 ullUniqueGameID; -}; - - -// Steam has responded to the user request to join a party via the given Beacon ID. -// If successful, the connect string contains game-specific instructions to connect -// to the game with that party. -struct JoinPartyCallback_t -{ - enum { k_iCallback = k_iSteamPartiesCallbacks + 1 }; - - EResult m_eResult; - PartyBeaconID_t m_ulBeaconID; - CSteamID m_SteamIDBeaconOwner; - char m_rgchConnectString[256]; -}; - -// Response to CreateBeacon request. If successful, the beacon ID is provided. -struct CreateBeaconCallback_t -{ - enum { k_iCallback = k_iSteamPartiesCallbacks + 2 }; - - EResult m_eResult; - PartyBeaconID_t m_ulBeaconID; -}; - -// Someone has used the beacon to join your party - they are in-flight now -// and we've reserved one of the open slots for them. -// You should confirm when they join your party by calling OnReservationCompleted(). -// Otherwise, Steam may timeout their reservation eventually. -struct ReservationNotificationCallback_t -{ - enum { k_iCallback = k_iSteamPartiesCallbacks + 3 }; - - PartyBeaconID_t m_ulBeaconID; - CSteamID m_steamIDJoiner; -}; - -// Response to ChangeNumOpenSlots call -struct ChangeNumOpenSlotsCallback_t -{ - enum { k_iCallback = k_iSteamPartiesCallbacks + 4 }; - - EResult m_eResult; -}; - -// The list of possible Party beacon locations has changed -struct AvailableBeaconLocationsUpdated_t -{ - enum { k_iCallback = k_iSteamPartiesCallbacks + 5 }; -}; - -// The list of active beacons may have changed -struct ActiveBeaconsUpdated_t -{ - enum { k_iCallback = k_iSteamPartiesCallbacks + 6 }; -}; - - -#pragma pack( pop ) - - -#endif // ISTEAMMATCHMAKING +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam managing game server/client match making +// +//============================================================================= + +#ifndef ISTEAMMATCHMAKING +#define ISTEAMMATCHMAKING +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" +#include "matchmakingtypes.h" +#include "isteamfriends.h" + +// lobby type description +enum ELobbyType +{ + k_ELobbyTypePrivate = 0, // only way to join the lobby is to invite to someone else + k_ELobbyTypeFriendsOnly = 1, // shows for friends or invitees, but not in lobby list + k_ELobbyTypePublic = 2, // visible for friends and in lobby list + k_ELobbyTypeInvisible = 3, // returned by search, but not visible to other friends + // useful if you want a user in two lobbies, for example matching groups together + // a user can be in only one regular lobby, and up to two invisible lobbies + k_ELobbyTypePrivateUnique = 4, // private, unique and does not delete when empty - only one of these may exist per unique keypair set + // can only create from webapi +}; + +// lobby search filter tools +enum ELobbyComparison +{ + k_ELobbyComparisonEqualToOrLessThan = -2, + k_ELobbyComparisonLessThan = -1, + k_ELobbyComparisonEqual = 0, + k_ELobbyComparisonGreaterThan = 1, + k_ELobbyComparisonEqualToOrGreaterThan = 2, + k_ELobbyComparisonNotEqual = 3, +}; + +// lobby search distance. Lobby results are sorted from closest to farthest. +enum ELobbyDistanceFilter +{ + k_ELobbyDistanceFilterClose, // only lobbies in the same immediate region will be returned + k_ELobbyDistanceFilterDefault, // only lobbies in the same region or near by regions + k_ELobbyDistanceFilterFar, // for games that don't have many latency requirements, will return lobbies about half-way around the globe + k_ELobbyDistanceFilterWorldwide, // no filtering, will match lobbies as far as India to NY (not recommended, expect multiple seconds of latency between the clients) +}; + +// maximum number of characters a lobby metadata key can be +#define k_nMaxLobbyKeyLength 255 + +//----------------------------------------------------------------------------- +// Purpose: Functions for match making services for clients to get to favorites +// and to operate on game lobbies. +//----------------------------------------------------------------------------- +class ISteamMatchmaking +{ +public: + // game server favorites storage + // saves basic details about a multiplayer game server locally + + // returns the number of favorites servers the user has stored + virtual int GetFavoriteGameCount() = 0; + + // returns the details of the game server + // iGame is of range [0,GetFavoriteGameCount()) + // *pnIP, *pnConnPort are filled in the with IP:port of the game server + // *punFlags specify whether the game server was stored as an explicit favorite or in the history of connections + // *pRTime32LastPlayedOnServer is filled in the with the Unix time the favorite was added + virtual bool GetFavoriteGame( int iGame, AppId_t *pnAppID, uint32 *pnIP, uint16 *pnConnPort, uint16 *pnQueryPort, uint32 *punFlags, uint32 *pRTime32LastPlayedOnServer ) = 0; + + // adds the game server to the local list; updates the time played of the server if it already exists in the list + virtual int AddFavoriteGame( AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer ) = 0; + + // removes the game server from the local storage; returns true if one was removed + virtual bool RemoveFavoriteGame( AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags ) = 0; + + /////// + // Game lobby functions + + // Get a list of relevant lobbies + // this is an asynchronous request + // results will be returned by LobbyMatchList_t callback & call result, with the number of lobbies found + // this will never return lobbies that are full + // to add more filter, the filter calls below need to be call before each and every RequestLobbyList() call + // use the CCallResult<> object in steam_api.h to match the SteamAPICall_t call result to a function in an object, e.g. + /* + class CMyLobbyListManager + { + CCallResult m_CallResultLobbyMatchList; + void FindLobbies() + { + // SteamMatchmaking()->AddRequestLobbyListFilter*() functions would be called here, before RequestLobbyList() + SteamAPICall_t hSteamAPICall = SteamMatchmaking()->RequestLobbyList(); + m_CallResultLobbyMatchList.Set( hSteamAPICall, this, &CMyLobbyListManager::OnLobbyMatchList ); + } + + void OnLobbyMatchList( LobbyMatchList_t *pLobbyMatchList, bool bIOFailure ) + { + // lobby list has be retrieved from Steam back-end, use results + } + } + */ + // + STEAM_CALL_RESULT( LobbyMatchList_t ) + virtual SteamAPICall_t RequestLobbyList() = 0; + // filters for lobbies + // this needs to be called before RequestLobbyList() to take effect + // these are cleared on each call to RequestLobbyList() + virtual void AddRequestLobbyListStringFilter( const char *pchKeyToMatch, const char *pchValueToMatch, ELobbyComparison eComparisonType ) = 0; + // numerical comparison + virtual void AddRequestLobbyListNumericalFilter( const char *pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType ) = 0; + // returns results closest to the specified value. Multiple near filters can be added, with early filters taking precedence + virtual void AddRequestLobbyListNearValueFilter( const char *pchKeyToMatch, int nValueToBeCloseTo ) = 0; + // returns only lobbies with the specified number of slots available + virtual void AddRequestLobbyListFilterSlotsAvailable( int nSlotsAvailable ) = 0; + // sets the distance for which we should search for lobbies (based on users IP address to location map on the Steam backed) + virtual void AddRequestLobbyListDistanceFilter( ELobbyDistanceFilter eLobbyDistanceFilter ) = 0; + // sets how many results to return, the lower the count the faster it is to download the lobby results & details to the client + virtual void AddRequestLobbyListResultCountFilter( int cMaxResults ) = 0; + + virtual void AddRequestLobbyListCompatibleMembersFilter( CSteamID steamIDLobby ) = 0; + + // returns the CSteamID of a lobby, as retrieved by a RequestLobbyList call + // should only be called after a LobbyMatchList_t callback is received + // iLobby is of the range [0, LobbyMatchList_t::m_nLobbiesMatching) + // the returned CSteamID::IsValid() will be false if iLobby is out of range + virtual CSteamID GetLobbyByIndex( int iLobby ) = 0; + + // Create a lobby on the Steam servers. + // If private, then the lobby will not be returned by any RequestLobbyList() call; the CSteamID + // of the lobby will need to be communicated via game channels or via InviteUserToLobby() + // this is an asynchronous request + // results will be returned by LobbyCreated_t callback and call result; lobby is joined & ready to use at this point + // a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) + STEAM_CALL_RESULT( LobbyCreated_t ) + virtual SteamAPICall_t CreateLobby( ELobbyType eLobbyType, int cMaxMembers ) = 0; + + // Joins an existing lobby + // this is an asynchronous request + // results will be returned by LobbyEnter_t callback & call result, check m_EChatRoomEnterResponse to see if was successful + // lobby metadata is available to use immediately on this call completing + STEAM_CALL_RESULT( LobbyEnter_t ) + virtual SteamAPICall_t JoinLobby( CSteamID steamIDLobby ) = 0; + + // Leave a lobby; this will take effect immediately on the client side + // other users in the lobby will be notified by a LobbyChatUpdate_t callback + virtual void LeaveLobby( CSteamID steamIDLobby ) = 0; + + // Invite another user to the lobby + // the target user will receive a LobbyInvite_t callback + // will return true if the invite is successfully sent, whether or not the target responds + // returns false if the local user is not connected to the Steam servers + // if the other user clicks the join link, a GameLobbyJoinRequested_t will be posted if the user is in-game, + // or if the game isn't running yet the game will be launched with the parameter +connect_lobby <64-bit lobby id> + virtual bool InviteUserToLobby( CSteamID steamIDLobby, CSteamID steamIDInvitee ) = 0; + + // Lobby iteration, for viewing details of users in a lobby + // only accessible if the lobby user is a member of the specified lobby + // persona information for other lobby members (name, avatar, etc.) will be asynchronously received + // and accessible via ISteamFriends interface + + // returns the number of users in the specified lobby + virtual int GetNumLobbyMembers( CSteamID steamIDLobby ) = 0; + // returns the CSteamID of a user in the lobby + // iMember is of range [0,GetNumLobbyMembers()) + // note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby + virtual CSteamID GetLobbyMemberByIndex( CSteamID steamIDLobby, int iMember ) = 0; + + // Get data associated with this lobby + // takes a simple key, and returns the string associated with it + // "" will be returned if no value is set, or if steamIDLobby is invalid + virtual const char *GetLobbyData( CSteamID steamIDLobby, const char *pchKey ) = 0; + // Sets a key/value pair in the lobby metadata + // each user in the lobby will be broadcast this new value, and any new users joining will receive any existing data + // this can be used to set lobby names, map, etc. + // to reset a key, just set it to "" + // other users in the lobby will receive notification of the lobby data change via a LobbyDataUpdate_t callback + virtual bool SetLobbyData( CSteamID steamIDLobby, const char *pchKey, const char *pchValue ) = 0; + + // returns the number of metadata keys set on the specified lobby + virtual int GetLobbyDataCount( CSteamID steamIDLobby ) = 0; + + // returns a lobby metadata key/values pair by index, of range [0, GetLobbyDataCount()) + virtual bool GetLobbyDataByIndex( CSteamID steamIDLobby, int iLobbyData, char *pchKey, int cchKeyBufferSize, char *pchValue, int cchValueBufferSize ) = 0; + + // removes a metadata key from the lobby + virtual bool DeleteLobbyData( CSteamID steamIDLobby, const char *pchKey ) = 0; + + // Gets per-user metadata for someone in this lobby + virtual const char *GetLobbyMemberData( CSteamID steamIDLobby, CSteamID steamIDUser, const char *pchKey ) = 0; + // Sets per-user metadata (for the local user implicitly) + virtual void SetLobbyMemberData( CSteamID steamIDLobby, const char *pchKey, const char *pchValue ) = 0; + + // Broadcasts a chat message to the all the users in the lobby + // users in the lobby (including the local user) will receive a LobbyChatMsg_t callback + // returns true if the message is successfully sent + // pvMsgBody can be binary or text data, up to 4k + // if pvMsgBody is text, cubMsgBody should be strlen( text ) + 1, to include the null terminator + virtual bool SendLobbyChatMsg( CSteamID steamIDLobby, const void *pvMsgBody, int cubMsgBody ) = 0; + // Get a chat message as specified in a LobbyChatMsg_t callback + // iChatID is the LobbyChatMsg_t::m_iChatID value in the callback + // *pSteamIDUser is filled in with the CSteamID of the member + // *pvData is filled in with the message itself + // return value is the number of bytes written into the buffer + virtual int GetLobbyChatEntry( CSteamID steamIDLobby, int iChatID, STEAM_OUT_STRUCT() CSteamID *pSteamIDUser, void *pvData, int cubData, EChatEntryType *peChatEntryType ) = 0; + + // Refreshes metadata for a lobby you're not necessarily in right now + // you never do this for lobbies you're a member of, only if your + // this will send down all the metadata associated with a lobby + // this is an asynchronous call + // returns false if the local user is not connected to the Steam servers + // results will be returned by a LobbyDataUpdate_t callback + // if the specified lobby doesn't exist, LobbyDataUpdate_t::m_bSuccess will be set to false + virtual bool RequestLobbyData( CSteamID steamIDLobby ) = 0; + + // sets the game server associated with the lobby + // usually at this point, the users will join the specified game server + // either the IP/Port or the steamID of the game server has to be valid, depending on how you want the clients to be able to connect + virtual void SetLobbyGameServer( CSteamID steamIDLobby, uint32 unGameServerIP, uint16 unGameServerPort, CSteamID steamIDGameServer ) = 0; + // returns the details of a game server set in a lobby - returns false if there is no game server set, or that lobby doesn't exist + virtual bool GetLobbyGameServer( CSteamID steamIDLobby, uint32 *punGameServerIP, uint16 *punGameServerPort, STEAM_OUT_STRUCT() CSteamID *psteamIDGameServer ) = 0; + + // set the limit on the # of users who can join the lobby + virtual bool SetLobbyMemberLimit( CSteamID steamIDLobby, int cMaxMembers ) = 0; + // returns the current limit on the # of users who can join the lobby; returns 0 if no limit is defined + virtual int GetLobbyMemberLimit( CSteamID steamIDLobby ) = 0; + + // updates which type of lobby it is + // only lobbies that are k_ELobbyTypePublic or k_ELobbyTypeInvisible, and are set to joinable, will be returned by RequestLobbyList() calls + virtual bool SetLobbyType( CSteamID steamIDLobby, ELobbyType eLobbyType ) = 0; + + // sets whether or not a lobby is joinable - defaults to true for a new lobby + // if set to false, no user can join, even if they are a friend or have been invited + virtual bool SetLobbyJoinable( CSteamID steamIDLobby, bool bLobbyJoinable ) = 0; + + // returns the current lobby owner + // you must be a member of the lobby to access this + // there always one lobby owner - if the current owner leaves, another user will become the owner + // it is possible (bur rare) to join a lobby just as the owner is leaving, thus entering a lobby with self as the owner + virtual CSteamID GetLobbyOwner( CSteamID steamIDLobby ) = 0; + + // changes who the lobby owner is + // you must be the lobby owner for this to succeed, and steamIDNewOwner must be in the lobby + // after completion, the local user will no longer be the owner + virtual bool SetLobbyOwner( CSteamID steamIDLobby, CSteamID steamIDNewOwner ) = 0; + + // link two lobbies for the purposes of checking player compatibility + // you must be the lobby owner of both lobbies + virtual bool SetLinkedLobby( CSteamID steamIDLobby, CSteamID steamIDLobbyDependent ) = 0; + +#ifdef _PS3 + // changes who the lobby owner is + // you must be the lobby owner for this to succeed, and steamIDNewOwner must be in the lobby + // after completion, the local user will no longer be the owner + virtual void CheckForPSNGameBootInvite( unsigned int iGameBootAttributes ) = 0; +#endif +}; +#define STEAMMATCHMAKING_INTERFACE_VERSION "SteamMatchMaking009" + +// Global interface accessor +inline ISteamMatchmaking *SteamMatchmaking(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamMatchmaking *, SteamMatchmaking, STEAMMATCHMAKING_INTERFACE_VERSION ); + +//----------------------------------------------------------------------------- +// Callback interfaces for server list functions (see ISteamMatchmakingServers below) +// +// The idea here is that your game code implements objects that implement these +// interfaces to receive callback notifications after calling asynchronous functions +// inside the ISteamMatchmakingServers() interface below. +// +// This is different than normal Steam callback handling due to the potentially +// large size of server lists. +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// Typedef for handle type you will receive when requesting server list. +//----------------------------------------------------------------------------- +typedef void* HServerListRequest; + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after a server list refresh +// or an individual server update. +// +// Since you get these callbacks after requesting full list refreshes you will +// usually implement this interface inside an object like CServerBrowser. If that +// object is getting destructed you should use ISteamMatchMakingServers()->CancelQuery() +// to cancel any in-progress queries so you don't get a callback into the destructed +// object and crash. +//----------------------------------------------------------------------------- +class ISteamMatchmakingServerListResponse +{ +public: + // Server has responded ok with updated data + virtual void ServerResponded( HServerListRequest hRequest, int iServer ) = 0; + + // Server has failed to respond + virtual void ServerFailedToRespond( HServerListRequest hRequest, int iServer ) = 0; + + // A list refresh you had initiated is now 100% completed + virtual void RefreshComplete( HServerListRequest hRequest, EMatchMakingServerResponse response ) = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after pinging an individual server +// +// These callbacks all occur in response to querying an individual server +// via the ISteamMatchmakingServers()->PingServer() call below. If you are +// destructing an object that implements this interface then you should call +// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query +// which is in progress. Failure to cancel in progress queries when destructing +// a callback handler may result in a crash when a callback later occurs. +//----------------------------------------------------------------------------- +class ISteamMatchmakingPingResponse +{ +public: + // Server has responded successfully and has updated data + virtual void ServerResponded( gameserveritem_t &server ) = 0; + + // Server failed to respond to the ping request + virtual void ServerFailedToRespond() = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after requesting details on +// who is playing on a particular server. +// +// These callbacks all occur in response to querying an individual server +// via the ISteamMatchmakingServers()->PlayerDetails() call below. If you are +// destructing an object that implements this interface then you should call +// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query +// which is in progress. Failure to cancel in progress queries when destructing +// a callback handler may result in a crash when a callback later occurs. +//----------------------------------------------------------------------------- +class ISteamMatchmakingPlayersResponse +{ +public: + // Got data on a new player on the server -- you'll get this callback once per player + // on the server which you have requested player data on. + virtual void AddPlayerToList( const char *pchName, int nScore, float flTimePlayed ) = 0; + + // The server failed to respond to the request for player details + virtual void PlayersFailedToRespond() = 0; + + // The server has finished responding to the player details request + // (ie, you won't get anymore AddPlayerToList callbacks) + virtual void PlayersRefreshComplete() = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback interface for receiving responses after requesting rules +// details on a particular server. +// +// These callbacks all occur in response to querying an individual server +// via the ISteamMatchmakingServers()->ServerRules() call below. If you are +// destructing an object that implements this interface then you should call +// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query +// which is in progress. Failure to cancel in progress queries when destructing +// a callback handler may result in a crash when a callback later occurs. +//----------------------------------------------------------------------------- +class ISteamMatchmakingRulesResponse +{ +public: + // Got data on a rule on the server -- you'll get one of these per rule defined on + // the server you are querying + virtual void RulesResponded( const char *pchRule, const char *pchValue ) = 0; + + // The server failed to respond to the request for rule details + virtual void RulesFailedToRespond() = 0; + + // The server has finished responding to the rule details request + // (ie, you won't get anymore RulesResponded callbacks) + virtual void RulesRefreshComplete() = 0; +}; + + +//----------------------------------------------------------------------------- +// Typedef for handle type you will receive when querying details on an individual server. +//----------------------------------------------------------------------------- +typedef int HServerQuery; +const int HSERVERQUERY_INVALID = 0xffffffff; + +//----------------------------------------------------------------------------- +// Purpose: Functions for match making services for clients to get to game lists and details +//----------------------------------------------------------------------------- +class ISteamMatchmakingServers +{ +public: + // Request a new list of servers of a particular type. These calls each correspond to one of the EMatchMakingType values. + // Each call allocates a new asynchronous request object. + // Request object must be released by calling ReleaseRequest( hServerListRequest ) + virtual HServerListRequest RequestInternetServerList( AppId_t iApp, STEAM_ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestLANServerList( AppId_t iApp, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestFriendsServerList( AppId_t iApp, STEAM_ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestFavoritesServerList( AppId_t iApp, STEAM_ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestHistoryServerList( AppId_t iApp, STEAM_ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + virtual HServerListRequest RequestSpectatorServerList( AppId_t iApp, STEAM_ARRAY_COUNT(nFilters) MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse ) = 0; + + // Releases the asynchronous request object and cancels any pending query on it if there's a pending query in progress. + // RefreshComplete callback is not posted when request is released. + virtual void ReleaseRequest( HServerListRequest hServerListRequest ) = 0; + + /* the filter operation codes that go in the key part of MatchMakingKeyValuePair_t should be one of these: + + "map" + - Server passes the filter if the server is playing the specified map. + "gamedataand" + - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains all of the + specified strings. The value field is a comma-delimited list of strings to match. + "gamedataor" + - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) contains at least one of the + specified strings. The value field is a comma-delimited list of strings to match. + "gamedatanor" + - Server passes the filter if the server's game data (ISteamGameServer::SetGameData) does not contain any + of the specified strings. The value field is a comma-delimited list of strings to check. + "gametagsand" + - Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) contains all + of the specified strings. The value field is a comma-delimited list of strings to check. + "gametagsnor" + - Server passes the filter if the server's game tags (ISteamGameServer::SetGameTags) does not contain any + of the specified strings. The value field is a comma-delimited list of strings to check. + "and" (x1 && x2 && ... && xn) + "or" (x1 || x2 || ... || xn) + "nand" !(x1 && x2 && ... && xn) + "nor" !(x1 || x2 || ... || xn) + - Performs Boolean operation on the following filters. The operand to this filter specifies + the "size" of the Boolean inputs to the operation, in Key/value pairs. (The keyvalue + pairs must immediately follow, i.e. this is a prefix logical operator notation.) + In the simplest case where Boolean expressions are not nested, this is simply + the number of operands. + + For example, to match servers on a particular map or with a particular tag, would would + use these filters. + + ( server.map == "cp_dustbowl" || server.gametags.contains("payload") ) + "or", "2" + "map", "cp_dustbowl" + "gametagsand", "payload" + + If logical inputs are nested, then the operand specifies the size of the entire + "length" of its operands, not the number of immediate children. + + ( server.map == "cp_dustbowl" || ( server.gametags.contains("payload") && !server.gametags.contains("payloadrace") ) ) + "or", "4" + "map", "cp_dustbowl" + "and", "2" + "gametagsand", "payload" + "gametagsnor", "payloadrace" + + Unary NOT can be achieved using either "nand" or "nor" with a single operand. + + "addr" + - Server passes the filter if the server's query address matches the specified IP or IP:port. + "gameaddr" + - Server passes the filter if the server's game address matches the specified IP or IP:port. + + The following filter operations ignore the "value" part of MatchMakingKeyValuePair_t + + "dedicated" + - Server passes the filter if it passed true to SetDedicatedServer. + "secure" + - Server passes the filter if the server is VAC-enabled. + "notfull" + - Server passes the filter if the player count is less than the reported max player count. + "hasplayers" + - Server passes the filter if the player count is greater than zero. + "noplayers" + - Server passes the filter if it doesn't have any players. + "linux" + - Server passes the filter if it's a linux server + */ + + // Get details on a given server in the list, you can get the valid range of index + // values by calling GetServerCount(). You will also receive index values in + // ISteamMatchmakingServerListResponse::ServerResponded() callbacks + virtual gameserveritem_t *GetServerDetails( HServerListRequest hRequest, int iServer ) = 0; + + // Cancel an request which is operation on the given list type. You should call this to cancel + // any in-progress requests before destructing a callback object that may have been passed + // to one of the above list request calls. Not doing so may result in a crash when a callback + // occurs on the destructed object. + // Canceling a query does not release the allocated request handle. + // The request handle must be released using ReleaseRequest( hRequest ) + virtual void CancelQuery( HServerListRequest hRequest ) = 0; + + // Ping every server in your list again but don't update the list of servers + // Query callback installed when the server list was requested will be used + // again to post notifications and RefreshComplete, so the callback must remain + // valid until another RefreshComplete is called on it or the request + // is released with ReleaseRequest( hRequest ) + virtual void RefreshQuery( HServerListRequest hRequest ) = 0; + + // Returns true if the list is currently refreshing its server list + virtual bool IsRefreshing( HServerListRequest hRequest ) = 0; + + // How many servers in the given list, GetServerDetails above takes 0... GetServerCount() - 1 + virtual int GetServerCount( HServerListRequest hRequest ) = 0; + + // Refresh a single server inside of a query (rather than all the servers ) + virtual void RefreshServer( HServerListRequest hRequest, int iServer ) = 0; + + + //----------------------------------------------------------------------------- + // Queries to individual servers directly via IP/Port + //----------------------------------------------------------------------------- + + // Request updated ping time and other details from a single server + virtual HServerQuery PingServer( uint32 unIP, uint16 usPort, ISteamMatchmakingPingResponse *pRequestServersResponse ) = 0; + + // Request the list of players currently playing on a server + virtual HServerQuery PlayerDetails( uint32 unIP, uint16 usPort, ISteamMatchmakingPlayersResponse *pRequestServersResponse ) = 0; + + // Request the list of rules that the server is running (See ISteamGameServer::SetKeyValue() to set the rules server side) + virtual HServerQuery ServerRules( uint32 unIP, uint16 usPort, ISteamMatchmakingRulesResponse *pRequestServersResponse ) = 0; + + // Cancel an outstanding Ping/Players/Rules query from above. You should call this to cancel + // any in-progress requests before destructing a callback object that may have been passed + // to one of the above calls to avoid crashing when callbacks occur. + virtual void CancelServerQuery( HServerQuery hServerQuery ) = 0; +}; +#define STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION "SteamMatchMakingServers002" + +// Global interface accessor +inline ISteamMatchmakingServers *SteamMatchmakingServers(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamMatchmakingServers *, SteamMatchmakingServers, STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION ); + +// game server flags +const uint32 k_unFavoriteFlagNone = 0x00; +const uint32 k_unFavoriteFlagFavorite = 0x01; // this game favorite entry is for the favorites list +const uint32 k_unFavoriteFlagHistory = 0x02; // this game favorite entry is for the history list + + +//----------------------------------------------------------------------------- +// Purpose: Used in ChatInfo messages - fields specific to a chat member - must fit in a uint32 +//----------------------------------------------------------------------------- +enum EChatMemberStateChange +{ + // Specific to joining / leaving the chatroom + k_EChatMemberStateChangeEntered = 0x0001, // This user has joined or is joining the chat room + k_EChatMemberStateChangeLeft = 0x0002, // This user has left or is leaving the chat room + k_EChatMemberStateChangeDisconnected = 0x0004, // User disconnected without leaving the chat first + k_EChatMemberStateChangeKicked = 0x0008, // User kicked + k_EChatMemberStateChangeBanned = 0x0010, // User kicked and banned +}; + +// returns true of the flags indicate that a user has been removed from the chat +#define BChatMemberStateChangeRemoved( rgfChatMemberStateChangeFlags ) ( rgfChatMemberStateChangeFlags & ( k_EChatMemberStateChangeDisconnected | k_EChatMemberStateChangeLeft | k_EChatMemberStateChangeKicked | k_EChatMemberStateChangeBanned ) ) + + + +//----------------------------------------------------------------------------- +// Purpose: Functions for match making services for clients to get to favorites +// and to operate on game lobbies. +//----------------------------------------------------------------------------- +class ISteamGameSearch +{ +public: + // ============================================================================================= + // Game Player APIs + + // a keyname and a list of comma separated values: one of which is must be found in order for the match to qualify + // fails if a search is currently in progress + virtual EGameSearchErrorCode_t AddGameSearchParams( const char *pchKeyToFind, const char *pchValuesToFind ) = 0; + + // all players in lobby enter the queue and await a SearchForGameNotificationCallback_t callback. fails if another search is currently in progress + // if not the owner of the lobby or search already in progress this call fails + // periodic callbacks will be sent as queue time estimates change + virtual EGameSearchErrorCode_t SearchForGameWithLobby( CSteamID steamIDLobby, int nPlayerMin, int nPlayerMax ) = 0; + + // user enter the queue and await a SearchForGameNotificationCallback_t callback. fails if another search is currently in progress + // periodic callbacks will be sent as queue time estimates change + virtual EGameSearchErrorCode_t SearchForGameSolo( int nPlayerMin, int nPlayerMax ) = 0; + + // after receiving SearchForGameResultCallback_t, accept or decline the game + // multiple SearchForGameResultCallback_t will follow as players accept game until the host starts or cancels the game + virtual EGameSearchErrorCode_t AcceptGame() = 0; + virtual EGameSearchErrorCode_t DeclineGame() = 0; + + // after receiving GameStartedByHostCallback_t get connection details to server + virtual EGameSearchErrorCode_t RetrieveConnectionDetails( CSteamID steamIDHost, char *pchConnectionDetails, int cubConnectionDetails ) = 0; + + // leaves queue if still waiting + virtual EGameSearchErrorCode_t EndGameSearch() = 0; + + // ============================================================================================= + // Game Host APIs + + // a keyname and a list of comma separated values: all the values you allow + virtual EGameSearchErrorCode_t SetGameHostParams( const char *pchKey, const char *pchValue ) = 0; + + // set connection details for players once game is found so they can connect to this server + virtual EGameSearchErrorCode_t SetConnectionDetails( const char *pchConnectionDetails, int cubConnectionDetails ) = 0; + + // mark server as available for more players with nPlayerMin,nPlayerMax desired + // accept no lobbies with playercount greater than nMaxTeamSize + // the set of lobbies returned must be partitionable into teams of no more than nMaxTeamSize + // RequestPlayersForGameNotificationCallback_t callback will be sent when the search has started + // multple RequestPlayersForGameResultCallback_t callbacks will follow when players are found + virtual EGameSearchErrorCode_t RequestPlayersForGame( int nPlayerMin, int nPlayerMax, int nMaxTeamSize ) = 0; + + // accept the player list and release connection details to players + // players will only be given connection details and host steamid when this is called + // ( allows host to accept after all players confirm, some confirm, or none confirm. decision is entirely up to the host ) + virtual EGameSearchErrorCode_t HostConfirmGameStart( uint64 ullUniqueGameID ) = 0; + + // cancel request and leave the pool of game hosts looking for players + // if a set of players has already been sent to host, all players will receive SearchForGameHostFailedToConfirm_t + virtual EGameSearchErrorCode_t CancelRequestPlayersForGame() = 0; + + // submit a result for one player. does not end the game. ullUniqueGameID continues to describe this game + virtual EGameSearchErrorCode_t SubmitPlayerResult( uint64 ullUniqueGameID, CSteamID steamIDPlayer, EPlayerResult_t EPlayerResult ) = 0; + + // ends the game. no further SubmitPlayerResults for ullUniqueGameID will be accepted + // any future requests will provide a new ullUniqueGameID + virtual EGameSearchErrorCode_t EndGame( uint64 ullUniqueGameID ) = 0; + +}; +#define STEAMGAMESEARCH_INTERFACE_VERSION "SteamMatchGameSearch001" + +// Global interface accessor +inline ISteamGameSearch *SteamGameSearch(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamGameSearch *, SteamGameSearch, STEAMGAMESEARCH_INTERFACE_VERSION ); + + +//----------------------------------------------------------------------------- +// Purpose: Functions for quickly creating a Party with friends or acquaintances, +// EG from chat rooms. +//----------------------------------------------------------------------------- +enum ESteamPartyBeaconLocationType +{ + k_ESteamPartyBeaconLocationType_Invalid = 0, + k_ESteamPartyBeaconLocationType_ChatGroup = 1, + + k_ESteamPartyBeaconLocationType_Max, +}; + + +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + + +struct SteamPartyBeaconLocation_t +{ + ESteamPartyBeaconLocationType m_eType; + uint64 m_ulLocationID; +}; + +enum ESteamPartyBeaconLocationData +{ + k_ESteamPartyBeaconLocationDataInvalid = 0, + k_ESteamPartyBeaconLocationDataName = 1, + k_ESteamPartyBeaconLocationDataIconURLSmall = 2, + k_ESteamPartyBeaconLocationDataIconURLMedium = 3, + k_ESteamPartyBeaconLocationDataIconURLLarge = 4, +}; + +class ISteamParties +{ +public: + + // ============================================================================================= + // Party Client APIs + + // Enumerate any active beacons for parties you may wish to join + virtual uint32 GetNumActiveBeacons() = 0; + virtual PartyBeaconID_t GetBeaconByIndex( uint32 unIndex ) = 0; + virtual bool GetBeaconDetails( PartyBeaconID_t ulBeaconID, CSteamID *pSteamIDBeaconOwner, STEAM_OUT_STRUCT() SteamPartyBeaconLocation_t *pLocation, STEAM_OUT_STRING_COUNT(cchMetadata) char *pchMetadata, int cchMetadata ) = 0; + + // Join an open party. Steam will reserve one beacon slot for your SteamID, + // and return the necessary JoinGame string for you to use to connect + STEAM_CALL_RESULT( JoinPartyCallback_t ) + virtual SteamAPICall_t JoinParty( PartyBeaconID_t ulBeaconID ) = 0; + + // ============================================================================================= + // Party Host APIs + + // Get a list of possible beacon locations + virtual bool GetNumAvailableBeaconLocations( uint32 *puNumLocations ) = 0; + virtual bool GetAvailableBeaconLocations( SteamPartyBeaconLocation_t *pLocationList, uint32 uMaxNumLocations ) = 0; + + // Create a new party beacon and activate it in the selected location. + // unOpenSlots is the maximum number of users that Steam will send to you. + // When people begin responding to your beacon, Steam will send you + // PartyReservationCallback_t callbacks to let you know who is on the way. + STEAM_CALL_RESULT( CreateBeaconCallback_t ) + virtual SteamAPICall_t CreateBeacon( uint32 unOpenSlots, SteamPartyBeaconLocation_t *pBeaconLocation, const char *pchConnectString, const char *pchMetadata ) = 0; + + // Call this function when a user that had a reservation (see callback below) + // has successfully joined your party. + // Steam will manage the remaining open slots automatically. + virtual void OnReservationCompleted( PartyBeaconID_t ulBeacon, CSteamID steamIDUser ) = 0; + + // To cancel a reservation (due to timeout or user input), call this. + // Steam will open a new reservation slot. + // Note: The user may already be in-flight to your game, so it's possible they will still connect and try to join your party. + virtual void CancelReservation( PartyBeaconID_t ulBeacon, CSteamID steamIDUser ) = 0; + + // Change the number of open beacon reservation slots. + // Call this if, for example, someone without a reservation joins your party (eg a friend, or via your own matchmaking system). + STEAM_CALL_RESULT( ChangeNumOpenSlotsCallback_t ) + virtual SteamAPICall_t ChangeNumOpenSlots( PartyBeaconID_t ulBeacon, uint32 unOpenSlots ) = 0; + + // Turn off the beacon. + virtual bool DestroyBeacon( PartyBeaconID_t ulBeacon ) = 0; + + // Utils + virtual bool GetBeaconLocationData( SteamPartyBeaconLocation_t BeaconLocation, ESteamPartyBeaconLocationData eData, STEAM_OUT_STRING_COUNT(cchDataStringOut) char *pchDataStringOut, int cchDataStringOut ) = 0; + +}; +#define STEAMPARTIES_INTERFACE_VERSION "SteamParties002" + +// Global interface accessor +inline ISteamParties *SteamParties(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamParties *, SteamParties, STEAMPARTIES_INTERFACE_VERSION ); + + +//----------------------------------------------------------------------------- +// Callbacks for ISteamMatchmaking (which go through the regular Steam callback registration system) + +//----------------------------------------------------------------------------- +// Purpose: a server was added/removed from the favorites list, you should refresh now +//----------------------------------------------------------------------------- +struct FavoritesListChanged_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 2 }; + uint32 m_nIP; // an IP of 0 means reload the whole list, any other value means just one server + uint32 m_nQueryPort; + uint32 m_nConnPort; + uint32 m_nAppID; + uint32 m_nFlags; + bool m_bAdd; // true if this is adding the entry, otherwise it is a remove + AccountID_t m_unAccountId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Someone has invited you to join a Lobby +// normally you don't need to do anything with this, since +// the Steam UI will also display a ' has invited you to the lobby, join?' dialog +// +// if the user outside a game chooses to join, your game will be launched with the parameter "+connect_lobby <64-bit lobby id>", +// or with the callback GameLobbyJoinRequested_t if they're already in-game +//----------------------------------------------------------------------------- +struct LobbyInvite_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 3 }; + + uint64 m_ulSteamIDUser; // Steam ID of the person making the invite + uint64 m_ulSteamIDLobby; // Steam ID of the Lobby + uint64 m_ulGameID; // GameID of the Lobby +}; + + +//----------------------------------------------------------------------------- +// Purpose: Sent on entering a lobby, or on failing to enter +// m_EChatRoomEnterResponse will be set to k_EChatRoomEnterResponseSuccess on success, +// or a higher value on failure (see enum EChatRoomEnterResponse) +//----------------------------------------------------------------------------- +struct LobbyEnter_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 4 }; + + uint64 m_ulSteamIDLobby; // SteamID of the Lobby you have entered + uint32 m_rgfChatPermissions; // Permissions of the current user + bool m_bLocked; // If true, then only invited users may join + uint32 m_EChatRoomEnterResponse; // EChatRoomEnterResponse +}; + + +//----------------------------------------------------------------------------- +// Purpose: The lobby metadata has changed +// if m_ulSteamIDMember is the steamID of a lobby member, use GetLobbyMemberData() to access per-user details +// if m_ulSteamIDMember == m_ulSteamIDLobby, use GetLobbyData() to access lobby metadata +//----------------------------------------------------------------------------- +struct LobbyDataUpdate_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 5 }; + + uint64 m_ulSteamIDLobby; // steamID of the Lobby + uint64 m_ulSteamIDMember; // steamID of the member whose data changed, or the room itself + uint8 m_bSuccess; // true if we lobby data was successfully changed; + // will only be false if RequestLobbyData() was called on a lobby that no longer exists +}; + + +//----------------------------------------------------------------------------- +// Purpose: The lobby chat room state has changed +// this is usually sent when a user has joined or left the lobby +//----------------------------------------------------------------------------- +struct LobbyChatUpdate_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 6 }; + + uint64 m_ulSteamIDLobby; // Lobby ID + uint64 m_ulSteamIDUserChanged; // user who's status in the lobby just changed - can be recipient + uint64 m_ulSteamIDMakingChange; // Chat member who made the change (different from SteamIDUserChange if kicking, muting, etc.) + // for example, if one user kicks another from the lobby, this will be set to the id of the user who initiated the kick + uint32 m_rgfChatMemberStateChange; // bitfield of EChatMemberStateChange values +}; + + +//----------------------------------------------------------------------------- +// Purpose: A chat message for this lobby has been sent +// use GetLobbyChatEntry( m_iChatID ) to retrieve the contents of this message +//----------------------------------------------------------------------------- +struct LobbyChatMsg_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 7 }; + + uint64 m_ulSteamIDLobby; // the lobby id this is in + uint64 m_ulSteamIDUser; // steamID of the user who has sent this message + uint8 m_eChatEntryType; // type of message + uint32 m_iChatID; // index of the chat entry to lookup +}; + + +//----------------------------------------------------------------------------- +// Purpose: A game created a game for all the members of the lobby to join, +// as triggered by a SetLobbyGameServer() +// it's up to the individual clients to take action on this; the usual +// game behavior is to leave the lobby and connect to the specified game server +//----------------------------------------------------------------------------- +struct LobbyGameCreated_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 9 }; + + uint64 m_ulSteamIDLobby; // the lobby we were in + uint64 m_ulSteamIDGameServer; // the new game server that has been created or found for the lobby members + uint32 m_unIP; // IP & Port of the game server (if any) + uint16 m_usPort; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Number of matching lobbies found +// iterate the returned lobbies with GetLobbyByIndex(), from values 0 to m_nLobbiesMatching-1 +//----------------------------------------------------------------------------- +struct LobbyMatchList_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 10 }; + uint32 m_nLobbiesMatching; // Number of lobbies that matched search criteria and we have SteamIDs for +}; + + +//----------------------------------------------------------------------------- +// Purpose: posted if a user is forcefully removed from a lobby +// can occur if a user loses connection to Steam +//----------------------------------------------------------------------------- +struct LobbyKicked_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 12 }; + uint64 m_ulSteamIDLobby; // Lobby + uint64 m_ulSteamIDAdmin; // User who kicked you - possibly the ID of the lobby itself + uint8 m_bKickedDueToDisconnect; // true if you were kicked from the lobby due to the user losing connection to Steam (currently always true) +}; + + +//----------------------------------------------------------------------------- +// Purpose: Result of our request to create a Lobby +// m_eResult == k_EResultOK on success +// at this point, the lobby has been joined and is ready for use +// a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) +//----------------------------------------------------------------------------- +struct LobbyCreated_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 13 }; + + EResult m_eResult; // k_EResultOK - the lobby was successfully created + // k_EResultNoConnection - your Steam client doesn't have a connection to the back-end + // k_EResultTimeout - you the message to the Steam servers, but it didn't respond + // k_EResultFail - the server responded, but with an unknown internal error + // k_EResultAccessDenied - your game isn't set to allow lobbies, or your client does haven't rights to play the game + // k_EResultLimitExceeded - your game client has created too many lobbies + + uint64 m_ulSteamIDLobby; // chat room, zero if failed +}; + +// used by now obsolete RequestFriendsLobbiesResponse_t +// enum { k_iCallback = k_iSteamMatchmakingCallbacks + 14 }; + + +//----------------------------------------------------------------------------- +// Purpose: Result of CheckForPSNGameBootInvite +// m_eResult == k_EResultOK on success +// at this point, the local user may not have finishing joining this lobby; +// game code should wait until the subsequent LobbyEnter_t callback is received +//----------------------------------------------------------------------------- +struct PSNGameBootInviteResult_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 15 }; + + bool m_bGameBootInviteExists; + CSteamID m_steamIDLobby; // Should be valid if m_bGameBootInviteExists == true +}; + + +//----------------------------------------------------------------------------- +// Purpose: Result of our request to create a Lobby +// m_eResult == k_EResultOK on success +// at this point, the lobby has been joined and is ready for use +// a LobbyEnter_t callback will also be received (since the local user is joining their own lobby) +//----------------------------------------------------------------------------- +struct FavoritesListAccountsUpdated_t +{ + enum { k_iCallback = k_iSteamMatchmakingCallbacks + 16 }; + + EResult m_eResult; +}; + + + +//----------------------------------------------------------------------------- +// Callbacks for ISteamGameSearch (which go through the regular Steam callback registration system) + +struct SearchForGameProgressCallback_t +{ + enum { k_iCallback = k_iSteamGameSearchCallbacks + 1 }; + + uint64 m_ullSearchID; // all future callbacks referencing this search will include this Search ID + + EResult m_eResult; // if search has started this result will be k_EResultOK, any other value indicates search has failed to start or has terminated + CSteamID m_lobbyID; // lobby ID if lobby search, invalid steamID otherwise + CSteamID m_steamIDEndedSearch; // if search was terminated, steamID that terminated search + + int32 m_nSecondsRemainingEstimate; + int32 m_cPlayersSearching; +}; + +// notification to all players searching that a game has been found +struct SearchForGameResultCallback_t +{ + enum { k_iCallback = k_iSteamGameSearchCallbacks + 2 }; + + uint64 m_ullSearchID; + + EResult m_eResult; // if game/host was lost this will be an error value + + // if m_bGameFound is true the following are non-zero + int32 m_nCountPlayersInGame; + int32 m_nCountAcceptedGame; + // if m_steamIDHost is valid the host has started the game + CSteamID m_steamIDHost; + bool m_bFinalCallback; +}; + + +//----------------------------------------------------------------------------- +// ISteamGameSearch : Game Host API callbacks + +// callback from RequestPlayersForGame when the matchmaking service has started or ended search +// callback will also follow a call from CancelRequestPlayersForGame - m_bSearchInProgress will be false +struct RequestPlayersForGameProgressCallback_t +{ + enum { k_iCallback = k_iSteamGameSearchCallbacks + 11 }; + + EResult m_eResult; // m_ullSearchID will be non-zero if this is k_EResultOK + uint64 m_ullSearchID; // all future callbacks referencing this search will include this Search ID +}; + +// callback from RequestPlayersForGame +// one of these will be sent per player +// followed by additional callbacks when players accept or decline the game +struct RequestPlayersForGameResultCallback_t +{ + enum { k_iCallback = k_iSteamGameSearchCallbacks + 12 }; + + EResult m_eResult; // m_ullSearchID will be non-zero if this is k_EResultOK + uint64 m_ullSearchID; + + CSteamID m_SteamIDPlayerFound; // player steamID + CSteamID m_SteamIDLobby; // if the player is in a lobby, the lobby ID + enum PlayerAcceptState_t + { + k_EStateUnknown = 0, + k_EStatePlayerAccepted = 1, + k_EStatePlayerDeclined = 2, + }; + PlayerAcceptState_t m_ePlayerAcceptState; + int32 m_nPlayerIndex; + int32 m_nTotalPlayersFound; // expect this many callbacks at minimum + int32 m_nTotalPlayersAcceptedGame; + int32 m_nSuggestedTeamIndex; + uint64 m_ullUniqueGameID; +}; + + +struct RequestPlayersForGameFinalResultCallback_t +{ + enum { k_iCallback = k_iSteamGameSearchCallbacks + 13 }; + + EResult m_eResult; + uint64 m_ullSearchID; + uint64 m_ullUniqueGameID; +}; + + + +// this callback confirms that results were received by the matchmaking service for this player +struct SubmitPlayerResultResultCallback_t +{ + enum { k_iCallback = k_iSteamGameSearchCallbacks + 14 }; + + EResult m_eResult; + uint64 ullUniqueGameID; + CSteamID steamIDPlayer; +}; + + +// this callback confirms that the game is recorded as complete on the matchmaking service +// the next call to RequestPlayersForGame will generate a new unique game ID +struct EndGameResultCallback_t +{ + enum { k_iCallback = k_iSteamGameSearchCallbacks + 15 }; + + EResult m_eResult; + uint64 ullUniqueGameID; +}; + + +// Steam has responded to the user request to join a party via the given Beacon ID. +// If successful, the connect string contains game-specific instructions to connect +// to the game with that party. +struct JoinPartyCallback_t +{ + enum { k_iCallback = k_iSteamPartiesCallbacks + 1 }; + + EResult m_eResult; + PartyBeaconID_t m_ulBeaconID; + CSteamID m_SteamIDBeaconOwner; + char m_rgchConnectString[256]; +}; + +// Response to CreateBeacon request. If successful, the beacon ID is provided. +struct CreateBeaconCallback_t +{ + enum { k_iCallback = k_iSteamPartiesCallbacks + 2 }; + + EResult m_eResult; + PartyBeaconID_t m_ulBeaconID; +}; + +// Someone has used the beacon to join your party - they are in-flight now +// and we've reserved one of the open slots for them. +// You should confirm when they join your party by calling OnReservationCompleted(). +// Otherwise, Steam may timeout their reservation eventually. +struct ReservationNotificationCallback_t +{ + enum { k_iCallback = k_iSteamPartiesCallbacks + 3 }; + + PartyBeaconID_t m_ulBeaconID; + CSteamID m_steamIDJoiner; +}; + +// Response to ChangeNumOpenSlots call +struct ChangeNumOpenSlotsCallback_t +{ + enum { k_iCallback = k_iSteamPartiesCallbacks + 4 }; + + EResult m_eResult; +}; + +// The list of possible Party beacon locations has changed +struct AvailableBeaconLocationsUpdated_t +{ + enum { k_iCallback = k_iSteamPartiesCallbacks + 5 }; +}; + +// The list of active beacons may have changed +struct ActiveBeaconsUpdated_t +{ + enum { k_iCallback = k_iSteamPartiesCallbacks + 6 }; +}; + + +#pragma pack( pop ) + + +#endif // ISTEAMMATCHMAKING diff --git a/CodeGen/steam/isteammusic.h b/CodeGen/steam/isteammusic.h index 2100caef..ffa49a08 100644 --- a/CodeGen/steam/isteammusic.h +++ b/CodeGen/steam/isteammusic.h @@ -1,71 +1,71 @@ -//============ Copyright (c) Valve Corporation, All rights reserved. ============ - -#ifndef ISTEAMMUSIC_H -#define ISTEAMMUSIC_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" - -//----------------------------------------------------------------------------- -// Purpose: -//----------------------------------------------------------------------------- -enum AudioPlayback_Status -{ - AudioPlayback_Undefined = 0, - AudioPlayback_Playing = 1, - AudioPlayback_Paused = 2, - AudioPlayback_Idle = 3 -}; - - -//----------------------------------------------------------------------------- -// Purpose: Functions to control music playback in the steam client -//----------------------------------------------------------------------------- -class ISteamMusic -{ -public: - virtual bool BIsEnabled() = 0; - virtual bool BIsPlaying() = 0; - - virtual AudioPlayback_Status GetPlaybackStatus() = 0; - - virtual void Play() = 0; - virtual void Pause() = 0; - virtual void PlayPrevious() = 0; - virtual void PlayNext() = 0; - - // volume is between 0.0 and 1.0 - virtual void SetVolume( float flVolume ) = 0; - virtual float GetVolume() = 0; - -}; - -#define STEAMMUSIC_INTERFACE_VERSION "STEAMMUSIC_INTERFACE_VERSION001" - -// Global interface accessor -inline ISteamMusic *SteamMusic(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamMusic *, SteamMusic, STEAMMUSIC_INTERFACE_VERSION ); - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - - -STEAM_CALLBACK_BEGIN( PlaybackStatusHasChanged_t, k_iSteamMusicCallbacks + 1 ) -STEAM_CALLBACK_END(0) - -STEAM_CALLBACK_BEGIN( VolumeHasChanged_t, k_iSteamMusicCallbacks + 2 ) - STEAM_CALLBACK_MEMBER( 0, float, m_flNewVolume ) -STEAM_CALLBACK_END(1) - -#pragma pack( pop ) - - -#endif // #define ISTEAMMUSIC_H +//============ Copyright (c) Valve Corporation, All rights reserved. ============ + +#ifndef ISTEAMMUSIC_H +#define ISTEAMMUSIC_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +enum AudioPlayback_Status +{ + AudioPlayback_Undefined = 0, + AudioPlayback_Playing = 1, + AudioPlayback_Paused = 2, + AudioPlayback_Idle = 3 +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions to control music playback in the steam client +//----------------------------------------------------------------------------- +class ISteamMusic +{ +public: + virtual bool BIsEnabled() = 0; + virtual bool BIsPlaying() = 0; + + virtual AudioPlayback_Status GetPlaybackStatus() = 0; + + virtual void Play() = 0; + virtual void Pause() = 0; + virtual void PlayPrevious() = 0; + virtual void PlayNext() = 0; + + // volume is between 0.0 and 1.0 + virtual void SetVolume( float flVolume ) = 0; + virtual float GetVolume() = 0; + +}; + +#define STEAMMUSIC_INTERFACE_VERSION "STEAMMUSIC_INTERFACE_VERSION001" + +// Global interface accessor +inline ISteamMusic *SteamMusic(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamMusic *, SteamMusic, STEAMMUSIC_INTERFACE_VERSION ); + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + + +STEAM_CALLBACK_BEGIN( PlaybackStatusHasChanged_t, k_iSteamMusicCallbacks + 1 ) +STEAM_CALLBACK_END(0) + +STEAM_CALLBACK_BEGIN( VolumeHasChanged_t, k_iSteamMusicCallbacks + 2 ) + STEAM_CALLBACK_MEMBER( 0, float, m_flNewVolume ) +STEAM_CALLBACK_END(1) + +#pragma pack( pop ) + + +#endif // #define ISTEAMMUSIC_H diff --git a/CodeGen/steam/isteammusicremote.h b/CodeGen/steam/isteammusicremote.h index 39fd4a07..a36f4f87 100644 --- a/CodeGen/steam/isteammusicremote.h +++ b/CodeGen/steam/isteammusicremote.h @@ -1,133 +1,133 @@ -//============ Copyright (c) Valve Corporation, All rights reserved. ============ - -#ifndef ISTEAMMUSICREMOTE_H -#define ISTEAMMUSICREMOTE_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" -#include "isteammusic.h" - -#define k_SteamMusicNameMaxLength 255 -#define k_SteamMusicPNGMaxLength 65535 - - -class ISteamMusicRemote -{ -public: - // Service Definition - virtual bool RegisterSteamMusicRemote( const char *pchName ) = 0; - virtual bool DeregisterSteamMusicRemote() = 0; - virtual bool BIsCurrentMusicRemote() = 0; - virtual bool BActivationSuccess( bool bValue ) = 0; - - virtual bool SetDisplayName( const char *pchDisplayName ) = 0; - virtual bool SetPNGIcon_64x64( void *pvBuffer, uint32 cbBufferLength ) = 0; - - // Abilities for the user interface - virtual bool EnablePlayPrevious(bool bValue) = 0; - virtual bool EnablePlayNext( bool bValue ) = 0; - virtual bool EnableShuffled( bool bValue ) = 0; - virtual bool EnableLooped( bool bValue ) = 0; - virtual bool EnableQueue( bool bValue ) = 0; - virtual bool EnablePlaylists( bool bValue ) = 0; - - // Status - virtual bool UpdatePlaybackStatus( AudioPlayback_Status nStatus ) = 0; - virtual bool UpdateShuffled( bool bValue ) = 0; - virtual bool UpdateLooped( bool bValue ) = 0; - virtual bool UpdateVolume( float flValue ) = 0; // volume is between 0.0 and 1.0 - - // Current Entry - virtual bool CurrentEntryWillChange() = 0; - virtual bool CurrentEntryIsAvailable( bool bAvailable ) = 0; - virtual bool UpdateCurrentEntryText( const char *pchText ) = 0; - virtual bool UpdateCurrentEntryElapsedSeconds( int nValue ) = 0; - virtual bool UpdateCurrentEntryCoverArt( void *pvBuffer, uint32 cbBufferLength ) = 0; - virtual bool CurrentEntryDidChange() = 0; - - // Queue - virtual bool QueueWillChange() = 0; - virtual bool ResetQueueEntries() = 0; - virtual bool SetQueueEntry( int nID, int nPosition, const char *pchEntryText ) = 0; - virtual bool SetCurrentQueueEntry( int nID ) = 0; - virtual bool QueueDidChange() = 0; - - // Playlist - virtual bool PlaylistWillChange() = 0; - virtual bool ResetPlaylistEntries() = 0; - virtual bool SetPlaylistEntry( int nID, int nPosition, const char *pchEntryText ) = 0; - virtual bool SetCurrentPlaylistEntry( int nID ) = 0; - virtual bool PlaylistDidChange() = 0; -}; - -#define STEAMMUSICREMOTE_INTERFACE_VERSION "STEAMMUSICREMOTE_INTERFACE_VERSION001" - -// Global interface accessor -inline ISteamMusicRemote *SteamMusicRemote(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamMusicRemote *, SteamMusicRemote, STEAMMUSICREMOTE_INTERFACE_VERSION ); - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - - -STEAM_CALLBACK_BEGIN( MusicPlayerRemoteWillActivate_t, k_iSteamMusicRemoteCallbacks + 1) -STEAM_CALLBACK_END(0) - -STEAM_CALLBACK_BEGIN( MusicPlayerRemoteWillDeactivate_t, k_iSteamMusicRemoteCallbacks + 2 ) -STEAM_CALLBACK_END(0) - -STEAM_CALLBACK_BEGIN( MusicPlayerRemoteToFront_t, k_iSteamMusicRemoteCallbacks + 3 ) -STEAM_CALLBACK_END(0) - -STEAM_CALLBACK_BEGIN( MusicPlayerWillQuit_t, k_iSteamMusicRemoteCallbacks + 4 ) -STEAM_CALLBACK_END(0) - -STEAM_CALLBACK_BEGIN( MusicPlayerWantsPlay_t, k_iSteamMusicRemoteCallbacks + 5 ) -STEAM_CALLBACK_END(0) - -STEAM_CALLBACK_BEGIN( MusicPlayerWantsPause_t, k_iSteamMusicRemoteCallbacks + 6 ) -STEAM_CALLBACK_END(0) - -STEAM_CALLBACK_BEGIN( MusicPlayerWantsPlayPrevious_t, k_iSteamMusicRemoteCallbacks + 7 ) -STEAM_CALLBACK_END(0) - -STEAM_CALLBACK_BEGIN( MusicPlayerWantsPlayNext_t, k_iSteamMusicRemoteCallbacks + 8 ) -STEAM_CALLBACK_END(0) - -STEAM_CALLBACK_BEGIN( MusicPlayerWantsShuffled_t, k_iSteamMusicRemoteCallbacks + 9 ) - STEAM_CALLBACK_MEMBER( 0, bool, m_bShuffled ) -STEAM_CALLBACK_END(1) - -STEAM_CALLBACK_BEGIN( MusicPlayerWantsLooped_t, k_iSteamMusicRemoteCallbacks + 10 ) - STEAM_CALLBACK_MEMBER(0, bool, m_bLooped ) -STEAM_CALLBACK_END(1) - -STEAM_CALLBACK_BEGIN( MusicPlayerWantsVolume_t, k_iSteamMusicCallbacks + 11 ) - STEAM_CALLBACK_MEMBER(0, float, m_flNewVolume) -STEAM_CALLBACK_END(1) - -STEAM_CALLBACK_BEGIN( MusicPlayerSelectsQueueEntry_t, k_iSteamMusicCallbacks + 12 ) - STEAM_CALLBACK_MEMBER(0, int, nID ) -STEAM_CALLBACK_END(1) - -STEAM_CALLBACK_BEGIN( MusicPlayerSelectsPlaylistEntry_t, k_iSteamMusicCallbacks + 13 ) - STEAM_CALLBACK_MEMBER(0, int, nID ) -STEAM_CALLBACK_END(1) - -STEAM_CALLBACK_BEGIN( MusicPlayerWantsPlayingRepeatStatus_t, k_iSteamMusicRemoteCallbacks + 14 ) - STEAM_CALLBACK_MEMBER(0, int, m_nPlayingRepeatStatus ) -STEAM_CALLBACK_END(1) - -#pragma pack( pop ) - - - -#endif // #define ISTEAMMUSICREMOTE_H +//============ Copyright (c) Valve Corporation, All rights reserved. ============ + +#ifndef ISTEAMMUSICREMOTE_H +#define ISTEAMMUSICREMOTE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" +#include "isteammusic.h" + +#define k_SteamMusicNameMaxLength 255 +#define k_SteamMusicPNGMaxLength 65535 + + +class ISteamMusicRemote +{ +public: + // Service Definition + virtual bool RegisterSteamMusicRemote( const char *pchName ) = 0; + virtual bool DeregisterSteamMusicRemote() = 0; + virtual bool BIsCurrentMusicRemote() = 0; + virtual bool BActivationSuccess( bool bValue ) = 0; + + virtual bool SetDisplayName( const char *pchDisplayName ) = 0; + virtual bool SetPNGIcon_64x64( void *pvBuffer, uint32 cbBufferLength ) = 0; + + // Abilities for the user interface + virtual bool EnablePlayPrevious(bool bValue) = 0; + virtual bool EnablePlayNext( bool bValue ) = 0; + virtual bool EnableShuffled( bool bValue ) = 0; + virtual bool EnableLooped( bool bValue ) = 0; + virtual bool EnableQueue( bool bValue ) = 0; + virtual bool EnablePlaylists( bool bValue ) = 0; + + // Status + virtual bool UpdatePlaybackStatus( AudioPlayback_Status nStatus ) = 0; + virtual bool UpdateShuffled( bool bValue ) = 0; + virtual bool UpdateLooped( bool bValue ) = 0; + virtual bool UpdateVolume( float flValue ) = 0; // volume is between 0.0 and 1.0 + + // Current Entry + virtual bool CurrentEntryWillChange() = 0; + virtual bool CurrentEntryIsAvailable( bool bAvailable ) = 0; + virtual bool UpdateCurrentEntryText( const char *pchText ) = 0; + virtual bool UpdateCurrentEntryElapsedSeconds( int nValue ) = 0; + virtual bool UpdateCurrentEntryCoverArt( void *pvBuffer, uint32 cbBufferLength ) = 0; + virtual bool CurrentEntryDidChange() = 0; + + // Queue + virtual bool QueueWillChange() = 0; + virtual bool ResetQueueEntries() = 0; + virtual bool SetQueueEntry( int nID, int nPosition, const char *pchEntryText ) = 0; + virtual bool SetCurrentQueueEntry( int nID ) = 0; + virtual bool QueueDidChange() = 0; + + // Playlist + virtual bool PlaylistWillChange() = 0; + virtual bool ResetPlaylistEntries() = 0; + virtual bool SetPlaylistEntry( int nID, int nPosition, const char *pchEntryText ) = 0; + virtual bool SetCurrentPlaylistEntry( int nID ) = 0; + virtual bool PlaylistDidChange() = 0; +}; + +#define STEAMMUSICREMOTE_INTERFACE_VERSION "STEAMMUSICREMOTE_INTERFACE_VERSION001" + +// Global interface accessor +inline ISteamMusicRemote *SteamMusicRemote(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamMusicRemote *, SteamMusicRemote, STEAMMUSICREMOTE_INTERFACE_VERSION ); + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + + +STEAM_CALLBACK_BEGIN( MusicPlayerRemoteWillActivate_t, k_iSteamMusicRemoteCallbacks + 1) +STEAM_CALLBACK_END(0) + +STEAM_CALLBACK_BEGIN( MusicPlayerRemoteWillDeactivate_t, k_iSteamMusicRemoteCallbacks + 2 ) +STEAM_CALLBACK_END(0) + +STEAM_CALLBACK_BEGIN( MusicPlayerRemoteToFront_t, k_iSteamMusicRemoteCallbacks + 3 ) +STEAM_CALLBACK_END(0) + +STEAM_CALLBACK_BEGIN( MusicPlayerWillQuit_t, k_iSteamMusicRemoteCallbacks + 4 ) +STEAM_CALLBACK_END(0) + +STEAM_CALLBACK_BEGIN( MusicPlayerWantsPlay_t, k_iSteamMusicRemoteCallbacks + 5 ) +STEAM_CALLBACK_END(0) + +STEAM_CALLBACK_BEGIN( MusicPlayerWantsPause_t, k_iSteamMusicRemoteCallbacks + 6 ) +STEAM_CALLBACK_END(0) + +STEAM_CALLBACK_BEGIN( MusicPlayerWantsPlayPrevious_t, k_iSteamMusicRemoteCallbacks + 7 ) +STEAM_CALLBACK_END(0) + +STEAM_CALLBACK_BEGIN( MusicPlayerWantsPlayNext_t, k_iSteamMusicRemoteCallbacks + 8 ) +STEAM_CALLBACK_END(0) + +STEAM_CALLBACK_BEGIN( MusicPlayerWantsShuffled_t, k_iSteamMusicRemoteCallbacks + 9 ) + STEAM_CALLBACK_MEMBER( 0, bool, m_bShuffled ) +STEAM_CALLBACK_END(1) + +STEAM_CALLBACK_BEGIN( MusicPlayerWantsLooped_t, k_iSteamMusicRemoteCallbacks + 10 ) + STEAM_CALLBACK_MEMBER(0, bool, m_bLooped ) +STEAM_CALLBACK_END(1) + +STEAM_CALLBACK_BEGIN( MusicPlayerWantsVolume_t, k_iSteamMusicCallbacks + 11 ) + STEAM_CALLBACK_MEMBER(0, float, m_flNewVolume) +STEAM_CALLBACK_END(1) + +STEAM_CALLBACK_BEGIN( MusicPlayerSelectsQueueEntry_t, k_iSteamMusicCallbacks + 12 ) + STEAM_CALLBACK_MEMBER(0, int, nID ) +STEAM_CALLBACK_END(1) + +STEAM_CALLBACK_BEGIN( MusicPlayerSelectsPlaylistEntry_t, k_iSteamMusicCallbacks + 13 ) + STEAM_CALLBACK_MEMBER(0, int, nID ) +STEAM_CALLBACK_END(1) + +STEAM_CALLBACK_BEGIN( MusicPlayerWantsPlayingRepeatStatus_t, k_iSteamMusicRemoteCallbacks + 14 ) + STEAM_CALLBACK_MEMBER(0, int, m_nPlayingRepeatStatus ) +STEAM_CALLBACK_END(1) + +#pragma pack( pop ) + + + +#endif // #define ISTEAMMUSICREMOTE_H diff --git a/CodeGen/steam/isteamnetworking.h b/CodeGen/steam/isteamnetworking.h index b214a5ee..b7e077a3 100644 --- a/CodeGen/steam/isteamnetworking.h +++ b/CodeGen/steam/isteamnetworking.h @@ -1,343 +1,343 @@ -//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= -// -// Purpose: interface to steam managing network connections between game clients & servers -// -//============================================================================= - -#ifndef ISTEAMNETWORKING -#define ISTEAMNETWORKING -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" - -// list of possible errors returned by SendP2PPacket() API -// these will be posted in the P2PSessionConnectFail_t callback -enum EP2PSessionError -{ - k_EP2PSessionErrorNone = 0, - k_EP2PSessionErrorNoRightsToApp = 2, // local user doesn't own the app that is running - k_EP2PSessionErrorTimeout = 4, // target isn't responding, perhaps not calling AcceptP2PSessionWithUser() - // corporate firewalls can also block this (NAT traversal is not firewall traversal) - // make sure that UDP ports 3478, 4379, and 4380 are open in an outbound direction - - // The following error codes were removed and will never be sent. - // For privacy reasons, there is no reply if the user is offline or playing another game. - k_EP2PSessionErrorNotRunningApp_DELETED = 1, - k_EP2PSessionErrorDestinationNotLoggedIn_DELETED = 3, - - k_EP2PSessionErrorMax = 5 -}; - -// SendP2PPacket() send types -// Typically k_EP2PSendUnreliable is what you want for UDP-like packets, k_EP2PSendReliable for TCP-like packets -enum EP2PSend -{ - // Basic UDP send. Packets can't be bigger than 1200 bytes (your typical MTU size). Can be lost, or arrive out of order (rare). - // The sending API does have some knowledge of the underlying connection, so if there is no NAT-traversal accomplished or - // there is a recognized adjustment happening on the connection, the packet will be batched until the connection is open again. - k_EP2PSendUnreliable = 0, - - // As above, but if the underlying p2p connection isn't yet established the packet will just be thrown away. Using this on the first - // packet sent to a remote host almost guarantees the packet will be dropped. - // This is only really useful for kinds of data that should never buffer up, i.e. voice payload packets - k_EP2PSendUnreliableNoDelay = 1, - - // Reliable message send. Can send up to 1MB of data in a single message. - // Does fragmentation/re-assembly of messages under the hood, as well as a sliding window for efficient sends of large chunks of data. - k_EP2PSendReliable = 2, - - // As above, but applies the Nagle algorithm to the send - sends will accumulate - // until the current MTU size (typically ~1200 bytes, but can change) or ~200ms has passed (Nagle algorithm). - // Useful if you want to send a set of smaller messages but have the coalesced into a single packet - // Since the reliable stream is all ordered, you can do several small message sends with k_EP2PSendReliableWithBuffering and then - // do a normal k_EP2PSendReliable to force all the buffered data to be sent. - k_EP2PSendReliableWithBuffering = 3, - -}; - - -// connection state to a specified user, returned by GetP2PSessionState() -// this is under-the-hood info about what's going on with a SendP2PPacket(), shouldn't be needed except for debuggin -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif -struct P2PSessionState_t -{ - uint8 m_bConnectionActive; // true if we've got an active open connection - uint8 m_bConnecting; // true if we're currently trying to establish a connection - uint8 m_eP2PSessionError; // last error recorded (see enum above) - uint8 m_bUsingRelay; // true if it's going through a relay server (TURN) - int32 m_nBytesQueuedForSend; - int32 m_nPacketsQueuedForSend; - uint32 m_nRemoteIP; // potential IP:Port of remote host. Could be TURN server. - uint16 m_nRemotePort; // Only exists for compatibility with older authentication api's -}; -#pragma pack( pop ) - - -// handle to a socket -typedef uint32 SNetSocket_t; // CreateP2PConnectionSocket() -typedef uint32 SNetListenSocket_t; // CreateListenSocket() - -// connection progress indicators, used by CreateP2PConnectionSocket() -enum ESNetSocketState -{ - k_ESNetSocketStateInvalid = 0, - - // communication is valid - k_ESNetSocketStateConnected = 1, - - // states while establishing a connection - k_ESNetSocketStateInitiated = 10, // the connection state machine has started - - // p2p connections - k_ESNetSocketStateLocalCandidatesFound = 11, // we've found our local IP info - k_ESNetSocketStateReceivedRemoteCandidates = 12,// we've received information from the remote machine, via the Steam back-end, about their IP info - - // direct connections - k_ESNetSocketStateChallengeHandshake = 15, // we've received a challenge packet from the server - - // failure states - k_ESNetSocketStateDisconnecting = 21, // the API shut it down, and we're in the process of telling the other end - k_ESNetSocketStateLocalDisconnect = 22, // the API shut it down, and we've completed shutdown - k_ESNetSocketStateTimeoutDuringConnect = 23, // we timed out while trying to creating the connection - k_ESNetSocketStateRemoteEndDisconnected = 24, // the remote end has disconnected from us - k_ESNetSocketStateConnectionBroken = 25, // connection has been broken; either the other end has disappeared or our local network connection has broke - -}; - -// describes how the socket is currently connected -enum ESNetSocketConnectionType -{ - k_ESNetSocketConnectionTypeNotConnected = 0, - k_ESNetSocketConnectionTypeUDP = 1, - k_ESNetSocketConnectionTypeUDPRelay = 2, -}; - - -//----------------------------------------------------------------------------- -// Purpose: Functions for making connections and sending data between clients, -// traversing NAT's where possible -// -// NOTE: This interface is deprecated and may be removed in a future release of -/// the Steamworks SDK. Please see ISteamNetworkingSockets and -/// ISteamNetworkingMessages -//----------------------------------------------------------------------------- -class ISteamNetworking -{ -public: - //////////////////////////////////////////////////////////////////////////////////////////// - // - // UDP-style (connectionless) networking interface. These functions send messages using - // an API organized around the destination. Reliable and unreliable messages are supported. - // - // For a more TCP-style interface (meaning you have a connection handle), see the functions below. - // Both interface styles can send both reliable and unreliable messages. - // - // Automatically establishes NAT-traversing or Relay server connections - // - // These APIs are deprecated, and may be removed in a future version of the Steamworks - // SDK. See ISteamNetworkingMessages. - - // Sends a P2P packet to the specified user - // UDP-like, unreliable and a max packet size of 1200 bytes - // the first packet send may be delayed as the NAT-traversal code runs - // if we can't get through to the user, an error will be posted via the callback P2PSessionConnectFail_t - // see EP2PSend enum above for the descriptions of the different ways of sending packets - // - // nChannel is a routing number you can use to help route message to different systems - you'll have to call ReadP2PPacket() - // with the same channel number in order to retrieve the data on the other end - // using different channels to talk to the same user will still use the same underlying p2p connection, saving on resources - virtual bool SendP2PPacket( CSteamID steamIDRemote, const void *pubData, uint32 cubData, EP2PSend eP2PSendType, int nChannel = 0 ) = 0; - - // returns true if any data is available for read, and the amount of data that will need to be read - virtual bool IsP2PPacketAvailable( uint32 *pcubMsgSize, int nChannel = 0 ) = 0; - - // reads in a packet that has been sent from another user via SendP2PPacket() - // returns the size of the message and the steamID of the user who sent it in the last two parameters - // if the buffer passed in is too small, the message will be truncated - // this call is not blocking, and will return false if no data is available - virtual bool ReadP2PPacket( void *pubDest, uint32 cubDest, uint32 *pcubMsgSize, CSteamID *psteamIDRemote, int nChannel = 0 ) = 0; - - // AcceptP2PSessionWithUser() should only be called in response to a P2PSessionRequest_t callback - // P2PSessionRequest_t will be posted if another user tries to send you a packet that you haven't talked to yet - // if you don't want to talk to the user, just ignore the request - // if the user continues to send you packets, another P2PSessionRequest_t will be posted periodically - // this may be called multiple times for a single user - // (if you've called SendP2PPacket() on the other user, this implicitly accepts the session request) - virtual bool AcceptP2PSessionWithUser( CSteamID steamIDRemote ) = 0; - - // call CloseP2PSessionWithUser() when you're done talking to a user, will free up resources under-the-hood - // if the remote user tries to send data to you again, another P2PSessionRequest_t callback will be posted - virtual bool CloseP2PSessionWithUser( CSteamID steamIDRemote ) = 0; - - // call CloseP2PChannelWithUser() when you're done talking to a user on a specific channel. Once all channels - // open channels to a user have been closed, the open session to the user will be closed and new data from this - // user will trigger a P2PSessionRequest_t callback - virtual bool CloseP2PChannelWithUser( CSteamID steamIDRemote, int nChannel ) = 0; - - // fills out P2PSessionState_t structure with details about the underlying connection to the user - // should only needed for debugging purposes - // returns false if no connection exists to the specified user - virtual bool GetP2PSessionState( CSteamID steamIDRemote, P2PSessionState_t *pConnectionState ) = 0; - - // Allow P2P connections to fall back to being relayed through the Steam servers if a direct connection - // or NAT-traversal cannot be established. Only applies to connections created after setting this value, - // or to existing connections that need to automatically reconnect after this value is set. - // - // P2P packet relay is allowed by default - // - // NOTE: This function is deprecated and may be removed in a future version of the SDK. For - // security purposes, we may decide to relay the traffic to certain peers, even if you pass false - // to this function, to prevent revealing the client's IP address top another peer. - virtual bool AllowP2PPacketRelay( bool bAllow ) = 0; - - - //////////////////////////////////////////////////////////////////////////////////////////// - // - // LISTEN / CONNECT connection-oriented interface functions - // - // These functions are more like a client-server TCP API. One side is the "server" - // and "listens" for incoming connections, which then must be "accepted." The "client" - // initiates a connection by "connecting." Sending and receiving is done through a - // connection handle. - // - // For a more UDP-style interface, where you do not track connection handles but - // simply send messages to a SteamID, use the UDP-style functions above. - // - // Both methods can send both reliable and unreliable methods. - // - // These APIs are deprecated, and may be removed in a future version of the Steamworks - // SDK. See ISteamNetworkingSockets. - // - //////////////////////////////////////////////////////////////////////////////////////////// - - - // creates a socket and listens others to connect - // will trigger a SocketStatusCallback_t callback on another client connecting - // nVirtualP2PPort is the unique ID that the client will connect to, in case you have multiple ports - // this can usually just be 0 unless you want multiple sets of connections - // unIP is the local IP address to bind to - // pass in 0 if you just want the default local IP - // unPort is the port to use - // pass in 0 if you don't want users to be able to connect via IP/Port, but expect to be always peer-to-peer connections only - virtual SNetListenSocket_t CreateListenSocket( int nVirtualP2PPort, SteamIPAddress_t nIP, uint16 nPort, bool bAllowUseOfPacketRelay ) = 0; - - // creates a socket and begin connection to a remote destination - // can connect via a known steamID (client or game server), or directly to an IP - // on success will trigger a SocketStatusCallback_t callback - // on failure or timeout will trigger a SocketStatusCallback_t callback with a failure code in m_eSNetSocketState - virtual SNetSocket_t CreateP2PConnectionSocket( CSteamID steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay ) = 0; - virtual SNetSocket_t CreateConnectionSocket( SteamIPAddress_t nIP, uint16 nPort, int nTimeoutSec ) = 0; - - // disconnects the connection to the socket, if any, and invalidates the handle - // any unread data on the socket will be thrown away - // if bNotifyRemoteEnd is set, socket will not be completely destroyed until the remote end acknowledges the disconnect - virtual bool DestroySocket( SNetSocket_t hSocket, bool bNotifyRemoteEnd ) = 0; - // destroying a listen socket will automatically kill all the regular sockets generated from it - virtual bool DestroyListenSocket( SNetListenSocket_t hSocket, bool bNotifyRemoteEnd ) = 0; - - // sending data - // must be a handle to a connected socket - // data is all sent via UDP, and thus send sizes are limited to 1200 bytes; after this, many routers will start dropping packets - // use the reliable flag with caution; although the resend rate is pretty aggressive, - // it can still cause stalls in receiving data (like TCP) - virtual bool SendDataOnSocket( SNetSocket_t hSocket, void *pubData, uint32 cubData, bool bReliable ) = 0; - - // receiving data - // returns false if there is no data remaining - // fills out *pcubMsgSize with the size of the next message, in bytes - virtual bool IsDataAvailableOnSocket( SNetSocket_t hSocket, uint32 *pcubMsgSize ) = 0; - - // fills in pubDest with the contents of the message - // messages are always complete, of the same size as was sent (i.e. packetized, not streaming) - // if *pcubMsgSize < cubDest, only partial data is written - // returns false if no data is available - virtual bool RetrieveDataFromSocket( SNetSocket_t hSocket, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize ) = 0; - - // checks for data from any socket that has been connected off this listen socket - // returns false if there is no data remaining - // fills out *pcubMsgSize with the size of the next message, in bytes - // fills out *phSocket with the socket that data is available on - virtual bool IsDataAvailable( SNetListenSocket_t hListenSocket, uint32 *pcubMsgSize, SNetSocket_t *phSocket ) = 0; - - // retrieves data from any socket that has been connected off this listen socket - // fills in pubDest with the contents of the message - // messages are always complete, of the same size as was sent (i.e. packetized, not streaming) - // if *pcubMsgSize < cubDest, only partial data is written - // returns false if no data is available - // fills out *phSocket with the socket that data is available on - virtual bool RetrieveData( SNetListenSocket_t hListenSocket, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize, SNetSocket_t *phSocket ) = 0; - - // returns information about the specified socket, filling out the contents of the pointers - virtual bool GetSocketInfo( SNetSocket_t hSocket, CSteamID *pSteamIDRemote, int *peSocketStatus, SteamIPAddress_t *punIPRemote, uint16 *punPortRemote ) = 0; - - // returns which local port the listen socket is bound to - // *pnIP and *pnPort will be 0 if the socket is set to listen for P2P connections only - virtual bool GetListenSocketInfo( SNetListenSocket_t hListenSocket, SteamIPAddress_t *pnIP, uint16 *pnPort ) = 0; - - // returns true to describe how the socket ended up connecting - virtual ESNetSocketConnectionType GetSocketConnectionType( SNetSocket_t hSocket ) = 0; - - // max packet size, in bytes - virtual int GetMaxPacketSize( SNetSocket_t hSocket ) = 0; -}; -#define STEAMNETWORKING_INTERFACE_VERSION "SteamNetworking006" - -// Global interface accessor -inline ISteamNetworking *SteamNetworking(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamNetworking *, SteamNetworking, STEAMNETWORKING_INTERFACE_VERSION ); - -// Global accessor for the gameserver client -inline ISteamNetworking *SteamGameServerNetworking(); -STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamNetworking *, SteamGameServerNetworking, STEAMNETWORKING_INTERFACE_VERSION ); - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - -// callback notification - a user wants to talk to us over the P2P channel via the SendP2PPacket() API -// in response, a call to AcceptP2PPacketsFromUser() needs to be made, if you want to talk with them -struct P2PSessionRequest_t -{ - enum { k_iCallback = k_iSteamNetworkingCallbacks + 2 }; - CSteamID m_steamIDRemote; // user who wants to talk to us -}; - - -// callback notification - packets can't get through to the specified user via the SendP2PPacket() API -// all packets queued packets unsent at this point will be dropped -// further attempts to send will retry making the connection (but will be dropped if we fail again) -struct P2PSessionConnectFail_t -{ - enum { k_iCallback = k_iSteamNetworkingCallbacks + 3 }; - CSteamID m_steamIDRemote; // user we were sending packets to - uint8 m_eP2PSessionError; // EP2PSessionError indicating why we're having trouble -}; - - -// callback notification - status of a socket has changed -// used as part of the CreateListenSocket() / CreateP2PConnectionSocket() -struct SocketStatusCallback_t -{ - enum { k_iCallback = k_iSteamNetworkingCallbacks + 1 }; - SNetSocket_t m_hSocket; // the socket used to send/receive data to the remote host - SNetListenSocket_t m_hListenSocket; // this is the server socket that we were listening on; NULL if this was an outgoing connection - CSteamID m_steamIDRemote; // remote steamID we have connected to, if it has one - int m_eSNetSocketState; // socket state, ESNetSocketState -}; - -#pragma pack( pop ) - -#endif // ISTEAMNETWORKING +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam managing network connections between game clients & servers +// +//============================================================================= + +#ifndef ISTEAMNETWORKING +#define ISTEAMNETWORKING +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + +// list of possible errors returned by SendP2PPacket() API +// these will be posted in the P2PSessionConnectFail_t callback +enum EP2PSessionError +{ + k_EP2PSessionErrorNone = 0, + k_EP2PSessionErrorNoRightsToApp = 2, // local user doesn't own the app that is running + k_EP2PSessionErrorTimeout = 4, // target isn't responding, perhaps not calling AcceptP2PSessionWithUser() + // corporate firewalls can also block this (NAT traversal is not firewall traversal) + // make sure that UDP ports 3478, 4379, and 4380 are open in an outbound direction + + // The following error codes were removed and will never be sent. + // For privacy reasons, there is no reply if the user is offline or playing another game. + k_EP2PSessionErrorNotRunningApp_DELETED = 1, + k_EP2PSessionErrorDestinationNotLoggedIn_DELETED = 3, + + k_EP2PSessionErrorMax = 5 +}; + +// SendP2PPacket() send types +// Typically k_EP2PSendUnreliable is what you want for UDP-like packets, k_EP2PSendReliable for TCP-like packets +enum EP2PSend +{ + // Basic UDP send. Packets can't be bigger than 1200 bytes (your typical MTU size). Can be lost, or arrive out of order (rare). + // The sending API does have some knowledge of the underlying connection, so if there is no NAT-traversal accomplished or + // there is a recognized adjustment happening on the connection, the packet will be batched until the connection is open again. + k_EP2PSendUnreliable = 0, + + // As above, but if the underlying p2p connection isn't yet established the packet will just be thrown away. Using this on the first + // packet sent to a remote host almost guarantees the packet will be dropped. + // This is only really useful for kinds of data that should never buffer up, i.e. voice payload packets + k_EP2PSendUnreliableNoDelay = 1, + + // Reliable message send. Can send up to 1MB of data in a single message. + // Does fragmentation/re-assembly of messages under the hood, as well as a sliding window for efficient sends of large chunks of data. + k_EP2PSendReliable = 2, + + // As above, but applies the Nagle algorithm to the send - sends will accumulate + // until the current MTU size (typically ~1200 bytes, but can change) or ~200ms has passed (Nagle algorithm). + // Useful if you want to send a set of smaller messages but have the coalesced into a single packet + // Since the reliable stream is all ordered, you can do several small message sends with k_EP2PSendReliableWithBuffering and then + // do a normal k_EP2PSendReliable to force all the buffered data to be sent. + k_EP2PSendReliableWithBuffering = 3, + +}; + + +// connection state to a specified user, returned by GetP2PSessionState() +// this is under-the-hood info about what's going on with a SendP2PPacket(), shouldn't be needed except for debuggin +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif +struct P2PSessionState_t +{ + uint8 m_bConnectionActive; // true if we've got an active open connection + uint8 m_bConnecting; // true if we're currently trying to establish a connection + uint8 m_eP2PSessionError; // last error recorded (see enum above) + uint8 m_bUsingRelay; // true if it's going through a relay server (TURN) + int32 m_nBytesQueuedForSend; + int32 m_nPacketsQueuedForSend; + uint32 m_nRemoteIP; // potential IP:Port of remote host. Could be TURN server. + uint16 m_nRemotePort; // Only exists for compatibility with older authentication api's +}; +#pragma pack( pop ) + + +// handle to a socket +typedef uint32 SNetSocket_t; // CreateP2PConnectionSocket() +typedef uint32 SNetListenSocket_t; // CreateListenSocket() + +// connection progress indicators, used by CreateP2PConnectionSocket() +enum ESNetSocketState +{ + k_ESNetSocketStateInvalid = 0, + + // communication is valid + k_ESNetSocketStateConnected = 1, + + // states while establishing a connection + k_ESNetSocketStateInitiated = 10, // the connection state machine has started + + // p2p connections + k_ESNetSocketStateLocalCandidatesFound = 11, // we've found our local IP info + k_ESNetSocketStateReceivedRemoteCandidates = 12,// we've received information from the remote machine, via the Steam back-end, about their IP info + + // direct connections + k_ESNetSocketStateChallengeHandshake = 15, // we've received a challenge packet from the server + + // failure states + k_ESNetSocketStateDisconnecting = 21, // the API shut it down, and we're in the process of telling the other end + k_ESNetSocketStateLocalDisconnect = 22, // the API shut it down, and we've completed shutdown + k_ESNetSocketStateTimeoutDuringConnect = 23, // we timed out while trying to creating the connection + k_ESNetSocketStateRemoteEndDisconnected = 24, // the remote end has disconnected from us + k_ESNetSocketStateConnectionBroken = 25, // connection has been broken; either the other end has disappeared or our local network connection has broke + +}; + +// describes how the socket is currently connected +enum ESNetSocketConnectionType +{ + k_ESNetSocketConnectionTypeNotConnected = 0, + k_ESNetSocketConnectionTypeUDP = 1, + k_ESNetSocketConnectionTypeUDPRelay = 2, +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions for making connections and sending data between clients, +// traversing NAT's where possible +// +// NOTE: This interface is deprecated and may be removed in a future release of +/// the Steamworks SDK. Please see ISteamNetworkingSockets and +/// ISteamNetworkingMessages +//----------------------------------------------------------------------------- +class ISteamNetworking +{ +public: + //////////////////////////////////////////////////////////////////////////////////////////// + // + // UDP-style (connectionless) networking interface. These functions send messages using + // an API organized around the destination. Reliable and unreliable messages are supported. + // + // For a more TCP-style interface (meaning you have a connection handle), see the functions below. + // Both interface styles can send both reliable and unreliable messages. + // + // Automatically establishes NAT-traversing or Relay server connections + // + // These APIs are deprecated, and may be removed in a future version of the Steamworks + // SDK. See ISteamNetworkingMessages. + + // Sends a P2P packet to the specified user + // UDP-like, unreliable and a max packet size of 1200 bytes + // the first packet send may be delayed as the NAT-traversal code runs + // if we can't get through to the user, an error will be posted via the callback P2PSessionConnectFail_t + // see EP2PSend enum above for the descriptions of the different ways of sending packets + // + // nChannel is a routing number you can use to help route message to different systems - you'll have to call ReadP2PPacket() + // with the same channel number in order to retrieve the data on the other end + // using different channels to talk to the same user will still use the same underlying p2p connection, saving on resources + virtual bool SendP2PPacket( CSteamID steamIDRemote, const void *pubData, uint32 cubData, EP2PSend eP2PSendType, int nChannel = 0 ) = 0; + + // returns true if any data is available for read, and the amount of data that will need to be read + virtual bool IsP2PPacketAvailable( uint32 *pcubMsgSize, int nChannel = 0 ) = 0; + + // reads in a packet that has been sent from another user via SendP2PPacket() + // returns the size of the message and the steamID of the user who sent it in the last two parameters + // if the buffer passed in is too small, the message will be truncated + // this call is not blocking, and will return false if no data is available + virtual bool ReadP2PPacket( void *pubDest, uint32 cubDest, uint32 *pcubMsgSize, CSteamID *psteamIDRemote, int nChannel = 0 ) = 0; + + // AcceptP2PSessionWithUser() should only be called in response to a P2PSessionRequest_t callback + // P2PSessionRequest_t will be posted if another user tries to send you a packet that you haven't talked to yet + // if you don't want to talk to the user, just ignore the request + // if the user continues to send you packets, another P2PSessionRequest_t will be posted periodically + // this may be called multiple times for a single user + // (if you've called SendP2PPacket() on the other user, this implicitly accepts the session request) + virtual bool AcceptP2PSessionWithUser( CSteamID steamIDRemote ) = 0; + + // call CloseP2PSessionWithUser() when you're done talking to a user, will free up resources under-the-hood + // if the remote user tries to send data to you again, another P2PSessionRequest_t callback will be posted + virtual bool CloseP2PSessionWithUser( CSteamID steamIDRemote ) = 0; + + // call CloseP2PChannelWithUser() when you're done talking to a user on a specific channel. Once all channels + // open channels to a user have been closed, the open session to the user will be closed and new data from this + // user will trigger a P2PSessionRequest_t callback + virtual bool CloseP2PChannelWithUser( CSteamID steamIDRemote, int nChannel ) = 0; + + // fills out P2PSessionState_t structure with details about the underlying connection to the user + // should only needed for debugging purposes + // returns false if no connection exists to the specified user + virtual bool GetP2PSessionState( CSteamID steamIDRemote, P2PSessionState_t *pConnectionState ) = 0; + + // Allow P2P connections to fall back to being relayed through the Steam servers if a direct connection + // or NAT-traversal cannot be established. Only applies to connections created after setting this value, + // or to existing connections that need to automatically reconnect after this value is set. + // + // P2P packet relay is allowed by default + // + // NOTE: This function is deprecated and may be removed in a future version of the SDK. For + // security purposes, we may decide to relay the traffic to certain peers, even if you pass false + // to this function, to prevent revealing the client's IP address top another peer. + virtual bool AllowP2PPacketRelay( bool bAllow ) = 0; + + + //////////////////////////////////////////////////////////////////////////////////////////// + // + // LISTEN / CONNECT connection-oriented interface functions + // + // These functions are more like a client-server TCP API. One side is the "server" + // and "listens" for incoming connections, which then must be "accepted." The "client" + // initiates a connection by "connecting." Sending and receiving is done through a + // connection handle. + // + // For a more UDP-style interface, where you do not track connection handles but + // simply send messages to a SteamID, use the UDP-style functions above. + // + // Both methods can send both reliable and unreliable methods. + // + // These APIs are deprecated, and may be removed in a future version of the Steamworks + // SDK. See ISteamNetworkingSockets. + // + //////////////////////////////////////////////////////////////////////////////////////////// + + + // creates a socket and listens others to connect + // will trigger a SocketStatusCallback_t callback on another client connecting + // nVirtualP2PPort is the unique ID that the client will connect to, in case you have multiple ports + // this can usually just be 0 unless you want multiple sets of connections + // unIP is the local IP address to bind to + // pass in 0 if you just want the default local IP + // unPort is the port to use + // pass in 0 if you don't want users to be able to connect via IP/Port, but expect to be always peer-to-peer connections only + virtual SNetListenSocket_t CreateListenSocket( int nVirtualP2PPort, SteamIPAddress_t nIP, uint16 nPort, bool bAllowUseOfPacketRelay ) = 0; + + // creates a socket and begin connection to a remote destination + // can connect via a known steamID (client or game server), or directly to an IP + // on success will trigger a SocketStatusCallback_t callback + // on failure or timeout will trigger a SocketStatusCallback_t callback with a failure code in m_eSNetSocketState + virtual SNetSocket_t CreateP2PConnectionSocket( CSteamID steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay ) = 0; + virtual SNetSocket_t CreateConnectionSocket( SteamIPAddress_t nIP, uint16 nPort, int nTimeoutSec ) = 0; + + // disconnects the connection to the socket, if any, and invalidates the handle + // any unread data on the socket will be thrown away + // if bNotifyRemoteEnd is set, socket will not be completely destroyed until the remote end acknowledges the disconnect + virtual bool DestroySocket( SNetSocket_t hSocket, bool bNotifyRemoteEnd ) = 0; + // destroying a listen socket will automatically kill all the regular sockets generated from it + virtual bool DestroyListenSocket( SNetListenSocket_t hSocket, bool bNotifyRemoteEnd ) = 0; + + // sending data + // must be a handle to a connected socket + // data is all sent via UDP, and thus send sizes are limited to 1200 bytes; after this, many routers will start dropping packets + // use the reliable flag with caution; although the resend rate is pretty aggressive, + // it can still cause stalls in receiving data (like TCP) + virtual bool SendDataOnSocket( SNetSocket_t hSocket, void *pubData, uint32 cubData, bool bReliable ) = 0; + + // receiving data + // returns false if there is no data remaining + // fills out *pcubMsgSize with the size of the next message, in bytes + virtual bool IsDataAvailableOnSocket( SNetSocket_t hSocket, uint32 *pcubMsgSize ) = 0; + + // fills in pubDest with the contents of the message + // messages are always complete, of the same size as was sent (i.e. packetized, not streaming) + // if *pcubMsgSize < cubDest, only partial data is written + // returns false if no data is available + virtual bool RetrieveDataFromSocket( SNetSocket_t hSocket, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize ) = 0; + + // checks for data from any socket that has been connected off this listen socket + // returns false if there is no data remaining + // fills out *pcubMsgSize with the size of the next message, in bytes + // fills out *phSocket with the socket that data is available on + virtual bool IsDataAvailable( SNetListenSocket_t hListenSocket, uint32 *pcubMsgSize, SNetSocket_t *phSocket ) = 0; + + // retrieves data from any socket that has been connected off this listen socket + // fills in pubDest with the contents of the message + // messages are always complete, of the same size as was sent (i.e. packetized, not streaming) + // if *pcubMsgSize < cubDest, only partial data is written + // returns false if no data is available + // fills out *phSocket with the socket that data is available on + virtual bool RetrieveData( SNetListenSocket_t hListenSocket, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize, SNetSocket_t *phSocket ) = 0; + + // returns information about the specified socket, filling out the contents of the pointers + virtual bool GetSocketInfo( SNetSocket_t hSocket, CSteamID *pSteamIDRemote, int *peSocketStatus, SteamIPAddress_t *punIPRemote, uint16 *punPortRemote ) = 0; + + // returns which local port the listen socket is bound to + // *pnIP and *pnPort will be 0 if the socket is set to listen for P2P connections only + virtual bool GetListenSocketInfo( SNetListenSocket_t hListenSocket, SteamIPAddress_t *pnIP, uint16 *pnPort ) = 0; + + // returns true to describe how the socket ended up connecting + virtual ESNetSocketConnectionType GetSocketConnectionType( SNetSocket_t hSocket ) = 0; + + // max packet size, in bytes + virtual int GetMaxPacketSize( SNetSocket_t hSocket ) = 0; +}; +#define STEAMNETWORKING_INTERFACE_VERSION "SteamNetworking006" + +// Global interface accessor +inline ISteamNetworking *SteamNetworking(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamNetworking *, SteamNetworking, STEAMNETWORKING_INTERFACE_VERSION ); + +// Global accessor for the gameserver client +inline ISteamNetworking *SteamGameServerNetworking(); +STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamNetworking *, SteamGameServerNetworking, STEAMNETWORKING_INTERFACE_VERSION ); + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + +// callback notification - a user wants to talk to us over the P2P channel via the SendP2PPacket() API +// in response, a call to AcceptP2PPacketsFromUser() needs to be made, if you want to talk with them +struct P2PSessionRequest_t +{ + enum { k_iCallback = k_iSteamNetworkingCallbacks + 2 }; + CSteamID m_steamIDRemote; // user who wants to talk to us +}; + + +// callback notification - packets can't get through to the specified user via the SendP2PPacket() API +// all packets queued packets unsent at this point will be dropped +// further attempts to send will retry making the connection (but will be dropped if we fail again) +struct P2PSessionConnectFail_t +{ + enum { k_iCallback = k_iSteamNetworkingCallbacks + 3 }; + CSteamID m_steamIDRemote; // user we were sending packets to + uint8 m_eP2PSessionError; // EP2PSessionError indicating why we're having trouble +}; + + +// callback notification - status of a socket has changed +// used as part of the CreateListenSocket() / CreateP2PConnectionSocket() +struct SocketStatusCallback_t +{ + enum { k_iCallback = k_iSteamNetworkingCallbacks + 1 }; + SNetSocket_t m_hSocket; // the socket used to send/receive data to the remote host + SNetListenSocket_t m_hListenSocket; // this is the server socket that we were listening on; NULL if this was an outgoing connection + CSteamID m_steamIDRemote; // remote steamID we have connected to, if it has one + int m_eSNetSocketState; // socket state, ESNetSocketState +}; + +#pragma pack( pop ) + +#endif // ISTEAMNETWORKING diff --git a/CodeGen/steam/isteamparentalsettings.h b/CodeGen/steam/isteamparentalsettings.h index 66e18a06..2a22b01a 100644 --- a/CodeGen/steam/isteamparentalsettings.h +++ b/CodeGen/steam/isteamparentalsettings.h @@ -1,63 +1,63 @@ -//====== Copyright � 2013-, Valve Corporation, All rights reserved. ======= -// -// Purpose: Interface to Steam parental settings (Family View) -// -//============================================================================= - -#ifndef ISTEAMPARENTALSETTINGS_H -#define ISTEAMPARENTALSETTINGS_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" - -// Feature types for parental settings -enum EParentalFeature -{ - k_EFeatureInvalid = 0, - k_EFeatureStore = 1, - k_EFeatureCommunity = 2, - k_EFeatureProfile = 3, - k_EFeatureFriends = 4, - k_EFeatureNews = 5, - k_EFeatureTrading = 6, - k_EFeatureSettings = 7, - k_EFeatureConsole = 8, - k_EFeatureBrowser = 9, - k_EFeatureParentalSetup = 10, - k_EFeatureLibrary = 11, - k_EFeatureTest = 12, - k_EFeatureSiteLicense = 13, - k_EFeatureMax -}; - -class ISteamParentalSettings -{ -public: - virtual bool BIsParentalLockEnabled() = 0; - virtual bool BIsParentalLockLocked() = 0; - - virtual bool BIsAppBlocked( AppId_t nAppID ) = 0; - virtual bool BIsAppInBlockList( AppId_t nAppID ) = 0; - - virtual bool BIsFeatureBlocked( EParentalFeature eFeature ) = 0; - virtual bool BIsFeatureInBlockList( EParentalFeature eFeature ) = 0; -}; - -#define STEAMPARENTALSETTINGS_INTERFACE_VERSION "STEAMPARENTALSETTINGS_INTERFACE_VERSION001" - -// Global interface accessor -inline ISteamParentalSettings *SteamParentalSettings(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamParentalSettings *, SteamParentalSettings, STEAMPARENTALSETTINGS_INTERFACE_VERSION ); - -//----------------------------------------------------------------------------- -// Purpose: Callback for querying UGC -//----------------------------------------------------------------------------- -struct SteamParentalSettingsChanged_t -{ - enum { k_iCallback = k_ISteamParentalSettingsCallbacks + 1 }; -}; - - -#endif // ISTEAMPARENTALSETTINGS_H +//====== Copyright � 2013-, Valve Corporation, All rights reserved. ======= +// +// Purpose: Interface to Steam parental settings (Family View) +// +//============================================================================= + +#ifndef ISTEAMPARENTALSETTINGS_H +#define ISTEAMPARENTALSETTINGS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + +// Feature types for parental settings +enum EParentalFeature +{ + k_EFeatureInvalid = 0, + k_EFeatureStore = 1, + k_EFeatureCommunity = 2, + k_EFeatureProfile = 3, + k_EFeatureFriends = 4, + k_EFeatureNews = 5, + k_EFeatureTrading = 6, + k_EFeatureSettings = 7, + k_EFeatureConsole = 8, + k_EFeatureBrowser = 9, + k_EFeatureParentalSetup = 10, + k_EFeatureLibrary = 11, + k_EFeatureTest = 12, + k_EFeatureSiteLicense = 13, + k_EFeatureMax +}; + +class ISteamParentalSettings +{ +public: + virtual bool BIsParentalLockEnabled() = 0; + virtual bool BIsParentalLockLocked() = 0; + + virtual bool BIsAppBlocked( AppId_t nAppID ) = 0; + virtual bool BIsAppInBlockList( AppId_t nAppID ) = 0; + + virtual bool BIsFeatureBlocked( EParentalFeature eFeature ) = 0; + virtual bool BIsFeatureInBlockList( EParentalFeature eFeature ) = 0; +}; + +#define STEAMPARENTALSETTINGS_INTERFACE_VERSION "STEAMPARENTALSETTINGS_INTERFACE_VERSION001" + +// Global interface accessor +inline ISteamParentalSettings *SteamParentalSettings(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamParentalSettings *, SteamParentalSettings, STEAMPARENTALSETTINGS_INTERFACE_VERSION ); + +//----------------------------------------------------------------------------- +// Purpose: Callback for querying UGC +//----------------------------------------------------------------------------- +struct SteamParentalSettingsChanged_t +{ + enum { k_iCallback = k_ISteamParentalSettingsCallbacks + 1 }; +}; + + +#endif // ISTEAMPARENTALSETTINGS_H diff --git a/CodeGen/steam/isteamps3overlayrenderer.h b/CodeGen/steam/isteamps3overlayrenderer.h index 2cbb757d..4e07d4a1 100644 --- a/CodeGen/steam/isteamps3overlayrenderer.h +++ b/CodeGen/steam/isteamps3overlayrenderer.h @@ -1,91 +1,91 @@ -//====== Copyright © 1996-2010, Valve Corporation, All rights reserved. ======= -// -// Purpose: interface the game must provide Steam with on PS3 in order for the -// Steam overlay to render. -// -//============================================================================= - -#ifndef ISTEAMPS3OVERLAYRENDERER_H -#define ISTEAMPS3OVERLAYRENDERER_H -#ifdef _WIN32 -#pragma once -#endif - -#include "cell/pad.h" - -//----------------------------------------------------------------------------- -// Purpose: Enum for supported gradient directions -//----------------------------------------------------------------------------- -enum EOverlayGradientDirection -{ - k_EOverlayGradientHorizontal = 1, - k_EOverlayGradientVertical = 2, - k_EOverlayGradientNone = 3, -}; - -// Helpers for fetching individual color components from ARGB packed DWORD colors Steam PS3 overlay renderer uses. -#define STEAM_COLOR_RED( color ) \ - (int)(((color)>>16)&0xff) - -#define STEAM_COLOR_GREEN( color ) \ - (int)(((color)>>8)&0xff) - -#define STEAM_COLOR_BLUE( color ) \ - (int)((color)&0xff) - -#define STEAM_COLOR_ALPHA( color ) \ - (int)(((color)>>24)&0xff) - - -//----------------------------------------------------------------------------- -// Purpose: Interface the game must expose to Steam for rendering -//----------------------------------------------------------------------------- -class ISteamPS3OverlayRenderHost -{ -public: - - // Interface for game engine to implement which Steam requires to render. - - // Draw a textured rect. This may use only part of the texture and will pass texture coords, it will also possibly request a gradient and will specify colors for vertexes. - virtual void DrawTexturedRect( int x0, int y0, int x1, int y1, float u0, float v0, float u1, float v1, int32 iTextureID, DWORD colorStart, DWORD colorEnd, EOverlayGradientDirection eDirection ) = 0; - - // Load a RGBA texture for Steam, or update a previously loaded one. Updates may be partial. You must not evict or remove this texture once Steam has uploaded it. - virtual void LoadOrUpdateTexture( int32 iTextureID, bool bIsFullTexture, int x0, int y0, uint32 uWidth, uint32 uHeight, int32 iBytes, char *pData ) = 0; - - // Delete a texture Steam previously uploaded - virtual void DeleteTexture( int32 iTextureID ) = 0; - - // Delete all previously uploaded textures - virtual void DeleteAllTextures() = 0; -}; - - -//----------------------------------------------------------------------------- -// Purpose: Interface Steam exposes for the game to tell it when to render, etc. -//----------------------------------------------------------------------------- -class ISteamPS3OverlayRender -{ -public: - - // Call once at startup to initialize the Steam overlay and pass it your host interface ptr - virtual bool BHostInitialize( uint32 unScreenWidth, uint32 unScreenHeight, uint32 unRefreshRate, ISteamPS3OverlayRenderHost *pRenderHost, void *CellFontLib ) = 0; - - // Call this once a frame when you are ready for the Steam overlay to render (ie, right before flipping buffers, after all your rendering) - virtual void Render() = 0; - - // Call this everytime you read input on PS3. - // - // If this returns true, then the overlay is active and has consumed the input, your game - // should then ignore all the input until BHandleCellPadData once again returns false, which - // will mean the overlay is deactivated. - virtual bool BHandleCellPadData( const CellPadData &padData ) = 0; - - // Call this if you detect no controllers connected or that the XMB is intercepting input - // - // This is important to clear input state for the overlay, so keys left down during XMB activation - // are not continued to be processed. - virtual bool BResetInputState() = 0; -}; - - +//====== Copyright © 1996-2010, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface the game must provide Steam with on PS3 in order for the +// Steam overlay to render. +// +//============================================================================= + +#ifndef ISTEAMPS3OVERLAYRENDERER_H +#define ISTEAMPS3OVERLAYRENDERER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "cell/pad.h" + +//----------------------------------------------------------------------------- +// Purpose: Enum for supported gradient directions +//----------------------------------------------------------------------------- +enum EOverlayGradientDirection +{ + k_EOverlayGradientHorizontal = 1, + k_EOverlayGradientVertical = 2, + k_EOverlayGradientNone = 3, +}; + +// Helpers for fetching individual color components from ARGB packed DWORD colors Steam PS3 overlay renderer uses. +#define STEAM_COLOR_RED( color ) \ + (int)(((color)>>16)&0xff) + +#define STEAM_COLOR_GREEN( color ) \ + (int)(((color)>>8)&0xff) + +#define STEAM_COLOR_BLUE( color ) \ + (int)((color)&0xff) + +#define STEAM_COLOR_ALPHA( color ) \ + (int)(((color)>>24)&0xff) + + +//----------------------------------------------------------------------------- +// Purpose: Interface the game must expose to Steam for rendering +//----------------------------------------------------------------------------- +class ISteamPS3OverlayRenderHost +{ +public: + + // Interface for game engine to implement which Steam requires to render. + + // Draw a textured rect. This may use only part of the texture and will pass texture coords, it will also possibly request a gradient and will specify colors for vertexes. + virtual void DrawTexturedRect( int x0, int y0, int x1, int y1, float u0, float v0, float u1, float v1, int32 iTextureID, DWORD colorStart, DWORD colorEnd, EOverlayGradientDirection eDirection ) = 0; + + // Load a RGBA texture for Steam, or update a previously loaded one. Updates may be partial. You must not evict or remove this texture once Steam has uploaded it. + virtual void LoadOrUpdateTexture( int32 iTextureID, bool bIsFullTexture, int x0, int y0, uint32 uWidth, uint32 uHeight, int32 iBytes, char *pData ) = 0; + + // Delete a texture Steam previously uploaded + virtual void DeleteTexture( int32 iTextureID ) = 0; + + // Delete all previously uploaded textures + virtual void DeleteAllTextures() = 0; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Interface Steam exposes for the game to tell it when to render, etc. +//----------------------------------------------------------------------------- +class ISteamPS3OverlayRender +{ +public: + + // Call once at startup to initialize the Steam overlay and pass it your host interface ptr + virtual bool BHostInitialize( uint32 unScreenWidth, uint32 unScreenHeight, uint32 unRefreshRate, ISteamPS3OverlayRenderHost *pRenderHost, void *CellFontLib ) = 0; + + // Call this once a frame when you are ready for the Steam overlay to render (ie, right before flipping buffers, after all your rendering) + virtual void Render() = 0; + + // Call this everytime you read input on PS3. + // + // If this returns true, then the overlay is active and has consumed the input, your game + // should then ignore all the input until BHandleCellPadData once again returns false, which + // will mean the overlay is deactivated. + virtual bool BHandleCellPadData( const CellPadData &padData ) = 0; + + // Call this if you detect no controllers connected or that the XMB is intercepting input + // + // This is important to clear input state for the overlay, so keys left down during XMB activation + // are not continued to be processed. + virtual bool BResetInputState() = 0; +}; + + #endif // ISTEAMPS3OVERLAYRENDERER_H \ No newline at end of file diff --git a/CodeGen/steam/isteamremotestorage.h b/CodeGen/steam/isteamremotestorage.h index 5fea770b..81fa2c85 100644 --- a/CodeGen/steam/isteamremotestorage.h +++ b/CodeGen/steam/isteamremotestorage.h @@ -1,688 +1,688 @@ -//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= -// -// Purpose: public interface to user remote file storage in Steam -// -//============================================================================= - -#ifndef ISTEAMREMOTESTORAGE_H -#define ISTEAMREMOTESTORAGE_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" - - -//----------------------------------------------------------------------------- -// Purpose: Defines the largest allowed file size. Cloud files cannot be written -// in a single chunk over 100MB (and cannot be over 200MB total.) -//----------------------------------------------------------------------------- -const uint32 k_unMaxCloudFileChunkSize = 100 * 1024 * 1024; - - -//----------------------------------------------------------------------------- -// Purpose: Structure that contains an array of const char * strings and the number of those strings -//----------------------------------------------------------------------------- -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif -struct SteamParamStringArray_t -{ - const char ** m_ppStrings; - int32 m_nNumStrings; -}; -#pragma pack( pop ) - -// A handle to a piece of user generated content -typedef uint64 UGCHandle_t; -typedef uint64 PublishedFileUpdateHandle_t; -typedef uint64 PublishedFileId_t; -const PublishedFileId_t k_PublishedFileIdInvalid = 0; -const UGCHandle_t k_UGCHandleInvalid = 0xffffffffffffffffull; -const PublishedFileUpdateHandle_t k_PublishedFileUpdateHandleInvalid = 0xffffffffffffffffull; - -// Handle for writing to Steam Cloud -typedef uint64 UGCFileWriteStreamHandle_t; -const UGCFileWriteStreamHandle_t k_UGCFileStreamHandleInvalid = 0xffffffffffffffffull; - -const uint32 k_cchPublishedDocumentTitleMax = 128 + 1; -const uint32 k_cchPublishedDocumentDescriptionMax = 8000; -const uint32 k_cchPublishedDocumentChangeDescriptionMax = 8000; -const uint32 k_unEnumeratePublishedFilesMaxResults = 50; -const uint32 k_cchTagListMax = 1024 + 1; -const uint32 k_cchFilenameMax = 260; -const uint32 k_cchPublishedFileURLMax = 256; - - -enum ERemoteStoragePlatform -{ - k_ERemoteStoragePlatformNone = 0, - k_ERemoteStoragePlatformWindows = (1 << 0), - k_ERemoteStoragePlatformOSX = (1 << 1), - k_ERemoteStoragePlatformPS3 = (1 << 2), - k_ERemoteStoragePlatformLinux = (1 << 3), - k_ERemoteStoragePlatformSwitch = (1 << 4), - k_ERemoteStoragePlatformAndroid = (1 << 5), - k_ERemoteStoragePlatformIOS = (1 << 6), - // NB we get one more before we need to widen some things - - k_ERemoteStoragePlatformAll = 0xffffffff -}; - -enum ERemoteStoragePublishedFileVisibility -{ - k_ERemoteStoragePublishedFileVisibilityPublic = 0, - k_ERemoteStoragePublishedFileVisibilityFriendsOnly = 1, - k_ERemoteStoragePublishedFileVisibilityPrivate = 2, - k_ERemoteStoragePublishedFileVisibilityUnlisted = 3, -}; - - -enum EWorkshopFileType -{ - k_EWorkshopFileTypeFirst = 0, - - k_EWorkshopFileTypeCommunity = 0, // normal Workshop item that can be subscribed to - k_EWorkshopFileTypeMicrotransaction = 1, // Workshop item that is meant to be voted on for the purpose of selling in-game - k_EWorkshopFileTypeCollection = 2, // a collection of Workshop or Greenlight items - k_EWorkshopFileTypeArt = 3, // artwork - k_EWorkshopFileTypeVideo = 4, // external video - k_EWorkshopFileTypeScreenshot = 5, // screenshot - k_EWorkshopFileTypeGame = 6, // Greenlight game entry - k_EWorkshopFileTypeSoftware = 7, // Greenlight software entry - k_EWorkshopFileTypeConcept = 8, // Greenlight concept - k_EWorkshopFileTypeWebGuide = 9, // Steam web guide - k_EWorkshopFileTypeIntegratedGuide = 10, // application integrated guide - k_EWorkshopFileTypeMerch = 11, // Workshop merchandise meant to be voted on for the purpose of being sold - k_EWorkshopFileTypeControllerBinding = 12, // Steam Controller bindings - k_EWorkshopFileTypeSteamworksAccessInvite = 13, // internal - k_EWorkshopFileTypeSteamVideo = 14, // Steam video - k_EWorkshopFileTypeGameManagedItem = 15, // managed completely by the game, not the user, and not shown on the web - - // Update k_EWorkshopFileTypeMax if you add values. - k_EWorkshopFileTypeMax = 16 - -}; - -enum EWorkshopVote -{ - k_EWorkshopVoteUnvoted = 0, - k_EWorkshopVoteFor = 1, - k_EWorkshopVoteAgainst = 2, - k_EWorkshopVoteLater = 3, -}; - -enum EWorkshopFileAction -{ - k_EWorkshopFileActionPlayed = 0, - k_EWorkshopFileActionCompleted = 1, -}; - -enum EWorkshopEnumerationType -{ - k_EWorkshopEnumerationTypeRankedByVote = 0, - k_EWorkshopEnumerationTypeRecent = 1, - k_EWorkshopEnumerationTypeTrending = 2, - k_EWorkshopEnumerationTypeFavoritesOfFriends = 3, - k_EWorkshopEnumerationTypeVotedByFriends = 4, - k_EWorkshopEnumerationTypeContentByFriends = 5, - k_EWorkshopEnumerationTypeRecentFromFollowedUsers = 6, -}; - -enum EWorkshopVideoProvider -{ - k_EWorkshopVideoProviderNone = 0, - k_EWorkshopVideoProviderYoutube = 1 -}; - - -enum EUGCReadAction -{ - // Keeps the file handle open unless the last byte is read. You can use this when reading large files (over 100MB) in sequential chunks. - // If the last byte is read, this will behave the same as k_EUGCRead_Close. Otherwise, it behaves the same as k_EUGCRead_ContinueReading. - // This value maintains the same behavior as before the EUGCReadAction parameter was introduced. - k_EUGCRead_ContinueReadingUntilFinished = 0, - - // Keeps the file handle open. Use this when using UGCRead to seek to different parts of the file. - // When you are done seeking around the file, make a final call with k_EUGCRead_Close to close it. - k_EUGCRead_ContinueReading = 1, - - // Frees the file handle. Use this when you're done reading the content. - // To read the file from Steam again you will need to call UGCDownload again. - k_EUGCRead_Close = 2, -}; - - -//----------------------------------------------------------------------------- -// Purpose: Functions for accessing, reading and writing files stored remotely -// and cached locally -//----------------------------------------------------------------------------- -class ISteamRemoteStorage -{ - public: - // NOTE - // - // Filenames are case-insensitive, and will be converted to lowercase automatically. - // So "foo.bar" and "Foo.bar" are the same file, and if you write "Foo.bar" then - // iterate the files, the filename returned will be "foo.bar". - // - - // file operations - virtual bool FileWrite( const char *pchFile, const void *pvData, int32 cubData ) = 0; - virtual int32 FileRead( const char *pchFile, void *pvData, int32 cubDataToRead ) = 0; - - STEAM_CALL_RESULT( RemoteStorageFileWriteAsyncComplete_t ) - virtual SteamAPICall_t FileWriteAsync( const char *pchFile, const void *pvData, uint32 cubData ) = 0; - - STEAM_CALL_RESULT( RemoteStorageFileReadAsyncComplete_t ) - virtual SteamAPICall_t FileReadAsync( const char *pchFile, uint32 nOffset, uint32 cubToRead ) = 0; - virtual bool FileReadAsyncComplete( SteamAPICall_t hReadCall, void *pvBuffer, uint32 cubToRead ) = 0; - - virtual bool FileForget( const char *pchFile ) = 0; - virtual bool FileDelete( const char *pchFile ) = 0; - STEAM_CALL_RESULT( RemoteStorageFileShareResult_t ) - virtual SteamAPICall_t FileShare( const char *pchFile ) = 0; - virtual bool SetSyncPlatforms( const char *pchFile, ERemoteStoragePlatform eRemoteStoragePlatform ) = 0; - - // file operations that cause network IO - virtual UGCFileWriteStreamHandle_t FileWriteStreamOpen( const char *pchFile ) = 0; - virtual bool FileWriteStreamWriteChunk( UGCFileWriteStreamHandle_t writeHandle, const void *pvData, int32 cubData ) = 0; - virtual bool FileWriteStreamClose( UGCFileWriteStreamHandle_t writeHandle ) = 0; - virtual bool FileWriteStreamCancel( UGCFileWriteStreamHandle_t writeHandle ) = 0; - - // file information - virtual bool FileExists( const char *pchFile ) = 0; - virtual bool FilePersisted( const char *pchFile ) = 0; - virtual int32 GetFileSize( const char *pchFile ) = 0; - virtual int64 GetFileTimestamp( const char *pchFile ) = 0; - virtual ERemoteStoragePlatform GetSyncPlatforms( const char *pchFile ) = 0; - - // iteration - virtual int32 GetFileCount() = 0; - virtual const char *GetFileNameAndSize( int iFile, int32 *pnFileSizeInBytes ) = 0; - - // configuration management - virtual bool GetQuota( uint64 *pnTotalBytes, uint64 *puAvailableBytes ) = 0; - virtual bool IsCloudEnabledForAccount() = 0; - virtual bool IsCloudEnabledForApp() = 0; - virtual void SetCloudEnabledForApp( bool bEnabled ) = 0; - - // user generated content - - // Downloads a UGC file. A priority value of 0 will download the file immediately, - // otherwise it will wait to download the file until all downloads with a lower priority - // value are completed. Downloads with equal priority will occur simultaneously. - STEAM_CALL_RESULT( RemoteStorageDownloadUGCResult_t ) - virtual SteamAPICall_t UGCDownload( UGCHandle_t hContent, uint32 unPriority ) = 0; - - // Gets the amount of data downloaded so far for a piece of content. pnBytesExpected can be 0 if function returns false - // or if the transfer hasn't started yet, so be careful to check for that before dividing to get a percentage - virtual bool GetUGCDownloadProgress( UGCHandle_t hContent, int32 *pnBytesDownloaded, int32 *pnBytesExpected ) = 0; - - // Gets metadata for a file after it has been downloaded. This is the same metadata given in the RemoteStorageDownloadUGCResult_t call result - virtual bool GetUGCDetails( UGCHandle_t hContent, AppId_t *pnAppID, STEAM_OUT_STRING() char **ppchName, int32 *pnFileSizeInBytes, STEAM_OUT_STRUCT() CSteamID *pSteamIDOwner ) = 0; - - // After download, gets the content of the file. - // Small files can be read all at once by calling this function with an offset of 0 and cubDataToRead equal to the size of the file. - // Larger files can be read in chunks to reduce memory usage (since both sides of the IPC client and the game itself must allocate - // enough memory for each chunk). Once the last byte is read, the file is implicitly closed and further calls to UGCRead will fail - // unless UGCDownload is called again. - // For especially large files (anything over 100MB) it is a requirement that the file is read in chunks. - virtual int32 UGCRead( UGCHandle_t hContent, void *pvData, int32 cubDataToRead, uint32 cOffset, EUGCReadAction eAction ) = 0; - - // Functions to iterate through UGC that has finished downloading but has not yet been read via UGCRead() - virtual int32 GetCachedUGCCount() = 0; - virtual UGCHandle_t GetCachedUGCHandle( int32 iCachedContent ) = 0; - - // The following functions are only necessary on the Playstation 3. On PC & Mac, the Steam client will handle these operations for you - // On Playstation 3, the game controls which files are stored in the cloud, via FilePersist, FileFetch, and FileForget. - -#if defined(_SERVER) - // Connect to Steam and get a list of files in the Cloud - results in a RemoteStorageAppSyncStatusCheck_t callback - virtual void GetFileListFromServer() = 0; - // Indicate this file should be downloaded in the next sync - virtual bool FileFetch( const char *pchFile ) = 0; - // Indicate this file should be persisted in the next sync - virtual bool FilePersist( const char *pchFile ) = 0; - // Pull any requested files down from the Cloud - results in a RemoteStorageAppSyncedClient_t callback - virtual bool SynchronizeToClient() = 0; - // Upload any requested files to the Cloud - results in a RemoteStorageAppSyncedServer_t callback - virtual bool SynchronizeToServer() = 0; - // Reset any fetch/persist/etc requests - virtual bool ResetFileRequestState() = 0; -#endif - - // publishing UGC - STEAM_CALL_RESULT( RemoteStoragePublishFileProgress_t ) - virtual SteamAPICall_t PublishWorkshopFile( const char *pchFile, const char *pchPreviewFile, AppId_t nConsumerAppId, const char *pchTitle, const char *pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t *pTags, EWorkshopFileType eWorkshopFileType ) = 0; - virtual PublishedFileUpdateHandle_t CreatePublishedFileUpdateRequest( PublishedFileId_t unPublishedFileId ) = 0; - virtual bool UpdatePublishedFileFile( PublishedFileUpdateHandle_t updateHandle, const char *pchFile ) = 0; - virtual bool UpdatePublishedFilePreviewFile( PublishedFileUpdateHandle_t updateHandle, const char *pchPreviewFile ) = 0; - virtual bool UpdatePublishedFileTitle( PublishedFileUpdateHandle_t updateHandle, const char *pchTitle ) = 0; - virtual bool UpdatePublishedFileDescription( PublishedFileUpdateHandle_t updateHandle, const char *pchDescription ) = 0; - virtual bool UpdatePublishedFileVisibility( PublishedFileUpdateHandle_t updateHandle, ERemoteStoragePublishedFileVisibility eVisibility ) = 0; - virtual bool UpdatePublishedFileTags( PublishedFileUpdateHandle_t updateHandle, SteamParamStringArray_t *pTags ) = 0; - STEAM_CALL_RESULT( RemoteStorageUpdatePublishedFileResult_t ) - virtual SteamAPICall_t CommitPublishedFileUpdate( PublishedFileUpdateHandle_t updateHandle ) = 0; - // Gets published file details for the given publishedfileid. If unMaxSecondsOld is greater than 0, - // cached data may be returned, depending on how long ago it was cached. A value of 0 will force a refresh. - // A value of k_WorkshopForceLoadPublishedFileDetailsFromCache will use cached data if it exists, no matter how old it is. - STEAM_CALL_RESULT( RemoteStorageGetPublishedFileDetailsResult_t ) - virtual SteamAPICall_t GetPublishedFileDetails( PublishedFileId_t unPublishedFileId, uint32 unMaxSecondsOld ) = 0; - STEAM_CALL_RESULT( RemoteStorageDeletePublishedFileResult_t ) - virtual SteamAPICall_t DeletePublishedFile( PublishedFileId_t unPublishedFileId ) = 0; - // enumerate the files that the current user published with this app - STEAM_CALL_RESULT( RemoteStorageEnumerateUserPublishedFilesResult_t ) - virtual SteamAPICall_t EnumerateUserPublishedFiles( uint32 unStartIndex ) = 0; - STEAM_CALL_RESULT( RemoteStorageSubscribePublishedFileResult_t ) - virtual SteamAPICall_t SubscribePublishedFile( PublishedFileId_t unPublishedFileId ) = 0; - STEAM_CALL_RESULT( RemoteStorageEnumerateUserSubscribedFilesResult_t ) - virtual SteamAPICall_t EnumerateUserSubscribedFiles( uint32 unStartIndex ) = 0; - STEAM_CALL_RESULT( RemoteStorageUnsubscribePublishedFileResult_t ) - virtual SteamAPICall_t UnsubscribePublishedFile( PublishedFileId_t unPublishedFileId ) = 0; - virtual bool UpdatePublishedFileSetChangeDescription( PublishedFileUpdateHandle_t updateHandle, const char *pchChangeDescription ) = 0; - STEAM_CALL_RESULT( RemoteStorageGetPublishedItemVoteDetailsResult_t ) - virtual SteamAPICall_t GetPublishedItemVoteDetails( PublishedFileId_t unPublishedFileId ) = 0; - STEAM_CALL_RESULT( RemoteStorageUpdateUserPublishedItemVoteResult_t ) - virtual SteamAPICall_t UpdateUserPublishedItemVote( PublishedFileId_t unPublishedFileId, bool bVoteUp ) = 0; - STEAM_CALL_RESULT( RemoteStorageGetPublishedItemVoteDetailsResult_t ) - virtual SteamAPICall_t GetUserPublishedItemVoteDetails( PublishedFileId_t unPublishedFileId ) = 0; - STEAM_CALL_RESULT( RemoteStorageEnumerateUserPublishedFilesResult_t ) - virtual SteamAPICall_t EnumerateUserSharedWorkshopFiles( CSteamID steamId, uint32 unStartIndex, SteamParamStringArray_t *pRequiredTags, SteamParamStringArray_t *pExcludedTags ) = 0; - STEAM_CALL_RESULT( RemoteStoragePublishFileProgress_t ) - virtual SteamAPICall_t PublishVideo( EWorkshopVideoProvider eVideoProvider, const char *pchVideoAccount, const char *pchVideoIdentifier, const char *pchPreviewFile, AppId_t nConsumerAppId, const char *pchTitle, const char *pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t *pTags ) = 0; - STEAM_CALL_RESULT( RemoteStorageSetUserPublishedFileActionResult_t ) - virtual SteamAPICall_t SetUserPublishedFileAction( PublishedFileId_t unPublishedFileId, EWorkshopFileAction eAction ) = 0; - STEAM_CALL_RESULT( RemoteStorageEnumeratePublishedFilesByUserActionResult_t ) - virtual SteamAPICall_t EnumeratePublishedFilesByUserAction( EWorkshopFileAction eAction, uint32 unStartIndex ) = 0; - // this method enumerates the public view of workshop files - STEAM_CALL_RESULT( RemoteStorageEnumerateWorkshopFilesResult_t ) - virtual SteamAPICall_t EnumeratePublishedWorkshopFiles( EWorkshopEnumerationType eEnumerationType, uint32 unStartIndex, uint32 unCount, uint32 unDays, SteamParamStringArray_t *pTags, SteamParamStringArray_t *pUserTags ) = 0; - - STEAM_CALL_RESULT( RemoteStorageDownloadUGCResult_t ) - virtual SteamAPICall_t UGCDownloadToLocation( UGCHandle_t hContent, const char *pchLocation, uint32 unPriority ) = 0; -}; - -#define STEAMREMOTESTORAGE_INTERFACE_VERSION "STEAMREMOTESTORAGE_INTERFACE_VERSION014" - -// Global interface accessor -inline ISteamRemoteStorage *SteamRemoteStorage(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamRemoteStorage *, SteamRemoteStorage, STEAMREMOTESTORAGE_INTERFACE_VERSION ); - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - -//----------------------------------------------------------------------------- -// Purpose: sent when the local file cache is fully synced with the server for an app -// That means that an application can be started and has all latest files -//----------------------------------------------------------------------------- -struct RemoteStorageAppSyncedClient_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 1 }; - AppId_t m_nAppID; - EResult m_eResult; - int m_unNumDownloads; -}; - -//----------------------------------------------------------------------------- -// Purpose: sent when the server is fully synced with the local file cache for an app -// That means that we can shutdown Steam and our data is stored on the server -//----------------------------------------------------------------------------- -struct RemoteStorageAppSyncedServer_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 2 }; - AppId_t m_nAppID; - EResult m_eResult; - int m_unNumUploads; -}; - -//----------------------------------------------------------------------------- -// Purpose: Status of up and downloads during a sync session -// -//----------------------------------------------------------------------------- -struct RemoteStorageAppSyncProgress_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 3 }; - char m_rgchCurrentFile[k_cchFilenameMax]; // Current file being transferred - AppId_t m_nAppID; // App this info relates to - uint32 m_uBytesTransferredThisChunk; // Bytes transferred this chunk - double m_dAppPercentComplete; // Percent complete that this app's transfers are - bool m_bUploading; // if false, downloading -}; - -// -// IMPORTANT! k_iClientRemoteStorageCallbacks + 4 is used, see iclientremotestorage.h -// - - -//----------------------------------------------------------------------------- -// Purpose: Sent after we've determined the list of files that are out of sync -// with the server. -//----------------------------------------------------------------------------- -struct RemoteStorageAppSyncStatusCheck_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 5 }; - AppId_t m_nAppID; - EResult m_eResult; -}; - - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to FileShare() -//----------------------------------------------------------------------------- -struct RemoteStorageFileShareResult_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 7 }; - EResult m_eResult; // The result of the operation - UGCHandle_t m_hFile; // The handle that can be shared with users and features - char m_rgchFilename[k_cchFilenameMax]; // The name of the file that was shared -}; - - -// k_iClientRemoteStorageCallbacks + 8 is deprecated! Do not reuse - - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to PublishFile() -//----------------------------------------------------------------------------- -struct RemoteStoragePublishFileResult_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 9 }; - EResult m_eResult; // The result of the operation. - PublishedFileId_t m_nPublishedFileId; - bool m_bUserNeedsToAcceptWorkshopLegalAgreement; -}; - - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to DeletePublishedFile() -//----------------------------------------------------------------------------- -struct RemoteStorageDeletePublishedFileResult_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 11 }; - EResult m_eResult; // The result of the operation. - PublishedFileId_t m_nPublishedFileId; -}; - - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to EnumerateUserPublishedFiles() -//----------------------------------------------------------------------------- -struct RemoteStorageEnumerateUserPublishedFilesResult_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 12 }; - EResult m_eResult; // The result of the operation. - int32 m_nResultsReturned; - int32 m_nTotalResultCount; - PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; -}; - - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to SubscribePublishedFile() -//----------------------------------------------------------------------------- -struct RemoteStorageSubscribePublishedFileResult_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 13 }; - EResult m_eResult; // The result of the operation. - PublishedFileId_t m_nPublishedFileId; -}; - - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to EnumerateSubscribePublishedFiles() -//----------------------------------------------------------------------------- -struct RemoteStorageEnumerateUserSubscribedFilesResult_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 14 }; - EResult m_eResult; // The result of the operation. - int32 m_nResultsReturned; - int32 m_nTotalResultCount; - PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; - uint32 m_rgRTimeSubscribed[ k_unEnumeratePublishedFilesMaxResults ]; -}; - -#if defined(VALVE_CALLBACK_PACK_SMALL) - VALVE_COMPILE_TIME_ASSERT( sizeof( RemoteStorageEnumerateUserSubscribedFilesResult_t ) == (1 + 1 + 1 + 50 + 100) * 4 ); -#elif defined(VALVE_CALLBACK_PACK_LARGE) - VALVE_COMPILE_TIME_ASSERT( sizeof( RemoteStorageEnumerateUserSubscribedFilesResult_t ) == (1 + 1 + 1 + 50 + 100) * 4 + 4 ); -#else -#warning You must first include steam_api_common.h -#endif - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to UnsubscribePublishedFile() -//----------------------------------------------------------------------------- -struct RemoteStorageUnsubscribePublishedFileResult_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 15 }; - EResult m_eResult; // The result of the operation. - PublishedFileId_t m_nPublishedFileId; -}; - - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to CommitPublishedFileUpdate() -//----------------------------------------------------------------------------- -struct RemoteStorageUpdatePublishedFileResult_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 16 }; - EResult m_eResult; // The result of the operation. - PublishedFileId_t m_nPublishedFileId; - bool m_bUserNeedsToAcceptWorkshopLegalAgreement; -}; - - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to UGCDownload() -//----------------------------------------------------------------------------- -struct RemoteStorageDownloadUGCResult_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 17 }; - EResult m_eResult; // The result of the operation. - UGCHandle_t m_hFile; // The handle to the file that was attempted to be downloaded. - AppId_t m_nAppID; // ID of the app that created this file. - int32 m_nSizeInBytes; // The size of the file that was downloaded, in bytes. - char m_pchFileName[k_cchFilenameMax]; // The name of the file that was downloaded. - uint64 m_ulSteamIDOwner; // Steam ID of the user who created this content. -}; - - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to GetPublishedFileDetails() -//----------------------------------------------------------------------------- -struct RemoteStorageGetPublishedFileDetailsResult_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 18 }; - EResult m_eResult; // The result of the operation. - PublishedFileId_t m_nPublishedFileId; - AppId_t m_nCreatorAppID; // ID of the app that created this file. - AppId_t m_nConsumerAppID; // ID of the app that will consume this file. - char m_rgchTitle[k_cchPublishedDocumentTitleMax]; // title of document - char m_rgchDescription[k_cchPublishedDocumentDescriptionMax]; // description of document - UGCHandle_t m_hFile; // The handle of the primary file - UGCHandle_t m_hPreviewFile; // The handle of the preview file - uint64 m_ulSteamIDOwner; // Steam ID of the user who created this content. - uint32 m_rtimeCreated; // time when the published file was created - uint32 m_rtimeUpdated; // time when the published file was last updated - ERemoteStoragePublishedFileVisibility m_eVisibility; - bool m_bBanned; - char m_rgchTags[k_cchTagListMax]; // comma separated list of all tags associated with this file - bool m_bTagsTruncated; // whether the list of tags was too long to be returned in the provided buffer - char m_pchFileName[k_cchFilenameMax]; // The name of the primary file - int32 m_nFileSize; // Size of the primary file - int32 m_nPreviewFileSize; // Size of the preview file - char m_rgchURL[k_cchPublishedFileURLMax]; // URL (for a video or a website) - EWorkshopFileType m_eFileType; // Type of the file - bool m_bAcceptedForUse; // developer has specifically flagged this item as accepted in the Workshop -}; - - -struct RemoteStorageEnumerateWorkshopFilesResult_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 19 }; - EResult m_eResult; - int32 m_nResultsReturned; - int32 m_nTotalResultCount; - PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; - float m_rgScore[ k_unEnumeratePublishedFilesMaxResults ]; - AppId_t m_nAppId; - uint32 m_unStartIndex; -}; - - -//----------------------------------------------------------------------------- -// Purpose: The result of GetPublishedItemVoteDetails -//----------------------------------------------------------------------------- -struct RemoteStorageGetPublishedItemVoteDetailsResult_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 20 }; - EResult m_eResult; - PublishedFileId_t m_unPublishedFileId; - int32 m_nVotesFor; - int32 m_nVotesAgainst; - int32 m_nReports; - float m_fScore; -}; - - -//----------------------------------------------------------------------------- -// Purpose: User subscribed to a file for the app (from within the app or on the web) -//----------------------------------------------------------------------------- -struct RemoteStoragePublishedFileSubscribed_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 21 }; - PublishedFileId_t m_nPublishedFileId; // The published file id - AppId_t m_nAppID; // ID of the app that will consume this file. -}; - -//----------------------------------------------------------------------------- -// Purpose: User unsubscribed from a file for the app (from within the app or on the web) -//----------------------------------------------------------------------------- -struct RemoteStoragePublishedFileUnsubscribed_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 22 }; - PublishedFileId_t m_nPublishedFileId; // The published file id - AppId_t m_nAppID; // ID of the app that will consume this file. -}; - - -//----------------------------------------------------------------------------- -// Purpose: Published file that a user owns was deleted (from within the app or the web) -//----------------------------------------------------------------------------- -struct RemoteStoragePublishedFileDeleted_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 23 }; - PublishedFileId_t m_nPublishedFileId; // The published file id - AppId_t m_nAppID; // ID of the app that will consume this file. -}; - - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to UpdateUserPublishedItemVote() -//----------------------------------------------------------------------------- -struct RemoteStorageUpdateUserPublishedItemVoteResult_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 24 }; - EResult m_eResult; // The result of the operation. - PublishedFileId_t m_nPublishedFileId; // The published file id -}; - - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to GetUserPublishedItemVoteDetails() -//----------------------------------------------------------------------------- -struct RemoteStorageUserVoteDetails_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 25 }; - EResult m_eResult; // The result of the operation. - PublishedFileId_t m_nPublishedFileId; // The published file id - EWorkshopVote m_eVote; // what the user voted -}; - -struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 26 }; - EResult m_eResult; // The result of the operation. - int32 m_nResultsReturned; - int32 m_nTotalResultCount; - PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; -}; - -struct RemoteStorageSetUserPublishedFileActionResult_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 27 }; - EResult m_eResult; // The result of the operation. - PublishedFileId_t m_nPublishedFileId; // The published file id - EWorkshopFileAction m_eAction; // the action that was attempted -}; - -struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 28 }; - EResult m_eResult; // The result of the operation. - EWorkshopFileAction m_eAction; // the action that was filtered on - int32 m_nResultsReturned; - int32 m_nTotalResultCount; - PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; - uint32 m_rgRTimeUpdated[ k_unEnumeratePublishedFilesMaxResults ]; -}; - - -//----------------------------------------------------------------------------- -// Purpose: Called periodically while a PublishWorkshopFile is in progress -//----------------------------------------------------------------------------- -struct RemoteStoragePublishFileProgress_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 29 }; - double m_dPercentFile; - bool m_bPreview; -}; - - -//----------------------------------------------------------------------------- -// Purpose: Called when the content for a published file is updated -//----------------------------------------------------------------------------- -struct RemoteStoragePublishedFileUpdated_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 30 }; - PublishedFileId_t m_nPublishedFileId; // The published file id - AppId_t m_nAppID; // ID of the app that will consume this file. - uint64 m_ulUnused; // not used anymore -}; - -//----------------------------------------------------------------------------- -// Purpose: Called when a FileWriteAsync completes -//----------------------------------------------------------------------------- -struct RemoteStorageFileWriteAsyncComplete_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 31 }; - EResult m_eResult; // result -}; - -//----------------------------------------------------------------------------- -// Purpose: Called when a FileReadAsync completes -//----------------------------------------------------------------------------- -struct RemoteStorageFileReadAsyncComplete_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 32 }; - SteamAPICall_t m_hFileReadAsync; // call handle of the async read which was made - EResult m_eResult; // result - uint32 m_nOffset; // offset in the file this read was at - uint32 m_cubRead; // amount read - will the <= the amount requested -}; - -#pragma pack( pop ) - - -#endif // ISTEAMREMOTESTORAGE_H +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: public interface to user remote file storage in Steam +// +//============================================================================= + +#ifndef ISTEAMREMOTESTORAGE_H +#define ISTEAMREMOTESTORAGE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + + +//----------------------------------------------------------------------------- +// Purpose: Defines the largest allowed file size. Cloud files cannot be written +// in a single chunk over 100MB (and cannot be over 200MB total.) +//----------------------------------------------------------------------------- +const uint32 k_unMaxCloudFileChunkSize = 100 * 1024 * 1024; + + +//----------------------------------------------------------------------------- +// Purpose: Structure that contains an array of const char * strings and the number of those strings +//----------------------------------------------------------------------------- +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif +struct SteamParamStringArray_t +{ + const char ** m_ppStrings; + int32 m_nNumStrings; +}; +#pragma pack( pop ) + +// A handle to a piece of user generated content +typedef uint64 UGCHandle_t; +typedef uint64 PublishedFileUpdateHandle_t; +typedef uint64 PublishedFileId_t; +const PublishedFileId_t k_PublishedFileIdInvalid = 0; +const UGCHandle_t k_UGCHandleInvalid = 0xffffffffffffffffull; +const PublishedFileUpdateHandle_t k_PublishedFileUpdateHandleInvalid = 0xffffffffffffffffull; + +// Handle for writing to Steam Cloud +typedef uint64 UGCFileWriteStreamHandle_t; +const UGCFileWriteStreamHandle_t k_UGCFileStreamHandleInvalid = 0xffffffffffffffffull; + +const uint32 k_cchPublishedDocumentTitleMax = 128 + 1; +const uint32 k_cchPublishedDocumentDescriptionMax = 8000; +const uint32 k_cchPublishedDocumentChangeDescriptionMax = 8000; +const uint32 k_unEnumeratePublishedFilesMaxResults = 50; +const uint32 k_cchTagListMax = 1024 + 1; +const uint32 k_cchFilenameMax = 260; +const uint32 k_cchPublishedFileURLMax = 256; + + +enum ERemoteStoragePlatform +{ + k_ERemoteStoragePlatformNone = 0, + k_ERemoteStoragePlatformWindows = (1 << 0), + k_ERemoteStoragePlatformOSX = (1 << 1), + k_ERemoteStoragePlatformPS3 = (1 << 2), + k_ERemoteStoragePlatformLinux = (1 << 3), + k_ERemoteStoragePlatformSwitch = (1 << 4), + k_ERemoteStoragePlatformAndroid = (1 << 5), + k_ERemoteStoragePlatformIOS = (1 << 6), + // NB we get one more before we need to widen some things + + k_ERemoteStoragePlatformAll = 0xffffffff +}; + +enum ERemoteStoragePublishedFileVisibility +{ + k_ERemoteStoragePublishedFileVisibilityPublic = 0, + k_ERemoteStoragePublishedFileVisibilityFriendsOnly = 1, + k_ERemoteStoragePublishedFileVisibilityPrivate = 2, + k_ERemoteStoragePublishedFileVisibilityUnlisted = 3, +}; + + +enum EWorkshopFileType +{ + k_EWorkshopFileTypeFirst = 0, + + k_EWorkshopFileTypeCommunity = 0, // normal Workshop item that can be subscribed to + k_EWorkshopFileTypeMicrotransaction = 1, // Workshop item that is meant to be voted on for the purpose of selling in-game + k_EWorkshopFileTypeCollection = 2, // a collection of Workshop or Greenlight items + k_EWorkshopFileTypeArt = 3, // artwork + k_EWorkshopFileTypeVideo = 4, // external video + k_EWorkshopFileTypeScreenshot = 5, // screenshot + k_EWorkshopFileTypeGame = 6, // Greenlight game entry + k_EWorkshopFileTypeSoftware = 7, // Greenlight software entry + k_EWorkshopFileTypeConcept = 8, // Greenlight concept + k_EWorkshopFileTypeWebGuide = 9, // Steam web guide + k_EWorkshopFileTypeIntegratedGuide = 10, // application integrated guide + k_EWorkshopFileTypeMerch = 11, // Workshop merchandise meant to be voted on for the purpose of being sold + k_EWorkshopFileTypeControllerBinding = 12, // Steam Controller bindings + k_EWorkshopFileTypeSteamworksAccessInvite = 13, // internal + k_EWorkshopFileTypeSteamVideo = 14, // Steam video + k_EWorkshopFileTypeGameManagedItem = 15, // managed completely by the game, not the user, and not shown on the web + + // Update k_EWorkshopFileTypeMax if you add values. + k_EWorkshopFileTypeMax = 16 + +}; + +enum EWorkshopVote +{ + k_EWorkshopVoteUnvoted = 0, + k_EWorkshopVoteFor = 1, + k_EWorkshopVoteAgainst = 2, + k_EWorkshopVoteLater = 3, +}; + +enum EWorkshopFileAction +{ + k_EWorkshopFileActionPlayed = 0, + k_EWorkshopFileActionCompleted = 1, +}; + +enum EWorkshopEnumerationType +{ + k_EWorkshopEnumerationTypeRankedByVote = 0, + k_EWorkshopEnumerationTypeRecent = 1, + k_EWorkshopEnumerationTypeTrending = 2, + k_EWorkshopEnumerationTypeFavoritesOfFriends = 3, + k_EWorkshopEnumerationTypeVotedByFriends = 4, + k_EWorkshopEnumerationTypeContentByFriends = 5, + k_EWorkshopEnumerationTypeRecentFromFollowedUsers = 6, +}; + +enum EWorkshopVideoProvider +{ + k_EWorkshopVideoProviderNone = 0, + k_EWorkshopVideoProviderYoutube = 1 +}; + + +enum EUGCReadAction +{ + // Keeps the file handle open unless the last byte is read. You can use this when reading large files (over 100MB) in sequential chunks. + // If the last byte is read, this will behave the same as k_EUGCRead_Close. Otherwise, it behaves the same as k_EUGCRead_ContinueReading. + // This value maintains the same behavior as before the EUGCReadAction parameter was introduced. + k_EUGCRead_ContinueReadingUntilFinished = 0, + + // Keeps the file handle open. Use this when using UGCRead to seek to different parts of the file. + // When you are done seeking around the file, make a final call with k_EUGCRead_Close to close it. + k_EUGCRead_ContinueReading = 1, + + // Frees the file handle. Use this when you're done reading the content. + // To read the file from Steam again you will need to call UGCDownload again. + k_EUGCRead_Close = 2, +}; + + +//----------------------------------------------------------------------------- +// Purpose: Functions for accessing, reading and writing files stored remotely +// and cached locally +//----------------------------------------------------------------------------- +class ISteamRemoteStorage +{ + public: + // NOTE + // + // Filenames are case-insensitive, and will be converted to lowercase automatically. + // So "foo.bar" and "Foo.bar" are the same file, and if you write "Foo.bar" then + // iterate the files, the filename returned will be "foo.bar". + // + + // file operations + virtual bool FileWrite( const char *pchFile, const void *pvData, int32 cubData ) = 0; + virtual int32 FileRead( const char *pchFile, void *pvData, int32 cubDataToRead ) = 0; + + STEAM_CALL_RESULT( RemoteStorageFileWriteAsyncComplete_t ) + virtual SteamAPICall_t FileWriteAsync( const char *pchFile, const void *pvData, uint32 cubData ) = 0; + + STEAM_CALL_RESULT( RemoteStorageFileReadAsyncComplete_t ) + virtual SteamAPICall_t FileReadAsync( const char *pchFile, uint32 nOffset, uint32 cubToRead ) = 0; + virtual bool FileReadAsyncComplete( SteamAPICall_t hReadCall, void *pvBuffer, uint32 cubToRead ) = 0; + + virtual bool FileForget( const char *pchFile ) = 0; + virtual bool FileDelete( const char *pchFile ) = 0; + STEAM_CALL_RESULT( RemoteStorageFileShareResult_t ) + virtual SteamAPICall_t FileShare( const char *pchFile ) = 0; + virtual bool SetSyncPlatforms( const char *pchFile, ERemoteStoragePlatform eRemoteStoragePlatform ) = 0; + + // file operations that cause network IO + virtual UGCFileWriteStreamHandle_t FileWriteStreamOpen( const char *pchFile ) = 0; + virtual bool FileWriteStreamWriteChunk( UGCFileWriteStreamHandle_t writeHandle, const void *pvData, int32 cubData ) = 0; + virtual bool FileWriteStreamClose( UGCFileWriteStreamHandle_t writeHandle ) = 0; + virtual bool FileWriteStreamCancel( UGCFileWriteStreamHandle_t writeHandle ) = 0; + + // file information + virtual bool FileExists( const char *pchFile ) = 0; + virtual bool FilePersisted( const char *pchFile ) = 0; + virtual int32 GetFileSize( const char *pchFile ) = 0; + virtual int64 GetFileTimestamp( const char *pchFile ) = 0; + virtual ERemoteStoragePlatform GetSyncPlatforms( const char *pchFile ) = 0; + + // iteration + virtual int32 GetFileCount() = 0; + virtual const char *GetFileNameAndSize( int iFile, int32 *pnFileSizeInBytes ) = 0; + + // configuration management + virtual bool GetQuota( uint64 *pnTotalBytes, uint64 *puAvailableBytes ) = 0; + virtual bool IsCloudEnabledForAccount() = 0; + virtual bool IsCloudEnabledForApp() = 0; + virtual void SetCloudEnabledForApp( bool bEnabled ) = 0; + + // user generated content + + // Downloads a UGC file. A priority value of 0 will download the file immediately, + // otherwise it will wait to download the file until all downloads with a lower priority + // value are completed. Downloads with equal priority will occur simultaneously. + STEAM_CALL_RESULT( RemoteStorageDownloadUGCResult_t ) + virtual SteamAPICall_t UGCDownload( UGCHandle_t hContent, uint32 unPriority ) = 0; + + // Gets the amount of data downloaded so far for a piece of content. pnBytesExpected can be 0 if function returns false + // or if the transfer hasn't started yet, so be careful to check for that before dividing to get a percentage + virtual bool GetUGCDownloadProgress( UGCHandle_t hContent, int32 *pnBytesDownloaded, int32 *pnBytesExpected ) = 0; + + // Gets metadata for a file after it has been downloaded. This is the same metadata given in the RemoteStorageDownloadUGCResult_t call result + virtual bool GetUGCDetails( UGCHandle_t hContent, AppId_t *pnAppID, STEAM_OUT_STRING() char **ppchName, int32 *pnFileSizeInBytes, STEAM_OUT_STRUCT() CSteamID *pSteamIDOwner ) = 0; + + // After download, gets the content of the file. + // Small files can be read all at once by calling this function with an offset of 0 and cubDataToRead equal to the size of the file. + // Larger files can be read in chunks to reduce memory usage (since both sides of the IPC client and the game itself must allocate + // enough memory for each chunk). Once the last byte is read, the file is implicitly closed and further calls to UGCRead will fail + // unless UGCDownload is called again. + // For especially large files (anything over 100MB) it is a requirement that the file is read in chunks. + virtual int32 UGCRead( UGCHandle_t hContent, void *pvData, int32 cubDataToRead, uint32 cOffset, EUGCReadAction eAction ) = 0; + + // Functions to iterate through UGC that has finished downloading but has not yet been read via UGCRead() + virtual int32 GetCachedUGCCount() = 0; + virtual UGCHandle_t GetCachedUGCHandle( int32 iCachedContent ) = 0; + + // The following functions are only necessary on the Playstation 3. On PC & Mac, the Steam client will handle these operations for you + // On Playstation 3, the game controls which files are stored in the cloud, via FilePersist, FileFetch, and FileForget. + +#if defined(_SERVER) + // Connect to Steam and get a list of files in the Cloud - results in a RemoteStorageAppSyncStatusCheck_t callback + virtual void GetFileListFromServer() = 0; + // Indicate this file should be downloaded in the next sync + virtual bool FileFetch( const char *pchFile ) = 0; + // Indicate this file should be persisted in the next sync + virtual bool FilePersist( const char *pchFile ) = 0; + // Pull any requested files down from the Cloud - results in a RemoteStorageAppSyncedClient_t callback + virtual bool SynchronizeToClient() = 0; + // Upload any requested files to the Cloud - results in a RemoteStorageAppSyncedServer_t callback + virtual bool SynchronizeToServer() = 0; + // Reset any fetch/persist/etc requests + virtual bool ResetFileRequestState() = 0; +#endif + + // publishing UGC + STEAM_CALL_RESULT( RemoteStoragePublishFileProgress_t ) + virtual SteamAPICall_t PublishWorkshopFile( const char *pchFile, const char *pchPreviewFile, AppId_t nConsumerAppId, const char *pchTitle, const char *pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t *pTags, EWorkshopFileType eWorkshopFileType ) = 0; + virtual PublishedFileUpdateHandle_t CreatePublishedFileUpdateRequest( PublishedFileId_t unPublishedFileId ) = 0; + virtual bool UpdatePublishedFileFile( PublishedFileUpdateHandle_t updateHandle, const char *pchFile ) = 0; + virtual bool UpdatePublishedFilePreviewFile( PublishedFileUpdateHandle_t updateHandle, const char *pchPreviewFile ) = 0; + virtual bool UpdatePublishedFileTitle( PublishedFileUpdateHandle_t updateHandle, const char *pchTitle ) = 0; + virtual bool UpdatePublishedFileDescription( PublishedFileUpdateHandle_t updateHandle, const char *pchDescription ) = 0; + virtual bool UpdatePublishedFileVisibility( PublishedFileUpdateHandle_t updateHandle, ERemoteStoragePublishedFileVisibility eVisibility ) = 0; + virtual bool UpdatePublishedFileTags( PublishedFileUpdateHandle_t updateHandle, SteamParamStringArray_t *pTags ) = 0; + STEAM_CALL_RESULT( RemoteStorageUpdatePublishedFileResult_t ) + virtual SteamAPICall_t CommitPublishedFileUpdate( PublishedFileUpdateHandle_t updateHandle ) = 0; + // Gets published file details for the given publishedfileid. If unMaxSecondsOld is greater than 0, + // cached data may be returned, depending on how long ago it was cached. A value of 0 will force a refresh. + // A value of k_WorkshopForceLoadPublishedFileDetailsFromCache will use cached data if it exists, no matter how old it is. + STEAM_CALL_RESULT( RemoteStorageGetPublishedFileDetailsResult_t ) + virtual SteamAPICall_t GetPublishedFileDetails( PublishedFileId_t unPublishedFileId, uint32 unMaxSecondsOld ) = 0; + STEAM_CALL_RESULT( RemoteStorageDeletePublishedFileResult_t ) + virtual SteamAPICall_t DeletePublishedFile( PublishedFileId_t unPublishedFileId ) = 0; + // enumerate the files that the current user published with this app + STEAM_CALL_RESULT( RemoteStorageEnumerateUserPublishedFilesResult_t ) + virtual SteamAPICall_t EnumerateUserPublishedFiles( uint32 unStartIndex ) = 0; + STEAM_CALL_RESULT( RemoteStorageSubscribePublishedFileResult_t ) + virtual SteamAPICall_t SubscribePublishedFile( PublishedFileId_t unPublishedFileId ) = 0; + STEAM_CALL_RESULT( RemoteStorageEnumerateUserSubscribedFilesResult_t ) + virtual SteamAPICall_t EnumerateUserSubscribedFiles( uint32 unStartIndex ) = 0; + STEAM_CALL_RESULT( RemoteStorageUnsubscribePublishedFileResult_t ) + virtual SteamAPICall_t UnsubscribePublishedFile( PublishedFileId_t unPublishedFileId ) = 0; + virtual bool UpdatePublishedFileSetChangeDescription( PublishedFileUpdateHandle_t updateHandle, const char *pchChangeDescription ) = 0; + STEAM_CALL_RESULT( RemoteStorageGetPublishedItemVoteDetailsResult_t ) + virtual SteamAPICall_t GetPublishedItemVoteDetails( PublishedFileId_t unPublishedFileId ) = 0; + STEAM_CALL_RESULT( RemoteStorageUpdateUserPublishedItemVoteResult_t ) + virtual SteamAPICall_t UpdateUserPublishedItemVote( PublishedFileId_t unPublishedFileId, bool bVoteUp ) = 0; + STEAM_CALL_RESULT( RemoteStorageGetPublishedItemVoteDetailsResult_t ) + virtual SteamAPICall_t GetUserPublishedItemVoteDetails( PublishedFileId_t unPublishedFileId ) = 0; + STEAM_CALL_RESULT( RemoteStorageEnumerateUserPublishedFilesResult_t ) + virtual SteamAPICall_t EnumerateUserSharedWorkshopFiles( CSteamID steamId, uint32 unStartIndex, SteamParamStringArray_t *pRequiredTags, SteamParamStringArray_t *pExcludedTags ) = 0; + STEAM_CALL_RESULT( RemoteStoragePublishFileProgress_t ) + virtual SteamAPICall_t PublishVideo( EWorkshopVideoProvider eVideoProvider, const char *pchVideoAccount, const char *pchVideoIdentifier, const char *pchPreviewFile, AppId_t nConsumerAppId, const char *pchTitle, const char *pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t *pTags ) = 0; + STEAM_CALL_RESULT( RemoteStorageSetUserPublishedFileActionResult_t ) + virtual SteamAPICall_t SetUserPublishedFileAction( PublishedFileId_t unPublishedFileId, EWorkshopFileAction eAction ) = 0; + STEAM_CALL_RESULT( RemoteStorageEnumeratePublishedFilesByUserActionResult_t ) + virtual SteamAPICall_t EnumeratePublishedFilesByUserAction( EWorkshopFileAction eAction, uint32 unStartIndex ) = 0; + // this method enumerates the public view of workshop files + STEAM_CALL_RESULT( RemoteStorageEnumerateWorkshopFilesResult_t ) + virtual SteamAPICall_t EnumeratePublishedWorkshopFiles( EWorkshopEnumerationType eEnumerationType, uint32 unStartIndex, uint32 unCount, uint32 unDays, SteamParamStringArray_t *pTags, SteamParamStringArray_t *pUserTags ) = 0; + + STEAM_CALL_RESULT( RemoteStorageDownloadUGCResult_t ) + virtual SteamAPICall_t UGCDownloadToLocation( UGCHandle_t hContent, const char *pchLocation, uint32 unPriority ) = 0; +}; + +#define STEAMREMOTESTORAGE_INTERFACE_VERSION "STEAMREMOTESTORAGE_INTERFACE_VERSION014" + +// Global interface accessor +inline ISteamRemoteStorage *SteamRemoteStorage(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamRemoteStorage *, SteamRemoteStorage, STEAMREMOTESTORAGE_INTERFACE_VERSION ); + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + +//----------------------------------------------------------------------------- +// Purpose: sent when the local file cache is fully synced with the server for an app +// That means that an application can be started and has all latest files +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncedClient_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 1 }; + AppId_t m_nAppID; + EResult m_eResult; + int m_unNumDownloads; +}; + +//----------------------------------------------------------------------------- +// Purpose: sent when the server is fully synced with the local file cache for an app +// That means that we can shutdown Steam and our data is stored on the server +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncedServer_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 2 }; + AppId_t m_nAppID; + EResult m_eResult; + int m_unNumUploads; +}; + +//----------------------------------------------------------------------------- +// Purpose: Status of up and downloads during a sync session +// +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncProgress_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 3 }; + char m_rgchCurrentFile[k_cchFilenameMax]; // Current file being transferred + AppId_t m_nAppID; // App this info relates to + uint32 m_uBytesTransferredThisChunk; // Bytes transferred this chunk + double m_dAppPercentComplete; // Percent complete that this app's transfers are + bool m_bUploading; // if false, downloading +}; + +// +// IMPORTANT! k_iClientRemoteStorageCallbacks + 4 is used, see iclientremotestorage.h +// + + +//----------------------------------------------------------------------------- +// Purpose: Sent after we've determined the list of files that are out of sync +// with the server. +//----------------------------------------------------------------------------- +struct RemoteStorageAppSyncStatusCheck_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 5 }; + AppId_t m_nAppID; + EResult m_eResult; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to FileShare() +//----------------------------------------------------------------------------- +struct RemoteStorageFileShareResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 7 }; + EResult m_eResult; // The result of the operation + UGCHandle_t m_hFile; // The handle that can be shared with users and features + char m_rgchFilename[k_cchFilenameMax]; // The name of the file that was shared +}; + + +// k_iClientRemoteStorageCallbacks + 8 is deprecated! Do not reuse + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to PublishFile() +//----------------------------------------------------------------------------- +struct RemoteStoragePublishFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 9 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to DeletePublishedFile() +//----------------------------------------------------------------------------- +struct RemoteStorageDeletePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 11 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to EnumerateUserPublishedFiles() +//----------------------------------------------------------------------------- +struct RemoteStorageEnumerateUserPublishedFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 12 }; + EResult m_eResult; // The result of the operation. + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to SubscribePublishedFile() +//----------------------------------------------------------------------------- +struct RemoteStorageSubscribePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 13 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to EnumerateSubscribePublishedFiles() +//----------------------------------------------------------------------------- +struct RemoteStorageEnumerateUserSubscribedFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 14 }; + EResult m_eResult; // The result of the operation. + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; + uint32 m_rgRTimeSubscribed[ k_unEnumeratePublishedFilesMaxResults ]; +}; + +#if defined(VALVE_CALLBACK_PACK_SMALL) + VALVE_COMPILE_TIME_ASSERT( sizeof( RemoteStorageEnumerateUserSubscribedFilesResult_t ) == (1 + 1 + 1 + 50 + 100) * 4 ); +#elif defined(VALVE_CALLBACK_PACK_LARGE) + VALVE_COMPILE_TIME_ASSERT( sizeof( RemoteStorageEnumerateUserSubscribedFilesResult_t ) == (1 + 1 + 1 + 50 + 100) * 4 + 4 ); +#else +#warning You must first include steam_api_common.h +#endif + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to UnsubscribePublishedFile() +//----------------------------------------------------------------------------- +struct RemoteStorageUnsubscribePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 15 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to CommitPublishedFileUpdate() +//----------------------------------------------------------------------------- +struct RemoteStorageUpdatePublishedFileResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 16 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to UGCDownload() +//----------------------------------------------------------------------------- +struct RemoteStorageDownloadUGCResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 17 }; + EResult m_eResult; // The result of the operation. + UGCHandle_t m_hFile; // The handle to the file that was attempted to be downloaded. + AppId_t m_nAppID; // ID of the app that created this file. + int32 m_nSizeInBytes; // The size of the file that was downloaded, in bytes. + char m_pchFileName[k_cchFilenameMax]; // The name of the file that was downloaded. + uint64 m_ulSteamIDOwner; // Steam ID of the user who created this content. +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to GetPublishedFileDetails() +//----------------------------------------------------------------------------- +struct RemoteStorageGetPublishedFileDetailsResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 18 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; + AppId_t m_nCreatorAppID; // ID of the app that created this file. + AppId_t m_nConsumerAppID; // ID of the app that will consume this file. + char m_rgchTitle[k_cchPublishedDocumentTitleMax]; // title of document + char m_rgchDescription[k_cchPublishedDocumentDescriptionMax]; // description of document + UGCHandle_t m_hFile; // The handle of the primary file + UGCHandle_t m_hPreviewFile; // The handle of the preview file + uint64 m_ulSteamIDOwner; // Steam ID of the user who created this content. + uint32 m_rtimeCreated; // time when the published file was created + uint32 m_rtimeUpdated; // time when the published file was last updated + ERemoteStoragePublishedFileVisibility m_eVisibility; + bool m_bBanned; + char m_rgchTags[k_cchTagListMax]; // comma separated list of all tags associated with this file + bool m_bTagsTruncated; // whether the list of tags was too long to be returned in the provided buffer + char m_pchFileName[k_cchFilenameMax]; // The name of the primary file + int32 m_nFileSize; // Size of the primary file + int32 m_nPreviewFileSize; // Size of the preview file + char m_rgchURL[k_cchPublishedFileURLMax]; // URL (for a video or a website) + EWorkshopFileType m_eFileType; // Type of the file + bool m_bAcceptedForUse; // developer has specifically flagged this item as accepted in the Workshop +}; + + +struct RemoteStorageEnumerateWorkshopFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 19 }; + EResult m_eResult; + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; + float m_rgScore[ k_unEnumeratePublishedFilesMaxResults ]; + AppId_t m_nAppId; + uint32 m_unStartIndex; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of GetPublishedItemVoteDetails +//----------------------------------------------------------------------------- +struct RemoteStorageGetPublishedItemVoteDetailsResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 20 }; + EResult m_eResult; + PublishedFileId_t m_unPublishedFileId; + int32 m_nVotesFor; + int32 m_nVotesAgainst; + int32 m_nReports; + float m_fScore; +}; + + +//----------------------------------------------------------------------------- +// Purpose: User subscribed to a file for the app (from within the app or on the web) +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileSubscribed_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 21 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. +}; + +//----------------------------------------------------------------------------- +// Purpose: User unsubscribed from a file for the app (from within the app or on the web) +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileUnsubscribed_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 22 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. +}; + + +//----------------------------------------------------------------------------- +// Purpose: Published file that a user owns was deleted (from within the app or the web) +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileDeleted_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 23 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to UpdateUserPublishedItemVote() +//----------------------------------------------------------------------------- +struct RemoteStorageUpdateUserPublishedItemVoteResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 24 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; // The published file id +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to GetUserPublishedItemVoteDetails() +//----------------------------------------------------------------------------- +struct RemoteStorageUserVoteDetails_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 25 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; // The published file id + EWorkshopVote m_eVote; // what the user voted +}; + +struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 26 }; + EResult m_eResult; // The result of the operation. + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; +}; + +struct RemoteStorageSetUserPublishedFileActionResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 27 }; + EResult m_eResult; // The result of the operation. + PublishedFileId_t m_nPublishedFileId; // The published file id + EWorkshopFileAction m_eAction; // the action that was attempted +}; + +struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 28 }; + EResult m_eResult; // The result of the operation. + EWorkshopFileAction m_eAction; // the action that was filtered on + int32 m_nResultsReturned; + int32 m_nTotalResultCount; + PublishedFileId_t m_rgPublishedFileId[ k_unEnumeratePublishedFilesMaxResults ]; + uint32 m_rgRTimeUpdated[ k_unEnumeratePublishedFilesMaxResults ]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Called periodically while a PublishWorkshopFile is in progress +//----------------------------------------------------------------------------- +struct RemoteStoragePublishFileProgress_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 29 }; + double m_dPercentFile; + bool m_bPreview; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Called when the content for a published file is updated +//----------------------------------------------------------------------------- +struct RemoteStoragePublishedFileUpdated_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 30 }; + PublishedFileId_t m_nPublishedFileId; // The published file id + AppId_t m_nAppID; // ID of the app that will consume this file. + uint64 m_ulUnused; // not used anymore +}; + +//----------------------------------------------------------------------------- +// Purpose: Called when a FileWriteAsync completes +//----------------------------------------------------------------------------- +struct RemoteStorageFileWriteAsyncComplete_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 31 }; + EResult m_eResult; // result +}; + +//----------------------------------------------------------------------------- +// Purpose: Called when a FileReadAsync completes +//----------------------------------------------------------------------------- +struct RemoteStorageFileReadAsyncComplete_t +{ + enum { k_iCallback = k_iClientRemoteStorageCallbacks + 32 }; + SteamAPICall_t m_hFileReadAsync; // call handle of the async read which was made + EResult m_eResult; // result + uint32 m_nOffset; // offset in the file this read was at + uint32 m_cubRead; // amount read - will the <= the amount requested +}; + +#pragma pack( pop ) + + +#endif // ISTEAMREMOTESTORAGE_H diff --git a/CodeGen/steam/isteamscreenshots.h b/CodeGen/steam/isteamscreenshots.h index b9feba08..18242682 100644 --- a/CodeGen/steam/isteamscreenshots.h +++ b/CodeGen/steam/isteamscreenshots.h @@ -1,120 +1,120 @@ -//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= -// -// Purpose: public interface to user remote file storage in Steam -// -//============================================================================= - -#ifndef ISTEAMSCREENSHOTS_H -#define ISTEAMSCREENSHOTS_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" - -const uint32 k_nScreenshotMaxTaggedUsers = 32; -const uint32 k_nScreenshotMaxTaggedPublishedFiles = 32; -const int k_cubUFSTagTypeMax = 255; -const int k_cubUFSTagValueMax = 255; - -// Required with of a thumbnail provided to AddScreenshotToLibrary. If you do not provide a thumbnail -// one will be generated. -const int k_ScreenshotThumbWidth = 200; - -// Handle is valid for the lifetime of your process and no longer -typedef uint32 ScreenshotHandle; -#define INVALID_SCREENSHOT_HANDLE 0 - -enum EVRScreenshotType -{ - k_EVRScreenshotType_None = 0, - k_EVRScreenshotType_Mono = 1, - k_EVRScreenshotType_Stereo = 2, - k_EVRScreenshotType_MonoCubemap = 3, - k_EVRScreenshotType_MonoPanorama = 4, - k_EVRScreenshotType_StereoPanorama = 5 -}; - -//----------------------------------------------------------------------------- -// Purpose: Functions for adding screenshots to the user's screenshot library -//----------------------------------------------------------------------------- -class ISteamScreenshots -{ -public: - // Writes a screenshot to the user's screenshot library given the raw image data, which must be in RGB format. - // The return value is a handle that is valid for the duration of the game process and can be used to apply tags. - virtual ScreenshotHandle WriteScreenshot( void *pubRGB, uint32 cubRGB, int nWidth, int nHeight ) = 0; - - // Adds a screenshot to the user's screenshot library from disk. If a thumbnail is provided, it must be 200 pixels wide and the same aspect ratio - // as the screenshot, otherwise a thumbnail will be generated if the user uploads the screenshot. The screenshots must be in either JPEG or TGA format. - // The return value is a handle that is valid for the duration of the game process and can be used to apply tags. - // JPEG, TGA, and PNG formats are supported. - virtual ScreenshotHandle AddScreenshotToLibrary( const char *pchFilename, const char *pchThumbnailFilename, int nWidth, int nHeight ) = 0; - - // Causes the Steam overlay to take a screenshot. If screenshots are being hooked by the game then a ScreenshotRequested_t callback is sent back to the game instead. - virtual void TriggerScreenshot() = 0; - - // Toggles whether the overlay handles screenshots when the user presses the screenshot hotkey, or the game handles them. If the game is hooking screenshots, - // then the ScreenshotRequested_t callback will be sent if the user presses the hotkey, and the game is expected to call WriteScreenshot or AddScreenshotToLibrary - // in response. - virtual void HookScreenshots( bool bHook ) = 0; - - // Sets metadata about a screenshot's location (for example, the name of the map) - virtual bool SetLocation( ScreenshotHandle hScreenshot, const char *pchLocation ) = 0; - - // Tags a user as being visible in the screenshot - virtual bool TagUser( ScreenshotHandle hScreenshot, CSteamID steamID ) = 0; - - // Tags a published file as being visible in the screenshot - virtual bool TagPublishedFile( ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID ) = 0; - - // Returns true if the app has hooked the screenshot - virtual bool IsScreenshotsHooked() = 0; - - // Adds a VR screenshot to the user's screenshot library from disk in the supported type. - // pchFilename should be the normal 2D image used in the library view - // pchVRFilename should contain the image that matches the correct type - // The return value is a handle that is valid for the duration of the game process and can be used to apply tags. - // JPEG, TGA, and PNG formats are supported. - virtual ScreenshotHandle AddVRScreenshotToLibrary( EVRScreenshotType eType, const char *pchFilename, const char *pchVRFilename ) = 0; -}; - -#define STEAMSCREENSHOTS_INTERFACE_VERSION "STEAMSCREENSHOTS_INTERFACE_VERSION003" - -// Global interface accessor -inline ISteamScreenshots *SteamScreenshots(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamScreenshots *, SteamScreenshots, STEAMSCREENSHOTS_INTERFACE_VERSION ); - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif -//----------------------------------------------------------------------------- -// Purpose: Screenshot successfully written or otherwise added to the library -// and can now be tagged -//----------------------------------------------------------------------------- -struct ScreenshotReady_t -{ - enum { k_iCallback = k_iSteamScreenshotsCallbacks + 1 }; - ScreenshotHandle m_hLocal; - EResult m_eResult; -}; - -//----------------------------------------------------------------------------- -// Purpose: Screenshot has been requested by the user. Only sent if -// HookScreenshots() has been called, in which case Steam will not take -// the screenshot itself. -//----------------------------------------------------------------------------- -struct ScreenshotRequested_t -{ - enum { k_iCallback = k_iSteamScreenshotsCallbacks + 2 }; -}; - -#pragma pack( pop ) - -#endif // ISTEAMSCREENSHOTS_H - +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: public interface to user remote file storage in Steam +// +//============================================================================= + +#ifndef ISTEAMSCREENSHOTS_H +#define ISTEAMSCREENSHOTS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + +const uint32 k_nScreenshotMaxTaggedUsers = 32; +const uint32 k_nScreenshotMaxTaggedPublishedFiles = 32; +const int k_cubUFSTagTypeMax = 255; +const int k_cubUFSTagValueMax = 255; + +// Required with of a thumbnail provided to AddScreenshotToLibrary. If you do not provide a thumbnail +// one will be generated. +const int k_ScreenshotThumbWidth = 200; + +// Handle is valid for the lifetime of your process and no longer +typedef uint32 ScreenshotHandle; +#define INVALID_SCREENSHOT_HANDLE 0 + +enum EVRScreenshotType +{ + k_EVRScreenshotType_None = 0, + k_EVRScreenshotType_Mono = 1, + k_EVRScreenshotType_Stereo = 2, + k_EVRScreenshotType_MonoCubemap = 3, + k_EVRScreenshotType_MonoPanorama = 4, + k_EVRScreenshotType_StereoPanorama = 5 +}; + +//----------------------------------------------------------------------------- +// Purpose: Functions for adding screenshots to the user's screenshot library +//----------------------------------------------------------------------------- +class ISteamScreenshots +{ +public: + // Writes a screenshot to the user's screenshot library given the raw image data, which must be in RGB format. + // The return value is a handle that is valid for the duration of the game process and can be used to apply tags. + virtual ScreenshotHandle WriteScreenshot( void *pubRGB, uint32 cubRGB, int nWidth, int nHeight ) = 0; + + // Adds a screenshot to the user's screenshot library from disk. If a thumbnail is provided, it must be 200 pixels wide and the same aspect ratio + // as the screenshot, otherwise a thumbnail will be generated if the user uploads the screenshot. The screenshots must be in either JPEG or TGA format. + // The return value is a handle that is valid for the duration of the game process and can be used to apply tags. + // JPEG, TGA, and PNG formats are supported. + virtual ScreenshotHandle AddScreenshotToLibrary( const char *pchFilename, const char *pchThumbnailFilename, int nWidth, int nHeight ) = 0; + + // Causes the Steam overlay to take a screenshot. If screenshots are being hooked by the game then a ScreenshotRequested_t callback is sent back to the game instead. + virtual void TriggerScreenshot() = 0; + + // Toggles whether the overlay handles screenshots when the user presses the screenshot hotkey, or the game handles them. If the game is hooking screenshots, + // then the ScreenshotRequested_t callback will be sent if the user presses the hotkey, and the game is expected to call WriteScreenshot or AddScreenshotToLibrary + // in response. + virtual void HookScreenshots( bool bHook ) = 0; + + // Sets metadata about a screenshot's location (for example, the name of the map) + virtual bool SetLocation( ScreenshotHandle hScreenshot, const char *pchLocation ) = 0; + + // Tags a user as being visible in the screenshot + virtual bool TagUser( ScreenshotHandle hScreenshot, CSteamID steamID ) = 0; + + // Tags a published file as being visible in the screenshot + virtual bool TagPublishedFile( ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID ) = 0; + + // Returns true if the app has hooked the screenshot + virtual bool IsScreenshotsHooked() = 0; + + // Adds a VR screenshot to the user's screenshot library from disk in the supported type. + // pchFilename should be the normal 2D image used in the library view + // pchVRFilename should contain the image that matches the correct type + // The return value is a handle that is valid for the duration of the game process and can be used to apply tags. + // JPEG, TGA, and PNG formats are supported. + virtual ScreenshotHandle AddVRScreenshotToLibrary( EVRScreenshotType eType, const char *pchFilename, const char *pchVRFilename ) = 0; +}; + +#define STEAMSCREENSHOTS_INTERFACE_VERSION "STEAMSCREENSHOTS_INTERFACE_VERSION003" + +// Global interface accessor +inline ISteamScreenshots *SteamScreenshots(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamScreenshots *, SteamScreenshots, STEAMSCREENSHOTS_INTERFACE_VERSION ); + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif +//----------------------------------------------------------------------------- +// Purpose: Screenshot successfully written or otherwise added to the library +// and can now be tagged +//----------------------------------------------------------------------------- +struct ScreenshotReady_t +{ + enum { k_iCallback = k_iSteamScreenshotsCallbacks + 1 }; + ScreenshotHandle m_hLocal; + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// Purpose: Screenshot has been requested by the user. Only sent if +// HookScreenshots() has been called, in which case Steam will not take +// the screenshot itself. +//----------------------------------------------------------------------------- +struct ScreenshotRequested_t +{ + enum { k_iCallback = k_iSteamScreenshotsCallbacks + 2 }; +}; + +#pragma pack( pop ) + +#endif // ISTEAMSCREENSHOTS_H + diff --git a/CodeGen/steam/isteamugc.h b/CodeGen/steam/isteamugc.h index 51c929b0..e355d16a 100644 --- a/CodeGen/steam/isteamugc.h +++ b/CodeGen/steam/isteamugc.h @@ -1,571 +1,571 @@ -//====== Copyright 1996-2013, Valve Corporation, All rights reserved. ======= -// -// Purpose: interface to steam ugc -// -//============================================================================= - -#ifndef ISTEAMUGC_H -#define ISTEAMUGC_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" -#include "isteamremotestorage.h" - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - - -typedef uint64 UGCQueryHandle_t; -typedef uint64 UGCUpdateHandle_t; - - -const UGCQueryHandle_t k_UGCQueryHandleInvalid = 0xffffffffffffffffull; -const UGCUpdateHandle_t k_UGCUpdateHandleInvalid = 0xffffffffffffffffull; - - -// Matching UGC types for queries -enum EUGCMatchingUGCType -{ - k_EUGCMatchingUGCType_Items = 0, // both mtx items and ready-to-use items - k_EUGCMatchingUGCType_Items_Mtx = 1, - k_EUGCMatchingUGCType_Items_ReadyToUse = 2, - k_EUGCMatchingUGCType_Collections = 3, - k_EUGCMatchingUGCType_Artwork = 4, - k_EUGCMatchingUGCType_Videos = 5, - k_EUGCMatchingUGCType_Screenshots = 6, - k_EUGCMatchingUGCType_AllGuides = 7, // both web guides and integrated guides - k_EUGCMatchingUGCType_WebGuides = 8, - k_EUGCMatchingUGCType_IntegratedGuides = 9, - k_EUGCMatchingUGCType_UsableInGame = 10, // ready-to-use items and integrated guides - k_EUGCMatchingUGCType_ControllerBindings = 11, - k_EUGCMatchingUGCType_GameManagedItems = 12, // game managed items (not managed by users) - k_EUGCMatchingUGCType_All = ~0, // @note: will only be valid for CreateQueryUserUGCRequest requests -}; - -// Different lists of published UGC for a user. -// If the current logged in user is different than the specified user, then some options may not be allowed. -enum EUserUGCList -{ - k_EUserUGCList_Published, - k_EUserUGCList_VotedOn, - k_EUserUGCList_VotedUp, - k_EUserUGCList_VotedDown, - k_EUserUGCList_WillVoteLater, - k_EUserUGCList_Favorited, - k_EUserUGCList_Subscribed, - k_EUserUGCList_UsedOrPlayed, - k_EUserUGCList_Followed, -}; - -// Sort order for user published UGC lists (defaults to creation order descending) -enum EUserUGCListSortOrder -{ - k_EUserUGCListSortOrder_CreationOrderDesc, - k_EUserUGCListSortOrder_CreationOrderAsc, - k_EUserUGCListSortOrder_TitleAsc, - k_EUserUGCListSortOrder_LastUpdatedDesc, - k_EUserUGCListSortOrder_SubscriptionDateDesc, - k_EUserUGCListSortOrder_VoteScoreDesc, - k_EUserUGCListSortOrder_ForModeration, -}; - -// Combination of sorting and filtering for queries across all UGC -enum EUGCQuery -{ - k_EUGCQuery_RankedByVote = 0, - k_EUGCQuery_RankedByPublicationDate = 1, - k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate = 2, - k_EUGCQuery_RankedByTrend = 3, - k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate = 4, - k_EUGCQuery_CreatedByFriendsRankedByPublicationDate = 5, - k_EUGCQuery_RankedByNumTimesReported = 6, - k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate = 7, - k_EUGCQuery_NotYetRated = 8, - k_EUGCQuery_RankedByTotalVotesAsc = 9, - k_EUGCQuery_RankedByVotesUp = 10, - k_EUGCQuery_RankedByTextSearch = 11, - k_EUGCQuery_RankedByTotalUniqueSubscriptions = 12, - k_EUGCQuery_RankedByPlaytimeTrend = 13, - k_EUGCQuery_RankedByTotalPlaytime = 14, - k_EUGCQuery_RankedByAveragePlaytimeTrend = 15, - k_EUGCQuery_RankedByLifetimeAveragePlaytime = 16, - k_EUGCQuery_RankedByPlaytimeSessionsTrend = 17, - k_EUGCQuery_RankedByLifetimePlaytimeSessions = 18, -}; - -enum EItemUpdateStatus -{ - k_EItemUpdateStatusInvalid = 0, // The item update handle was invalid, job might be finished, listen too SubmitItemUpdateResult_t - k_EItemUpdateStatusPreparingConfig = 1, // The item update is processing configuration data - k_EItemUpdateStatusPreparingContent = 2, // The item update is reading and processing content files - k_EItemUpdateStatusUploadingContent = 3, // The item update is uploading content changes to Steam - k_EItemUpdateStatusUploadingPreviewFile = 4, // The item update is uploading new preview file image - k_EItemUpdateStatusCommittingChanges = 5 // The item update is committing all changes -}; - -enum EItemState -{ - k_EItemStateNone = 0, // item not tracked on client - k_EItemStateSubscribed = 1, // current user is subscribed to this item. Not just cached. - k_EItemStateLegacyItem = 2, // item was created with ISteamRemoteStorage - k_EItemStateInstalled = 4, // item is installed and usable (but maybe out of date) - k_EItemStateNeedsUpdate = 8, // items needs an update. Either because it's not installed yet or creator updated content - k_EItemStateDownloading = 16, // item update is currently downloading - k_EItemStateDownloadPending = 32, // DownloadItem() was called for this item, content isn't available until DownloadItemResult_t is fired -}; - -enum EItemStatistic -{ - k_EItemStatistic_NumSubscriptions = 0, - k_EItemStatistic_NumFavorites = 1, - k_EItemStatistic_NumFollowers = 2, - k_EItemStatistic_NumUniqueSubscriptions = 3, - k_EItemStatistic_NumUniqueFavorites = 4, - k_EItemStatistic_NumUniqueFollowers = 5, - k_EItemStatistic_NumUniqueWebsiteViews = 6, - k_EItemStatistic_ReportScore = 7, - k_EItemStatistic_NumSecondsPlayed = 8, - k_EItemStatistic_NumPlaytimeSessions = 9, - k_EItemStatistic_NumComments = 10, - k_EItemStatistic_NumSecondsPlayedDuringTimePeriod = 11, - k_EItemStatistic_NumPlaytimeSessionsDuringTimePeriod = 12, -}; - -enum EItemPreviewType -{ - k_EItemPreviewType_Image = 0, // standard image file expected (e.g. jpg, png, gif, etc.) - k_EItemPreviewType_YouTubeVideo = 1, // video id is stored - k_EItemPreviewType_Sketchfab = 2, // model id is stored - k_EItemPreviewType_EnvironmentMap_HorizontalCross = 3, // standard image file expected - cube map in the layout - // +---+---+-------+ - // | |Up | | - // +---+---+---+---+ - // | L | F | R | B | - // +---+---+---+---+ - // | |Dn | | - // +---+---+---+---+ - k_EItemPreviewType_EnvironmentMap_LatLong = 4, // standard image file expected - k_EItemPreviewType_ReservedMax = 255, // you can specify your own types above this value -}; - -const uint32 kNumUGCResultsPerPage = 50; -const uint32 k_cchDeveloperMetadataMax = 5000; - -// Details for a single published file/UGC -struct SteamUGCDetails_t -{ - PublishedFileId_t m_nPublishedFileId; - EResult m_eResult; // The result of the operation. - EWorkshopFileType m_eFileType; // Type of the file - AppId_t m_nCreatorAppID; // ID of the app that created this file. - AppId_t m_nConsumerAppID; // ID of the app that will consume this file. - char m_rgchTitle[k_cchPublishedDocumentTitleMax]; // title of document - char m_rgchDescription[k_cchPublishedDocumentDescriptionMax]; // description of document - uint64 m_ulSteamIDOwner; // Steam ID of the user who created this content. - uint32 m_rtimeCreated; // time when the published file was created - uint32 m_rtimeUpdated; // time when the published file was last updated - uint32 m_rtimeAddedToUserList; // time when the user added the published file to their list (not always applicable) - ERemoteStoragePublishedFileVisibility m_eVisibility; // visibility - bool m_bBanned; // whether the file was banned - bool m_bAcceptedForUse; // developer has specifically flagged this item as accepted in the Workshop - bool m_bTagsTruncated; // whether the list of tags was too long to be returned in the provided buffer - char m_rgchTags[k_cchTagListMax]; // comma separated list of all tags associated with this file - // file/url information - UGCHandle_t m_hFile; // The handle of the primary file - UGCHandle_t m_hPreviewFile; // The handle of the preview file - char m_pchFileName[k_cchFilenameMax]; // The cloud filename of the primary file - int32 m_nFileSize; // Size of the primary file - int32 m_nPreviewFileSize; // Size of the preview file - char m_rgchURL[k_cchPublishedFileURLMax]; // URL (for a video or a website) - // voting information - uint32 m_unVotesUp; // number of votes up - uint32 m_unVotesDown; // number of votes down - float m_flScore; // calculated score - // collection details - uint32 m_unNumChildren; -}; - -//----------------------------------------------------------------------------- -// Purpose: Steam UGC support API -//----------------------------------------------------------------------------- -class ISteamUGC -{ -public: - - // Query UGC associated with a user. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1. - virtual UGCQueryHandle_t CreateQueryUserUGCRequest( AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ) = 0; - - // Query for all matching UGC. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1. - STEAM_FLAT_NAME( CreateQueryAllUGCRequestPage ) - virtual UGCQueryHandle_t CreateQueryAllUGCRequest( EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ) = 0; - - // Query for all matching UGC using the new deep paging interface. Creator app id or consumer app id must be valid and be set to the current running app. pchCursor should be set to NULL or "*" to get the first result set. - STEAM_FLAT_NAME( CreateQueryAllUGCRequestCursor ) - virtual UGCQueryHandle_t CreateQueryAllUGCRequest( EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, const char *pchCursor = NULL ) = 0; - - // Query for the details of the given published file ids (the RequestUGCDetails call is deprecated and replaced with this) - virtual UGCQueryHandle_t CreateQueryUGCDetailsRequest( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; - - // Send the query to Steam - STEAM_CALL_RESULT( SteamUGCQueryCompleted_t ) - virtual SteamAPICall_t SendQueryUGCRequest( UGCQueryHandle_t handle ) = 0; - - // Retrieve an individual result after receiving the callback for querying UGC - virtual bool GetQueryUGCResult( UGCQueryHandle_t handle, uint32 index, SteamUGCDetails_t *pDetails ) = 0; - virtual uint32 GetQueryUGCNumTags( UGCQueryHandle_t handle, uint32 index ) = 0; - virtual bool GetQueryUGCTag( UGCQueryHandle_t handle, uint32 index, uint32 indexTag, STEAM_OUT_STRING_COUNT( cchValueSize ) char* pchValue, uint32 cchValueSize ) = 0; - virtual bool GetQueryUGCTagDisplayName( UGCQueryHandle_t handle, uint32 index, uint32 indexTag, STEAM_OUT_STRING_COUNT( cchValueSize ) char* pchValue, uint32 cchValueSize ) = 0; - virtual bool GetQueryUGCPreviewURL( UGCQueryHandle_t handle, uint32 index, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchURL, uint32 cchURLSize ) = 0; - virtual bool GetQueryUGCMetadata( UGCQueryHandle_t handle, uint32 index, STEAM_OUT_STRING_COUNT(cchMetadatasize) char *pchMetadata, uint32 cchMetadatasize ) = 0; - virtual bool GetQueryUGCChildren( UGCQueryHandle_t handle, uint32 index, PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries ) = 0; - virtual bool GetQueryUGCStatistic( UGCQueryHandle_t handle, uint32 index, EItemStatistic eStatType, uint64 *pStatValue ) = 0; - virtual uint32 GetQueryUGCNumAdditionalPreviews( UGCQueryHandle_t handle, uint32 index ) = 0; - virtual bool GetQueryUGCAdditionalPreview( UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchURLOrVideoID, uint32 cchURLSize, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType *pPreviewType ) = 0; - virtual uint32 GetQueryUGCNumKeyValueTags( UGCQueryHandle_t handle, uint32 index ) = 0; - virtual bool GetQueryUGCKeyValueTag( UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, STEAM_OUT_STRING_COUNT(cchKeySize) char *pchKey, uint32 cchKeySize, STEAM_OUT_STRING_COUNT(cchValueSize) char *pchValue, uint32 cchValueSize ) = 0; - - // Return the first value matching the pchKey. Note that a key may map to multiple values. Returns false if there was an error or no matching value was found. - STEAM_FLAT_NAME( GetQueryFirstUGCKeyValueTag ) - virtual bool GetQueryUGCKeyValueTag( UGCQueryHandle_t handle, uint32 index, const char *pchKey, STEAM_OUT_STRING_COUNT(cchValueSize) char *pchValue, uint32 cchValueSize ) = 0; - - // Release the request to free up memory, after retrieving results - virtual bool ReleaseQueryUGCRequest( UGCQueryHandle_t handle ) = 0; - - // Options to set for querying UGC - virtual bool AddRequiredTag( UGCQueryHandle_t handle, const char *pTagName ) = 0; - virtual bool AddRequiredTagGroup( UGCQueryHandle_t handle, const SteamParamStringArray_t *pTagGroups ) = 0; // match any of the tags in this group - virtual bool AddExcludedTag( UGCQueryHandle_t handle, const char *pTagName ) = 0; - virtual bool SetReturnOnlyIDs( UGCQueryHandle_t handle, bool bReturnOnlyIDs ) = 0; - virtual bool SetReturnKeyValueTags( UGCQueryHandle_t handle, bool bReturnKeyValueTags ) = 0; - virtual bool SetReturnLongDescription( UGCQueryHandle_t handle, bool bReturnLongDescription ) = 0; - virtual bool SetReturnMetadata( UGCQueryHandle_t handle, bool bReturnMetadata ) = 0; - virtual bool SetReturnChildren( UGCQueryHandle_t handle, bool bReturnChildren ) = 0; - virtual bool SetReturnAdditionalPreviews( UGCQueryHandle_t handle, bool bReturnAdditionalPreviews ) = 0; - virtual bool SetReturnTotalOnly( UGCQueryHandle_t handle, bool bReturnTotalOnly ) = 0; - virtual bool SetReturnPlaytimeStats( UGCQueryHandle_t handle, uint32 unDays ) = 0; - virtual bool SetLanguage( UGCQueryHandle_t handle, const char *pchLanguage ) = 0; - virtual bool SetAllowCachedResponse( UGCQueryHandle_t handle, uint32 unMaxAgeSeconds ) = 0; - - // Options only for querying user UGC - virtual bool SetCloudFileNameFilter( UGCQueryHandle_t handle, const char *pMatchCloudFileName ) = 0; - - // Options only for querying all UGC - virtual bool SetMatchAnyTag( UGCQueryHandle_t handle, bool bMatchAnyTag ) = 0; - virtual bool SetSearchText( UGCQueryHandle_t handle, const char *pSearchText ) = 0; - virtual bool SetRankedByTrendDays( UGCQueryHandle_t handle, uint32 unDays ) = 0; - virtual bool AddRequiredKeyValueTag( UGCQueryHandle_t handle, const char *pKey, const char *pValue ) = 0; - - // DEPRECATED - Use CreateQueryUGCDetailsRequest call above instead! - STEAM_CALL_RESULT( SteamUGCRequestUGCDetailsResult_t ) - virtual SteamAPICall_t RequestUGCDetails( PublishedFileId_t nPublishedFileID, uint32 unMaxAgeSeconds ) = 0; - - // Steam Workshop Creator API - STEAM_CALL_RESULT( CreateItemResult_t ) - virtual SteamAPICall_t CreateItem( AppId_t nConsumerAppId, EWorkshopFileType eFileType ) = 0; // create new item for this app with no content attached yet - - virtual UGCUpdateHandle_t StartItemUpdate( AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID ) = 0; // start an UGC item update. Set changed properties before commiting update with CommitItemUpdate() - - virtual bool SetItemTitle( UGCUpdateHandle_t handle, const char *pchTitle ) = 0; // change the title of an UGC item - virtual bool SetItemDescription( UGCUpdateHandle_t handle, const char *pchDescription ) = 0; // change the description of an UGC item - virtual bool SetItemUpdateLanguage( UGCUpdateHandle_t handle, const char *pchLanguage ) = 0; // specify the language of the title or description that will be set - virtual bool SetItemMetadata( UGCUpdateHandle_t handle, const char *pchMetaData ) = 0; // change the metadata of an UGC item (max = k_cchDeveloperMetadataMax) - virtual bool SetItemVisibility( UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility ) = 0; // change the visibility of an UGC item - virtual bool SetItemTags( UGCUpdateHandle_t updateHandle, const SteamParamStringArray_t *pTags ) = 0; // change the tags of an UGC item - virtual bool SetItemContent( UGCUpdateHandle_t handle, const char *pszContentFolder ) = 0; // update item content from this local folder - virtual bool SetItemPreview( UGCUpdateHandle_t handle, const char *pszPreviewFile ) = 0; // change preview image file for this item. pszPreviewFile points to local image file, which must be under 1MB in size - virtual bool SetAllowLegacyUpload( UGCUpdateHandle_t handle, bool bAllowLegacyUpload ) = 0; // use legacy upload for a single small file. The parameter to SetItemContent() should either be a directory with one file or the full path to the file. The file must also be less than 10MB in size. - virtual bool RemoveAllItemKeyValueTags( UGCUpdateHandle_t handle ) = 0; // remove all existing key-value tags (you can add new ones via the AddItemKeyValueTag function) - virtual bool RemoveItemKeyValueTags( UGCUpdateHandle_t handle, const char *pchKey ) = 0; // remove any existing key-value tags with the specified key - virtual bool AddItemKeyValueTag( UGCUpdateHandle_t handle, const char *pchKey, const char *pchValue ) = 0; // add new key-value tags for the item. Note that there can be multiple values for a tag. - virtual bool AddItemPreviewFile( UGCUpdateHandle_t handle, const char *pszPreviewFile, EItemPreviewType type ) = 0; // add preview file for this item. pszPreviewFile points to local file, which must be under 1MB in size - virtual bool AddItemPreviewVideo( UGCUpdateHandle_t handle, const char *pszVideoID ) = 0; // add preview video for this item - virtual bool UpdateItemPreviewFile( UGCUpdateHandle_t handle, uint32 index, const char *pszPreviewFile ) = 0; // updates an existing preview file for this item. pszPreviewFile points to local file, which must be under 1MB in size - virtual bool UpdateItemPreviewVideo( UGCUpdateHandle_t handle, uint32 index, const char *pszVideoID ) = 0; // updates an existing preview video for this item - virtual bool RemoveItemPreview( UGCUpdateHandle_t handle, uint32 index ) = 0; // remove a preview by index starting at 0 (previews are sorted) - - STEAM_CALL_RESULT( SubmitItemUpdateResult_t ) - virtual SteamAPICall_t SubmitItemUpdate( UGCUpdateHandle_t handle, const char *pchChangeNote ) = 0; // commit update process started with StartItemUpdate() - virtual EItemUpdateStatus GetItemUpdateProgress( UGCUpdateHandle_t handle, uint64 *punBytesProcessed, uint64* punBytesTotal ) = 0; - - // Steam Workshop Consumer API - STEAM_CALL_RESULT( SetUserItemVoteResult_t ) - virtual SteamAPICall_t SetUserItemVote( PublishedFileId_t nPublishedFileID, bool bVoteUp ) = 0; - STEAM_CALL_RESULT( GetUserItemVoteResult_t ) - virtual SteamAPICall_t GetUserItemVote( PublishedFileId_t nPublishedFileID ) = 0; - STEAM_CALL_RESULT( UserFavoriteItemsListChanged_t ) - virtual SteamAPICall_t AddItemToFavorites( AppId_t nAppId, PublishedFileId_t nPublishedFileID ) = 0; - STEAM_CALL_RESULT( UserFavoriteItemsListChanged_t ) - virtual SteamAPICall_t RemoveItemFromFavorites( AppId_t nAppId, PublishedFileId_t nPublishedFileID ) = 0; - STEAM_CALL_RESULT( RemoteStorageSubscribePublishedFileResult_t ) - virtual SteamAPICall_t SubscribeItem( PublishedFileId_t nPublishedFileID ) = 0; // subscribe to this item, will be installed ASAP - STEAM_CALL_RESULT( RemoteStorageUnsubscribePublishedFileResult_t ) - virtual SteamAPICall_t UnsubscribeItem( PublishedFileId_t nPublishedFileID ) = 0; // unsubscribe from this item, will be uninstalled after game quits - virtual uint32 GetNumSubscribedItems() = 0; // number of subscribed items - virtual uint32 GetSubscribedItems( PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries ) = 0; // all subscribed item PublishFileIDs - - // get EItemState flags about item on this client - virtual uint32 GetItemState( PublishedFileId_t nPublishedFileID ) = 0; - - // get info about currently installed content on disc for items that have k_EItemStateInstalled set - // if k_EItemStateLegacyItem is set, pchFolder contains the path to the legacy file itself (not a folder) - virtual bool GetItemInstallInfo( PublishedFileId_t nPublishedFileID, uint64 *punSizeOnDisk, STEAM_OUT_STRING_COUNT( cchFolderSize ) char *pchFolder, uint32 cchFolderSize, uint32 *punTimeStamp ) = 0; - - // get info about pending update for items that have k_EItemStateNeedsUpdate set. punBytesTotal will be valid after download started once - virtual bool GetItemDownloadInfo( PublishedFileId_t nPublishedFileID, uint64 *punBytesDownloaded, uint64 *punBytesTotal ) = 0; - - // download new or update already installed item. If function returns true, wait for DownloadItemResult_t. If the item is already installed, - // then files on disk should not be used until callback received. If item is not subscribed to, it will be cached for some time. - // If bHighPriority is set, any other item download will be suspended and this item downloaded ASAP. - virtual bool DownloadItem( PublishedFileId_t nPublishedFileID, bool bHighPriority ) = 0; - - // game servers can set a specific workshop folder before issuing any UGC commands. - // This is helpful if you want to support multiple game servers running out of the same install folder - virtual bool BInitWorkshopForGameServer( DepotId_t unWorkshopDepotID, const char *pszFolder ) = 0; - - // SuspendDownloads( true ) will suspend all workshop downloads until SuspendDownloads( false ) is called or the game ends - virtual void SuspendDownloads( bool bSuspend ) = 0; - - // usage tracking - STEAM_CALL_RESULT( StartPlaytimeTrackingResult_t ) - virtual SteamAPICall_t StartPlaytimeTracking( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; - STEAM_CALL_RESULT( StopPlaytimeTrackingResult_t ) - virtual SteamAPICall_t StopPlaytimeTracking( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; - STEAM_CALL_RESULT( StopPlaytimeTrackingResult_t ) - virtual SteamAPICall_t StopPlaytimeTrackingForAllItems() = 0; - - // parent-child relationship or dependency management - STEAM_CALL_RESULT( AddUGCDependencyResult_t ) - virtual SteamAPICall_t AddDependency( PublishedFileId_t nParentPublishedFileID, PublishedFileId_t nChildPublishedFileID ) = 0; - STEAM_CALL_RESULT( RemoveUGCDependencyResult_t ) - virtual SteamAPICall_t RemoveDependency( PublishedFileId_t nParentPublishedFileID, PublishedFileId_t nChildPublishedFileID ) = 0; - - // add/remove app dependence/requirements (usually DLC) - STEAM_CALL_RESULT( AddAppDependencyResult_t ) - virtual SteamAPICall_t AddAppDependency( PublishedFileId_t nPublishedFileID, AppId_t nAppID ) = 0; - STEAM_CALL_RESULT( RemoveAppDependencyResult_t ) - virtual SteamAPICall_t RemoveAppDependency( PublishedFileId_t nPublishedFileID, AppId_t nAppID ) = 0; - // request app dependencies. note that whatever callback you register for GetAppDependenciesResult_t may be called multiple times - // until all app dependencies have been returned - STEAM_CALL_RESULT( GetAppDependenciesResult_t ) - virtual SteamAPICall_t GetAppDependencies( PublishedFileId_t nPublishedFileID ) = 0; - - // delete the item without prompting the user - STEAM_CALL_RESULT( DeleteItemResult_t ) - virtual SteamAPICall_t DeleteItem( PublishedFileId_t nPublishedFileID ) = 0; -}; - -#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION015" - -// Global interface accessor -inline ISteamUGC *SteamUGC(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamUGC *, SteamUGC, STEAMUGC_INTERFACE_VERSION ); - -// Global accessor for the gameserver client -inline ISteamUGC *SteamGameServerUGC(); -STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamUGC *, SteamGameServerUGC, STEAMUGC_INTERFACE_VERSION ); - -//----------------------------------------------------------------------------- -// Purpose: Callback for querying UGC -//----------------------------------------------------------------------------- -struct SteamUGCQueryCompleted_t -{ - enum { k_iCallback = k_iClientUGCCallbacks + 1 }; - UGCQueryHandle_t m_handle; - EResult m_eResult; - uint32 m_unNumResultsReturned; - uint32 m_unTotalMatchingResults; - bool m_bCachedData; // indicates whether this data was retrieved from the local on-disk cache - char m_rgchNextCursor[k_cchPublishedFileURLMax]; // If a paging cursor was used, then this will be the next cursor to get the next result set. -}; - - -//----------------------------------------------------------------------------- -// Purpose: Callback for requesting details on one piece of UGC -//----------------------------------------------------------------------------- -struct SteamUGCRequestUGCDetailsResult_t -{ - enum { k_iCallback = k_iClientUGCCallbacks + 2 }; - SteamUGCDetails_t m_details; - bool m_bCachedData; // indicates whether this data was retrieved from the local on-disk cache -}; - - -//----------------------------------------------------------------------------- -// Purpose: result for ISteamUGC::CreateItem() -//----------------------------------------------------------------------------- -struct CreateItemResult_t -{ - enum { k_iCallback = k_iClientUGCCallbacks + 3 }; - EResult m_eResult; - PublishedFileId_t m_nPublishedFileId; // new item got this UGC PublishFileID - bool m_bUserNeedsToAcceptWorkshopLegalAgreement; -}; - - -//----------------------------------------------------------------------------- -// Purpose: result for ISteamUGC::SubmitItemUpdate() -//----------------------------------------------------------------------------- -struct SubmitItemUpdateResult_t -{ - enum { k_iCallback = k_iClientUGCCallbacks + 4 }; - EResult m_eResult; - bool m_bUserNeedsToAcceptWorkshopLegalAgreement; - PublishedFileId_t m_nPublishedFileId; -}; - - -//----------------------------------------------------------------------------- -// Purpose: a Workshop item has been installed or updated -//----------------------------------------------------------------------------- -struct ItemInstalled_t -{ - enum { k_iCallback = k_iClientUGCCallbacks + 5 }; - AppId_t m_unAppID; - PublishedFileId_t m_nPublishedFileId; -}; - - -//----------------------------------------------------------------------------- -// Purpose: result of DownloadItem(), existing item files can be accessed again -//----------------------------------------------------------------------------- -struct DownloadItemResult_t -{ - enum { k_iCallback = k_iClientUGCCallbacks + 6 }; - AppId_t m_unAppID; - PublishedFileId_t m_nPublishedFileId; - EResult m_eResult; -}; - -//----------------------------------------------------------------------------- -// Purpose: result of AddItemToFavorites() or RemoveItemFromFavorites() -//----------------------------------------------------------------------------- -struct UserFavoriteItemsListChanged_t -{ - enum { k_iCallback = k_iClientUGCCallbacks + 7 }; - PublishedFileId_t m_nPublishedFileId; - EResult m_eResult; - bool m_bWasAddRequest; -}; - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to SetUserItemVote() -//----------------------------------------------------------------------------- -struct SetUserItemVoteResult_t -{ - enum { k_iCallback = k_iClientUGCCallbacks + 8 }; - PublishedFileId_t m_nPublishedFileId; - EResult m_eResult; - bool m_bVoteUp; -}; - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to GetUserItemVote() -//----------------------------------------------------------------------------- -struct GetUserItemVoteResult_t -{ - enum { k_iCallback = k_iClientUGCCallbacks + 9 }; - PublishedFileId_t m_nPublishedFileId; - EResult m_eResult; - bool m_bVotedUp; - bool m_bVotedDown; - bool m_bVoteSkipped; -}; - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to StartPlaytimeTracking() -//----------------------------------------------------------------------------- -struct StartPlaytimeTrackingResult_t -{ - enum { k_iCallback = k_iClientUGCCallbacks + 10 }; - EResult m_eResult; -}; - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to StopPlaytimeTracking() -//----------------------------------------------------------------------------- -struct StopPlaytimeTrackingResult_t -{ - enum { k_iCallback = k_iClientUGCCallbacks + 11 }; - EResult m_eResult; -}; - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to AddDependency -//----------------------------------------------------------------------------- -struct AddUGCDependencyResult_t -{ - enum { k_iCallback = k_iClientUGCCallbacks + 12 }; - EResult m_eResult; - PublishedFileId_t m_nPublishedFileId; - PublishedFileId_t m_nChildPublishedFileId; -}; - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to RemoveDependency -//----------------------------------------------------------------------------- -struct RemoveUGCDependencyResult_t -{ - enum { k_iCallback = k_iClientUGCCallbacks + 13 }; - EResult m_eResult; - PublishedFileId_t m_nPublishedFileId; - PublishedFileId_t m_nChildPublishedFileId; -}; - - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to AddAppDependency -//----------------------------------------------------------------------------- -struct AddAppDependencyResult_t -{ - enum { k_iCallback = k_iClientUGCCallbacks + 14 }; - EResult m_eResult; - PublishedFileId_t m_nPublishedFileId; - AppId_t m_nAppID; -}; - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to RemoveAppDependency -//----------------------------------------------------------------------------- -struct RemoveAppDependencyResult_t -{ - enum { k_iCallback = k_iClientUGCCallbacks + 15 }; - EResult m_eResult; - PublishedFileId_t m_nPublishedFileId; - AppId_t m_nAppID; -}; - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to GetAppDependencies. Callback may be called -// multiple times until all app dependencies have been returned. -//----------------------------------------------------------------------------- -struct GetAppDependenciesResult_t -{ - enum { k_iCallback = k_iClientUGCCallbacks + 16 }; - EResult m_eResult; - PublishedFileId_t m_nPublishedFileId; - AppId_t m_rgAppIDs[32]; - uint32 m_nNumAppDependencies; // number returned in this struct - uint32 m_nTotalNumAppDependencies; // total found -}; - -//----------------------------------------------------------------------------- -// Purpose: The result of a call to DeleteItem -//----------------------------------------------------------------------------- -struct DeleteItemResult_t -{ - enum { k_iCallback = k_iClientUGCCallbacks + 17 }; - EResult m_eResult; - PublishedFileId_t m_nPublishedFileId; -}; - -#pragma pack( pop ) - -#endif // ISTEAMUGC_H +//====== Copyright 1996-2013, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to steam ugc +// +//============================================================================= + +#ifndef ISTEAMUGC_H +#define ISTEAMUGC_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" +#include "isteamremotestorage.h" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + + +typedef uint64 UGCQueryHandle_t; +typedef uint64 UGCUpdateHandle_t; + + +const UGCQueryHandle_t k_UGCQueryHandleInvalid = 0xffffffffffffffffull; +const UGCUpdateHandle_t k_UGCUpdateHandleInvalid = 0xffffffffffffffffull; + + +// Matching UGC types for queries +enum EUGCMatchingUGCType +{ + k_EUGCMatchingUGCType_Items = 0, // both mtx items and ready-to-use items + k_EUGCMatchingUGCType_Items_Mtx = 1, + k_EUGCMatchingUGCType_Items_ReadyToUse = 2, + k_EUGCMatchingUGCType_Collections = 3, + k_EUGCMatchingUGCType_Artwork = 4, + k_EUGCMatchingUGCType_Videos = 5, + k_EUGCMatchingUGCType_Screenshots = 6, + k_EUGCMatchingUGCType_AllGuides = 7, // both web guides and integrated guides + k_EUGCMatchingUGCType_WebGuides = 8, + k_EUGCMatchingUGCType_IntegratedGuides = 9, + k_EUGCMatchingUGCType_UsableInGame = 10, // ready-to-use items and integrated guides + k_EUGCMatchingUGCType_ControllerBindings = 11, + k_EUGCMatchingUGCType_GameManagedItems = 12, // game managed items (not managed by users) + k_EUGCMatchingUGCType_All = ~0, // @note: will only be valid for CreateQueryUserUGCRequest requests +}; + +// Different lists of published UGC for a user. +// If the current logged in user is different than the specified user, then some options may not be allowed. +enum EUserUGCList +{ + k_EUserUGCList_Published, + k_EUserUGCList_VotedOn, + k_EUserUGCList_VotedUp, + k_EUserUGCList_VotedDown, + k_EUserUGCList_WillVoteLater, + k_EUserUGCList_Favorited, + k_EUserUGCList_Subscribed, + k_EUserUGCList_UsedOrPlayed, + k_EUserUGCList_Followed, +}; + +// Sort order for user published UGC lists (defaults to creation order descending) +enum EUserUGCListSortOrder +{ + k_EUserUGCListSortOrder_CreationOrderDesc, + k_EUserUGCListSortOrder_CreationOrderAsc, + k_EUserUGCListSortOrder_TitleAsc, + k_EUserUGCListSortOrder_LastUpdatedDesc, + k_EUserUGCListSortOrder_SubscriptionDateDesc, + k_EUserUGCListSortOrder_VoteScoreDesc, + k_EUserUGCListSortOrder_ForModeration, +}; + +// Combination of sorting and filtering for queries across all UGC +enum EUGCQuery +{ + k_EUGCQuery_RankedByVote = 0, + k_EUGCQuery_RankedByPublicationDate = 1, + k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate = 2, + k_EUGCQuery_RankedByTrend = 3, + k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate = 4, + k_EUGCQuery_CreatedByFriendsRankedByPublicationDate = 5, + k_EUGCQuery_RankedByNumTimesReported = 6, + k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate = 7, + k_EUGCQuery_NotYetRated = 8, + k_EUGCQuery_RankedByTotalVotesAsc = 9, + k_EUGCQuery_RankedByVotesUp = 10, + k_EUGCQuery_RankedByTextSearch = 11, + k_EUGCQuery_RankedByTotalUniqueSubscriptions = 12, + k_EUGCQuery_RankedByPlaytimeTrend = 13, + k_EUGCQuery_RankedByTotalPlaytime = 14, + k_EUGCQuery_RankedByAveragePlaytimeTrend = 15, + k_EUGCQuery_RankedByLifetimeAveragePlaytime = 16, + k_EUGCQuery_RankedByPlaytimeSessionsTrend = 17, + k_EUGCQuery_RankedByLifetimePlaytimeSessions = 18, +}; + +enum EItemUpdateStatus +{ + k_EItemUpdateStatusInvalid = 0, // The item update handle was invalid, job might be finished, listen too SubmitItemUpdateResult_t + k_EItemUpdateStatusPreparingConfig = 1, // The item update is processing configuration data + k_EItemUpdateStatusPreparingContent = 2, // The item update is reading and processing content files + k_EItemUpdateStatusUploadingContent = 3, // The item update is uploading content changes to Steam + k_EItemUpdateStatusUploadingPreviewFile = 4, // The item update is uploading new preview file image + k_EItemUpdateStatusCommittingChanges = 5 // The item update is committing all changes +}; + +enum EItemState +{ + k_EItemStateNone = 0, // item not tracked on client + k_EItemStateSubscribed = 1, // current user is subscribed to this item. Not just cached. + k_EItemStateLegacyItem = 2, // item was created with ISteamRemoteStorage + k_EItemStateInstalled = 4, // item is installed and usable (but maybe out of date) + k_EItemStateNeedsUpdate = 8, // items needs an update. Either because it's not installed yet or creator updated content + k_EItemStateDownloading = 16, // item update is currently downloading + k_EItemStateDownloadPending = 32, // DownloadItem() was called for this item, content isn't available until DownloadItemResult_t is fired +}; + +enum EItemStatistic +{ + k_EItemStatistic_NumSubscriptions = 0, + k_EItemStatistic_NumFavorites = 1, + k_EItemStatistic_NumFollowers = 2, + k_EItemStatistic_NumUniqueSubscriptions = 3, + k_EItemStatistic_NumUniqueFavorites = 4, + k_EItemStatistic_NumUniqueFollowers = 5, + k_EItemStatistic_NumUniqueWebsiteViews = 6, + k_EItemStatistic_ReportScore = 7, + k_EItemStatistic_NumSecondsPlayed = 8, + k_EItemStatistic_NumPlaytimeSessions = 9, + k_EItemStatistic_NumComments = 10, + k_EItemStatistic_NumSecondsPlayedDuringTimePeriod = 11, + k_EItemStatistic_NumPlaytimeSessionsDuringTimePeriod = 12, +}; + +enum EItemPreviewType +{ + k_EItemPreviewType_Image = 0, // standard image file expected (e.g. jpg, png, gif, etc.) + k_EItemPreviewType_YouTubeVideo = 1, // video id is stored + k_EItemPreviewType_Sketchfab = 2, // model id is stored + k_EItemPreviewType_EnvironmentMap_HorizontalCross = 3, // standard image file expected - cube map in the layout + // +---+---+-------+ + // | |Up | | + // +---+---+---+---+ + // | L | F | R | B | + // +---+---+---+---+ + // | |Dn | | + // +---+---+---+---+ + k_EItemPreviewType_EnvironmentMap_LatLong = 4, // standard image file expected + k_EItemPreviewType_ReservedMax = 255, // you can specify your own types above this value +}; + +const uint32 kNumUGCResultsPerPage = 50; +const uint32 k_cchDeveloperMetadataMax = 5000; + +// Details for a single published file/UGC +struct SteamUGCDetails_t +{ + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; // The result of the operation. + EWorkshopFileType m_eFileType; // Type of the file + AppId_t m_nCreatorAppID; // ID of the app that created this file. + AppId_t m_nConsumerAppID; // ID of the app that will consume this file. + char m_rgchTitle[k_cchPublishedDocumentTitleMax]; // title of document + char m_rgchDescription[k_cchPublishedDocumentDescriptionMax]; // description of document + uint64 m_ulSteamIDOwner; // Steam ID of the user who created this content. + uint32 m_rtimeCreated; // time when the published file was created + uint32 m_rtimeUpdated; // time when the published file was last updated + uint32 m_rtimeAddedToUserList; // time when the user added the published file to their list (not always applicable) + ERemoteStoragePublishedFileVisibility m_eVisibility; // visibility + bool m_bBanned; // whether the file was banned + bool m_bAcceptedForUse; // developer has specifically flagged this item as accepted in the Workshop + bool m_bTagsTruncated; // whether the list of tags was too long to be returned in the provided buffer + char m_rgchTags[k_cchTagListMax]; // comma separated list of all tags associated with this file + // file/url information + UGCHandle_t m_hFile; // The handle of the primary file + UGCHandle_t m_hPreviewFile; // The handle of the preview file + char m_pchFileName[k_cchFilenameMax]; // The cloud filename of the primary file + int32 m_nFileSize; // Size of the primary file + int32 m_nPreviewFileSize; // Size of the preview file + char m_rgchURL[k_cchPublishedFileURLMax]; // URL (for a video or a website) + // voting information + uint32 m_unVotesUp; // number of votes up + uint32 m_unVotesDown; // number of votes down + float m_flScore; // calculated score + // collection details + uint32 m_unNumChildren; +}; + +//----------------------------------------------------------------------------- +// Purpose: Steam UGC support API +//----------------------------------------------------------------------------- +class ISteamUGC +{ +public: + + // Query UGC associated with a user. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1. + virtual UGCQueryHandle_t CreateQueryUserUGCRequest( AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ) = 0; + + // Query for all matching UGC. Creator app id or consumer app id must be valid and be set to the current running app. unPage should start at 1. + STEAM_FLAT_NAME( CreateQueryAllUGCRequestPage ) + virtual UGCQueryHandle_t CreateQueryAllUGCRequest( EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ) = 0; + + // Query for all matching UGC using the new deep paging interface. Creator app id or consumer app id must be valid and be set to the current running app. pchCursor should be set to NULL or "*" to get the first result set. + STEAM_FLAT_NAME( CreateQueryAllUGCRequestCursor ) + virtual UGCQueryHandle_t CreateQueryAllUGCRequest( EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, const char *pchCursor = NULL ) = 0; + + // Query for the details of the given published file ids (the RequestUGCDetails call is deprecated and replaced with this) + virtual UGCQueryHandle_t CreateQueryUGCDetailsRequest( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; + + // Send the query to Steam + STEAM_CALL_RESULT( SteamUGCQueryCompleted_t ) + virtual SteamAPICall_t SendQueryUGCRequest( UGCQueryHandle_t handle ) = 0; + + // Retrieve an individual result after receiving the callback for querying UGC + virtual bool GetQueryUGCResult( UGCQueryHandle_t handle, uint32 index, SteamUGCDetails_t *pDetails ) = 0; + virtual uint32 GetQueryUGCNumTags( UGCQueryHandle_t handle, uint32 index ) = 0; + virtual bool GetQueryUGCTag( UGCQueryHandle_t handle, uint32 index, uint32 indexTag, STEAM_OUT_STRING_COUNT( cchValueSize ) char* pchValue, uint32 cchValueSize ) = 0; + virtual bool GetQueryUGCTagDisplayName( UGCQueryHandle_t handle, uint32 index, uint32 indexTag, STEAM_OUT_STRING_COUNT( cchValueSize ) char* pchValue, uint32 cchValueSize ) = 0; + virtual bool GetQueryUGCPreviewURL( UGCQueryHandle_t handle, uint32 index, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchURL, uint32 cchURLSize ) = 0; + virtual bool GetQueryUGCMetadata( UGCQueryHandle_t handle, uint32 index, STEAM_OUT_STRING_COUNT(cchMetadatasize) char *pchMetadata, uint32 cchMetadatasize ) = 0; + virtual bool GetQueryUGCChildren( UGCQueryHandle_t handle, uint32 index, PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries ) = 0; + virtual bool GetQueryUGCStatistic( UGCQueryHandle_t handle, uint32 index, EItemStatistic eStatType, uint64 *pStatValue ) = 0; + virtual uint32 GetQueryUGCNumAdditionalPreviews( UGCQueryHandle_t handle, uint32 index ) = 0; + virtual bool GetQueryUGCAdditionalPreview( UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchURLOrVideoID, uint32 cchURLSize, STEAM_OUT_STRING_COUNT(cchURLSize) char *pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType *pPreviewType ) = 0; + virtual uint32 GetQueryUGCNumKeyValueTags( UGCQueryHandle_t handle, uint32 index ) = 0; + virtual bool GetQueryUGCKeyValueTag( UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, STEAM_OUT_STRING_COUNT(cchKeySize) char *pchKey, uint32 cchKeySize, STEAM_OUT_STRING_COUNT(cchValueSize) char *pchValue, uint32 cchValueSize ) = 0; + + // Return the first value matching the pchKey. Note that a key may map to multiple values. Returns false if there was an error or no matching value was found. + STEAM_FLAT_NAME( GetQueryFirstUGCKeyValueTag ) + virtual bool GetQueryUGCKeyValueTag( UGCQueryHandle_t handle, uint32 index, const char *pchKey, STEAM_OUT_STRING_COUNT(cchValueSize) char *pchValue, uint32 cchValueSize ) = 0; + + // Release the request to free up memory, after retrieving results + virtual bool ReleaseQueryUGCRequest( UGCQueryHandle_t handle ) = 0; + + // Options to set for querying UGC + virtual bool AddRequiredTag( UGCQueryHandle_t handle, const char *pTagName ) = 0; + virtual bool AddRequiredTagGroup( UGCQueryHandle_t handle, const SteamParamStringArray_t *pTagGroups ) = 0; // match any of the tags in this group + virtual bool AddExcludedTag( UGCQueryHandle_t handle, const char *pTagName ) = 0; + virtual bool SetReturnOnlyIDs( UGCQueryHandle_t handle, bool bReturnOnlyIDs ) = 0; + virtual bool SetReturnKeyValueTags( UGCQueryHandle_t handle, bool bReturnKeyValueTags ) = 0; + virtual bool SetReturnLongDescription( UGCQueryHandle_t handle, bool bReturnLongDescription ) = 0; + virtual bool SetReturnMetadata( UGCQueryHandle_t handle, bool bReturnMetadata ) = 0; + virtual bool SetReturnChildren( UGCQueryHandle_t handle, bool bReturnChildren ) = 0; + virtual bool SetReturnAdditionalPreviews( UGCQueryHandle_t handle, bool bReturnAdditionalPreviews ) = 0; + virtual bool SetReturnTotalOnly( UGCQueryHandle_t handle, bool bReturnTotalOnly ) = 0; + virtual bool SetReturnPlaytimeStats( UGCQueryHandle_t handle, uint32 unDays ) = 0; + virtual bool SetLanguage( UGCQueryHandle_t handle, const char *pchLanguage ) = 0; + virtual bool SetAllowCachedResponse( UGCQueryHandle_t handle, uint32 unMaxAgeSeconds ) = 0; + + // Options only for querying user UGC + virtual bool SetCloudFileNameFilter( UGCQueryHandle_t handle, const char *pMatchCloudFileName ) = 0; + + // Options only for querying all UGC + virtual bool SetMatchAnyTag( UGCQueryHandle_t handle, bool bMatchAnyTag ) = 0; + virtual bool SetSearchText( UGCQueryHandle_t handle, const char *pSearchText ) = 0; + virtual bool SetRankedByTrendDays( UGCQueryHandle_t handle, uint32 unDays ) = 0; + virtual bool AddRequiredKeyValueTag( UGCQueryHandle_t handle, const char *pKey, const char *pValue ) = 0; + + // DEPRECATED - Use CreateQueryUGCDetailsRequest call above instead! + STEAM_CALL_RESULT( SteamUGCRequestUGCDetailsResult_t ) + virtual SteamAPICall_t RequestUGCDetails( PublishedFileId_t nPublishedFileID, uint32 unMaxAgeSeconds ) = 0; + + // Steam Workshop Creator API + STEAM_CALL_RESULT( CreateItemResult_t ) + virtual SteamAPICall_t CreateItem( AppId_t nConsumerAppId, EWorkshopFileType eFileType ) = 0; // create new item for this app with no content attached yet + + virtual UGCUpdateHandle_t StartItemUpdate( AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID ) = 0; // start an UGC item update. Set changed properties before commiting update with CommitItemUpdate() + + virtual bool SetItemTitle( UGCUpdateHandle_t handle, const char *pchTitle ) = 0; // change the title of an UGC item + virtual bool SetItemDescription( UGCUpdateHandle_t handle, const char *pchDescription ) = 0; // change the description of an UGC item + virtual bool SetItemUpdateLanguage( UGCUpdateHandle_t handle, const char *pchLanguage ) = 0; // specify the language of the title or description that will be set + virtual bool SetItemMetadata( UGCUpdateHandle_t handle, const char *pchMetaData ) = 0; // change the metadata of an UGC item (max = k_cchDeveloperMetadataMax) + virtual bool SetItemVisibility( UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility ) = 0; // change the visibility of an UGC item + virtual bool SetItemTags( UGCUpdateHandle_t updateHandle, const SteamParamStringArray_t *pTags ) = 0; // change the tags of an UGC item + virtual bool SetItemContent( UGCUpdateHandle_t handle, const char *pszContentFolder ) = 0; // update item content from this local folder + virtual bool SetItemPreview( UGCUpdateHandle_t handle, const char *pszPreviewFile ) = 0; // change preview image file for this item. pszPreviewFile points to local image file, which must be under 1MB in size + virtual bool SetAllowLegacyUpload( UGCUpdateHandle_t handle, bool bAllowLegacyUpload ) = 0; // use legacy upload for a single small file. The parameter to SetItemContent() should either be a directory with one file or the full path to the file. The file must also be less than 10MB in size. + virtual bool RemoveAllItemKeyValueTags( UGCUpdateHandle_t handle ) = 0; // remove all existing key-value tags (you can add new ones via the AddItemKeyValueTag function) + virtual bool RemoveItemKeyValueTags( UGCUpdateHandle_t handle, const char *pchKey ) = 0; // remove any existing key-value tags with the specified key + virtual bool AddItemKeyValueTag( UGCUpdateHandle_t handle, const char *pchKey, const char *pchValue ) = 0; // add new key-value tags for the item. Note that there can be multiple values for a tag. + virtual bool AddItemPreviewFile( UGCUpdateHandle_t handle, const char *pszPreviewFile, EItemPreviewType type ) = 0; // add preview file for this item. pszPreviewFile points to local file, which must be under 1MB in size + virtual bool AddItemPreviewVideo( UGCUpdateHandle_t handle, const char *pszVideoID ) = 0; // add preview video for this item + virtual bool UpdateItemPreviewFile( UGCUpdateHandle_t handle, uint32 index, const char *pszPreviewFile ) = 0; // updates an existing preview file for this item. pszPreviewFile points to local file, which must be under 1MB in size + virtual bool UpdateItemPreviewVideo( UGCUpdateHandle_t handle, uint32 index, const char *pszVideoID ) = 0; // updates an existing preview video for this item + virtual bool RemoveItemPreview( UGCUpdateHandle_t handle, uint32 index ) = 0; // remove a preview by index starting at 0 (previews are sorted) + + STEAM_CALL_RESULT( SubmitItemUpdateResult_t ) + virtual SteamAPICall_t SubmitItemUpdate( UGCUpdateHandle_t handle, const char *pchChangeNote ) = 0; // commit update process started with StartItemUpdate() + virtual EItemUpdateStatus GetItemUpdateProgress( UGCUpdateHandle_t handle, uint64 *punBytesProcessed, uint64* punBytesTotal ) = 0; + + // Steam Workshop Consumer API + STEAM_CALL_RESULT( SetUserItemVoteResult_t ) + virtual SteamAPICall_t SetUserItemVote( PublishedFileId_t nPublishedFileID, bool bVoteUp ) = 0; + STEAM_CALL_RESULT( GetUserItemVoteResult_t ) + virtual SteamAPICall_t GetUserItemVote( PublishedFileId_t nPublishedFileID ) = 0; + STEAM_CALL_RESULT( UserFavoriteItemsListChanged_t ) + virtual SteamAPICall_t AddItemToFavorites( AppId_t nAppId, PublishedFileId_t nPublishedFileID ) = 0; + STEAM_CALL_RESULT( UserFavoriteItemsListChanged_t ) + virtual SteamAPICall_t RemoveItemFromFavorites( AppId_t nAppId, PublishedFileId_t nPublishedFileID ) = 0; + STEAM_CALL_RESULT( RemoteStorageSubscribePublishedFileResult_t ) + virtual SteamAPICall_t SubscribeItem( PublishedFileId_t nPublishedFileID ) = 0; // subscribe to this item, will be installed ASAP + STEAM_CALL_RESULT( RemoteStorageUnsubscribePublishedFileResult_t ) + virtual SteamAPICall_t UnsubscribeItem( PublishedFileId_t nPublishedFileID ) = 0; // unsubscribe from this item, will be uninstalled after game quits + virtual uint32 GetNumSubscribedItems() = 0; // number of subscribed items + virtual uint32 GetSubscribedItems( PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries ) = 0; // all subscribed item PublishFileIDs + + // get EItemState flags about item on this client + virtual uint32 GetItemState( PublishedFileId_t nPublishedFileID ) = 0; + + // get info about currently installed content on disc for items that have k_EItemStateInstalled set + // if k_EItemStateLegacyItem is set, pchFolder contains the path to the legacy file itself (not a folder) + virtual bool GetItemInstallInfo( PublishedFileId_t nPublishedFileID, uint64 *punSizeOnDisk, STEAM_OUT_STRING_COUNT( cchFolderSize ) char *pchFolder, uint32 cchFolderSize, uint32 *punTimeStamp ) = 0; + + // get info about pending update for items that have k_EItemStateNeedsUpdate set. punBytesTotal will be valid after download started once + virtual bool GetItemDownloadInfo( PublishedFileId_t nPublishedFileID, uint64 *punBytesDownloaded, uint64 *punBytesTotal ) = 0; + + // download new or update already installed item. If function returns true, wait for DownloadItemResult_t. If the item is already installed, + // then files on disk should not be used until callback received. If item is not subscribed to, it will be cached for some time. + // If bHighPriority is set, any other item download will be suspended and this item downloaded ASAP. + virtual bool DownloadItem( PublishedFileId_t nPublishedFileID, bool bHighPriority ) = 0; + + // game servers can set a specific workshop folder before issuing any UGC commands. + // This is helpful if you want to support multiple game servers running out of the same install folder + virtual bool BInitWorkshopForGameServer( DepotId_t unWorkshopDepotID, const char *pszFolder ) = 0; + + // SuspendDownloads( true ) will suspend all workshop downloads until SuspendDownloads( false ) is called or the game ends + virtual void SuspendDownloads( bool bSuspend ) = 0; + + // usage tracking + STEAM_CALL_RESULT( StartPlaytimeTrackingResult_t ) + virtual SteamAPICall_t StartPlaytimeTracking( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; + STEAM_CALL_RESULT( StopPlaytimeTrackingResult_t ) + virtual SteamAPICall_t StopPlaytimeTracking( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; + STEAM_CALL_RESULT( StopPlaytimeTrackingResult_t ) + virtual SteamAPICall_t StopPlaytimeTrackingForAllItems() = 0; + + // parent-child relationship or dependency management + STEAM_CALL_RESULT( AddUGCDependencyResult_t ) + virtual SteamAPICall_t AddDependency( PublishedFileId_t nParentPublishedFileID, PublishedFileId_t nChildPublishedFileID ) = 0; + STEAM_CALL_RESULT( RemoveUGCDependencyResult_t ) + virtual SteamAPICall_t RemoveDependency( PublishedFileId_t nParentPublishedFileID, PublishedFileId_t nChildPublishedFileID ) = 0; + + // add/remove app dependence/requirements (usually DLC) + STEAM_CALL_RESULT( AddAppDependencyResult_t ) + virtual SteamAPICall_t AddAppDependency( PublishedFileId_t nPublishedFileID, AppId_t nAppID ) = 0; + STEAM_CALL_RESULT( RemoveAppDependencyResult_t ) + virtual SteamAPICall_t RemoveAppDependency( PublishedFileId_t nPublishedFileID, AppId_t nAppID ) = 0; + // request app dependencies. note that whatever callback you register for GetAppDependenciesResult_t may be called multiple times + // until all app dependencies have been returned + STEAM_CALL_RESULT( GetAppDependenciesResult_t ) + virtual SteamAPICall_t GetAppDependencies( PublishedFileId_t nPublishedFileID ) = 0; + + // delete the item without prompting the user + STEAM_CALL_RESULT( DeleteItemResult_t ) + virtual SteamAPICall_t DeleteItem( PublishedFileId_t nPublishedFileID ) = 0; +}; + +#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION015" + +// Global interface accessor +inline ISteamUGC *SteamUGC(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamUGC *, SteamUGC, STEAMUGC_INTERFACE_VERSION ); + +// Global accessor for the gameserver client +inline ISteamUGC *SteamGameServerUGC(); +STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamUGC *, SteamGameServerUGC, STEAMUGC_INTERFACE_VERSION ); + +//----------------------------------------------------------------------------- +// Purpose: Callback for querying UGC +//----------------------------------------------------------------------------- +struct SteamUGCQueryCompleted_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 1 }; + UGCQueryHandle_t m_handle; + EResult m_eResult; + uint32 m_unNumResultsReturned; + uint32 m_unTotalMatchingResults; + bool m_bCachedData; // indicates whether this data was retrieved from the local on-disk cache + char m_rgchNextCursor[k_cchPublishedFileURLMax]; // If a paging cursor was used, then this will be the next cursor to get the next result set. +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback for requesting details on one piece of UGC +//----------------------------------------------------------------------------- +struct SteamUGCRequestUGCDetailsResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 2 }; + SteamUGCDetails_t m_details; + bool m_bCachedData; // indicates whether this data was retrieved from the local on-disk cache +}; + + +//----------------------------------------------------------------------------- +// Purpose: result for ISteamUGC::CreateItem() +//----------------------------------------------------------------------------- +struct CreateItemResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 3 }; + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; // new item got this UGC PublishFileID + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; +}; + + +//----------------------------------------------------------------------------- +// Purpose: result for ISteamUGC::SubmitItemUpdate() +//----------------------------------------------------------------------------- +struct SubmitItemUpdateResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 4 }; + EResult m_eResult; + bool m_bUserNeedsToAcceptWorkshopLegalAgreement; + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: a Workshop item has been installed or updated +//----------------------------------------------------------------------------- +struct ItemInstalled_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 5 }; + AppId_t m_unAppID; + PublishedFileId_t m_nPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of DownloadItem(), existing item files can be accessed again +//----------------------------------------------------------------------------- +struct DownloadItemResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 6 }; + AppId_t m_unAppID; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// Purpose: result of AddItemToFavorites() or RemoveItemFromFavorites() +//----------------------------------------------------------------------------- +struct UserFavoriteItemsListChanged_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 7 }; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; + bool m_bWasAddRequest; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to SetUserItemVote() +//----------------------------------------------------------------------------- +struct SetUserItemVoteResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 8 }; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; + bool m_bVoteUp; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to GetUserItemVote() +//----------------------------------------------------------------------------- +struct GetUserItemVoteResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 9 }; + PublishedFileId_t m_nPublishedFileId; + EResult m_eResult; + bool m_bVotedUp; + bool m_bVotedDown; + bool m_bVoteSkipped; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to StartPlaytimeTracking() +//----------------------------------------------------------------------------- +struct StartPlaytimeTrackingResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 10 }; + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to StopPlaytimeTracking() +//----------------------------------------------------------------------------- +struct StopPlaytimeTrackingResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 11 }; + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to AddDependency +//----------------------------------------------------------------------------- +struct AddUGCDependencyResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 12 }; + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; + PublishedFileId_t m_nChildPublishedFileId; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to RemoveDependency +//----------------------------------------------------------------------------- +struct RemoveUGCDependencyResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 13 }; + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; + PublishedFileId_t m_nChildPublishedFileId; +}; + + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to AddAppDependency +//----------------------------------------------------------------------------- +struct AddAppDependencyResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 14 }; + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; + AppId_t m_nAppID; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to RemoveAppDependency +//----------------------------------------------------------------------------- +struct RemoveAppDependencyResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 15 }; + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; + AppId_t m_nAppID; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to GetAppDependencies. Callback may be called +// multiple times until all app dependencies have been returned. +//----------------------------------------------------------------------------- +struct GetAppDependenciesResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 16 }; + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; + AppId_t m_rgAppIDs[32]; + uint32 m_nNumAppDependencies; // number returned in this struct + uint32 m_nTotalNumAppDependencies; // total found +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to DeleteItem +//----------------------------------------------------------------------------- +struct DeleteItemResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 17 }; + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; +}; + +#pragma pack( pop ) + +#endif // ISTEAMUGC_H diff --git a/CodeGen/steam/isteamuser.h b/CodeGen/steam/isteamuser.h index f4ee7ba9..83f2e26b 100644 --- a/CodeGen/steam/isteamuser.h +++ b/CodeGen/steam/isteamuser.h @@ -1,410 +1,410 @@ -//====== Copyright (c) 1996-2008, Valve Corporation, All rights reserved. ======= -// -// Purpose: interface to user account information in Steam -// -//============================================================================= - -#ifndef ISTEAMUSER_H -#define ISTEAMUSER_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" - -//----------------------------------------------------------------------------- -// Purpose: Functions for accessing and manipulating a steam account -// associated with one client instance -//----------------------------------------------------------------------------- -class ISteamUser -{ -public: - // returns the HSteamUser this interface represents - // this is only used internally by the API, and by a few select interfaces that support multi-user - virtual HSteamUser GetHSteamUser() = 0; - - // returns true if the Steam client current has a live connection to the Steam servers. - // If false, it means there is no active connection due to either a networking issue on the local machine, or the Steam server is down/busy. - // The Steam client will automatically be trying to recreate the connection as often as possible. - virtual bool BLoggedOn() = 0; - - // returns the CSteamID of the account currently logged into the Steam client - // a CSteamID is a unique identifier for an account, and used to differentiate users in all parts of the Steamworks API - virtual CSteamID GetSteamID() = 0; - - // Multiplayer Authentication functions - - // InitiateGameConnection() starts the state machine for authenticating the game client with the game server - // It is the client portion of a three-way handshake between the client, the game server, and the steam servers - // - // Parameters: - // void *pAuthBlob - a pointer to empty memory that will be filled in with the authentication token. - // int cbMaxAuthBlob - the number of bytes of allocated memory in pBlob. Should be at least 2048 bytes. - // CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client - // CGameID gameID - the ID of the current game. For games without mods, this is just CGameID( ) - // uint32 unIPServer, uint16 usPortServer - the IP address of the game server - // bool bSecure - whether or not the client thinks that the game server is reporting itself as secure (i.e. VAC is running) - // - // return value - returns the number of bytes written to pBlob. If the return is 0, then the buffer passed in was too small, and the call has failed - // The contents of pBlob should then be sent to the game server, for it to use to complete the authentication process. - virtual int InitiateGameConnection( void *pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure ) = 0; - - // notify of disconnect - // needs to occur when the game client leaves the specified game server, needs to match with the InitiateGameConnection() call - virtual void TerminateGameConnection( uint32 unIPServer, uint16 usPortServer ) = 0; - - // Legacy functions - - // used by only a few games to track usage events - virtual void TrackAppUsageEvent( CGameID gameID, int eAppUsageEvent, const char *pchExtraInfo = "" ) = 0; - - // get the local storage folder for current Steam account to write application data, e.g. save games, configs etc. - // this will usually be something like "C:\Progam Files\Steam\userdata\\\local" - virtual bool GetUserDataFolder( char *pchBuffer, int cubBuffer ) = 0; - - // Starts voice recording. Once started, use GetVoice() to get the data - virtual void StartVoiceRecording( ) = 0; - - // Stops voice recording. Because people often release push-to-talk keys early, the system will keep recording for - // a little bit after this function is called. GetVoice() should continue to be called until it returns - // k_eVoiceResultNotRecording - virtual void StopVoiceRecording( ) = 0; - - // Determine the size of captured audio data that is available from GetVoice. - // Most applications will only use compressed data and should ignore the other - // parameters, which exist primarily for backwards compatibility. See comments - // below for further explanation of "uncompressed" data. - virtual EVoiceResult GetAvailableVoice( uint32 *pcbCompressed, uint32 *pcbUncompressed_Deprecated = 0, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated = 0 ) = 0; - - // --------------------------------------------------------------------------- - // NOTE: "uncompressed" audio is a deprecated feature and should not be used - // by most applications. It is raw single-channel 16-bit PCM wave data which - // may have been run through preprocessing filters and/or had silence removed, - // so the uncompressed audio could have a shorter duration than you expect. - // There may be no data at all during long periods of silence. Also, fetching - // uncompressed audio will cause GetVoice to discard any leftover compressed - // audio, so you must fetch both types at once. Finally, GetAvailableVoice is - // not precisely accurate when the uncompressed size is requested. So if you - // really need to use uncompressed audio, you should call GetVoice frequently - // with two very large (20kb+) output buffers instead of trying to allocate - // perfectly-sized buffers. But most applications should ignore all of these - // details and simply leave the "uncompressed" parameters as NULL/zero. - // --------------------------------------------------------------------------- - - // Read captured audio data from the microphone buffer. This should be called - // at least once per frame, and preferably every few milliseconds, to keep the - // microphone input delay as low as possible. Most applications will only use - // compressed data and should pass NULL/zero for the "uncompressed" parameters. - // Compressed data can be transmitted by your application and decoded into raw - // using the DecompressVoice function below. - virtual EVoiceResult GetVoice( bool bWantCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, bool bWantUncompressed_Deprecated = false, void *pUncompressedDestBuffer_Deprecated = 0, uint32 cbUncompressedDestBufferSize_Deprecated = 0, uint32 *nUncompressBytesWritten_Deprecated = 0, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated = 0 ) = 0; - - // Decodes the compressed voice data returned by GetVoice. The output data is - // raw single-channel 16-bit PCM audio. The decoder supports any sample rate - // from 11025 to 48000; see GetVoiceOptimalSampleRate() below for details. - // If the output buffer is not large enough, then *nBytesWritten will be set - // to the required buffer size, and k_EVoiceResultBufferTooSmall is returned. - // It is suggested to start with a 20kb buffer and reallocate as necessary. - virtual EVoiceResult DecompressVoice( const void *pCompressed, uint32 cbCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, uint32 nDesiredSampleRate ) = 0; - - // This returns the native sample rate of the Steam voice decompressor; using - // this sample rate for DecompressVoice will perform the least CPU processing. - // However, the final audio quality will depend on how well the audio device - // (and/or your application's audio output SDK) deals with lower sample rates. - // You may find that you get the best audio output quality when you ignore - // this function and use the native sample rate of your audio output device, - // which is usually 48000 or 44100. - virtual uint32 GetVoiceOptimalSampleRate() = 0; - - // Retrieve ticket to be sent to the entity who wishes to authenticate you. - // pcbTicket retrieves the length of the actual ticket. - virtual HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; - - // Authenticate ticket from entity steamID to be sure it is valid and isnt reused - // Registers for callbacks if the entity goes offline or cancels the ticket ( see ValidateAuthTicketResponse_t callback and EAuthSessionResponse ) - virtual EBeginAuthSessionResult BeginAuthSession( const void *pAuthTicket, int cbAuthTicket, CSteamID steamID ) = 0; - - // Stop tracking started by BeginAuthSession - called when no longer playing game with this entity - virtual void EndAuthSession( CSteamID steamID ) = 0; - - // Cancel auth ticket from GetAuthSessionTicket, called when no longer playing game with the entity you gave the ticket to - virtual void CancelAuthTicket( HAuthTicket hAuthTicket ) = 0; - - // After receiving a user's authentication data, and passing it to BeginAuthSession, use this function - // to determine if the user owns downloadable content specified by the provided AppID. - virtual EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID ) = 0; - - // returns true if this users looks like they are behind a NAT device. Only valid once the user has connected to steam - // (i.e a SteamServersConnected_t has been issued) and may not catch all forms of NAT. - virtual bool BIsBehindNAT() = 0; - - // set data to be replicated to friends so that they can join your game - // CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client - // uint32 unIPServer, uint16 usPortServer - the IP address of the game server - virtual void AdvertiseGame( CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer ) = 0; - - // Requests a ticket encrypted with an app specific shared key - // pDataToInclude, cbDataToInclude will be encrypted into the ticket - // ( This is asynchronous, you must wait for the ticket to be completed by the server ) - STEAM_CALL_RESULT( EncryptedAppTicketResponse_t ) - virtual SteamAPICall_t RequestEncryptedAppTicket( void *pDataToInclude, int cbDataToInclude ) = 0; - - // Retrieves a finished ticket. - // If no ticket is available, or your buffer is too small, returns false. - // Upon exit, *pcbTicket will be either the size of the ticket copied into your buffer - // (if true was returned), or the size needed (if false was returned). To determine the - // proper size of the ticket, you can pass pTicket=NULL and cbMaxTicket=0; if a ticket - // is available, *pcbTicket will contain the size needed, otherwise it will be zero. - virtual bool GetEncryptedAppTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; - - // Trading Card badges data access - // if you only have one set of cards, the series will be 1 - // the user has can have two different badges for a series; the regular (max level 5) and the foil (max level 1) - virtual int GetGameBadgeLevel( int nSeries, bool bFoil ) = 0; - - // gets the Steam Level of the user, as shown on their profile - virtual int GetPlayerSteamLevel() = 0; - - // Requests a URL which authenticates an in-game browser for store check-out, - // and then redirects to the specified URL. As long as the in-game browser - // accepts and handles session cookies, Steam microtransaction checkout pages - // will automatically recognize the user instead of presenting a login page. - // The result of this API call will be a StoreAuthURLResponse_t callback. - // NOTE: The URL has a very short lifetime to prevent history-snooping attacks, - // so you should only call this API when you are about to launch the browser, - // or else immediately navigate to the result URL using a hidden browser window. - // NOTE 2: The resulting authorization cookie has an expiration time of one day, - // so it would be a good idea to request and visit a new auth URL every 12 hours. - STEAM_CALL_RESULT( StoreAuthURLResponse_t ) - virtual SteamAPICall_t RequestStoreAuthURL( const char *pchRedirectURL ) = 0; - - // gets whether the users phone number is verified - virtual bool BIsPhoneVerified() = 0; - - // gets whether the user has two factor enabled on their account - virtual bool BIsTwoFactorEnabled() = 0; - - // gets whether the users phone number is identifying - virtual bool BIsPhoneIdentifying() = 0; - - // gets whether the users phone number is awaiting (re)verification - virtual bool BIsPhoneRequiringVerification() = 0; - - STEAM_CALL_RESULT( MarketEligibilityResponse_t ) - virtual SteamAPICall_t GetMarketEligibility() = 0; - - // Retrieves anti indulgence / duration control for current user - STEAM_CALL_RESULT( DurationControl_t ) - virtual SteamAPICall_t GetDurationControl() = 0; - - // Advise steam china duration control system about the online state of the game. - // This will prevent offline gameplay time from counting against a user's - // playtime limits. - virtual bool BSetDurationControlOnlineState( EDurationControlOnlineState eNewState ) = 0; - -}; - -#define STEAMUSER_INTERFACE_VERSION "SteamUser021" - -// Global interface accessor -inline ISteamUser *SteamUser(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamUser *, SteamUser, STEAMUSER_INTERFACE_VERSION ); - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - -//----------------------------------------------------------------------------- -// Purpose: called when a connections to the Steam back-end has been established -// this means the Steam client now has a working connection to the Steam servers -// usually this will have occurred before the game has launched, and should -// only be seen if the user has dropped connection due to a networking issue -// or a Steam server update -//----------------------------------------------------------------------------- -struct SteamServersConnected_t -{ - enum { k_iCallback = k_iSteamUserCallbacks + 1 }; -}; - -//----------------------------------------------------------------------------- -// Purpose: called when a connection attempt has failed -// this will occur periodically if the Steam client is not connected, -// and has failed in it's retry to establish a connection -//----------------------------------------------------------------------------- -struct SteamServerConnectFailure_t -{ - enum { k_iCallback = k_iSteamUserCallbacks + 2 }; - EResult m_eResult; - bool m_bStillRetrying; -}; - - -//----------------------------------------------------------------------------- -// Purpose: called if the client has lost connection to the Steam servers -// real-time services will be disabled until a matching SteamServersConnected_t has been posted -//----------------------------------------------------------------------------- -struct SteamServersDisconnected_t -{ - enum { k_iCallback = k_iSteamUserCallbacks + 3 }; - EResult m_eResult; -}; - - -//----------------------------------------------------------------------------- -// Purpose: Sent by the Steam server to the client telling it to disconnect from the specified game server, -// which it may be in the process of or already connected to. -// The game client should immediately disconnect upon receiving this message. -// This can usually occur if the user doesn't have rights to play on the game server. -//----------------------------------------------------------------------------- -struct ClientGameServerDeny_t -{ - enum { k_iCallback = k_iSteamUserCallbacks + 13 }; - - uint32 m_uAppID; - uint32 m_unGameServerIP; - uint16 m_usGameServerPort; - uint16 m_bSecure; - uint32 m_uReason; -}; - - -//----------------------------------------------------------------------------- -// Purpose: called when the callback system for this client is in an error state (and has flushed pending callbacks) -// When getting this message the client should disconnect from Steam, reset any stored Steam state and reconnect. -// This usually occurs in the rare event the Steam client has some kind of fatal error. -//----------------------------------------------------------------------------- -struct IPCFailure_t -{ - enum { k_iCallback = k_iSteamUserCallbacks + 17 }; - enum EFailureType - { - k_EFailureFlushedCallbackQueue, - k_EFailurePipeFail, - }; - uint8 m_eFailureType; -}; - - -//----------------------------------------------------------------------------- -// Purpose: Signaled whenever licenses change -//----------------------------------------------------------------------------- -struct LicensesUpdated_t -{ - enum { k_iCallback = k_iSteamUserCallbacks + 25 }; -}; - - -//----------------------------------------------------------------------------- -// callback for BeginAuthSession -//----------------------------------------------------------------------------- -struct ValidateAuthTicketResponse_t -{ - enum { k_iCallback = k_iSteamUserCallbacks + 43 }; - CSteamID m_SteamID; - EAuthSessionResponse m_eAuthSessionResponse; - CSteamID m_OwnerSteamID; // different from m_SteamID if borrowed -}; - - -//----------------------------------------------------------------------------- -// Purpose: called when a user has responded to a microtransaction authorization request -//----------------------------------------------------------------------------- -struct MicroTxnAuthorizationResponse_t -{ - enum { k_iCallback = k_iSteamUserCallbacks + 52 }; - - uint32 m_unAppID; // AppID for this microtransaction - uint64 m_ulOrderID; // OrderID provided for the microtransaction - uint8 m_bAuthorized; // if user authorized transaction -}; - - -//----------------------------------------------------------------------------- -// Purpose: Result from RequestEncryptedAppTicket -//----------------------------------------------------------------------------- -struct EncryptedAppTicketResponse_t -{ - enum { k_iCallback = k_iSteamUserCallbacks + 54 }; - - EResult m_eResult; -}; - -//----------------------------------------------------------------------------- -// callback for GetAuthSessionTicket -//----------------------------------------------------------------------------- -struct GetAuthSessionTicketResponse_t -{ - enum { k_iCallback = k_iSteamUserCallbacks + 63 }; - HAuthTicket m_hAuthTicket; - EResult m_eResult; -}; - - -//----------------------------------------------------------------------------- -// Purpose: sent to your game in response to a steam://gamewebcallback/ command -//----------------------------------------------------------------------------- -struct GameWebCallback_t -{ - enum { k_iCallback = k_iSteamUserCallbacks + 64 }; - char m_szURL[256]; -}; - -//----------------------------------------------------------------------------- -// Purpose: sent to your game in response to ISteamUser::RequestStoreAuthURL -//----------------------------------------------------------------------------- -struct StoreAuthURLResponse_t -{ - enum { k_iCallback = k_iSteamUserCallbacks + 65 }; - char m_szURL[512]; -}; - - -//----------------------------------------------------------------------------- -// Purpose: sent in response to ISteamUser::GetMarketEligibility -//----------------------------------------------------------------------------- -struct MarketEligibilityResponse_t -{ - enum { k_iCallback = k_iSteamUserCallbacks + 66 }; - bool m_bAllowed; - EMarketNotAllowedReasonFlags m_eNotAllowedReason; - RTime32 m_rtAllowedAtTime; - - int m_cdaySteamGuardRequiredDays; // The number of days any user is required to have had Steam Guard before they can use the market - int m_cdayNewDeviceCooldown; // The number of days after initial device authorization a user must wait before using the market on that device -}; - - -//----------------------------------------------------------------------------- -// Purpose: sent for games with enabled anti indulgence / duration control, for -// enabled users. Lets the game know whether the user can keep playing or -// whether the game should exit, and returns info about remaining gameplay time. -// -// This callback is fired asynchronously in response to timers triggering. -// It is also fired in response to calls to GetDurationControl(). -//----------------------------------------------------------------------------- -struct DurationControl_t -{ - enum { k_iCallback = k_iSteamUserCallbacks + 67 }; - - EResult m_eResult; // result of call (always k_EResultOK for asynchronous timer-based notifications) - AppId_t m_appid; // appid generating playtime - - bool m_bApplicable; // is duration control applicable to user + game combination - int32 m_csecsLast5h; // playtime since most recent 5 hour gap in playtime, only counting up to regulatory limit of playtime, in seconds - - EDurationControlProgress m_progress; // recommended progress (either everything is fine, or please exit game) - EDurationControlNotification m_notification; // notification to show, if any (always k_EDurationControlNotification_None for API calls) - - int32 m_csecsToday; // playtime on current calendar day - int32 m_csecsRemaining; // playtime remaining until the user hits a regulatory limit -}; - - -#pragma pack( pop ) - -#endif // ISTEAMUSER_H +//====== Copyright (c) 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to user account information in Steam +// +//============================================================================= + +#ifndef ISTEAMUSER_H +#define ISTEAMUSER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + +//----------------------------------------------------------------------------- +// Purpose: Functions for accessing and manipulating a steam account +// associated with one client instance +//----------------------------------------------------------------------------- +class ISteamUser +{ +public: + // returns the HSteamUser this interface represents + // this is only used internally by the API, and by a few select interfaces that support multi-user + virtual HSteamUser GetHSteamUser() = 0; + + // returns true if the Steam client current has a live connection to the Steam servers. + // If false, it means there is no active connection due to either a networking issue on the local machine, or the Steam server is down/busy. + // The Steam client will automatically be trying to recreate the connection as often as possible. + virtual bool BLoggedOn() = 0; + + // returns the CSteamID of the account currently logged into the Steam client + // a CSteamID is a unique identifier for an account, and used to differentiate users in all parts of the Steamworks API + virtual CSteamID GetSteamID() = 0; + + // Multiplayer Authentication functions + + // InitiateGameConnection() starts the state machine for authenticating the game client with the game server + // It is the client portion of a three-way handshake between the client, the game server, and the steam servers + // + // Parameters: + // void *pAuthBlob - a pointer to empty memory that will be filled in with the authentication token. + // int cbMaxAuthBlob - the number of bytes of allocated memory in pBlob. Should be at least 2048 bytes. + // CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client + // CGameID gameID - the ID of the current game. For games without mods, this is just CGameID( ) + // uint32 unIPServer, uint16 usPortServer - the IP address of the game server + // bool bSecure - whether or not the client thinks that the game server is reporting itself as secure (i.e. VAC is running) + // + // return value - returns the number of bytes written to pBlob. If the return is 0, then the buffer passed in was too small, and the call has failed + // The contents of pBlob should then be sent to the game server, for it to use to complete the authentication process. + virtual int InitiateGameConnection( void *pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure ) = 0; + + // notify of disconnect + // needs to occur when the game client leaves the specified game server, needs to match with the InitiateGameConnection() call + virtual void TerminateGameConnection( uint32 unIPServer, uint16 usPortServer ) = 0; + + // Legacy functions + + // used by only a few games to track usage events + virtual void TrackAppUsageEvent( CGameID gameID, int eAppUsageEvent, const char *pchExtraInfo = "" ) = 0; + + // get the local storage folder for current Steam account to write application data, e.g. save games, configs etc. + // this will usually be something like "C:\Progam Files\Steam\userdata\\\local" + virtual bool GetUserDataFolder( char *pchBuffer, int cubBuffer ) = 0; + + // Starts voice recording. Once started, use GetVoice() to get the data + virtual void StartVoiceRecording( ) = 0; + + // Stops voice recording. Because people often release push-to-talk keys early, the system will keep recording for + // a little bit after this function is called. GetVoice() should continue to be called until it returns + // k_eVoiceResultNotRecording + virtual void StopVoiceRecording( ) = 0; + + // Determine the size of captured audio data that is available from GetVoice. + // Most applications will only use compressed data and should ignore the other + // parameters, which exist primarily for backwards compatibility. See comments + // below for further explanation of "uncompressed" data. + virtual EVoiceResult GetAvailableVoice( uint32 *pcbCompressed, uint32 *pcbUncompressed_Deprecated = 0, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated = 0 ) = 0; + + // --------------------------------------------------------------------------- + // NOTE: "uncompressed" audio is a deprecated feature and should not be used + // by most applications. It is raw single-channel 16-bit PCM wave data which + // may have been run through preprocessing filters and/or had silence removed, + // so the uncompressed audio could have a shorter duration than you expect. + // There may be no data at all during long periods of silence. Also, fetching + // uncompressed audio will cause GetVoice to discard any leftover compressed + // audio, so you must fetch both types at once. Finally, GetAvailableVoice is + // not precisely accurate when the uncompressed size is requested. So if you + // really need to use uncompressed audio, you should call GetVoice frequently + // with two very large (20kb+) output buffers instead of trying to allocate + // perfectly-sized buffers. But most applications should ignore all of these + // details and simply leave the "uncompressed" parameters as NULL/zero. + // --------------------------------------------------------------------------- + + // Read captured audio data from the microphone buffer. This should be called + // at least once per frame, and preferably every few milliseconds, to keep the + // microphone input delay as low as possible. Most applications will only use + // compressed data and should pass NULL/zero for the "uncompressed" parameters. + // Compressed data can be transmitted by your application and decoded into raw + // using the DecompressVoice function below. + virtual EVoiceResult GetVoice( bool bWantCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, bool bWantUncompressed_Deprecated = false, void *pUncompressedDestBuffer_Deprecated = 0, uint32 cbUncompressedDestBufferSize_Deprecated = 0, uint32 *nUncompressBytesWritten_Deprecated = 0, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated = 0 ) = 0; + + // Decodes the compressed voice data returned by GetVoice. The output data is + // raw single-channel 16-bit PCM audio. The decoder supports any sample rate + // from 11025 to 48000; see GetVoiceOptimalSampleRate() below for details. + // If the output buffer is not large enough, then *nBytesWritten will be set + // to the required buffer size, and k_EVoiceResultBufferTooSmall is returned. + // It is suggested to start with a 20kb buffer and reallocate as necessary. + virtual EVoiceResult DecompressVoice( const void *pCompressed, uint32 cbCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, uint32 nDesiredSampleRate ) = 0; + + // This returns the native sample rate of the Steam voice decompressor; using + // this sample rate for DecompressVoice will perform the least CPU processing. + // However, the final audio quality will depend on how well the audio device + // (and/or your application's audio output SDK) deals with lower sample rates. + // You may find that you get the best audio output quality when you ignore + // this function and use the native sample rate of your audio output device, + // which is usually 48000 or 44100. + virtual uint32 GetVoiceOptimalSampleRate() = 0; + + // Retrieve ticket to be sent to the entity who wishes to authenticate you. + // pcbTicket retrieves the length of the actual ticket. + virtual HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; + + // Authenticate ticket from entity steamID to be sure it is valid and isnt reused + // Registers for callbacks if the entity goes offline or cancels the ticket ( see ValidateAuthTicketResponse_t callback and EAuthSessionResponse ) + virtual EBeginAuthSessionResult BeginAuthSession( const void *pAuthTicket, int cbAuthTicket, CSteamID steamID ) = 0; + + // Stop tracking started by BeginAuthSession - called when no longer playing game with this entity + virtual void EndAuthSession( CSteamID steamID ) = 0; + + // Cancel auth ticket from GetAuthSessionTicket, called when no longer playing game with the entity you gave the ticket to + virtual void CancelAuthTicket( HAuthTicket hAuthTicket ) = 0; + + // After receiving a user's authentication data, and passing it to BeginAuthSession, use this function + // to determine if the user owns downloadable content specified by the provided AppID. + virtual EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID ) = 0; + + // returns true if this users looks like they are behind a NAT device. Only valid once the user has connected to steam + // (i.e a SteamServersConnected_t has been issued) and may not catch all forms of NAT. + virtual bool BIsBehindNAT() = 0; + + // set data to be replicated to friends so that they can join your game + // CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client + // uint32 unIPServer, uint16 usPortServer - the IP address of the game server + virtual void AdvertiseGame( CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer ) = 0; + + // Requests a ticket encrypted with an app specific shared key + // pDataToInclude, cbDataToInclude will be encrypted into the ticket + // ( This is asynchronous, you must wait for the ticket to be completed by the server ) + STEAM_CALL_RESULT( EncryptedAppTicketResponse_t ) + virtual SteamAPICall_t RequestEncryptedAppTicket( void *pDataToInclude, int cbDataToInclude ) = 0; + + // Retrieves a finished ticket. + // If no ticket is available, or your buffer is too small, returns false. + // Upon exit, *pcbTicket will be either the size of the ticket copied into your buffer + // (if true was returned), or the size needed (if false was returned). To determine the + // proper size of the ticket, you can pass pTicket=NULL and cbMaxTicket=0; if a ticket + // is available, *pcbTicket will contain the size needed, otherwise it will be zero. + virtual bool GetEncryptedAppTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; + + // Trading Card badges data access + // if you only have one set of cards, the series will be 1 + // the user has can have two different badges for a series; the regular (max level 5) and the foil (max level 1) + virtual int GetGameBadgeLevel( int nSeries, bool bFoil ) = 0; + + // gets the Steam Level of the user, as shown on their profile + virtual int GetPlayerSteamLevel() = 0; + + // Requests a URL which authenticates an in-game browser for store check-out, + // and then redirects to the specified URL. As long as the in-game browser + // accepts and handles session cookies, Steam microtransaction checkout pages + // will automatically recognize the user instead of presenting a login page. + // The result of this API call will be a StoreAuthURLResponse_t callback. + // NOTE: The URL has a very short lifetime to prevent history-snooping attacks, + // so you should only call this API when you are about to launch the browser, + // or else immediately navigate to the result URL using a hidden browser window. + // NOTE 2: The resulting authorization cookie has an expiration time of one day, + // so it would be a good idea to request and visit a new auth URL every 12 hours. + STEAM_CALL_RESULT( StoreAuthURLResponse_t ) + virtual SteamAPICall_t RequestStoreAuthURL( const char *pchRedirectURL ) = 0; + + // gets whether the users phone number is verified + virtual bool BIsPhoneVerified() = 0; + + // gets whether the user has two factor enabled on their account + virtual bool BIsTwoFactorEnabled() = 0; + + // gets whether the users phone number is identifying + virtual bool BIsPhoneIdentifying() = 0; + + // gets whether the users phone number is awaiting (re)verification + virtual bool BIsPhoneRequiringVerification() = 0; + + STEAM_CALL_RESULT( MarketEligibilityResponse_t ) + virtual SteamAPICall_t GetMarketEligibility() = 0; + + // Retrieves anti indulgence / duration control for current user + STEAM_CALL_RESULT( DurationControl_t ) + virtual SteamAPICall_t GetDurationControl() = 0; + + // Advise steam china duration control system about the online state of the game. + // This will prevent offline gameplay time from counting against a user's + // playtime limits. + virtual bool BSetDurationControlOnlineState( EDurationControlOnlineState eNewState ) = 0; + +}; + +#define STEAMUSER_INTERFACE_VERSION "SteamUser021" + +// Global interface accessor +inline ISteamUser *SteamUser(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamUser *, SteamUser, STEAMUSER_INTERFACE_VERSION ); + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when a connections to the Steam back-end has been established +// this means the Steam client now has a working connection to the Steam servers +// usually this will have occurred before the game has launched, and should +// only be seen if the user has dropped connection due to a networking issue +// or a Steam server update +//----------------------------------------------------------------------------- +struct SteamServersConnected_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 1 }; +}; + +//----------------------------------------------------------------------------- +// Purpose: called when a connection attempt has failed +// this will occur periodically if the Steam client is not connected, +// and has failed in it's retry to establish a connection +//----------------------------------------------------------------------------- +struct SteamServerConnectFailure_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 2 }; + EResult m_eResult; + bool m_bStillRetrying; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called if the client has lost connection to the Steam servers +// real-time services will be disabled until a matching SteamServersConnected_t has been posted +//----------------------------------------------------------------------------- +struct SteamServersDisconnected_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 3 }; + EResult m_eResult; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Sent by the Steam server to the client telling it to disconnect from the specified game server, +// which it may be in the process of or already connected to. +// The game client should immediately disconnect upon receiving this message. +// This can usually occur if the user doesn't have rights to play on the game server. +//----------------------------------------------------------------------------- +struct ClientGameServerDeny_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 13 }; + + uint32 m_uAppID; + uint32 m_unGameServerIP; + uint16 m_usGameServerPort; + uint16 m_bSecure; + uint32 m_uReason; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when the callback system for this client is in an error state (and has flushed pending callbacks) +// When getting this message the client should disconnect from Steam, reset any stored Steam state and reconnect. +// This usually occurs in the rare event the Steam client has some kind of fatal error. +//----------------------------------------------------------------------------- +struct IPCFailure_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 17 }; + enum EFailureType + { + k_EFailureFlushedCallbackQueue, + k_EFailurePipeFail, + }; + uint8 m_eFailureType; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Signaled whenever licenses change +//----------------------------------------------------------------------------- +struct LicensesUpdated_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 25 }; +}; + + +//----------------------------------------------------------------------------- +// callback for BeginAuthSession +//----------------------------------------------------------------------------- +struct ValidateAuthTicketResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 43 }; + CSteamID m_SteamID; + EAuthSessionResponse m_eAuthSessionResponse; + CSteamID m_OwnerSteamID; // different from m_SteamID if borrowed +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when a user has responded to a microtransaction authorization request +//----------------------------------------------------------------------------- +struct MicroTxnAuthorizationResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 52 }; + + uint32 m_unAppID; // AppID for this microtransaction + uint64 m_ulOrderID; // OrderID provided for the microtransaction + uint8 m_bAuthorized; // if user authorized transaction +}; + + +//----------------------------------------------------------------------------- +// Purpose: Result from RequestEncryptedAppTicket +//----------------------------------------------------------------------------- +struct EncryptedAppTicketResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 54 }; + + EResult m_eResult; +}; + +//----------------------------------------------------------------------------- +// callback for GetAuthSessionTicket +//----------------------------------------------------------------------------- +struct GetAuthSessionTicketResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 63 }; + HAuthTicket m_hAuthTicket; + EResult m_eResult; +}; + + +//----------------------------------------------------------------------------- +// Purpose: sent to your game in response to a steam://gamewebcallback/ command +//----------------------------------------------------------------------------- +struct GameWebCallback_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 64 }; + char m_szURL[256]; +}; + +//----------------------------------------------------------------------------- +// Purpose: sent to your game in response to ISteamUser::RequestStoreAuthURL +//----------------------------------------------------------------------------- +struct StoreAuthURLResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 65 }; + char m_szURL[512]; +}; + + +//----------------------------------------------------------------------------- +// Purpose: sent in response to ISteamUser::GetMarketEligibility +//----------------------------------------------------------------------------- +struct MarketEligibilityResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 66 }; + bool m_bAllowed; + EMarketNotAllowedReasonFlags m_eNotAllowedReason; + RTime32 m_rtAllowedAtTime; + + int m_cdaySteamGuardRequiredDays; // The number of days any user is required to have had Steam Guard before they can use the market + int m_cdayNewDeviceCooldown; // The number of days after initial device authorization a user must wait before using the market on that device +}; + + +//----------------------------------------------------------------------------- +// Purpose: sent for games with enabled anti indulgence / duration control, for +// enabled users. Lets the game know whether the user can keep playing or +// whether the game should exit, and returns info about remaining gameplay time. +// +// This callback is fired asynchronously in response to timers triggering. +// It is also fired in response to calls to GetDurationControl(). +//----------------------------------------------------------------------------- +struct DurationControl_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 67 }; + + EResult m_eResult; // result of call (always k_EResultOK for asynchronous timer-based notifications) + AppId_t m_appid; // appid generating playtime + + bool m_bApplicable; // is duration control applicable to user + game combination + int32 m_csecsLast5h; // playtime since most recent 5 hour gap in playtime, only counting up to regulatory limit of playtime, in seconds + + EDurationControlProgress m_progress; // recommended progress (either everything is fine, or please exit game) + EDurationControlNotification m_notification; // notification to show, if any (always k_EDurationControlNotification_None for API calls) + + int32 m_csecsToday; // playtime on current calendar day + int32 m_csecsRemaining; // playtime remaining until the user hits a regulatory limit +}; + + +#pragma pack( pop ) + +#endif // ISTEAMUSER_H diff --git a/CodeGen/steam/isteamuserstats.h b/CodeGen/steam/isteamuserstats.h index 4ce4ee53..af37148c 100644 --- a/CodeGen/steam/isteamuserstats.h +++ b/CodeGen/steam/isteamuserstats.h @@ -1,488 +1,488 @@ -//====== Copyright � 1996-2009, Valve Corporation, All rights reserved. ======= -// -// Purpose: interface to stats, achievements, and leaderboards -// -//============================================================================= - -#ifndef ISTEAMUSERSTATS_H -#define ISTEAMUSERSTATS_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" -#include "isteamremotestorage.h" - -// size limit on stat or achievement name (UTF-8 encoded) -enum { k_cchStatNameMax = 128 }; - -// maximum number of bytes for a leaderboard name (UTF-8 encoded) -enum { k_cchLeaderboardNameMax = 128 }; - -// maximum number of details int32's storable for a single leaderboard entry -enum { k_cLeaderboardDetailsMax = 64 }; - -// handle to a single leaderboard -typedef uint64 SteamLeaderboard_t; - -// handle to a set of downloaded entries in a leaderboard -typedef uint64 SteamLeaderboardEntries_t; - -// type of data request, when downloading leaderboard entries -enum ELeaderboardDataRequest -{ - k_ELeaderboardDataRequestGlobal = 0, - k_ELeaderboardDataRequestGlobalAroundUser = 1, - k_ELeaderboardDataRequestFriends = 2, - k_ELeaderboardDataRequestUsers = 3 -}; - -// the sort order of a leaderboard -enum ELeaderboardSortMethod -{ - k_ELeaderboardSortMethodNone = 0, - k_ELeaderboardSortMethodAscending = 1, // top-score is lowest number - k_ELeaderboardSortMethodDescending = 2, // top-score is highest number -}; - -// the display type (used by the Steam Community web site) for a leaderboard -enum ELeaderboardDisplayType -{ - k_ELeaderboardDisplayTypeNone = 0, - k_ELeaderboardDisplayTypeNumeric = 1, // simple numerical score - k_ELeaderboardDisplayTypeTimeSeconds = 2, // the score represents a time, in seconds - k_ELeaderboardDisplayTypeTimeMilliSeconds = 3, // the score represents a time, in milliseconds -}; - -enum ELeaderboardUploadScoreMethod -{ - k_ELeaderboardUploadScoreMethodNone = 0, - k_ELeaderboardUploadScoreMethodKeepBest = 1, // Leaderboard will keep user's best score - k_ELeaderboardUploadScoreMethodForceUpdate = 2, // Leaderboard will always replace score with specified -}; - -// a single entry in a leaderboard, as returned by GetDownloadedLeaderboardEntry() -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - -struct LeaderboardEntry_t -{ - CSteamID m_steamIDUser; // user with the entry - use SteamFriends()->GetFriendPersonaName() & SteamFriends()->GetFriendAvatar() to get more info - int32 m_nGlobalRank; // [1..N], where N is the number of users with an entry in the leaderboard - int32 m_nScore; // score as set in the leaderboard - int32 m_cDetails; // number of int32 details available for this entry - UGCHandle_t m_hUGC; // handle for UGC attached to the entry -}; - -#pragma pack( pop ) - - -//----------------------------------------------------------------------------- -// Purpose: Functions for accessing stats, achievements, and leaderboard information -//----------------------------------------------------------------------------- -class ISteamUserStats -{ -public: - // Ask the server to send down this user's data and achievements for this game - STEAM_CALL_BACK( UserStatsReceived_t ) - virtual bool RequestCurrentStats() = 0; - - // Data accessors - STEAM_FLAT_NAME( GetStatInt32 ) - virtual bool GetStat( const char *pchName, int32 *pData ) = 0; - - STEAM_FLAT_NAME( GetStatFloat ) - virtual bool GetStat( const char *pchName, float *pData ) = 0; - - // Set / update data - STEAM_FLAT_NAME( SetStatInt32 ) - virtual bool SetStat( const char *pchName, int32 nData ) = 0; - - STEAM_FLAT_NAME( SetStatFloat ) - virtual bool SetStat( const char *pchName, float fData ) = 0; - - virtual bool UpdateAvgRateStat( const char *pchName, float flCountThisSession, double dSessionLength ) = 0; - - // Achievement flag accessors - virtual bool GetAchievement( const char *pchName, bool *pbAchieved ) = 0; - virtual bool SetAchievement( const char *pchName ) = 0; - virtual bool ClearAchievement( const char *pchName ) = 0; - - // Get the achievement status, and the time it was unlocked if unlocked. - // If the return value is true, but the unlock time is zero, that means it was unlocked before Steam - // began tracking achievement unlock times (December 2009). Time is seconds since January 1, 1970. - virtual bool GetAchievementAndUnlockTime( const char *pchName, bool *pbAchieved, uint32 *punUnlockTime ) = 0; - - // Store the current data on the server, will get a callback when set - // And one callback for every new achievement - // - // If the callback has a result of k_EResultInvalidParam, one or more stats - // uploaded has been rejected, either because they broke constraints - // or were out of date. In this case the server sends back updated values. - // The stats should be re-iterated to keep in sync. - virtual bool StoreStats() = 0; - - // Achievement / GroupAchievement metadata - - // Gets the icon of the achievement, which is a handle to be used in ISteamUtils::GetImageRGBA(), or 0 if none set. - // A return value of 0 may indicate we are still fetching data, and you can wait for the UserAchievementIconFetched_t callback - // which will notify you when the bits are ready. If the callback still returns zero, then there is no image set for the - // specified achievement. - virtual int GetAchievementIcon( const char *pchName ) = 0; - - // Get general attributes for an achievement. Accepts the following keys: - // - "name" and "desc" for retrieving the localized achievement name and description (returned in UTF8) - // - "hidden" for retrieving if an achievement is hidden (returns "0" when not hidden, "1" when hidden) - virtual const char *GetAchievementDisplayAttribute( const char *pchName, const char *pchKey ) = 0; - - // Achievement progress - triggers an AchievementProgress callback, that is all. - // Calling this w/ N out of N progress will NOT set the achievement, the game must still do that. - virtual bool IndicateAchievementProgress( const char *pchName, uint32 nCurProgress, uint32 nMaxProgress ) = 0; - - // Used for iterating achievements. In general games should not need these functions because they should have a - // list of existing achievements compiled into them - virtual uint32 GetNumAchievements() = 0; - // Get achievement name iAchievement in [0,GetNumAchievements) - virtual const char *GetAchievementName( uint32 iAchievement ) = 0; - - // Friends stats & achievements - - // downloads stats for the user - // returns a UserStatsReceived_t received when completed - // if the other user has no stats, UserStatsReceived_t.m_eResult will be set to k_EResultFail - // these stats won't be auto-updated; you'll need to call RequestUserStats() again to refresh any data - STEAM_CALL_RESULT( UserStatsReceived_t ) - virtual SteamAPICall_t RequestUserStats( CSteamID steamIDUser ) = 0; - - // requests stat information for a user, usable after a successful call to RequestUserStats() - STEAM_FLAT_NAME( GetUserStatInt32 ) - virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, int32 *pData ) = 0; - - STEAM_FLAT_NAME( GetUserStatFloat ) - virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, float *pData ) = 0; - - virtual bool GetUserAchievement( CSteamID steamIDUser, const char *pchName, bool *pbAchieved ) = 0; - // See notes for GetAchievementAndUnlockTime above - virtual bool GetUserAchievementAndUnlockTime( CSteamID steamIDUser, const char *pchName, bool *pbAchieved, uint32 *punUnlockTime ) = 0; - - // Reset stats - virtual bool ResetAllStats( bool bAchievementsToo ) = 0; - - // Leaderboard functions - - // asks the Steam back-end for a leaderboard by name, and will create it if it's not yet - // This call is asynchronous, with the result returned in LeaderboardFindResult_t - STEAM_CALL_RESULT(LeaderboardFindResult_t) - virtual SteamAPICall_t FindOrCreateLeaderboard( const char *pchLeaderboardName, ELeaderboardSortMethod eLeaderboardSortMethod, ELeaderboardDisplayType eLeaderboardDisplayType ) = 0; - - // as above, but won't create the leaderboard if it's not found - // This call is asynchronous, with the result returned in LeaderboardFindResult_t - STEAM_CALL_RESULT( LeaderboardFindResult_t ) - virtual SteamAPICall_t FindLeaderboard( const char *pchLeaderboardName ) = 0; - - // returns the name of a leaderboard - virtual const char *GetLeaderboardName( SteamLeaderboard_t hSteamLeaderboard ) = 0; - - // returns the total number of entries in a leaderboard, as of the last request - virtual int GetLeaderboardEntryCount( SteamLeaderboard_t hSteamLeaderboard ) = 0; - - // returns the sort method of the leaderboard - virtual ELeaderboardSortMethod GetLeaderboardSortMethod( SteamLeaderboard_t hSteamLeaderboard ) = 0; - - // returns the display type of the leaderboard - virtual ELeaderboardDisplayType GetLeaderboardDisplayType( SteamLeaderboard_t hSteamLeaderboard ) = 0; - - // Asks the Steam back-end for a set of rows in the leaderboard. - // This call is asynchronous, with the result returned in LeaderboardScoresDownloaded_t - // LeaderboardScoresDownloaded_t will contain a handle to pull the results from GetDownloadedLeaderboardEntries() (below) - // You can ask for more entries than exist, and it will return as many as do exist. - // k_ELeaderboardDataRequestGlobal requests rows in the leaderboard from the full table, with nRangeStart & nRangeEnd in the range [1, TotalEntries] - // k_ELeaderboardDataRequestGlobalAroundUser requests rows around the current user, nRangeStart being negate - // e.g. DownloadLeaderboardEntries( hLeaderboard, k_ELeaderboardDataRequestGlobalAroundUser, -3, 3 ) will return 7 rows, 3 before the user, 3 after - // k_ELeaderboardDataRequestFriends requests all the rows for friends of the current user - STEAM_CALL_RESULT( LeaderboardScoresDownloaded_t ) - virtual SteamAPICall_t DownloadLeaderboardEntries( SteamLeaderboard_t hSteamLeaderboard, ELeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd ) = 0; - // as above, but downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers - // if a user doesn't have a leaderboard entry, they won't be included in the result - // a max of 100 users can be downloaded at a time, with only one outstanding call at a time - STEAM_METHOD_DESC(Downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers) - STEAM_CALL_RESULT( LeaderboardScoresDownloaded_t ) - virtual SteamAPICall_t DownloadLeaderboardEntriesForUsers( SteamLeaderboard_t hSteamLeaderboard, - STEAM_ARRAY_COUNT_D(cUsers, Array of users to retrieve) CSteamID *prgUsers, int cUsers ) = 0; - - // Returns data about a single leaderboard entry - // use a for loop from 0 to LeaderboardScoresDownloaded_t::m_cEntryCount to get all the downloaded entries - // e.g. - // void OnLeaderboardScoresDownloaded( LeaderboardScoresDownloaded_t *pLeaderboardScoresDownloaded ) - // { - // for ( int index = 0; index < pLeaderboardScoresDownloaded->m_cEntryCount; index++ ) - // { - // LeaderboardEntry_t leaderboardEntry; - // int32 details[3]; // we know this is how many we've stored previously - // GetDownloadedLeaderboardEntry( pLeaderboardScoresDownloaded->m_hSteamLeaderboardEntries, index, &leaderboardEntry, details, 3 ); - // assert( leaderboardEntry.m_cDetails == 3 ); - // ... - // } - // once you've accessed all the entries, the data will be free'd, and the SteamLeaderboardEntries_t handle will become invalid - virtual bool GetDownloadedLeaderboardEntry( SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, LeaderboardEntry_t *pLeaderboardEntry, int32 *pDetails, int cDetailsMax ) = 0; - - // Uploads a user score to the Steam back-end. - // This call is asynchronous, with the result returned in LeaderboardScoreUploaded_t - // Details are extra game-defined information regarding how the user got that score - // pScoreDetails points to an array of int32's, cScoreDetailsCount is the number of int32's in the list - STEAM_CALL_RESULT( LeaderboardScoreUploaded_t ) - virtual SteamAPICall_t UploadLeaderboardScore( SteamLeaderboard_t hSteamLeaderboard, ELeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int32 nScore, const int32 *pScoreDetails, int cScoreDetailsCount ) = 0; - - // Attaches a piece of user generated content the user's entry on a leaderboard. - // hContent is a handle to a piece of user generated content that was shared using ISteamUserRemoteStorage::FileShare(). - // This call is asynchronous, with the result returned in LeaderboardUGCSet_t. - STEAM_CALL_RESULT( LeaderboardUGCSet_t ) - virtual SteamAPICall_t AttachLeaderboardUGC( SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC ) = 0; - - // Retrieves the number of players currently playing your game (online + offline) - // This call is asynchronous, with the result returned in NumberOfCurrentPlayers_t - STEAM_CALL_RESULT( NumberOfCurrentPlayers_t ) - virtual SteamAPICall_t GetNumberOfCurrentPlayers() = 0; - - // Requests that Steam fetch data on the percentage of players who have received each achievement - // for the game globally. - // This call is asynchronous, with the result returned in GlobalAchievementPercentagesReady_t. - STEAM_CALL_RESULT( GlobalAchievementPercentagesReady_t ) - virtual SteamAPICall_t RequestGlobalAchievementPercentages() = 0; - - // Get the info on the most achieved achievement for the game, returns an iterator index you can use to fetch - // the next most achieved afterwards. Will return -1 if there is no data on achievement - // percentages (ie, you haven't called RequestGlobalAchievementPercentages and waited on the callback). - virtual int GetMostAchievedAchievementInfo( char *pchName, uint32 unNameBufLen, float *pflPercent, bool *pbAchieved ) = 0; - - // Get the info on the next most achieved achievement for the game. Call this after GetMostAchievedAchievementInfo or another - // GetNextMostAchievedAchievementInfo call passing the iterator from the previous call. Returns -1 after the last - // achievement has been iterated. - virtual int GetNextMostAchievedAchievementInfo( int iIteratorPrevious, char *pchName, uint32 unNameBufLen, float *pflPercent, bool *pbAchieved ) = 0; - - // Returns the percentage of users who have achieved the specified achievement. - virtual bool GetAchievementAchievedPercent( const char *pchName, float *pflPercent ) = 0; - - // Requests global stats data, which is available for stats marked as "aggregated". - // This call is asynchronous, with the results returned in GlobalStatsReceived_t. - // nHistoryDays specifies how many days of day-by-day history to retrieve in addition - // to the overall totals. The limit is 60. - STEAM_CALL_RESULT( GlobalStatsReceived_t ) - virtual SteamAPICall_t RequestGlobalStats( int nHistoryDays ) = 0; - - // Gets the lifetime totals for an aggregated stat - STEAM_FLAT_NAME( GetGlobalStatInt64 ) - virtual bool GetGlobalStat( const char *pchStatName, int64 *pData ) = 0; - - STEAM_FLAT_NAME( GetGlobalStatDouble ) - virtual bool GetGlobalStat( const char *pchStatName, double *pData ) = 0; - - // Gets history for an aggregated stat. pData will be filled with daily values, starting with today. - // So when called, pData[0] will be today, pData[1] will be yesterday, and pData[2] will be two days ago, - // etc. cubData is the size in bytes of the pubData buffer. Returns the number of - // elements actually set. - - STEAM_FLAT_NAME( GetGlobalStatHistoryInt64 ) - virtual int32 GetGlobalStatHistory( const char *pchStatName, STEAM_ARRAY_COUNT(cubData) int64 *pData, uint32 cubData ) = 0; - - STEAM_FLAT_NAME( GetGlobalStatHistoryDouble ) - virtual int32 GetGlobalStatHistory( const char *pchStatName, STEAM_ARRAY_COUNT(cubData) double *pData, uint32 cubData ) = 0; - - // For achievements that have related Progress stats, use this to query what the bounds of that progress are. - // You may want this info to selectively call IndicateAchievementProgress when appropriate milestones of progress - // have been made, to show a progress notification to the user. - STEAM_FLAT_NAME( GetAchievementProgressLimitsInt32 ) - virtual bool GetAchievementProgressLimits( const char *pchName, int32 *pnMinProgress, int32 *pnMaxProgress ) = 0; - - STEAM_FLAT_NAME( GetAchievementProgressLimitsFloat ) - virtual bool GetAchievementProgressLimits( const char *pchName, float *pfMinProgress, float *pfMaxProgress ) = 0; - -}; - -#define STEAMUSERSTATS_INTERFACE_VERSION "STEAMUSERSTATS_INTERFACE_VERSION012" - -// Global interface accessor -inline ISteamUserStats *SteamUserStats(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamUserStats *, SteamUserStats, STEAMUSERSTATS_INTERFACE_VERSION ); - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - -//----------------------------------------------------------------------------- -// Purpose: called when the latests stats and achievements have been received -// from the server -//----------------------------------------------------------------------------- -struct UserStatsReceived_t -{ - enum { k_iCallback = k_iSteamUserStatsCallbacks + 1 }; - uint64 m_nGameID; // Game these stats are for - EResult m_eResult; // Success / error fetching the stats - CSteamID m_steamIDUser; // The user for whom the stats are retrieved for -}; - - -//----------------------------------------------------------------------------- -// Purpose: result of a request to store the user stats for a game -//----------------------------------------------------------------------------- -struct UserStatsStored_t -{ - enum { k_iCallback = k_iSteamUserStatsCallbacks + 2 }; - uint64 m_nGameID; // Game these stats are for - EResult m_eResult; // success / error -}; - - -//----------------------------------------------------------------------------- -// Purpose: result of a request to store the achievements for a game, or an -// "indicate progress" call. If both m_nCurProgress and m_nMaxProgress -// are zero, that means the achievement has been fully unlocked. -//----------------------------------------------------------------------------- -struct UserAchievementStored_t -{ - enum { k_iCallback = k_iSteamUserStatsCallbacks + 3 }; - - uint64 m_nGameID; // Game this is for - bool m_bGroupAchievement; // if this is a "group" achievement - char m_rgchAchievementName[k_cchStatNameMax]; // name of the achievement - uint32 m_nCurProgress; // current progress towards the achievement - uint32 m_nMaxProgress; // "out of" this many -}; - - -//----------------------------------------------------------------------------- -// Purpose: call result for finding a leaderboard, returned as a result of FindOrCreateLeaderboard() or FindLeaderboard() -// use CCallResult<> to map this async result to a member function -//----------------------------------------------------------------------------- -struct LeaderboardFindResult_t -{ - enum { k_iCallback = k_iSteamUserStatsCallbacks + 4 }; - SteamLeaderboard_t m_hSteamLeaderboard; // handle to the leaderboard serarched for, 0 if no leaderboard found - uint8 m_bLeaderboardFound; // 0 if no leaderboard found -}; - - -//----------------------------------------------------------------------------- -// Purpose: call result indicating scores for a leaderboard have been downloaded and are ready to be retrieved, returned as a result of DownloadLeaderboardEntries() -// use CCallResult<> to map this async result to a member function -//----------------------------------------------------------------------------- -struct LeaderboardScoresDownloaded_t -{ - enum { k_iCallback = k_iSteamUserStatsCallbacks + 5 }; - SteamLeaderboard_t m_hSteamLeaderboard; - SteamLeaderboardEntries_t m_hSteamLeaderboardEntries; // the handle to pass into GetDownloadedLeaderboardEntries() - int m_cEntryCount; // the number of entries downloaded -}; - - -//----------------------------------------------------------------------------- -// Purpose: call result indicating scores has been uploaded, returned as a result of UploadLeaderboardScore() -// use CCallResult<> to map this async result to a member function -//----------------------------------------------------------------------------- -struct LeaderboardScoreUploaded_t -{ - enum { k_iCallback = k_iSteamUserStatsCallbacks + 6 }; - uint8 m_bSuccess; // 1 if the call was successful - SteamLeaderboard_t m_hSteamLeaderboard; // the leaderboard handle that was - int32 m_nScore; // the score that was attempted to set - uint8 m_bScoreChanged; // true if the score in the leaderboard change, false if the existing score was better - int m_nGlobalRankNew; // the new global rank of the user in this leaderboard - int m_nGlobalRankPrevious; // the previous global rank of the user in this leaderboard; 0 if the user had no existing entry in the leaderboard -}; - -struct NumberOfCurrentPlayers_t -{ - enum { k_iCallback = k_iSteamUserStatsCallbacks + 7 }; - uint8 m_bSuccess; // 1 if the call was successful - int32 m_cPlayers; // Number of players currently playing -}; - - - -//----------------------------------------------------------------------------- -// Purpose: Callback indicating that a user's stats have been unloaded. -// Call RequestUserStats again to access stats for this user -//----------------------------------------------------------------------------- -struct UserStatsUnloaded_t -{ - enum { k_iCallback = k_iSteamUserStatsCallbacks + 8 }; - CSteamID m_steamIDUser; // User whose stats have been unloaded -}; - - - -//----------------------------------------------------------------------------- -// Purpose: Callback indicating that an achievement icon has been fetched -//----------------------------------------------------------------------------- -struct UserAchievementIconFetched_t -{ - enum { k_iCallback = k_iSteamUserStatsCallbacks + 9 }; - - CGameID m_nGameID; // Game this is for - char m_rgchAchievementName[k_cchStatNameMax]; // name of the achievement - bool m_bAchieved; // Is the icon for the achieved or not achieved version? - int m_nIconHandle; // Handle to the image, which can be used in SteamUtils()->GetImageRGBA(), 0 means no image is set for the achievement -}; - - -//----------------------------------------------------------------------------- -// Purpose: Callback indicating that global achievement percentages are fetched -//----------------------------------------------------------------------------- -struct GlobalAchievementPercentagesReady_t -{ - enum { k_iCallback = k_iSteamUserStatsCallbacks + 10 }; - - uint64 m_nGameID; // Game this is for - EResult m_eResult; // Result of the operation -}; - - -//----------------------------------------------------------------------------- -// Purpose: call result indicating UGC has been uploaded, returned as a result of SetLeaderboardUGC() -//----------------------------------------------------------------------------- -struct LeaderboardUGCSet_t -{ - enum { k_iCallback = k_iSteamUserStatsCallbacks + 11 }; - EResult m_eResult; // The result of the operation - SteamLeaderboard_t m_hSteamLeaderboard; // the leaderboard handle that was -}; - - -//----------------------------------------------------------------------------- -// Purpose: callback indicating that PS3 trophies have been installed -//----------------------------------------------------------------------------- -struct PS3TrophiesInstalled_t -{ - enum { k_iCallback = k_iSteamUserStatsCallbacks + 12 }; - uint64 m_nGameID; // Game these stats are for - EResult m_eResult; // The result of the operation - uint64 m_ulRequiredDiskSpace; // If m_eResult is k_EResultDiskFull, will contain the amount of space needed to install trophies - -}; - - -//----------------------------------------------------------------------------- -// Purpose: callback indicating global stats have been received. -// Returned as a result of RequestGlobalStats() -//----------------------------------------------------------------------------- -struct GlobalStatsReceived_t -{ - enum { k_iCallback = k_iSteamUserStatsCallbacks + 12 }; - uint64 m_nGameID; // Game global stats were requested for - EResult m_eResult; // The result of the request -}; - -#pragma pack( pop ) - - -#endif // ISTEAMUSER_H +//====== Copyright � 1996-2009, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to stats, achievements, and leaderboards +// +//============================================================================= + +#ifndef ISTEAMUSERSTATS_H +#define ISTEAMUSERSTATS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" +#include "isteamremotestorage.h" + +// size limit on stat or achievement name (UTF-8 encoded) +enum { k_cchStatNameMax = 128 }; + +// maximum number of bytes for a leaderboard name (UTF-8 encoded) +enum { k_cchLeaderboardNameMax = 128 }; + +// maximum number of details int32's storable for a single leaderboard entry +enum { k_cLeaderboardDetailsMax = 64 }; + +// handle to a single leaderboard +typedef uint64 SteamLeaderboard_t; + +// handle to a set of downloaded entries in a leaderboard +typedef uint64 SteamLeaderboardEntries_t; + +// type of data request, when downloading leaderboard entries +enum ELeaderboardDataRequest +{ + k_ELeaderboardDataRequestGlobal = 0, + k_ELeaderboardDataRequestGlobalAroundUser = 1, + k_ELeaderboardDataRequestFriends = 2, + k_ELeaderboardDataRequestUsers = 3 +}; + +// the sort order of a leaderboard +enum ELeaderboardSortMethod +{ + k_ELeaderboardSortMethodNone = 0, + k_ELeaderboardSortMethodAscending = 1, // top-score is lowest number + k_ELeaderboardSortMethodDescending = 2, // top-score is highest number +}; + +// the display type (used by the Steam Community web site) for a leaderboard +enum ELeaderboardDisplayType +{ + k_ELeaderboardDisplayTypeNone = 0, + k_ELeaderboardDisplayTypeNumeric = 1, // simple numerical score + k_ELeaderboardDisplayTypeTimeSeconds = 2, // the score represents a time, in seconds + k_ELeaderboardDisplayTypeTimeMilliSeconds = 3, // the score represents a time, in milliseconds +}; + +enum ELeaderboardUploadScoreMethod +{ + k_ELeaderboardUploadScoreMethodNone = 0, + k_ELeaderboardUploadScoreMethodKeepBest = 1, // Leaderboard will keep user's best score + k_ELeaderboardUploadScoreMethodForceUpdate = 2, // Leaderboard will always replace score with specified +}; + +// a single entry in a leaderboard, as returned by GetDownloadedLeaderboardEntry() +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + +struct LeaderboardEntry_t +{ + CSteamID m_steamIDUser; // user with the entry - use SteamFriends()->GetFriendPersonaName() & SteamFriends()->GetFriendAvatar() to get more info + int32 m_nGlobalRank; // [1..N], where N is the number of users with an entry in the leaderboard + int32 m_nScore; // score as set in the leaderboard + int32 m_cDetails; // number of int32 details available for this entry + UGCHandle_t m_hUGC; // handle for UGC attached to the entry +}; + +#pragma pack( pop ) + + +//----------------------------------------------------------------------------- +// Purpose: Functions for accessing stats, achievements, and leaderboard information +//----------------------------------------------------------------------------- +class ISteamUserStats +{ +public: + // Ask the server to send down this user's data and achievements for this game + STEAM_CALL_BACK( UserStatsReceived_t ) + virtual bool RequestCurrentStats() = 0; + + // Data accessors + STEAM_FLAT_NAME( GetStatInt32 ) + virtual bool GetStat( const char *pchName, int32 *pData ) = 0; + + STEAM_FLAT_NAME( GetStatFloat ) + virtual bool GetStat( const char *pchName, float *pData ) = 0; + + // Set / update data + STEAM_FLAT_NAME( SetStatInt32 ) + virtual bool SetStat( const char *pchName, int32 nData ) = 0; + + STEAM_FLAT_NAME( SetStatFloat ) + virtual bool SetStat( const char *pchName, float fData ) = 0; + + virtual bool UpdateAvgRateStat( const char *pchName, float flCountThisSession, double dSessionLength ) = 0; + + // Achievement flag accessors + virtual bool GetAchievement( const char *pchName, bool *pbAchieved ) = 0; + virtual bool SetAchievement( const char *pchName ) = 0; + virtual bool ClearAchievement( const char *pchName ) = 0; + + // Get the achievement status, and the time it was unlocked if unlocked. + // If the return value is true, but the unlock time is zero, that means it was unlocked before Steam + // began tracking achievement unlock times (December 2009). Time is seconds since January 1, 1970. + virtual bool GetAchievementAndUnlockTime( const char *pchName, bool *pbAchieved, uint32 *punUnlockTime ) = 0; + + // Store the current data on the server, will get a callback when set + // And one callback for every new achievement + // + // If the callback has a result of k_EResultInvalidParam, one or more stats + // uploaded has been rejected, either because they broke constraints + // or were out of date. In this case the server sends back updated values. + // The stats should be re-iterated to keep in sync. + virtual bool StoreStats() = 0; + + // Achievement / GroupAchievement metadata + + // Gets the icon of the achievement, which is a handle to be used in ISteamUtils::GetImageRGBA(), or 0 if none set. + // A return value of 0 may indicate we are still fetching data, and you can wait for the UserAchievementIconFetched_t callback + // which will notify you when the bits are ready. If the callback still returns zero, then there is no image set for the + // specified achievement. + virtual int GetAchievementIcon( const char *pchName ) = 0; + + // Get general attributes for an achievement. Accepts the following keys: + // - "name" and "desc" for retrieving the localized achievement name and description (returned in UTF8) + // - "hidden" for retrieving if an achievement is hidden (returns "0" when not hidden, "1" when hidden) + virtual const char *GetAchievementDisplayAttribute( const char *pchName, const char *pchKey ) = 0; + + // Achievement progress - triggers an AchievementProgress callback, that is all. + // Calling this w/ N out of N progress will NOT set the achievement, the game must still do that. + virtual bool IndicateAchievementProgress( const char *pchName, uint32 nCurProgress, uint32 nMaxProgress ) = 0; + + // Used for iterating achievements. In general games should not need these functions because they should have a + // list of existing achievements compiled into them + virtual uint32 GetNumAchievements() = 0; + // Get achievement name iAchievement in [0,GetNumAchievements) + virtual const char *GetAchievementName( uint32 iAchievement ) = 0; + + // Friends stats & achievements + + // downloads stats for the user + // returns a UserStatsReceived_t received when completed + // if the other user has no stats, UserStatsReceived_t.m_eResult will be set to k_EResultFail + // these stats won't be auto-updated; you'll need to call RequestUserStats() again to refresh any data + STEAM_CALL_RESULT( UserStatsReceived_t ) + virtual SteamAPICall_t RequestUserStats( CSteamID steamIDUser ) = 0; + + // requests stat information for a user, usable after a successful call to RequestUserStats() + STEAM_FLAT_NAME( GetUserStatInt32 ) + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, int32 *pData ) = 0; + + STEAM_FLAT_NAME( GetUserStatFloat ) + virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, float *pData ) = 0; + + virtual bool GetUserAchievement( CSteamID steamIDUser, const char *pchName, bool *pbAchieved ) = 0; + // See notes for GetAchievementAndUnlockTime above + virtual bool GetUserAchievementAndUnlockTime( CSteamID steamIDUser, const char *pchName, bool *pbAchieved, uint32 *punUnlockTime ) = 0; + + // Reset stats + virtual bool ResetAllStats( bool bAchievementsToo ) = 0; + + // Leaderboard functions + + // asks the Steam back-end for a leaderboard by name, and will create it if it's not yet + // This call is asynchronous, with the result returned in LeaderboardFindResult_t + STEAM_CALL_RESULT(LeaderboardFindResult_t) + virtual SteamAPICall_t FindOrCreateLeaderboard( const char *pchLeaderboardName, ELeaderboardSortMethod eLeaderboardSortMethod, ELeaderboardDisplayType eLeaderboardDisplayType ) = 0; + + // as above, but won't create the leaderboard if it's not found + // This call is asynchronous, with the result returned in LeaderboardFindResult_t + STEAM_CALL_RESULT( LeaderboardFindResult_t ) + virtual SteamAPICall_t FindLeaderboard( const char *pchLeaderboardName ) = 0; + + // returns the name of a leaderboard + virtual const char *GetLeaderboardName( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // returns the total number of entries in a leaderboard, as of the last request + virtual int GetLeaderboardEntryCount( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // returns the sort method of the leaderboard + virtual ELeaderboardSortMethod GetLeaderboardSortMethod( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // returns the display type of the leaderboard + virtual ELeaderboardDisplayType GetLeaderboardDisplayType( SteamLeaderboard_t hSteamLeaderboard ) = 0; + + // Asks the Steam back-end for a set of rows in the leaderboard. + // This call is asynchronous, with the result returned in LeaderboardScoresDownloaded_t + // LeaderboardScoresDownloaded_t will contain a handle to pull the results from GetDownloadedLeaderboardEntries() (below) + // You can ask for more entries than exist, and it will return as many as do exist. + // k_ELeaderboardDataRequestGlobal requests rows in the leaderboard from the full table, with nRangeStart & nRangeEnd in the range [1, TotalEntries] + // k_ELeaderboardDataRequestGlobalAroundUser requests rows around the current user, nRangeStart being negate + // e.g. DownloadLeaderboardEntries( hLeaderboard, k_ELeaderboardDataRequestGlobalAroundUser, -3, 3 ) will return 7 rows, 3 before the user, 3 after + // k_ELeaderboardDataRequestFriends requests all the rows for friends of the current user + STEAM_CALL_RESULT( LeaderboardScoresDownloaded_t ) + virtual SteamAPICall_t DownloadLeaderboardEntries( SteamLeaderboard_t hSteamLeaderboard, ELeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd ) = 0; + // as above, but downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers + // if a user doesn't have a leaderboard entry, they won't be included in the result + // a max of 100 users can be downloaded at a time, with only one outstanding call at a time + STEAM_METHOD_DESC(Downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers) + STEAM_CALL_RESULT( LeaderboardScoresDownloaded_t ) + virtual SteamAPICall_t DownloadLeaderboardEntriesForUsers( SteamLeaderboard_t hSteamLeaderboard, + STEAM_ARRAY_COUNT_D(cUsers, Array of users to retrieve) CSteamID *prgUsers, int cUsers ) = 0; + + // Returns data about a single leaderboard entry + // use a for loop from 0 to LeaderboardScoresDownloaded_t::m_cEntryCount to get all the downloaded entries + // e.g. + // void OnLeaderboardScoresDownloaded( LeaderboardScoresDownloaded_t *pLeaderboardScoresDownloaded ) + // { + // for ( int index = 0; index < pLeaderboardScoresDownloaded->m_cEntryCount; index++ ) + // { + // LeaderboardEntry_t leaderboardEntry; + // int32 details[3]; // we know this is how many we've stored previously + // GetDownloadedLeaderboardEntry( pLeaderboardScoresDownloaded->m_hSteamLeaderboardEntries, index, &leaderboardEntry, details, 3 ); + // assert( leaderboardEntry.m_cDetails == 3 ); + // ... + // } + // once you've accessed all the entries, the data will be free'd, and the SteamLeaderboardEntries_t handle will become invalid + virtual bool GetDownloadedLeaderboardEntry( SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, LeaderboardEntry_t *pLeaderboardEntry, int32 *pDetails, int cDetailsMax ) = 0; + + // Uploads a user score to the Steam back-end. + // This call is asynchronous, with the result returned in LeaderboardScoreUploaded_t + // Details are extra game-defined information regarding how the user got that score + // pScoreDetails points to an array of int32's, cScoreDetailsCount is the number of int32's in the list + STEAM_CALL_RESULT( LeaderboardScoreUploaded_t ) + virtual SteamAPICall_t UploadLeaderboardScore( SteamLeaderboard_t hSteamLeaderboard, ELeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int32 nScore, const int32 *pScoreDetails, int cScoreDetailsCount ) = 0; + + // Attaches a piece of user generated content the user's entry on a leaderboard. + // hContent is a handle to a piece of user generated content that was shared using ISteamUserRemoteStorage::FileShare(). + // This call is asynchronous, with the result returned in LeaderboardUGCSet_t. + STEAM_CALL_RESULT( LeaderboardUGCSet_t ) + virtual SteamAPICall_t AttachLeaderboardUGC( SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC ) = 0; + + // Retrieves the number of players currently playing your game (online + offline) + // This call is asynchronous, with the result returned in NumberOfCurrentPlayers_t + STEAM_CALL_RESULT( NumberOfCurrentPlayers_t ) + virtual SteamAPICall_t GetNumberOfCurrentPlayers() = 0; + + // Requests that Steam fetch data on the percentage of players who have received each achievement + // for the game globally. + // This call is asynchronous, with the result returned in GlobalAchievementPercentagesReady_t. + STEAM_CALL_RESULT( GlobalAchievementPercentagesReady_t ) + virtual SteamAPICall_t RequestGlobalAchievementPercentages() = 0; + + // Get the info on the most achieved achievement for the game, returns an iterator index you can use to fetch + // the next most achieved afterwards. Will return -1 if there is no data on achievement + // percentages (ie, you haven't called RequestGlobalAchievementPercentages and waited on the callback). + virtual int GetMostAchievedAchievementInfo( char *pchName, uint32 unNameBufLen, float *pflPercent, bool *pbAchieved ) = 0; + + // Get the info on the next most achieved achievement for the game. Call this after GetMostAchievedAchievementInfo or another + // GetNextMostAchievedAchievementInfo call passing the iterator from the previous call. Returns -1 after the last + // achievement has been iterated. + virtual int GetNextMostAchievedAchievementInfo( int iIteratorPrevious, char *pchName, uint32 unNameBufLen, float *pflPercent, bool *pbAchieved ) = 0; + + // Returns the percentage of users who have achieved the specified achievement. + virtual bool GetAchievementAchievedPercent( const char *pchName, float *pflPercent ) = 0; + + // Requests global stats data, which is available for stats marked as "aggregated". + // This call is asynchronous, with the results returned in GlobalStatsReceived_t. + // nHistoryDays specifies how many days of day-by-day history to retrieve in addition + // to the overall totals. The limit is 60. + STEAM_CALL_RESULT( GlobalStatsReceived_t ) + virtual SteamAPICall_t RequestGlobalStats( int nHistoryDays ) = 0; + + // Gets the lifetime totals for an aggregated stat + STEAM_FLAT_NAME( GetGlobalStatInt64 ) + virtual bool GetGlobalStat( const char *pchStatName, int64 *pData ) = 0; + + STEAM_FLAT_NAME( GetGlobalStatDouble ) + virtual bool GetGlobalStat( const char *pchStatName, double *pData ) = 0; + + // Gets history for an aggregated stat. pData will be filled with daily values, starting with today. + // So when called, pData[0] will be today, pData[1] will be yesterday, and pData[2] will be two days ago, + // etc. cubData is the size in bytes of the pubData buffer. Returns the number of + // elements actually set. + + STEAM_FLAT_NAME( GetGlobalStatHistoryInt64 ) + virtual int32 GetGlobalStatHistory( const char *pchStatName, STEAM_ARRAY_COUNT(cubData) int64 *pData, uint32 cubData ) = 0; + + STEAM_FLAT_NAME( GetGlobalStatHistoryDouble ) + virtual int32 GetGlobalStatHistory( const char *pchStatName, STEAM_ARRAY_COUNT(cubData) double *pData, uint32 cubData ) = 0; + + // For achievements that have related Progress stats, use this to query what the bounds of that progress are. + // You may want this info to selectively call IndicateAchievementProgress when appropriate milestones of progress + // have been made, to show a progress notification to the user. + STEAM_FLAT_NAME( GetAchievementProgressLimitsInt32 ) + virtual bool GetAchievementProgressLimits( const char *pchName, int32 *pnMinProgress, int32 *pnMaxProgress ) = 0; + + STEAM_FLAT_NAME( GetAchievementProgressLimitsFloat ) + virtual bool GetAchievementProgressLimits( const char *pchName, float *pfMinProgress, float *pfMaxProgress ) = 0; + +}; + +#define STEAMUSERSTATS_INTERFACE_VERSION "STEAMUSERSTATS_INTERFACE_VERSION012" + +// Global interface accessor +inline ISteamUserStats *SteamUserStats(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamUserStats *, SteamUserStats, STEAMUSERSTATS_INTERFACE_VERSION ); + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when the latests stats and achievements have been received +// from the server +//----------------------------------------------------------------------------- +struct UserStatsReceived_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 1 }; + uint64 m_nGameID; // Game these stats are for + EResult m_eResult; // Success / error fetching the stats + CSteamID m_steamIDUser; // The user for whom the stats are retrieved for +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of a request to store the user stats for a game +//----------------------------------------------------------------------------- +struct UserStatsStored_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 2 }; + uint64 m_nGameID; // Game these stats are for + EResult m_eResult; // success / error +}; + + +//----------------------------------------------------------------------------- +// Purpose: result of a request to store the achievements for a game, or an +// "indicate progress" call. If both m_nCurProgress and m_nMaxProgress +// are zero, that means the achievement has been fully unlocked. +//----------------------------------------------------------------------------- +struct UserAchievementStored_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 3 }; + + uint64 m_nGameID; // Game this is for + bool m_bGroupAchievement; // if this is a "group" achievement + char m_rgchAchievementName[k_cchStatNameMax]; // name of the achievement + uint32 m_nCurProgress; // current progress towards the achievement + uint32 m_nMaxProgress; // "out of" this many +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result for finding a leaderboard, returned as a result of FindOrCreateLeaderboard() or FindLeaderboard() +// use CCallResult<> to map this async result to a member function +//----------------------------------------------------------------------------- +struct LeaderboardFindResult_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 4 }; + SteamLeaderboard_t m_hSteamLeaderboard; // handle to the leaderboard serarched for, 0 if no leaderboard found + uint8 m_bLeaderboardFound; // 0 if no leaderboard found +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result indicating scores for a leaderboard have been downloaded and are ready to be retrieved, returned as a result of DownloadLeaderboardEntries() +// use CCallResult<> to map this async result to a member function +//----------------------------------------------------------------------------- +struct LeaderboardScoresDownloaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 5 }; + SteamLeaderboard_t m_hSteamLeaderboard; + SteamLeaderboardEntries_t m_hSteamLeaderboardEntries; // the handle to pass into GetDownloadedLeaderboardEntries() + int m_cEntryCount; // the number of entries downloaded +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result indicating scores has been uploaded, returned as a result of UploadLeaderboardScore() +// use CCallResult<> to map this async result to a member function +//----------------------------------------------------------------------------- +struct LeaderboardScoreUploaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 6 }; + uint8 m_bSuccess; // 1 if the call was successful + SteamLeaderboard_t m_hSteamLeaderboard; // the leaderboard handle that was + int32 m_nScore; // the score that was attempted to set + uint8 m_bScoreChanged; // true if the score in the leaderboard change, false if the existing score was better + int m_nGlobalRankNew; // the new global rank of the user in this leaderboard + int m_nGlobalRankPrevious; // the previous global rank of the user in this leaderboard; 0 if the user had no existing entry in the leaderboard +}; + +struct NumberOfCurrentPlayers_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 7 }; + uint8 m_bSuccess; // 1 if the call was successful + int32 m_cPlayers; // Number of players currently playing +}; + + + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that a user's stats have been unloaded. +// Call RequestUserStats again to access stats for this user +//----------------------------------------------------------------------------- +struct UserStatsUnloaded_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 8 }; + CSteamID m_steamIDUser; // User whose stats have been unloaded +}; + + + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that an achievement icon has been fetched +//----------------------------------------------------------------------------- +struct UserAchievementIconFetched_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 9 }; + + CGameID m_nGameID; // Game this is for + char m_rgchAchievementName[k_cchStatNameMax]; // name of the achievement + bool m_bAchieved; // Is the icon for the achieved or not achieved version? + int m_nIconHandle; // Handle to the image, which can be used in SteamUtils()->GetImageRGBA(), 0 means no image is set for the achievement +}; + + +//----------------------------------------------------------------------------- +// Purpose: Callback indicating that global achievement percentages are fetched +//----------------------------------------------------------------------------- +struct GlobalAchievementPercentagesReady_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 10 }; + + uint64 m_nGameID; // Game this is for + EResult m_eResult; // Result of the operation +}; + + +//----------------------------------------------------------------------------- +// Purpose: call result indicating UGC has been uploaded, returned as a result of SetLeaderboardUGC() +//----------------------------------------------------------------------------- +struct LeaderboardUGCSet_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 11 }; + EResult m_eResult; // The result of the operation + SteamLeaderboard_t m_hSteamLeaderboard; // the leaderboard handle that was +}; + + +//----------------------------------------------------------------------------- +// Purpose: callback indicating that PS3 trophies have been installed +//----------------------------------------------------------------------------- +struct PS3TrophiesInstalled_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 12 }; + uint64 m_nGameID; // Game these stats are for + EResult m_eResult; // The result of the operation + uint64 m_ulRequiredDiskSpace; // If m_eResult is k_EResultDiskFull, will contain the amount of space needed to install trophies + +}; + + +//----------------------------------------------------------------------------- +// Purpose: callback indicating global stats have been received. +// Returned as a result of RequestGlobalStats() +//----------------------------------------------------------------------------- +struct GlobalStatsReceived_t +{ + enum { k_iCallback = k_iSteamUserStatsCallbacks + 12 }; + uint64 m_nGameID; // Game global stats were requested for + EResult m_eResult; // The result of the request +}; + +#pragma pack( pop ) + + +#endif // ISTEAMUSER_H diff --git a/CodeGen/steam/isteamutils.h b/CodeGen/steam/isteamutils.h index 01044882..fe2cde4c 100644 --- a/CodeGen/steam/isteamutils.h +++ b/CodeGen/steam/isteamutils.h @@ -1,305 +1,305 @@ -//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= -// -// Purpose: interface to utility functions in Steam -// -//============================================================================= - -#ifndef ISTEAMUTILS_H -#define ISTEAMUTILS_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" - - -// Steam API call failure results -enum ESteamAPICallFailure -{ - k_ESteamAPICallFailureNone = -1, // no failure - k_ESteamAPICallFailureSteamGone = 0, // the local Steam process has gone away - k_ESteamAPICallFailureNetworkFailure = 1, // the network connection to Steam has been broken, or was already broken - // SteamServersDisconnected_t callback will be sent around the same time - // SteamServersConnected_t will be sent when the client is able to talk to the Steam servers again - k_ESteamAPICallFailureInvalidHandle = 2, // the SteamAPICall_t handle passed in no longer exists - k_ESteamAPICallFailureMismatchedCallback = 3,// GetAPICallResult() was called with the wrong callback type for this API call -}; - - -// Input modes for the Big Picture gamepad text entry -enum EGamepadTextInputMode -{ - k_EGamepadTextInputModeNormal = 0, - k_EGamepadTextInputModePassword = 1 -}; - - -// Controls number of allowed lines for the Big Picture gamepad text entry -enum EGamepadTextInputLineMode -{ - k_EGamepadTextInputLineModeSingleLine = 0, - k_EGamepadTextInputLineModeMultipleLines = 1 -}; - - -// The context where text filtering is being done -enum ETextFilteringContext -{ - k_ETextFilteringContextUnknown = 0, // Unknown context - k_ETextFilteringContextGameContent = 1, // Game content, only legally required filtering is performed - k_ETextFilteringContextChat = 2, // Chat from another player - k_ETextFilteringContextName = 3, // Character or item name -}; - - -// function prototype for warning message hook -#if defined( POSIX ) -#define __cdecl -#endif -extern "C" typedef void (__cdecl *SteamAPIWarningMessageHook_t)(int, const char *); - -//----------------------------------------------------------------------------- -// Purpose: interface to user independent utility functions -//----------------------------------------------------------------------------- -class ISteamUtils -{ -public: - // return the number of seconds since the user - virtual uint32 GetSecondsSinceAppActive() = 0; - virtual uint32 GetSecondsSinceComputerActive() = 0; - - // the universe this client is connecting to - virtual EUniverse GetConnectedUniverse() = 0; - - // Steam server time. Number of seconds since January 1, 1970, GMT (i.e unix time) - virtual uint32 GetServerRealTime() = 0; - - // returns the 2 digit ISO 3166-1-alpha-2 format country code this client is running in (as looked up via an IP-to-location database) - // e.g "US" or "UK". - virtual const char *GetIPCountry() = 0; - - // returns true if the image exists, and valid sizes were filled out - virtual bool GetImageSize( int iImage, uint32 *pnWidth, uint32 *pnHeight ) = 0; - - // returns true if the image exists, and the buffer was successfully filled out - // results are returned in RGBA format - // the destination buffer size should be 4 * height * width * sizeof(char) - virtual bool GetImageRGBA( int iImage, uint8 *pubDest, int nDestBufferSize ) = 0; - - // Deprecated. Do not call this. - STEAM_PRIVATE_API( virtual bool GetCSERIPPort( uint32 *unIP, uint16 *usPort ) = 0; ) - - // return the amount of battery power left in the current system in % [0..100], 255 for being on AC power - virtual uint8 GetCurrentBatteryPower() = 0; - - // returns the appID of the current process - virtual uint32 GetAppID() = 0; - - // Sets the position where the overlay instance for the currently calling game should show notifications. - // This position is per-game and if this function is called from outside of a game context it will do nothing. - virtual void SetOverlayNotificationPosition( ENotificationPosition eNotificationPosition ) = 0; - - // API asynchronous call results - // can be used directly, but more commonly used via the callback dispatch API (see steam_api.h) - virtual bool IsAPICallCompleted( SteamAPICall_t hSteamAPICall, bool *pbFailed ) = 0; - virtual ESteamAPICallFailure GetAPICallFailureReason( SteamAPICall_t hSteamAPICall ) = 0; - virtual bool GetAPICallResult( SteamAPICall_t hSteamAPICall, void *pCallback, int cubCallback, int iCallbackExpected, bool *pbFailed ) = 0; - - // Deprecated. Applications should use SteamAPI_RunCallbacks() instead. Game servers do not need to call this function. - STEAM_PRIVATE_API( virtual void RunFrame() = 0; ) - - // returns the number of IPC calls made since the last time this function was called - // Used for perf debugging so you can understand how many IPC calls your game makes per frame - // Every IPC call is at minimum a thread context switch if not a process one so you want to rate - // control how often you do them. - virtual uint32 GetIPCCallCount() = 0; - - // API warning handling - // 'int' is the severity; 0 for msg, 1 for warning - // 'const char *' is the text of the message - // callbacks will occur directly after the API function is called that generated the warning or message - virtual void SetWarningMessageHook( SteamAPIWarningMessageHook_t pFunction ) = 0; - - // Returns true if the overlay is running & the user can access it. The overlay process could take a few seconds to - // start & hook the game process, so this function will initially return false while the overlay is loading. - virtual bool IsOverlayEnabled() = 0; - - // Normally this call is unneeded if your game has a constantly running frame loop that calls the - // D3D Present API, or OGL SwapBuffers API every frame. - // - // However, if you have a game that only refreshes the screen on an event driven basis then that can break - // the overlay, as it uses your Present/SwapBuffers calls to drive it's internal frame loop and it may also - // need to Present() to the screen any time an even needing a notification happens or when the overlay is - // brought up over the game by a user. You can use this API to ask the overlay if it currently need a present - // in that case, and then you can check for this periodically (roughly 33hz is desirable) and make sure you - // refresh the screen with Present or SwapBuffers to allow the overlay to do it's work. - virtual bool BOverlayNeedsPresent() = 0; - - // Asynchronous call to check if an executable file has been signed using the public key set on the signing tab - // of the partner site, for example to refuse to load modified executable files. - // The result is returned in CheckFileSignature_t. - // k_ECheckFileSignatureNoSignaturesFoundForThisApp - This app has not been configured on the signing tab of the partner site to enable this function. - // k_ECheckFileSignatureNoSignaturesFoundForThisFile - This file is not listed on the signing tab for the partner site. - // k_ECheckFileSignatureFileNotFound - The file does not exist on disk. - // k_ECheckFileSignatureInvalidSignature - The file exists, and the signing tab has been set for this file, but the file is either not signed or the signature does not match. - // k_ECheckFileSignatureValidSignature - The file is signed and the signature is valid. - STEAM_CALL_RESULT( CheckFileSignature_t ) - virtual SteamAPICall_t CheckFileSignature( const char *szFileName ) = 0; - - // Activates the Big Picture text input dialog which only supports gamepad input - virtual bool ShowGamepadTextInput( EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, const char *pchDescription, uint32 unCharMax, const char *pchExistingText ) = 0; - - // Returns previously entered text & length - virtual uint32 GetEnteredGamepadTextLength() = 0; - virtual bool GetEnteredGamepadTextInput( char *pchText, uint32 cchText ) = 0; - - // returns the language the steam client is running in, you probably want ISteamApps::GetCurrentGameLanguage instead, this is for very special usage cases - virtual const char *GetSteamUILanguage() = 0; - - // returns true if Steam itself is running in VR mode - virtual bool IsSteamRunningInVR() = 0; - - // Sets the inset of the overlay notification from the corner specified by SetOverlayNotificationPosition. - virtual void SetOverlayNotificationInset( int nHorizontalInset, int nVerticalInset ) = 0; - - // returns true if Steam & the Steam Overlay are running in Big Picture mode - // Games much be launched through the Steam client to enable the Big Picture overlay. During development, - // a game can be added as a non-steam game to the developers library to test this feature - virtual bool IsSteamInBigPictureMode() = 0; - - // ask SteamUI to create and render its OpenVR dashboard - virtual void StartVRDashboard() = 0; - - // Returns true if the HMD content will be streamed via Steam Remote Play - virtual bool IsVRHeadsetStreamingEnabled() = 0; - - // Set whether the HMD content will be streamed via Steam Remote Play - // If this is set to true, then the scene in the HMD headset will be streamed, and remote input will not be allowed. - // If this is set to false, then the application window will be streamed instead, and remote input will be allowed. - // The default is true unless "VRHeadsetStreaming" "0" is in the extended appinfo for a game. - // (this is useful for games that have asymmetric multiplayer gameplay) - virtual void SetVRHeadsetStreamingEnabled( bool bEnabled ) = 0; - - // Returns whether this steam client is a Steam China specific client, vs the global client. - virtual bool IsSteamChinaLauncher() = 0; - - // Initializes text filtering, loading dictionaries for the language the game is running in. - // unFilterOptions are reserved for future use and should be set to 0 - // Returns false if filtering is unavailable for the game's language, in which case FilterText() will act as a passthrough. - // - // Users can customize the text filter behavior in their Steam Account preferences: - // https://store.steampowered.com/account/preferences#CommunityContentPreferences - virtual bool InitFilterText( uint32 unFilterOptions = 0 ) = 0; - - // Filters the provided input message and places the filtered result into pchOutFilteredText, using legally required filtering and additional filtering based on the context and user settings - // eContext is the type of content in the input string - // sourceSteamID is the Steam ID that is the source of the input string (e.g. the player with the name, or who said the chat text) - // pchInputText is the input string that should be filtered, which can be ASCII or UTF-8 - // pchOutFilteredText is where the output will be placed, even if no filtering is performed - // nByteSizeOutFilteredText is the size (in bytes) of pchOutFilteredText, should be at least strlen(pchInputText)+1 - // Returns the number of characters (not bytes) filtered - virtual int FilterText( ETextFilteringContext eContext, CSteamID sourceSteamID, const char *pchInputMessage, char *pchOutFilteredText, uint32 nByteSizeOutFilteredText ) = 0; - - // Return what we believe your current ipv6 connectivity to "the internet" is on the specified protocol. - // This does NOT tell you if the Steam client is currently connected to Steam via ipv6. - virtual ESteamIPv6ConnectivityState GetIPv6ConnectivityState( ESteamIPv6ConnectivityProtocol eProtocol ) = 0; -}; - -#define STEAMUTILS_INTERFACE_VERSION "SteamUtils010" - -// Global interface accessor -inline ISteamUtils *SteamUtils(); -STEAM_DEFINE_INTERFACE_ACCESSOR( ISteamUtils *, SteamUtils, SteamInternal_FindOrCreateUserInterface( 0, STEAMUTILS_INTERFACE_VERSION ), "user", STEAMUTILS_INTERFACE_VERSION ); - -// Global accessor for the gameserver client -inline ISteamUtils *SteamGameServerUtils(); -STEAM_DEFINE_INTERFACE_ACCESSOR( ISteamUtils *, SteamGameServerUtils, SteamInternal_FindOrCreateGameServerInterface( 0, STEAMUTILS_INTERFACE_VERSION ), "gameserver", STEAMUTILS_INTERFACE_VERSION ); - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - -//----------------------------------------------------------------------------- -// Purpose: The country of the user changed -//----------------------------------------------------------------------------- -struct IPCountry_t -{ - enum { k_iCallback = k_iSteamUtilsCallbacks + 1 }; -}; - - -//----------------------------------------------------------------------------- -// Purpose: Fired when running on a laptop and less than 10 minutes of battery is left, fires then every minute -//----------------------------------------------------------------------------- -struct LowBatteryPower_t -{ - enum { k_iCallback = k_iSteamUtilsCallbacks + 2 }; - uint8 m_nMinutesBatteryLeft; -}; - - -//----------------------------------------------------------------------------- -// Purpose: called when a SteamAsyncCall_t has completed (or failed) -//----------------------------------------------------------------------------- -struct SteamAPICallCompleted_t -{ - enum { k_iCallback = k_iSteamUtilsCallbacks + 3 }; - SteamAPICall_t m_hAsyncCall; - int m_iCallback; - uint32 m_cubParam; -}; - - -//----------------------------------------------------------------------------- -// called when Steam wants to shutdown -//----------------------------------------------------------------------------- -struct SteamShutdown_t -{ - enum { k_iCallback = k_iSteamUtilsCallbacks + 4 }; -}; - -//----------------------------------------------------------------------------- -// results for CheckFileSignature -//----------------------------------------------------------------------------- -enum ECheckFileSignature -{ - k_ECheckFileSignatureInvalidSignature = 0, - k_ECheckFileSignatureValidSignature = 1, - k_ECheckFileSignatureFileNotFound = 2, - k_ECheckFileSignatureNoSignaturesFoundForThisApp = 3, - k_ECheckFileSignatureNoSignaturesFoundForThisFile = 4, -}; - -//----------------------------------------------------------------------------- -// callback for CheckFileSignature -//----------------------------------------------------------------------------- -struct CheckFileSignature_t -{ - enum { k_iCallback = k_iSteamUtilsCallbacks + 5 }; - ECheckFileSignature m_eCheckFileSignature; -}; - - -// k_iSteamUtilsCallbacks + 13 is taken - - -//----------------------------------------------------------------------------- -// Big Picture gamepad text input has been closed -//----------------------------------------------------------------------------- -struct GamepadTextInputDismissed_t -{ - enum { k_iCallback = k_iSteamUtilsCallbacks + 14 }; - bool m_bSubmitted; // true if user entered & accepted text (Call ISteamUtils::GetEnteredGamepadTextInput() for text), false if canceled input - uint32 m_unSubmittedText; -}; - -// k_iSteamUtilsCallbacks + 15 is taken - -#pragma pack( pop ) - -#endif // ISTEAMUTILS_H +//====== Copyright � 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to utility functions in Steam +// +//============================================================================= + +#ifndef ISTEAMUTILS_H +#define ISTEAMUTILS_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + + +// Steam API call failure results +enum ESteamAPICallFailure +{ + k_ESteamAPICallFailureNone = -1, // no failure + k_ESteamAPICallFailureSteamGone = 0, // the local Steam process has gone away + k_ESteamAPICallFailureNetworkFailure = 1, // the network connection to Steam has been broken, or was already broken + // SteamServersDisconnected_t callback will be sent around the same time + // SteamServersConnected_t will be sent when the client is able to talk to the Steam servers again + k_ESteamAPICallFailureInvalidHandle = 2, // the SteamAPICall_t handle passed in no longer exists + k_ESteamAPICallFailureMismatchedCallback = 3,// GetAPICallResult() was called with the wrong callback type for this API call +}; + + +// Input modes for the Big Picture gamepad text entry +enum EGamepadTextInputMode +{ + k_EGamepadTextInputModeNormal = 0, + k_EGamepadTextInputModePassword = 1 +}; + + +// Controls number of allowed lines for the Big Picture gamepad text entry +enum EGamepadTextInputLineMode +{ + k_EGamepadTextInputLineModeSingleLine = 0, + k_EGamepadTextInputLineModeMultipleLines = 1 +}; + + +// The context where text filtering is being done +enum ETextFilteringContext +{ + k_ETextFilteringContextUnknown = 0, // Unknown context + k_ETextFilteringContextGameContent = 1, // Game content, only legally required filtering is performed + k_ETextFilteringContextChat = 2, // Chat from another player + k_ETextFilteringContextName = 3, // Character or item name +}; + + +// function prototype for warning message hook +#if defined( POSIX ) +#define __cdecl +#endif +extern "C" typedef void (__cdecl *SteamAPIWarningMessageHook_t)(int, const char *); + +//----------------------------------------------------------------------------- +// Purpose: interface to user independent utility functions +//----------------------------------------------------------------------------- +class ISteamUtils +{ +public: + // return the number of seconds since the user + virtual uint32 GetSecondsSinceAppActive() = 0; + virtual uint32 GetSecondsSinceComputerActive() = 0; + + // the universe this client is connecting to + virtual EUniverse GetConnectedUniverse() = 0; + + // Steam server time. Number of seconds since January 1, 1970, GMT (i.e unix time) + virtual uint32 GetServerRealTime() = 0; + + // returns the 2 digit ISO 3166-1-alpha-2 format country code this client is running in (as looked up via an IP-to-location database) + // e.g "US" or "UK". + virtual const char *GetIPCountry() = 0; + + // returns true if the image exists, and valid sizes were filled out + virtual bool GetImageSize( int iImage, uint32 *pnWidth, uint32 *pnHeight ) = 0; + + // returns true if the image exists, and the buffer was successfully filled out + // results are returned in RGBA format + // the destination buffer size should be 4 * height * width * sizeof(char) + virtual bool GetImageRGBA( int iImage, uint8 *pubDest, int nDestBufferSize ) = 0; + + // Deprecated. Do not call this. + STEAM_PRIVATE_API( virtual bool GetCSERIPPort( uint32 *unIP, uint16 *usPort ) = 0; ) + + // return the amount of battery power left in the current system in % [0..100], 255 for being on AC power + virtual uint8 GetCurrentBatteryPower() = 0; + + // returns the appID of the current process + virtual uint32 GetAppID() = 0; + + // Sets the position where the overlay instance for the currently calling game should show notifications. + // This position is per-game and if this function is called from outside of a game context it will do nothing. + virtual void SetOverlayNotificationPosition( ENotificationPosition eNotificationPosition ) = 0; + + // API asynchronous call results + // can be used directly, but more commonly used via the callback dispatch API (see steam_api.h) + virtual bool IsAPICallCompleted( SteamAPICall_t hSteamAPICall, bool *pbFailed ) = 0; + virtual ESteamAPICallFailure GetAPICallFailureReason( SteamAPICall_t hSteamAPICall ) = 0; + virtual bool GetAPICallResult( SteamAPICall_t hSteamAPICall, void *pCallback, int cubCallback, int iCallbackExpected, bool *pbFailed ) = 0; + + // Deprecated. Applications should use SteamAPI_RunCallbacks() instead. Game servers do not need to call this function. + STEAM_PRIVATE_API( virtual void RunFrame() = 0; ) + + // returns the number of IPC calls made since the last time this function was called + // Used for perf debugging so you can understand how many IPC calls your game makes per frame + // Every IPC call is at minimum a thread context switch if not a process one so you want to rate + // control how often you do them. + virtual uint32 GetIPCCallCount() = 0; + + // API warning handling + // 'int' is the severity; 0 for msg, 1 for warning + // 'const char *' is the text of the message + // callbacks will occur directly after the API function is called that generated the warning or message + virtual void SetWarningMessageHook( SteamAPIWarningMessageHook_t pFunction ) = 0; + + // Returns true if the overlay is running & the user can access it. The overlay process could take a few seconds to + // start & hook the game process, so this function will initially return false while the overlay is loading. + virtual bool IsOverlayEnabled() = 0; + + // Normally this call is unneeded if your game has a constantly running frame loop that calls the + // D3D Present API, or OGL SwapBuffers API every frame. + // + // However, if you have a game that only refreshes the screen on an event driven basis then that can break + // the overlay, as it uses your Present/SwapBuffers calls to drive it's internal frame loop and it may also + // need to Present() to the screen any time an even needing a notification happens or when the overlay is + // brought up over the game by a user. You can use this API to ask the overlay if it currently need a present + // in that case, and then you can check for this periodically (roughly 33hz is desirable) and make sure you + // refresh the screen with Present or SwapBuffers to allow the overlay to do it's work. + virtual bool BOverlayNeedsPresent() = 0; + + // Asynchronous call to check if an executable file has been signed using the public key set on the signing tab + // of the partner site, for example to refuse to load modified executable files. + // The result is returned in CheckFileSignature_t. + // k_ECheckFileSignatureNoSignaturesFoundForThisApp - This app has not been configured on the signing tab of the partner site to enable this function. + // k_ECheckFileSignatureNoSignaturesFoundForThisFile - This file is not listed on the signing tab for the partner site. + // k_ECheckFileSignatureFileNotFound - The file does not exist on disk. + // k_ECheckFileSignatureInvalidSignature - The file exists, and the signing tab has been set for this file, but the file is either not signed or the signature does not match. + // k_ECheckFileSignatureValidSignature - The file is signed and the signature is valid. + STEAM_CALL_RESULT( CheckFileSignature_t ) + virtual SteamAPICall_t CheckFileSignature( const char *szFileName ) = 0; + + // Activates the Big Picture text input dialog which only supports gamepad input + virtual bool ShowGamepadTextInput( EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, const char *pchDescription, uint32 unCharMax, const char *pchExistingText ) = 0; + + // Returns previously entered text & length + virtual uint32 GetEnteredGamepadTextLength() = 0; + virtual bool GetEnteredGamepadTextInput( char *pchText, uint32 cchText ) = 0; + + // returns the language the steam client is running in, you probably want ISteamApps::GetCurrentGameLanguage instead, this is for very special usage cases + virtual const char *GetSteamUILanguage() = 0; + + // returns true if Steam itself is running in VR mode + virtual bool IsSteamRunningInVR() = 0; + + // Sets the inset of the overlay notification from the corner specified by SetOverlayNotificationPosition. + virtual void SetOverlayNotificationInset( int nHorizontalInset, int nVerticalInset ) = 0; + + // returns true if Steam & the Steam Overlay are running in Big Picture mode + // Games much be launched through the Steam client to enable the Big Picture overlay. During development, + // a game can be added as a non-steam game to the developers library to test this feature + virtual bool IsSteamInBigPictureMode() = 0; + + // ask SteamUI to create and render its OpenVR dashboard + virtual void StartVRDashboard() = 0; + + // Returns true if the HMD content will be streamed via Steam Remote Play + virtual bool IsVRHeadsetStreamingEnabled() = 0; + + // Set whether the HMD content will be streamed via Steam Remote Play + // If this is set to true, then the scene in the HMD headset will be streamed, and remote input will not be allowed. + // If this is set to false, then the application window will be streamed instead, and remote input will be allowed. + // The default is true unless "VRHeadsetStreaming" "0" is in the extended appinfo for a game. + // (this is useful for games that have asymmetric multiplayer gameplay) + virtual void SetVRHeadsetStreamingEnabled( bool bEnabled ) = 0; + + // Returns whether this steam client is a Steam China specific client, vs the global client. + virtual bool IsSteamChinaLauncher() = 0; + + // Initializes text filtering, loading dictionaries for the language the game is running in. + // unFilterOptions are reserved for future use and should be set to 0 + // Returns false if filtering is unavailable for the game's language, in which case FilterText() will act as a passthrough. + // + // Users can customize the text filter behavior in their Steam Account preferences: + // https://store.steampowered.com/account/preferences#CommunityContentPreferences + virtual bool InitFilterText( uint32 unFilterOptions = 0 ) = 0; + + // Filters the provided input message and places the filtered result into pchOutFilteredText, using legally required filtering and additional filtering based on the context and user settings + // eContext is the type of content in the input string + // sourceSteamID is the Steam ID that is the source of the input string (e.g. the player with the name, or who said the chat text) + // pchInputText is the input string that should be filtered, which can be ASCII or UTF-8 + // pchOutFilteredText is where the output will be placed, even if no filtering is performed + // nByteSizeOutFilteredText is the size (in bytes) of pchOutFilteredText, should be at least strlen(pchInputText)+1 + // Returns the number of characters (not bytes) filtered + virtual int FilterText( ETextFilteringContext eContext, CSteamID sourceSteamID, const char *pchInputMessage, char *pchOutFilteredText, uint32 nByteSizeOutFilteredText ) = 0; + + // Return what we believe your current ipv6 connectivity to "the internet" is on the specified protocol. + // This does NOT tell you if the Steam client is currently connected to Steam via ipv6. + virtual ESteamIPv6ConnectivityState GetIPv6ConnectivityState( ESteamIPv6ConnectivityProtocol eProtocol ) = 0; +}; + +#define STEAMUTILS_INTERFACE_VERSION "SteamUtils010" + +// Global interface accessor +inline ISteamUtils *SteamUtils(); +STEAM_DEFINE_INTERFACE_ACCESSOR( ISteamUtils *, SteamUtils, SteamInternal_FindOrCreateUserInterface( 0, STEAMUTILS_INTERFACE_VERSION ), "user", STEAMUTILS_INTERFACE_VERSION ); + +// Global accessor for the gameserver client +inline ISteamUtils *SteamGameServerUtils(); +STEAM_DEFINE_INTERFACE_ACCESSOR( ISteamUtils *, SteamGameServerUtils, SteamInternal_FindOrCreateGameServerInterface( 0, STEAMUTILS_INTERFACE_VERSION ), "gameserver", STEAMUTILS_INTERFACE_VERSION ); + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + +//----------------------------------------------------------------------------- +// Purpose: The country of the user changed +//----------------------------------------------------------------------------- +struct IPCountry_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 1 }; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Fired when running on a laptop and less than 10 minutes of battery is left, fires then every minute +//----------------------------------------------------------------------------- +struct LowBatteryPower_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 2 }; + uint8 m_nMinutesBatteryLeft; +}; + + +//----------------------------------------------------------------------------- +// Purpose: called when a SteamAsyncCall_t has completed (or failed) +//----------------------------------------------------------------------------- +struct SteamAPICallCompleted_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 3 }; + SteamAPICall_t m_hAsyncCall; + int m_iCallback; + uint32 m_cubParam; +}; + + +//----------------------------------------------------------------------------- +// called when Steam wants to shutdown +//----------------------------------------------------------------------------- +struct SteamShutdown_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 4 }; +}; + +//----------------------------------------------------------------------------- +// results for CheckFileSignature +//----------------------------------------------------------------------------- +enum ECheckFileSignature +{ + k_ECheckFileSignatureInvalidSignature = 0, + k_ECheckFileSignatureValidSignature = 1, + k_ECheckFileSignatureFileNotFound = 2, + k_ECheckFileSignatureNoSignaturesFoundForThisApp = 3, + k_ECheckFileSignatureNoSignaturesFoundForThisFile = 4, +}; + +//----------------------------------------------------------------------------- +// callback for CheckFileSignature +//----------------------------------------------------------------------------- +struct CheckFileSignature_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 5 }; + ECheckFileSignature m_eCheckFileSignature; +}; + + +// k_iSteamUtilsCallbacks + 13 is taken + + +//----------------------------------------------------------------------------- +// Big Picture gamepad text input has been closed +//----------------------------------------------------------------------------- +struct GamepadTextInputDismissed_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 14 }; + bool m_bSubmitted; // true if user entered & accepted text (Call ISteamUtils::GetEnteredGamepadTextInput() for text), false if canceled input + uint32 m_unSubmittedText; +}; + +// k_iSteamUtilsCallbacks + 15 is taken + +#pragma pack( pop ) + +#endif // ISTEAMUTILS_H diff --git a/CodeGen/steam/isteamvideo.h b/CodeGen/steam/isteamvideo.h index acb262ed..3dbe987b 100644 --- a/CodeGen/steam/isteamvideo.h +++ b/CodeGen/steam/isteamvideo.h @@ -1,68 +1,68 @@ -//====== Copyright © 1996-2014 Valve Corporation, All rights reserved. ======= -// -// Purpose: interface to Steam Video -// -//============================================================================= - -#ifndef ISTEAMVIDEO_H -#define ISTEAMVIDEO_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - - - - -//----------------------------------------------------------------------------- -// Purpose: Steam Video API -//----------------------------------------------------------------------------- -class ISteamVideo -{ -public: - - // Get a URL suitable for streaming the given Video app ID's video - virtual void GetVideoURL( AppId_t unVideoAppID ) = 0; - - // returns true if user is uploading a live broadcast - virtual bool IsBroadcasting( int *pnNumViewers ) = 0; - - // Get the OPF Details for 360 Video Playback - STEAM_CALL_BACK( GetOPFSettingsResult_t ) - virtual void GetOPFSettings( AppId_t unVideoAppID ) = 0; - virtual bool GetOPFStringForApp( AppId_t unVideoAppID, char *pchBuffer, int32 *pnBufferSize ) = 0; -}; - -#define STEAMVIDEO_INTERFACE_VERSION "STEAMVIDEO_INTERFACE_V002" - -// Global interface accessor -inline ISteamVideo *SteamVideo(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamVideo *, SteamVideo, STEAMVIDEO_INTERFACE_VERSION ); - -STEAM_CALLBACK_BEGIN( GetVideoURLResult_t, k_iClientVideoCallbacks + 11 ) - STEAM_CALLBACK_MEMBER( 0, EResult, m_eResult ) - STEAM_CALLBACK_MEMBER( 1, AppId_t, m_unVideoAppID ) - STEAM_CALLBACK_MEMBER( 2, char, m_rgchURL[256] ) -STEAM_CALLBACK_END(3) - - -STEAM_CALLBACK_BEGIN( GetOPFSettingsResult_t, k_iClientVideoCallbacks + 24 ) - STEAM_CALLBACK_MEMBER( 0, EResult, m_eResult ) - STEAM_CALLBACK_MEMBER( 1, AppId_t, m_unVideoAppID ) -STEAM_CALLBACK_END(2) - - -#pragma pack( pop ) - - -#endif // ISTEAMVIDEO_H +//====== Copyright © 1996-2014 Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to Steam Video +// +//============================================================================= + +#ifndef ISTEAMVIDEO_H +#define ISTEAMVIDEO_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + + + + +//----------------------------------------------------------------------------- +// Purpose: Steam Video API +//----------------------------------------------------------------------------- +class ISteamVideo +{ +public: + + // Get a URL suitable for streaming the given Video app ID's video + virtual void GetVideoURL( AppId_t unVideoAppID ) = 0; + + // returns true if user is uploading a live broadcast + virtual bool IsBroadcasting( int *pnNumViewers ) = 0; + + // Get the OPF Details for 360 Video Playback + STEAM_CALL_BACK( GetOPFSettingsResult_t ) + virtual void GetOPFSettings( AppId_t unVideoAppID ) = 0; + virtual bool GetOPFStringForApp( AppId_t unVideoAppID, char *pchBuffer, int32 *pnBufferSize ) = 0; +}; + +#define STEAMVIDEO_INTERFACE_VERSION "STEAMVIDEO_INTERFACE_V002" + +// Global interface accessor +inline ISteamVideo *SteamVideo(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamVideo *, SteamVideo, STEAMVIDEO_INTERFACE_VERSION ); + +STEAM_CALLBACK_BEGIN( GetVideoURLResult_t, k_iClientVideoCallbacks + 11 ) + STEAM_CALLBACK_MEMBER( 0, EResult, m_eResult ) + STEAM_CALLBACK_MEMBER( 1, AppId_t, m_unVideoAppID ) + STEAM_CALLBACK_MEMBER( 2, char, m_rgchURL[256] ) +STEAM_CALLBACK_END(3) + + +STEAM_CALLBACK_BEGIN( GetOPFSettingsResult_t, k_iClientVideoCallbacks + 24 ) + STEAM_CALLBACK_MEMBER( 0, EResult, m_eResult ) + STEAM_CALLBACK_MEMBER( 1, AppId_t, m_unVideoAppID ) +STEAM_CALLBACK_END(2) + + +#pragma pack( pop ) + + +#endif // ISTEAMVIDEO_H diff --git a/CodeGen/steam/matchmakingtypes.h b/CodeGen/steam/matchmakingtypes.h index 6446a573..0ae70c7c 100644 --- a/CodeGen/steam/matchmakingtypes.h +++ b/CodeGen/steam/matchmakingtypes.h @@ -1,251 +1,251 @@ -//========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ -// -// Purpose: -// -// $NoKeywords: $ -//============================================================================= - -#ifndef MATCHMAKINGTYPES_H -#define MATCHMAKINGTYPES_H - -#ifdef _WIN32 -#pragma once -#endif - -#ifdef POSIX -#ifndef _snprintf -#define _snprintf snprintf -#endif -#endif - -#include -#include - -// -// Max size (in bytes of UTF-8 data, not in characters) of server fields, including null terminator. -// WARNING: These cannot be changed easily, without breaking clients using old interfaces. -// -const int k_cbMaxGameServerGameDir = 32; -const int k_cbMaxGameServerMapName = 32; -const int k_cbMaxGameServerGameDescription = 64; -const int k_cbMaxGameServerName = 64; -const int k_cbMaxGameServerTags = 128; -const int k_cbMaxGameServerGameData = 2048; - -/// Store key/value pair used in matchmaking queries. -/// -/// Actually, the name Key/Value is a bit misleading. The "key" is better -/// understood as "filter operation code" and the "value" is the operand to this -/// filter operation. The meaning of the operand depends upon the filter. -struct MatchMakingKeyValuePair_t -{ - MatchMakingKeyValuePair_t() { m_szKey[0] = m_szValue[0] = 0; } - MatchMakingKeyValuePair_t( const char *pchKey, const char *pchValue ) - { - strncpy( m_szKey, pchKey, sizeof(m_szKey) ); // this is a public header, use basic c library string funcs only! - m_szKey[ sizeof( m_szKey ) - 1 ] = '\0'; - strncpy( m_szValue, pchValue, sizeof(m_szValue) ); - m_szValue[ sizeof( m_szValue ) - 1 ] = '\0'; - } - char m_szKey[ 256 ]; - char m_szValue[ 256 ]; -}; - - -enum EMatchMakingServerResponse -{ - eServerResponded = 0, - eServerFailedToRespond, - eNoServersListedOnMasterServer // for the Internet query type, returned in response callback if no servers of this type match -}; - -// servernetadr_t is all the addressing info the serverbrowser needs to know about a game server, -// namely: its IP, its connection port, and its query port. -class servernetadr_t -{ -public: - - servernetadr_t() : m_usConnectionPort( 0 ), m_usQueryPort( 0 ), m_unIP( 0 ) {} - - void Init( unsigned int ip, uint16 usQueryPort, uint16 usConnectionPort ); -#ifdef NETADR_H - netadr_t GetIPAndQueryPort(); -#endif - - // Access the query port. - uint16 GetQueryPort() const; - void SetQueryPort( uint16 usPort ); - - // Access the connection port. - uint16 GetConnectionPort() const; - void SetConnectionPort( uint16 usPort ); - - // Access the IP - uint32 GetIP() const; - void SetIP( uint32 unIP ); - - // This gets the 'a.b.c.d:port' string with the connection port (instead of the query port). - const char *GetConnectionAddressString() const; - const char *GetQueryAddressString() const; - - // Comparison operators and functions. - bool operator<(const servernetadr_t &netadr) const; - void operator=( const servernetadr_t &that ) - { - m_usConnectionPort = that.m_usConnectionPort; - m_usQueryPort = that.m_usQueryPort; - m_unIP = that.m_unIP; - } - - -private: - const char *ToString( uint32 unIP, uint16 usPort ) const; - uint16 m_usConnectionPort; // (in HOST byte order) - uint16 m_usQueryPort; - uint32 m_unIP; -}; - - -inline void servernetadr_t::Init( unsigned int ip, uint16 usQueryPort, uint16 usConnectionPort ) -{ - m_unIP = ip; - m_usQueryPort = usQueryPort; - m_usConnectionPort = usConnectionPort; -} - -#ifdef NETADR_H -inline netadr_t servernetadr_t::GetIPAndQueryPort() -{ - return netadr_t( m_unIP, m_usQueryPort ); -} -#endif - -inline uint16 servernetadr_t::GetQueryPort() const -{ - return m_usQueryPort; -} - -inline void servernetadr_t::SetQueryPort( uint16 usPort ) -{ - m_usQueryPort = usPort; -} - -inline uint16 servernetadr_t::GetConnectionPort() const -{ - return m_usConnectionPort; -} - -inline void servernetadr_t::SetConnectionPort( uint16 usPort ) -{ - m_usConnectionPort = usPort; -} - -inline uint32 servernetadr_t::GetIP() const -{ - return m_unIP; -} - -inline void servernetadr_t::SetIP( uint32 unIP ) -{ - m_unIP = unIP; -} - -inline const char *servernetadr_t::ToString( uint32 unIP, uint16 usPort ) const -{ - static char s[4][64]; - static int nBuf = 0; - unsigned char *ipByte = (unsigned char *)&unIP; -#ifdef VALVE_BIG_ENDIAN - _snprintf (s[nBuf], sizeof( s[nBuf] ), "%u.%u.%u.%u:%i", (int)(ipByte[0]), (int)(ipByte[1]), (int)(ipByte[2]), (int)(ipByte[3]), usPort ); -#else - _snprintf (s[nBuf], sizeof( s[nBuf] ), "%u.%u.%u.%u:%i", (int)(ipByte[3]), (int)(ipByte[2]), (int)(ipByte[1]), (int)(ipByte[0]), usPort ); -#endif - const char *pchRet = s[nBuf]; - ++nBuf; - nBuf %= ( (sizeof(s)/sizeof(s[0])) ); - return pchRet; -} - -inline const char* servernetadr_t::GetConnectionAddressString() const -{ - return ToString( m_unIP, m_usConnectionPort ); -} - -inline const char* servernetadr_t::GetQueryAddressString() const -{ - return ToString( m_unIP, m_usQueryPort ); -} - -inline bool servernetadr_t::operator<(const servernetadr_t &netadr) const -{ - return ( m_unIP < netadr.m_unIP ) || ( m_unIP == netadr.m_unIP && m_usQueryPort < netadr.m_usQueryPort ); -} - -//----------------------------------------------------------------------------- -// Purpose: Data describing a single server -//----------------------------------------------------------------------------- -class gameserveritem_t -{ -public: - gameserveritem_t(); - - const char* GetName() const; - void SetName( const char *pName ); - -public: - servernetadr_t m_NetAdr; ///< IP/Query Port/Connection Port for this server - int m_nPing; ///< current ping time in milliseconds - bool m_bHadSuccessfulResponse; ///< server has responded successfully in the past - bool m_bDoNotRefresh; ///< server is marked as not responding and should no longer be refreshed - char m_szGameDir[k_cbMaxGameServerGameDir]; ///< current game directory - char m_szMap[k_cbMaxGameServerMapName]; ///< current map - char m_szGameDescription[k_cbMaxGameServerGameDescription]; ///< game description - uint32 m_nAppID; ///< Steam App ID of this server - int m_nPlayers; ///< total number of players currently on the server. INCLUDES BOTS!! - int m_nMaxPlayers; ///< Maximum players that can join this server - int m_nBotPlayers; ///< Number of bots (i.e simulated players) on this server - bool m_bPassword; ///< true if this server needs a password to join - bool m_bSecure; ///< Is this server protected by VAC - uint32 m_ulTimeLastPlayed; ///< time (in unix time) when this server was last played on (for favorite/history servers) - int m_nServerVersion; ///< server version as reported to Steam - -private: - - /// Game server name - char m_szServerName[k_cbMaxGameServerName]; - - // For data added after SteamMatchMaking001 add it here -public: - /// the tags this server exposes - char m_szGameTags[k_cbMaxGameServerTags]; - - /// steamID of the game server - invalid if it's doesn't have one (old server, or not connected to Steam) - CSteamID m_steamID; -}; - - -inline gameserveritem_t::gameserveritem_t() -{ - m_szGameDir[0] = m_szMap[0] = m_szGameDescription[0] = m_szServerName[0] = 0; - m_bHadSuccessfulResponse = m_bDoNotRefresh = m_bPassword = m_bSecure = false; - m_nPing = m_nAppID = m_nPlayers = m_nMaxPlayers = m_nBotPlayers = m_ulTimeLastPlayed = m_nServerVersion = 0; - m_szGameTags[0] = 0; -} - -inline const char* gameserveritem_t::GetName() const -{ - // Use the IP address as the name if nothing is set yet. - if ( m_szServerName[0] == 0 ) - return m_NetAdr.GetConnectionAddressString(); - else - return m_szServerName; -} - -inline void gameserveritem_t::SetName( const char *pName ) -{ - strncpy( m_szServerName, pName, sizeof( m_szServerName ) ); - m_szServerName[ sizeof( m_szServerName ) - 1 ] = '\0'; -} - - -#endif // MATCHMAKINGTYPES_H +//========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +// $NoKeywords: $ +//============================================================================= + +#ifndef MATCHMAKINGTYPES_H +#define MATCHMAKINGTYPES_H + +#ifdef _WIN32 +#pragma once +#endif + +#ifdef POSIX +#ifndef _snprintf +#define _snprintf snprintf +#endif +#endif + +#include +#include + +// +// Max size (in bytes of UTF-8 data, not in characters) of server fields, including null terminator. +// WARNING: These cannot be changed easily, without breaking clients using old interfaces. +// +const int k_cbMaxGameServerGameDir = 32; +const int k_cbMaxGameServerMapName = 32; +const int k_cbMaxGameServerGameDescription = 64; +const int k_cbMaxGameServerName = 64; +const int k_cbMaxGameServerTags = 128; +const int k_cbMaxGameServerGameData = 2048; + +/// Store key/value pair used in matchmaking queries. +/// +/// Actually, the name Key/Value is a bit misleading. The "key" is better +/// understood as "filter operation code" and the "value" is the operand to this +/// filter operation. The meaning of the operand depends upon the filter. +struct MatchMakingKeyValuePair_t +{ + MatchMakingKeyValuePair_t() { m_szKey[0] = m_szValue[0] = 0; } + MatchMakingKeyValuePair_t( const char *pchKey, const char *pchValue ) + { + strncpy( m_szKey, pchKey, sizeof(m_szKey) ); // this is a public header, use basic c library string funcs only! + m_szKey[ sizeof( m_szKey ) - 1 ] = '\0'; + strncpy( m_szValue, pchValue, sizeof(m_szValue) ); + m_szValue[ sizeof( m_szValue ) - 1 ] = '\0'; + } + char m_szKey[ 256 ]; + char m_szValue[ 256 ]; +}; + + +enum EMatchMakingServerResponse +{ + eServerResponded = 0, + eServerFailedToRespond, + eNoServersListedOnMasterServer // for the Internet query type, returned in response callback if no servers of this type match +}; + +// servernetadr_t is all the addressing info the serverbrowser needs to know about a game server, +// namely: its IP, its connection port, and its query port. +class servernetadr_t +{ +public: + + servernetadr_t() : m_usConnectionPort( 0 ), m_usQueryPort( 0 ), m_unIP( 0 ) {} + + void Init( unsigned int ip, uint16 usQueryPort, uint16 usConnectionPort ); +#ifdef NETADR_H + netadr_t GetIPAndQueryPort(); +#endif + + // Access the query port. + uint16 GetQueryPort() const; + void SetQueryPort( uint16 usPort ); + + // Access the connection port. + uint16 GetConnectionPort() const; + void SetConnectionPort( uint16 usPort ); + + // Access the IP + uint32 GetIP() const; + void SetIP( uint32 unIP ); + + // This gets the 'a.b.c.d:port' string with the connection port (instead of the query port). + const char *GetConnectionAddressString() const; + const char *GetQueryAddressString() const; + + // Comparison operators and functions. + bool operator<(const servernetadr_t &netadr) const; + void operator=( const servernetadr_t &that ) + { + m_usConnectionPort = that.m_usConnectionPort; + m_usQueryPort = that.m_usQueryPort; + m_unIP = that.m_unIP; + } + + +private: + const char *ToString( uint32 unIP, uint16 usPort ) const; + uint16 m_usConnectionPort; // (in HOST byte order) + uint16 m_usQueryPort; + uint32 m_unIP; +}; + + +inline void servernetadr_t::Init( unsigned int ip, uint16 usQueryPort, uint16 usConnectionPort ) +{ + m_unIP = ip; + m_usQueryPort = usQueryPort; + m_usConnectionPort = usConnectionPort; +} + +#ifdef NETADR_H +inline netadr_t servernetadr_t::GetIPAndQueryPort() +{ + return netadr_t( m_unIP, m_usQueryPort ); +} +#endif + +inline uint16 servernetadr_t::GetQueryPort() const +{ + return m_usQueryPort; +} + +inline void servernetadr_t::SetQueryPort( uint16 usPort ) +{ + m_usQueryPort = usPort; +} + +inline uint16 servernetadr_t::GetConnectionPort() const +{ + return m_usConnectionPort; +} + +inline void servernetadr_t::SetConnectionPort( uint16 usPort ) +{ + m_usConnectionPort = usPort; +} + +inline uint32 servernetadr_t::GetIP() const +{ + return m_unIP; +} + +inline void servernetadr_t::SetIP( uint32 unIP ) +{ + m_unIP = unIP; +} + +inline const char *servernetadr_t::ToString( uint32 unIP, uint16 usPort ) const +{ + static char s[4][64]; + static int nBuf = 0; + unsigned char *ipByte = (unsigned char *)&unIP; +#ifdef VALVE_BIG_ENDIAN + _snprintf (s[nBuf], sizeof( s[nBuf] ), "%u.%u.%u.%u:%i", (int)(ipByte[0]), (int)(ipByte[1]), (int)(ipByte[2]), (int)(ipByte[3]), usPort ); +#else + _snprintf (s[nBuf], sizeof( s[nBuf] ), "%u.%u.%u.%u:%i", (int)(ipByte[3]), (int)(ipByte[2]), (int)(ipByte[1]), (int)(ipByte[0]), usPort ); +#endif + const char *pchRet = s[nBuf]; + ++nBuf; + nBuf %= ( (sizeof(s)/sizeof(s[0])) ); + return pchRet; +} + +inline const char* servernetadr_t::GetConnectionAddressString() const +{ + return ToString( m_unIP, m_usConnectionPort ); +} + +inline const char* servernetadr_t::GetQueryAddressString() const +{ + return ToString( m_unIP, m_usQueryPort ); +} + +inline bool servernetadr_t::operator<(const servernetadr_t &netadr) const +{ + return ( m_unIP < netadr.m_unIP ) || ( m_unIP == netadr.m_unIP && m_usQueryPort < netadr.m_usQueryPort ); +} + +//----------------------------------------------------------------------------- +// Purpose: Data describing a single server +//----------------------------------------------------------------------------- +class gameserveritem_t +{ +public: + gameserveritem_t(); + + const char* GetName() const; + void SetName( const char *pName ); + +public: + servernetadr_t m_NetAdr; ///< IP/Query Port/Connection Port for this server + int m_nPing; ///< current ping time in milliseconds + bool m_bHadSuccessfulResponse; ///< server has responded successfully in the past + bool m_bDoNotRefresh; ///< server is marked as not responding and should no longer be refreshed + char m_szGameDir[k_cbMaxGameServerGameDir]; ///< current game directory + char m_szMap[k_cbMaxGameServerMapName]; ///< current map + char m_szGameDescription[k_cbMaxGameServerGameDescription]; ///< game description + uint32 m_nAppID; ///< Steam App ID of this server + int m_nPlayers; ///< total number of players currently on the server. INCLUDES BOTS!! + int m_nMaxPlayers; ///< Maximum players that can join this server + int m_nBotPlayers; ///< Number of bots (i.e simulated players) on this server + bool m_bPassword; ///< true if this server needs a password to join + bool m_bSecure; ///< Is this server protected by VAC + uint32 m_ulTimeLastPlayed; ///< time (in unix time) when this server was last played on (for favorite/history servers) + int m_nServerVersion; ///< server version as reported to Steam + +private: + + /// Game server name + char m_szServerName[k_cbMaxGameServerName]; + + // For data added after SteamMatchMaking001 add it here +public: + /// the tags this server exposes + char m_szGameTags[k_cbMaxGameServerTags]; + + /// steamID of the game server - invalid if it's doesn't have one (old server, or not connected to Steam) + CSteamID m_steamID; +}; + + +inline gameserveritem_t::gameserveritem_t() +{ + m_szGameDir[0] = m_szMap[0] = m_szGameDescription[0] = m_szServerName[0] = 0; + m_bHadSuccessfulResponse = m_bDoNotRefresh = m_bPassword = m_bSecure = false; + m_nPing = m_nAppID = m_nPlayers = m_nMaxPlayers = m_nBotPlayers = m_ulTimeLastPlayed = m_nServerVersion = 0; + m_szGameTags[0] = 0; +} + +inline const char* gameserveritem_t::GetName() const +{ + // Use the IP address as the name if nothing is set yet. + if ( m_szServerName[0] == 0 ) + return m_NetAdr.GetConnectionAddressString(); + else + return m_szServerName; +} + +inline void gameserveritem_t::SetName( const char *pName ) +{ + strncpy( m_szServerName, pName, sizeof( m_szServerName ) ); + m_szServerName[ sizeof( m_szServerName ) - 1 ] = '\0'; +} + + +#endif // MATCHMAKINGTYPES_H diff --git a/CodeGen/steam/steam_api.h b/CodeGen/steam/steam_api.h index 9cac78f1..494f1dd1 100644 --- a/CodeGen/steam/steam_api.h +++ b/CodeGen/steam/steam_api.h @@ -1,297 +1,297 @@ -//====== Copyright Valve Corporation, All rights reserved. ==================== -// -// This header includes *all* of the interfaces and callback structures -// in the Steamworks SDK, and some high level functions to control the SDK -// (init, shutdown, etc) that you probably only need in one or two files. -// -// To save your compile times, we recommend that you not include this file -// in header files. Instead, include the specific headers for the interfaces -// and callback structures you need. The one file you might consider including -// in your precompiled header (e.g. stdafx.h) is steam_api_common.h -// -//============================================================================= - -#ifndef STEAM_API_H -#define STEAM_API_H -#ifdef _WIN32 -#pragma once -#endif - -// Basic stuff -#include "steam_api_common.h" - -// All of the interfaces -#include "isteamclient.h" -#include "isteamuser.h" -#include "isteamfriends.h" -#include "isteamutils.h" -#include "isteammatchmaking.h" -#include "isteamuserstats.h" -#include "isteamapps.h" -#include "isteamnetworking.h" -#include "isteamremotestorage.h" -#include "isteamscreenshots.h" -#include "isteammusic.h" -#include "isteammusicremote.h" -#include "isteamhttp.h" -#include "isteamcontroller.h" -#include "isteamugc.h" -#include "isteamapplist.h" -#include "isteamhtmlsurface.h" -#include "isteaminventory.h" -#include "isteamvideo.h" -#include "isteamparentalsettings.h" -#include "isteaminput.h" -#include "isteamremoteplay.h" -#include "isteamnetworkingmessages.h" -#include "isteamnetworkingsockets.h" -#include "isteamnetworkingutils.h" - - -//----------------------------------------------------------------------------------------------------------------------------------------------------------// -// Steam API setup & shutdown -// -// These functions manage loading, initializing and shutdown of the steamclient.dll -// -//----------------------------------------------------------------------------------------------------------------------------------------------------------// - - -// SteamAPI_Init must be called before using any other API functions. If it fails, an -// error message will be output to the debugger (or stderr) with further information. -S_API bool S_CALLTYPE SteamAPI_Init(); - -// SteamAPI_Shutdown should be called during process shutdown if possible. -S_API void S_CALLTYPE SteamAPI_Shutdown(); - -// SteamAPI_RestartAppIfNecessary ensures that your executable was launched through Steam. -// -// Returns true if the current process should terminate. Steam is now re-launching your application. -// -// Returns false if no action needs to be taken. This means that your executable was started through -// the Steam client, or a steam_appid.txt file is present in your game's directory (for development). -// Your current process should continue if false is returned. -// -// NOTE: If you use the Steam DRM wrapper on your primary executable file, this check is unnecessary -// since the DRM wrapper will ensure that your application was launched properly through Steam. -S_API bool S_CALLTYPE SteamAPI_RestartAppIfNecessary( uint32 unOwnAppID ); - -// Many Steam API functions allocate a small amount of thread-local memory for parameter storage. -// SteamAPI_ReleaseCurrentThreadMemory() will free API memory associated with the calling thread. -// This function is also called automatically by SteamAPI_RunCallbacks(), so a single-threaded -// program never needs to explicitly call this function. -S_API void S_CALLTYPE SteamAPI_ReleaseCurrentThreadMemory(); - - -// crash dump recording functions -S_API void S_CALLTYPE SteamAPI_WriteMiniDump( uint32 uStructuredExceptionCode, void* pvExceptionInfo, uint32 uBuildID ); -S_API void S_CALLTYPE SteamAPI_SetMiniDumpComment( const char *pchMsg ); - -//----------------------------------------------------------------------------------------------------------------------------------------------------------// -// steamclient.dll private wrapper functions -// -// The following functions are part of abstracting API access to the steamclient.dll, but should only be used in very specific cases -//----------------------------------------------------------------------------------------------------------------------------------------------------------// - -// SteamAPI_IsSteamRunning() returns true if Steam is currently running -S_API bool S_CALLTYPE SteamAPI_IsSteamRunning(); - -// returns the filename path of the current running Steam process, used if you need to load an explicit steam dll by name. -// DEPRECATED - implementation is Windows only, and the path returned is a UTF-8 string which must be converted to UTF-16 for use with Win32 APIs -S_API const char *SteamAPI_GetSteamInstallPath(); - -// sets whether or not Steam_RunCallbacks() should do a try {} catch (...) {} around calls to issuing callbacks -// This is ignored if you are using the manual callback dispatch method -S_API void SteamAPI_SetTryCatchCallbacks( bool bTryCatchCallbacks ); - -#if defined( VERSION_SAFE_STEAM_API_INTERFACES ) -// exists only for backwards compat with code written against older SDKs -S_API bool S_CALLTYPE SteamAPI_InitSafe(); -#endif - -#if defined(USE_BREAKPAD_HANDLER) || defined(STEAM_API_EXPORTS) -// this should be called before the game initialized the steam APIs -// pchDate should be of the format "Mmm dd yyyy" (such as from the __ DATE __ macro ) -// pchTime should be of the format "hh:mm:ss" (such as from the __ TIME __ macro ) -// bFullMemoryDumps (Win32 only) -- writes out a uuid-full.dmp in the client/dumps folder -// pvContext-- can be NULL, will be the void * context passed into m_pfnPreMinidumpCallback -// PFNPreMinidumpCallback m_pfnPreMinidumpCallback -- optional callback which occurs just before a .dmp file is written during a crash. Applications can hook this to allow adding additional information into the .dmp comment stream. -S_API void S_CALLTYPE SteamAPI_UseBreakpadCrashHandler( char const *pchVersion, char const *pchDate, char const *pchTime, bool bFullMemoryDumps, void *pvContext, PFNPreMinidumpCallback m_pfnPreMinidumpCallback ); -S_API void S_CALLTYPE SteamAPI_SetBreakpadAppID( uint32 unAppID ); -#endif - -//----------------------------------------------------------------------------------------------------------------------------------------------------------// -// -// Manual callback loop -// -// An alternative method for dispatching callbacks. Similar to a windows message loop. -// -// If you use the manual callback dispatch, you must NOT use: -// -// - SteamAPI_RunCallbacks or SteamGameServer_RunCallbacks -// - STEAM_CALLBACK, CCallResult, CCallback, or CCallbackManual -// -// Here is the basic template for replacing SteamAPI_RunCallbacks() with manual dispatch -/* - - HSteamPipe hSteamPipe = SteamAPI_GetHSteamPipe(); // See also SteamGameServer_GetHSteamPipe() - SteamAPI_ManualDispatch_RunFrame( hSteamPipe ) - CallbackMsg_t callback; - while ( SteamAPI_ManualDispatch_GetNextCallback( hSteamPipe, &callback ) ) - { - // Check for dispatching API call results - if ( callback.m_iCallback == SteamAPICallCompleted_t::k_iCallback ) - { - SteamAPICallCompleted_t *pCallCompleted = (SteamAPICallCompleted_t *)callback. - void *pTmpCallResult = malloc( pCallback->m_cubParam ); - bool bFailed; - if ( SteamAPI_ManualDispatch_GetAPICallResult( hSteamPipe, pCallCompleted->m_hAsyncCall, pTmpCallResult, pCallback->m_cubParam, pCallback->m_iCallback, &bFailed ) ) - { - // Dispatch the call result to the registered handler(s) for the - // call identified by pCallCompleted->m_hAsyncCall - } - free( pTmpCallResult ); - } - else - { - // Look at callback.m_iCallback to see what kind of callback it is, - // and dispatch to appropriate handler(s) - } - SteamAPI_ManualDispatch_FreeLastCallback( hSteamPipe ); - } - -*/ -//----------------------------------------------------------------------------------------------------------------------------------------------------------// - -/// Inform the API that you wish to use manual event dispatch. This must be called after SteamAPI_Init, but before -/// you use any of the other manual dispatch functions below. -S_API void S_CALLTYPE SteamAPI_ManualDispatch_Init(); - -/// Perform certain periodic actions that need to be performed. -S_API void S_CALLTYPE SteamAPI_ManualDispatch_RunFrame( HSteamPipe hSteamPipe ); - -/// Fetch the next pending callback on the given pipe, if any. If a callback is available, true is returned -/// and the structure is populated. In this case, you MUST call SteamAPI_ManualDispatch_FreeLastCallback -/// (after dispatching the callback) before calling SteamAPI_ManualDispatch_GetNextCallback again. -S_API bool S_CALLTYPE SteamAPI_ManualDispatch_GetNextCallback( HSteamPipe hSteamPipe, CallbackMsg_t *pCallbackMsg ); - -/// You must call this after dispatching the callback, if SteamAPI_ManualDispatch_GetNextCallback returns true. -S_API void S_CALLTYPE SteamAPI_ManualDispatch_FreeLastCallback( HSteamPipe hSteamPipe ); - -/// Return the call result for the specified call on the specified pipe. You really should -/// only call this in a handler for SteamAPICallCompleted_t callback. -S_API bool S_CALLTYPE SteamAPI_ManualDispatch_GetAPICallResult( HSteamPipe hSteamPipe, SteamAPICall_t hSteamAPICall, void *pCallback, int cubCallback, int iCallbackExpected, bool *pbFailed ); - -//----------------------------------------------------------------------------------------------------------------------------------------------------------// -// -// CSteamAPIContext -// -// Deprecated! This is not necessary any more. Please use the global accessors directly -// -//----------------------------------------------------------------------------------------------------------------------------------------------------------// - -#ifndef STEAM_API_EXPORTS - -inline bool CSteamAPIContext::Init() -{ - m_pSteamClient = ::SteamClient(); - if ( !m_pSteamClient ) - return false; - - m_pSteamUser = ::SteamUser(); - if ( !m_pSteamUser ) - return false; - - m_pSteamFriends = ::SteamFriends(); - if ( !m_pSteamFriends ) - return false; - - m_pSteamUtils = ::SteamUtils(); - if ( !m_pSteamUtils ) - return false; - - m_pSteamMatchmaking = ::SteamMatchmaking(); - if ( !m_pSteamMatchmaking ) - return false; - - m_pSteamGameSearch = ::SteamGameSearch(); - if ( !m_pSteamGameSearch ) - return false; - -#if !defined( IOSALL) // Not yet supported on iOS. - m_pSteamMatchmakingServers = ::SteamMatchmakingServers(); - if ( !m_pSteamMatchmakingServers ) - return false; -#endif - - m_pSteamUserStats = ::SteamUserStats(); - if ( !m_pSteamUserStats ) - return false; - - m_pSteamApps = ::SteamApps(); - if ( !m_pSteamApps ) - return false; - - m_pSteamNetworking = ::SteamNetworking(); - if ( !m_pSteamNetworking ) - return false; - - m_pSteamRemoteStorage = ::SteamRemoteStorage(); - if ( !m_pSteamRemoteStorage ) - return false; - - m_pSteamScreenshots = ::SteamScreenshots(); - if ( !m_pSteamScreenshots ) - return false; - - m_pSteamHTTP = ::SteamHTTP(); - if ( !m_pSteamHTTP ) - return false; - - m_pController = ::SteamController(); - if ( !m_pController ) - return false; - - m_pSteamUGC = ::SteamUGC(); - if ( !m_pSteamUGC ) - return false; - - m_pSteamAppList = ::SteamAppList(); - if ( !m_pSteamAppList ) - return false; - - m_pSteamMusic = ::SteamMusic(); - if ( !m_pSteamMusic ) - return false; - - m_pSteamMusicRemote = ::SteamMusicRemote(); - if ( !m_pSteamMusicRemote ) - return false; - -#if !defined( ANDROID ) && !defined( IOSALL) // Not yet supported on Android or ios. - m_pSteamHTMLSurface = ::SteamHTMLSurface(); - if ( !m_pSteamHTMLSurface ) - return false; -#endif - - m_pSteamInventory = ::SteamInventory(); - if ( !m_pSteamInventory ) - return false; - - m_pSteamVideo = ::SteamVideo(); - if ( !m_pSteamVideo ) - return false; - - m_pSteamParentalSettings = ::SteamParentalSettings(); - if ( !m_pSteamParentalSettings ) - return false; - - m_pSteamInput = ::SteamInput(); - if ( !m_pSteamInput ) - return false; - - return true; -} - -#endif - -#endif // STEAM_API_H +//====== Copyright Valve Corporation, All rights reserved. ==================== +// +// This header includes *all* of the interfaces and callback structures +// in the Steamworks SDK, and some high level functions to control the SDK +// (init, shutdown, etc) that you probably only need in one or two files. +// +// To save your compile times, we recommend that you not include this file +// in header files. Instead, include the specific headers for the interfaces +// and callback structures you need. The one file you might consider including +// in your precompiled header (e.g. stdafx.h) is steam_api_common.h +// +//============================================================================= + +#ifndef STEAM_API_H +#define STEAM_API_H +#ifdef _WIN32 +#pragma once +#endif + +// Basic stuff +#include "steam_api_common.h" + +// All of the interfaces +#include "isteamclient.h" +#include "isteamuser.h" +#include "isteamfriends.h" +#include "isteamutils.h" +#include "isteammatchmaking.h" +#include "isteamuserstats.h" +#include "isteamapps.h" +#include "isteamnetworking.h" +#include "isteamremotestorage.h" +#include "isteamscreenshots.h" +#include "isteammusic.h" +#include "isteammusicremote.h" +#include "isteamhttp.h" +#include "isteamcontroller.h" +#include "isteamugc.h" +#include "isteamapplist.h" +#include "isteamhtmlsurface.h" +#include "isteaminventory.h" +#include "isteamvideo.h" +#include "isteamparentalsettings.h" +#include "isteaminput.h" +#include "isteamremoteplay.h" +#include "isteamnetworkingmessages.h" +#include "isteamnetworkingsockets.h" +#include "isteamnetworkingutils.h" + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// Steam API setup & shutdown +// +// These functions manage loading, initializing and shutdown of the steamclient.dll +// +//----------------------------------------------------------------------------------------------------------------------------------------------------------// + + +// SteamAPI_Init must be called before using any other API functions. If it fails, an +// error message will be output to the debugger (or stderr) with further information. +S_API bool S_CALLTYPE SteamAPI_Init(); + +// SteamAPI_Shutdown should be called during process shutdown if possible. +S_API void S_CALLTYPE SteamAPI_Shutdown(); + +// SteamAPI_RestartAppIfNecessary ensures that your executable was launched through Steam. +// +// Returns true if the current process should terminate. Steam is now re-launching your application. +// +// Returns false if no action needs to be taken. This means that your executable was started through +// the Steam client, or a steam_appid.txt file is present in your game's directory (for development). +// Your current process should continue if false is returned. +// +// NOTE: If you use the Steam DRM wrapper on your primary executable file, this check is unnecessary +// since the DRM wrapper will ensure that your application was launched properly through Steam. +S_API bool S_CALLTYPE SteamAPI_RestartAppIfNecessary( uint32 unOwnAppID ); + +// Many Steam API functions allocate a small amount of thread-local memory for parameter storage. +// SteamAPI_ReleaseCurrentThreadMemory() will free API memory associated with the calling thread. +// This function is also called automatically by SteamAPI_RunCallbacks(), so a single-threaded +// program never needs to explicitly call this function. +S_API void S_CALLTYPE SteamAPI_ReleaseCurrentThreadMemory(); + + +// crash dump recording functions +S_API void S_CALLTYPE SteamAPI_WriteMiniDump( uint32 uStructuredExceptionCode, void* pvExceptionInfo, uint32 uBuildID ); +S_API void S_CALLTYPE SteamAPI_SetMiniDumpComment( const char *pchMsg ); + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// steamclient.dll private wrapper functions +// +// The following functions are part of abstracting API access to the steamclient.dll, but should only be used in very specific cases +//----------------------------------------------------------------------------------------------------------------------------------------------------------// + +// SteamAPI_IsSteamRunning() returns true if Steam is currently running +S_API bool S_CALLTYPE SteamAPI_IsSteamRunning(); + +// returns the filename path of the current running Steam process, used if you need to load an explicit steam dll by name. +// DEPRECATED - implementation is Windows only, and the path returned is a UTF-8 string which must be converted to UTF-16 for use with Win32 APIs +S_API const char *SteamAPI_GetSteamInstallPath(); + +// sets whether or not Steam_RunCallbacks() should do a try {} catch (...) {} around calls to issuing callbacks +// This is ignored if you are using the manual callback dispatch method +S_API void SteamAPI_SetTryCatchCallbacks( bool bTryCatchCallbacks ); + +#if defined( VERSION_SAFE_STEAM_API_INTERFACES ) +// exists only for backwards compat with code written against older SDKs +S_API bool S_CALLTYPE SteamAPI_InitSafe(); +#endif + +#if defined(USE_BREAKPAD_HANDLER) || defined(STEAM_API_EXPORTS) +// this should be called before the game initialized the steam APIs +// pchDate should be of the format "Mmm dd yyyy" (such as from the __ DATE __ macro ) +// pchTime should be of the format "hh:mm:ss" (such as from the __ TIME __ macro ) +// bFullMemoryDumps (Win32 only) -- writes out a uuid-full.dmp in the client/dumps folder +// pvContext-- can be NULL, will be the void * context passed into m_pfnPreMinidumpCallback +// PFNPreMinidumpCallback m_pfnPreMinidumpCallback -- optional callback which occurs just before a .dmp file is written during a crash. Applications can hook this to allow adding additional information into the .dmp comment stream. +S_API void S_CALLTYPE SteamAPI_UseBreakpadCrashHandler( char const *pchVersion, char const *pchDate, char const *pchTime, bool bFullMemoryDumps, void *pvContext, PFNPreMinidumpCallback m_pfnPreMinidumpCallback ); +S_API void S_CALLTYPE SteamAPI_SetBreakpadAppID( uint32 unAppID ); +#endif + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// +// Manual callback loop +// +// An alternative method for dispatching callbacks. Similar to a windows message loop. +// +// If you use the manual callback dispatch, you must NOT use: +// +// - SteamAPI_RunCallbacks or SteamGameServer_RunCallbacks +// - STEAM_CALLBACK, CCallResult, CCallback, or CCallbackManual +// +// Here is the basic template for replacing SteamAPI_RunCallbacks() with manual dispatch +/* + + HSteamPipe hSteamPipe = SteamAPI_GetHSteamPipe(); // See also SteamGameServer_GetHSteamPipe() + SteamAPI_ManualDispatch_RunFrame( hSteamPipe ) + CallbackMsg_t callback; + while ( SteamAPI_ManualDispatch_GetNextCallback( hSteamPipe, &callback ) ) + { + // Check for dispatching API call results + if ( callback.m_iCallback == SteamAPICallCompleted_t::k_iCallback ) + { + SteamAPICallCompleted_t *pCallCompleted = (SteamAPICallCompleted_t *)callback. + void *pTmpCallResult = malloc( pCallback->m_cubParam ); + bool bFailed; + if ( SteamAPI_ManualDispatch_GetAPICallResult( hSteamPipe, pCallCompleted->m_hAsyncCall, pTmpCallResult, pCallback->m_cubParam, pCallback->m_iCallback, &bFailed ) ) + { + // Dispatch the call result to the registered handler(s) for the + // call identified by pCallCompleted->m_hAsyncCall + } + free( pTmpCallResult ); + } + else + { + // Look at callback.m_iCallback to see what kind of callback it is, + // and dispatch to appropriate handler(s) + } + SteamAPI_ManualDispatch_FreeLastCallback( hSteamPipe ); + } + +*/ +//----------------------------------------------------------------------------------------------------------------------------------------------------------// + +/// Inform the API that you wish to use manual event dispatch. This must be called after SteamAPI_Init, but before +/// you use any of the other manual dispatch functions below. +S_API void S_CALLTYPE SteamAPI_ManualDispatch_Init(); + +/// Perform certain periodic actions that need to be performed. +S_API void S_CALLTYPE SteamAPI_ManualDispatch_RunFrame( HSteamPipe hSteamPipe ); + +/// Fetch the next pending callback on the given pipe, if any. If a callback is available, true is returned +/// and the structure is populated. In this case, you MUST call SteamAPI_ManualDispatch_FreeLastCallback +/// (after dispatching the callback) before calling SteamAPI_ManualDispatch_GetNextCallback again. +S_API bool S_CALLTYPE SteamAPI_ManualDispatch_GetNextCallback( HSteamPipe hSteamPipe, CallbackMsg_t *pCallbackMsg ); + +/// You must call this after dispatching the callback, if SteamAPI_ManualDispatch_GetNextCallback returns true. +S_API void S_CALLTYPE SteamAPI_ManualDispatch_FreeLastCallback( HSteamPipe hSteamPipe ); + +/// Return the call result for the specified call on the specified pipe. You really should +/// only call this in a handler for SteamAPICallCompleted_t callback. +S_API bool S_CALLTYPE SteamAPI_ManualDispatch_GetAPICallResult( HSteamPipe hSteamPipe, SteamAPICall_t hSteamAPICall, void *pCallback, int cubCallback, int iCallbackExpected, bool *pbFailed ); + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// +// CSteamAPIContext +// +// Deprecated! This is not necessary any more. Please use the global accessors directly +// +//----------------------------------------------------------------------------------------------------------------------------------------------------------// + +#ifndef STEAM_API_EXPORTS + +inline bool CSteamAPIContext::Init() +{ + m_pSteamClient = ::SteamClient(); + if ( !m_pSteamClient ) + return false; + + m_pSteamUser = ::SteamUser(); + if ( !m_pSteamUser ) + return false; + + m_pSteamFriends = ::SteamFriends(); + if ( !m_pSteamFriends ) + return false; + + m_pSteamUtils = ::SteamUtils(); + if ( !m_pSteamUtils ) + return false; + + m_pSteamMatchmaking = ::SteamMatchmaking(); + if ( !m_pSteamMatchmaking ) + return false; + + m_pSteamGameSearch = ::SteamGameSearch(); + if ( !m_pSteamGameSearch ) + return false; + +#if !defined( IOSALL) // Not yet supported on iOS. + m_pSteamMatchmakingServers = ::SteamMatchmakingServers(); + if ( !m_pSteamMatchmakingServers ) + return false; +#endif + + m_pSteamUserStats = ::SteamUserStats(); + if ( !m_pSteamUserStats ) + return false; + + m_pSteamApps = ::SteamApps(); + if ( !m_pSteamApps ) + return false; + + m_pSteamNetworking = ::SteamNetworking(); + if ( !m_pSteamNetworking ) + return false; + + m_pSteamRemoteStorage = ::SteamRemoteStorage(); + if ( !m_pSteamRemoteStorage ) + return false; + + m_pSteamScreenshots = ::SteamScreenshots(); + if ( !m_pSteamScreenshots ) + return false; + + m_pSteamHTTP = ::SteamHTTP(); + if ( !m_pSteamHTTP ) + return false; + + m_pController = ::SteamController(); + if ( !m_pController ) + return false; + + m_pSteamUGC = ::SteamUGC(); + if ( !m_pSteamUGC ) + return false; + + m_pSteamAppList = ::SteamAppList(); + if ( !m_pSteamAppList ) + return false; + + m_pSteamMusic = ::SteamMusic(); + if ( !m_pSteamMusic ) + return false; + + m_pSteamMusicRemote = ::SteamMusicRemote(); + if ( !m_pSteamMusicRemote ) + return false; + +#if !defined( ANDROID ) && !defined( IOSALL) // Not yet supported on Android or ios. + m_pSteamHTMLSurface = ::SteamHTMLSurface(); + if ( !m_pSteamHTMLSurface ) + return false; +#endif + + m_pSteamInventory = ::SteamInventory(); + if ( !m_pSteamInventory ) + return false; + + m_pSteamVideo = ::SteamVideo(); + if ( !m_pSteamVideo ) + return false; + + m_pSteamParentalSettings = ::SteamParentalSettings(); + if ( !m_pSteamParentalSettings ) + return false; + + m_pSteamInput = ::SteamInput(); + if ( !m_pSteamInput ) + return false; + + return true; +} + +#endif + +#endif // STEAM_API_H diff --git a/CodeGen/steam/steam_api.json b/CodeGen/steam/steam_api.json index 20a25c68..29acc807 100644 --- a/CodeGen/steam/steam_api.json +++ b/CodeGen/steam/steam_api.json @@ -1,13499 +1,13499 @@ -{ - "callback_structs": [ - { - "callback_id": 101, - "fields": [], - "struct": "SteamServersConnected_t" - }, - { - "callback_id": 102, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_bStillRetrying", "fieldtype":"bool" } - ], - "struct": "SteamServerConnectFailure_t" - }, - { - "callback_id": 103, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" } - ], - "struct": "SteamServersDisconnected_t" - }, - { - "callback_id": 113, - "fields": [ - { "fieldname":"m_uAppID", "fieldtype":"uint32" }, - { "fieldname":"m_unGameServerIP", "fieldtype":"uint32" }, - { "fieldname":"m_usGameServerPort", "fieldtype":"uint16" }, - { "fieldname":"m_bSecure", "fieldtype":"uint16" }, - { "fieldname":"m_uReason", "fieldtype":"uint32" } - ], - "struct": "ClientGameServerDeny_t" - }, - { - "callback_id": 117, - "enums": [ - { - "enumname": "EFailureType", - "fqname": "IPCFailure_t::EFailureType", - "values": [ - { "name":"k_EFailureFlushedCallbackQueue", "value":"0" }, - { "name":"k_EFailurePipeFail", "value":"1" } - ] - } - ], - "fields": [ - { "fieldname":"m_eFailureType", "fieldtype":"uint8" } - ], - "struct": "IPCFailure_t" - }, - { - "callback_id": 125, - "fields": [], - "struct": "LicensesUpdated_t" - }, - { - "callback_id": 143, - "fields": [ - { "fieldname":"m_SteamID", "fieldtype":"CSteamID" }, - { "fieldname":"m_eAuthSessionResponse", "fieldtype":"EAuthSessionResponse" }, - { "fieldname":"m_OwnerSteamID", "fieldtype":"CSteamID" } - ], - "struct": "ValidateAuthTicketResponse_t" - }, - { - "callback_id": 152, - "fields": [ - { "fieldname":"m_unAppID", "fieldtype":"uint32" }, - { "fieldname":"m_ulOrderID", "fieldtype":"uint64" }, - { "fieldname":"m_bAuthorized", "fieldtype":"uint8" } - ], - "struct": "MicroTxnAuthorizationResponse_t" - }, - { - "callback_id": 154, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" } - ], - "struct": "EncryptedAppTicketResponse_t" - }, - { - "callback_id": 163, - "fields": [ - { "fieldname":"m_hAuthTicket", "fieldtype":"HAuthTicket" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" } - ], - "struct": "GetAuthSessionTicketResponse_t" - }, - { - "callback_id": 164, - "fields": [ - { "fieldname":"m_szURL", "fieldtype":"char [256]" } - ], - "struct": "GameWebCallback_t" - }, - { - "callback_id": 165, - "fields": [ - { "fieldname":"m_szURL", "fieldtype":"char [512]" } - ], - "struct": "StoreAuthURLResponse_t" - }, - { - "callback_id": 166, - "fields": [ - { "fieldname":"m_bAllowed", "fieldtype":"bool" }, - { "fieldname":"m_eNotAllowedReason", "fieldtype":"EMarketNotAllowedReasonFlags" }, - { "fieldname":"m_rtAllowedAtTime", "fieldtype":"RTime32" }, - { "fieldname":"m_cdaySteamGuardRequiredDays", "fieldtype":"int" }, - { "fieldname":"m_cdayNewDeviceCooldown", "fieldtype":"int" } - ], - "struct": "MarketEligibilityResponse_t" - }, - { - "callback_id": 167, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_appid", "fieldtype":"AppId_t" }, - { "fieldname":"m_bApplicable", "fieldtype":"bool" }, - { "fieldname":"m_csecsLast5h", "fieldtype":"int32" }, - { "fieldname":"m_progress", "fieldtype":"EDurationControlProgress" }, - { "fieldname":"m_notification", "fieldtype":"EDurationControlNotification" }, - { "fieldname":"m_csecsToday", "fieldtype":"int32" }, - { "fieldname":"m_csecsRemaining", "fieldtype":"int32" } - ], - "struct": "DurationControl_t" - }, - { - "callback_id": 304, - "fields": [ - { "fieldname":"m_ulSteamID", "fieldtype":"uint64" }, - { "fieldname":"m_nChangeFlags", "fieldtype":"int" } - ], - "struct": "PersonaStateChange_t" - }, - { - "callback_id": 331, - "fields": [ - { "fieldname":"m_bActive", "fieldtype":"uint8" } - ], - "struct": "GameOverlayActivated_t" - }, - { - "callback_id": 332, - "fields": [ - { "fieldname":"m_rgchServer", "fieldtype":"char [64]" }, - { "fieldname":"m_rgchPassword", "fieldtype":"char [64]" } - ], - "struct": "GameServerChangeRequested_t" - }, - { - "callback_id": 333, - "fields": [ - { "fieldname":"m_steamIDLobby", "fieldtype":"CSteamID" }, - { "fieldname":"m_steamIDFriend", "fieldtype":"CSteamID" } - ], - "struct": "GameLobbyJoinRequested_t" - }, - { - "callback_id": 334, - "fields": [ - { "fieldname":"m_steamID", "fieldtype":"CSteamID" }, - { "fieldname":"m_iImage", "fieldtype":"int" }, - { "fieldname":"m_iWide", "fieldtype":"int" }, - { "fieldname":"m_iTall", "fieldtype":"int" } - ], - "struct": "AvatarImageLoaded_t" - }, - { - "callback_id": 335, - "fields": [ - { "fieldname":"m_steamIDClan", "fieldtype":"CSteamID" }, - { "fieldname":"m_cOfficers", "fieldtype":"int" }, - { "fieldname":"m_bSuccess", "fieldtype":"uint8" } - ], - "struct": "ClanOfficerListResponse_t" - }, - { - "callback_id": 336, - "fields": [ - { "fieldname":"m_steamIDFriend", "fieldtype":"CSteamID" }, - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } - ], - "struct": "FriendRichPresenceUpdate_t" - }, - { - "callback_id": 337, - "fields": [ - { "fieldname":"m_steamIDFriend", "fieldtype":"CSteamID" }, - { "fieldname":"m_rgchConnect", "fieldtype":"char [256]" } - ], - "struct": "GameRichPresenceJoinRequested_t" - }, - { - "callback_id": 338, - "fields": [ - { "fieldname":"m_steamIDClanChat", "fieldtype":"CSteamID" }, - { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" }, - { "fieldname":"m_iMessageID", "fieldtype":"int" } - ], - "struct": "GameConnectedClanChatMsg_t" - }, - { - "callback_id": 339, - "fields": [ - { "fieldname":"m_steamIDClanChat", "fieldtype":"CSteamID" }, - { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } - ], - "struct": "GameConnectedChatJoin_t" - }, - { - "callback_id": 340, - "fields": [ - { "fieldname":"m_steamIDClanChat", "fieldtype":"CSteamID" }, - { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" }, - { "fieldname":"m_bKicked", "fieldtype":"bool" }, - { "fieldname":"m_bDropped", "fieldtype":"bool" } - ], - "struct": "GameConnectedChatLeave_t" - }, - { - "callback_id": 341, - "fields": [ - { "fieldname":"m_bSuccess", "fieldtype":"bool" } - ], - "struct": "DownloadClanActivityCountsResult_t" - }, - { - "callback_id": 342, - "fields": [ - { "fieldname":"m_steamIDClanChat", "fieldtype":"CSteamID" }, - { "fieldname":"m_eChatRoomEnterResponse", "fieldtype":"EChatRoomEnterResponse" } - ], - "struct": "JoinClanChatRoomCompletionResult_t" - }, - { - "callback_id": 343, - "fields": [ - { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" }, - { "fieldname":"m_iMessageID", "fieldtype":"int" } - ], - "struct": "GameConnectedFriendChatMsg_t" - }, - { - "callback_id": 344, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_steamID", "fieldtype":"CSteamID" }, - { "fieldname":"m_nCount", "fieldtype":"int" } - ], - "struct": "FriendsGetFollowerCount_t" - }, - { - "callback_id": 345, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_steamID", "fieldtype":"CSteamID" }, - { "fieldname":"m_bIsFollowing", "fieldtype":"bool" } - ], - "struct": "FriendsIsFollowing_t" - }, - { - "callback_id": 346, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_rgSteamID", "fieldtype":"CSteamID [50]" }, - { "fieldname":"m_nResultsReturned", "fieldtype":"int32" }, - { "fieldname":"m_nTotalResultCount", "fieldtype":"int32" } - ], - "struct": "FriendsEnumerateFollowingList_t" - }, - { - "callback_id": 347, - "fields": [ - { "fieldname":"m_bSuccess", "fieldtype":"bool" }, - { "fieldname":"m_bLocalSuccess", "fieldtype":"bool" }, - { "fieldname":"m_result", "fieldtype":"EResult" } - ], - "struct": "SetPersonaNameResponse_t" - }, - { - "callback_id": 348, - "fields": [], - "struct": "UnreadChatMessagesChanged_t" - }, - { - "callback_id": 349, - "fields": [ - { "fieldname":"rgchURI", "fieldtype":"char [1024]" } - ], - "struct": "OverlayBrowserProtocolNavigation_t" - }, - { - "callback_id": 701, - "fields": [], - "struct": "IPCountry_t" - }, - { - "callback_id": 702, - "fields": [ - { "fieldname":"m_nMinutesBatteryLeft", "fieldtype":"uint8" } - ], - "struct": "LowBatteryPower_t" - }, - { - "callback_id": 703, - "fields": [ - { "fieldname":"m_hAsyncCall", "fieldtype":"SteamAPICall_t" }, - { "fieldname":"m_iCallback", "fieldtype":"int" }, - { "fieldname":"m_cubParam", "fieldtype":"uint32" } - ], - "struct": "SteamAPICallCompleted_t" - }, - { - "callback_id": 704, - "fields": [], - "struct": "SteamShutdown_t" - }, - { - "callback_id": 705, - "fields": [ - { "fieldname":"m_eCheckFileSignature", "fieldtype":"ECheckFileSignature" } - ], - "struct": "CheckFileSignature_t" - }, - { - "callback_id": 714, - "fields": [ - { "fieldname":"m_bSubmitted", "fieldtype":"bool" }, - { "fieldname":"m_unSubmittedText", "fieldtype":"uint32" } - ], - "struct": "GamepadTextInputDismissed_t" - }, - { - "callback_id": 502, - "fields": [ - { "fieldname":"m_nIP", "fieldtype":"uint32" }, - { "fieldname":"m_nQueryPort", "fieldtype":"uint32" }, - { "fieldname":"m_nConnPort", "fieldtype":"uint32" }, - { "fieldname":"m_nAppID", "fieldtype":"uint32" }, - { "fieldname":"m_nFlags", "fieldtype":"uint32" }, - { "fieldname":"m_bAdd", "fieldtype":"bool" }, - { "fieldname":"m_unAccountId", "fieldtype":"AccountID_t" } - ], - "struct": "FavoritesListChanged_t" - }, - { - "callback_id": 503, - "fields": [ - { "fieldname":"m_ulSteamIDUser", "fieldtype":"uint64" }, - { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, - { "fieldname":"m_ulGameID", "fieldtype":"uint64" } - ], - "struct": "LobbyInvite_t" - }, - { - "callback_id": 504, - "fields": [ - { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, - { "fieldname":"m_rgfChatPermissions", "fieldtype":"uint32" }, - { "fieldname":"m_bLocked", "fieldtype":"bool" }, - { "fieldname":"m_EChatRoomEnterResponse", "fieldtype":"uint32" } - ], - "struct": "LobbyEnter_t" - }, - { - "callback_id": 505, - "fields": [ - { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, - { "fieldname":"m_ulSteamIDMember", "fieldtype":"uint64" }, - { "fieldname":"m_bSuccess", "fieldtype":"uint8" } - ], - "struct": "LobbyDataUpdate_t" - }, - { - "callback_id": 506, - "fields": [ - { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, - { "fieldname":"m_ulSteamIDUserChanged", "fieldtype":"uint64" }, - { "fieldname":"m_ulSteamIDMakingChange", "fieldtype":"uint64" }, - { "fieldname":"m_rgfChatMemberStateChange", "fieldtype":"uint32" } - ], - "struct": "LobbyChatUpdate_t" - }, - { - "callback_id": 507, - "fields": [ - { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, - { "fieldname":"m_ulSteamIDUser", "fieldtype":"uint64" }, - { "fieldname":"m_eChatEntryType", "fieldtype":"uint8" }, - { "fieldname":"m_iChatID", "fieldtype":"uint32" } - ], - "struct": "LobbyChatMsg_t" - }, - { - "callback_id": 509, - "fields": [ - { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, - { "fieldname":"m_ulSteamIDGameServer", "fieldtype":"uint64" }, - { "fieldname":"m_unIP", "fieldtype":"uint32" }, - { "fieldname":"m_usPort", "fieldtype":"uint16" } - ], - "struct": "LobbyGameCreated_t" - }, - { - "callback_id": 510, - "fields": [ - { "fieldname":"m_nLobbiesMatching", "fieldtype":"uint32" } - ], - "struct": "LobbyMatchList_t" - }, - { - "callback_id": 512, - "fields": [ - { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, - { "fieldname":"m_ulSteamIDAdmin", "fieldtype":"uint64" }, - { "fieldname":"m_bKickedDueToDisconnect", "fieldtype":"uint8" } - ], - "struct": "LobbyKicked_t" - }, - { - "callback_id": 513, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" } - ], - "struct": "LobbyCreated_t" - }, - { - "callback_id": 515, - "fields": [ - { "fieldname":"m_bGameBootInviteExists", "fieldtype":"bool" }, - { "fieldname":"m_steamIDLobby", "fieldtype":"CSteamID" } - ], - "struct": "PSNGameBootInviteResult_t" - }, - { - "callback_id": 516, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" } - ], - "struct": "FavoritesListAccountsUpdated_t" - }, - { - "callback_id": 5201, - "fields": [ - { "fieldname":"m_ullSearchID", "fieldtype":"uint64" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_lobbyID", "fieldtype":"CSteamID" }, - { "fieldname":"m_steamIDEndedSearch", "fieldtype":"CSteamID" }, - { "fieldname":"m_nSecondsRemainingEstimate", "fieldtype":"int32" }, - { "fieldname":"m_cPlayersSearching", "fieldtype":"int32" } - ], - "struct": "SearchForGameProgressCallback_t" - }, - { - "callback_id": 5202, - "fields": [ - { "fieldname":"m_ullSearchID", "fieldtype":"uint64" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nCountPlayersInGame", "fieldtype":"int32" }, - { "fieldname":"m_nCountAcceptedGame", "fieldtype":"int32" }, - { "fieldname":"m_steamIDHost", "fieldtype":"CSteamID" }, - { "fieldname":"m_bFinalCallback", "fieldtype":"bool" } - ], - "struct": "SearchForGameResultCallback_t" - }, - { - "callback_id": 5211, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_ullSearchID", "fieldtype":"uint64" } - ], - "struct": "RequestPlayersForGameProgressCallback_t" - }, - { - "callback_id": 5212, - "enums": [ - { - "enumname": "PlayerAcceptState_t", - "fqname": "RequestPlayersForGameResultCallback_t::PlayerAcceptState_t", - "values": [ - { "name":"k_EStateUnknown", "value":"0" }, - { "name":"k_EStatePlayerAccepted", "value":"1" }, - { "name":"k_EStatePlayerDeclined", "value":"2" } - ] - } - ], - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_ullSearchID", "fieldtype":"uint64" }, - { "fieldname":"m_SteamIDPlayerFound", "fieldtype":"CSteamID" }, - { "fieldname":"m_SteamIDLobby", "fieldtype":"CSteamID" }, - { "fieldname":"m_ePlayerAcceptState", "fieldtype":"RequestPlayersForGameResultCallback_t::PlayerAcceptState_t" }, - { "fieldname":"m_nPlayerIndex", "fieldtype":"int32" }, - { "fieldname":"m_nTotalPlayersFound", "fieldtype":"int32" }, - { "fieldname":"m_nTotalPlayersAcceptedGame", "fieldtype":"int32" }, - { "fieldname":"m_nSuggestedTeamIndex", "fieldtype":"int32" }, - { "fieldname":"m_ullUniqueGameID", "fieldtype":"uint64" } - ], - "struct": "RequestPlayersForGameResultCallback_t" - }, - { - "callback_id": 5213, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_ullSearchID", "fieldtype":"uint64" }, - { "fieldname":"m_ullUniqueGameID", "fieldtype":"uint64" } - ], - "struct": "RequestPlayersForGameFinalResultCallback_t" - }, - { - "callback_id": 5214, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"ullUniqueGameID", "fieldtype":"uint64" }, - { "fieldname":"steamIDPlayer", "fieldtype":"CSteamID" } - ], - "struct": "SubmitPlayerResultResultCallback_t" - }, - { - "callback_id": 5215, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"ullUniqueGameID", "fieldtype":"uint64" } - ], - "struct": "EndGameResultCallback_t" - }, - { - "callback_id": 5301, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_ulBeaconID", "fieldtype":"PartyBeaconID_t" }, - { "fieldname":"m_SteamIDBeaconOwner", "fieldtype":"CSteamID" }, - { "fieldname":"m_rgchConnectString", "fieldtype":"char [256]" } - ], - "struct": "JoinPartyCallback_t" - }, - { - "callback_id": 5302, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_ulBeaconID", "fieldtype":"PartyBeaconID_t" } - ], - "struct": "CreateBeaconCallback_t" - }, - { - "callback_id": 5303, - "fields": [ - { "fieldname":"m_ulBeaconID", "fieldtype":"PartyBeaconID_t" }, - { "fieldname":"m_steamIDJoiner", "fieldtype":"CSteamID" } - ], - "struct": "ReservationNotificationCallback_t" - }, - { - "callback_id": 5304, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" } - ], - "struct": "ChangeNumOpenSlotsCallback_t" - }, - { - "callback_id": 5305, - "fields": [], - "struct": "AvailableBeaconLocationsUpdated_t" - }, - { - "callback_id": 5306, - "fields": [], - "struct": "ActiveBeaconsUpdated_t" - }, - { - "callback_id": 1301, - "fields": [ - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_unNumDownloads", "fieldtype":"int" } - ], - "struct": "RemoteStorageAppSyncedClient_t" - }, - { - "callback_id": 1302, - "fields": [ - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_unNumUploads", "fieldtype":"int" } - ], - "struct": "RemoteStorageAppSyncedServer_t" - }, - { - "callback_id": 1303, - "fields": [ - { "fieldname":"m_rgchCurrentFile", "fieldtype":"char [260]" }, - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_uBytesTransferredThisChunk", "fieldtype":"uint32" }, - { "fieldname":"m_dAppPercentComplete", "fieldtype":"double" }, - { "fieldname":"m_bUploading", "fieldtype":"bool" } - ], - "struct": "RemoteStorageAppSyncProgress_t" - }, - { - "callback_id": 1305, - "fields": [ - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" } - ], - "struct": "RemoteStorageAppSyncStatusCheck_t" - }, - { - "callback_id": 1307, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_hFile", "fieldtype":"UGCHandle_t" }, - { "fieldname":"m_rgchFilename", "fieldtype":"char [260]" } - ], - "struct": "RemoteStorageFileShareResult_t" - }, - { - "callback_id": 1309, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype":"bool" } - ], - "struct": "RemoteStoragePublishFileResult_t" - }, - { - "callback_id": 1311, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } - ], - "struct": "RemoteStorageDeletePublishedFileResult_t" - }, - { - "callback_id": 1312, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nResultsReturned", "fieldtype":"int32" }, - { "fieldname":"m_nTotalResultCount", "fieldtype":"int32" }, - { "fieldname":"m_rgPublishedFileId", "fieldtype":"PublishedFileId_t [50]" } - ], - "struct": "RemoteStorageEnumerateUserPublishedFilesResult_t" - }, - { - "callback_id": 1313, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } - ], - "struct": "RemoteStorageSubscribePublishedFileResult_t" - }, - { - "callback_id": 1314, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nResultsReturned", "fieldtype":"int32" }, - { "fieldname":"m_nTotalResultCount", "fieldtype":"int32" }, - { "fieldname":"m_rgPublishedFileId", "fieldtype":"PublishedFileId_t [50]" }, - { "fieldname":"m_rgRTimeSubscribed", "fieldtype":"uint32 [50]" } - ], - "struct": "RemoteStorageEnumerateUserSubscribedFilesResult_t" - }, - { - "callback_id": 1315, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } - ], - "struct": "RemoteStorageUnsubscribePublishedFileResult_t" - }, - { - "callback_id": 1316, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype":"bool" } - ], - "struct": "RemoteStorageUpdatePublishedFileResult_t" - }, - { - "callback_id": 1317, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_hFile", "fieldtype":"UGCHandle_t" }, - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_nSizeInBytes", "fieldtype":"int32" }, - { "fieldname":"m_pchFileName", "fieldtype":"char [260]" }, - { "fieldname":"m_ulSteamIDOwner", "fieldtype":"uint64" } - ], - "struct": "RemoteStorageDownloadUGCResult_t" - }, - { - "callback_id": 1318, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_nCreatorAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_nConsumerAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_rgchTitle", "fieldtype":"char [129]" }, - { "fieldname":"m_rgchDescription", "fieldtype":"char [8000]" }, - { "fieldname":"m_hFile", "fieldtype":"UGCHandle_t" }, - { "fieldname":"m_hPreviewFile", "fieldtype":"UGCHandle_t" }, - { "fieldname":"m_ulSteamIDOwner", "fieldtype":"uint64" }, - { "fieldname":"m_rtimeCreated", "fieldtype":"uint32" }, - { "fieldname":"m_rtimeUpdated", "fieldtype":"uint32" }, - { "fieldname":"m_eVisibility", "fieldtype":"ERemoteStoragePublishedFileVisibility" }, - { "fieldname":"m_bBanned", "fieldtype":"bool" }, - { "fieldname":"m_rgchTags", "fieldtype":"char [1025]" }, - { "fieldname":"m_bTagsTruncated", "fieldtype":"bool" }, - { "fieldname":"m_pchFileName", "fieldtype":"char [260]" }, - { "fieldname":"m_nFileSize", "fieldtype":"int32" }, - { "fieldname":"m_nPreviewFileSize", "fieldtype":"int32" }, - { "fieldname":"m_rgchURL", "fieldtype":"char [256]" }, - { "fieldname":"m_eFileType", "fieldtype":"EWorkshopFileType" }, - { "fieldname":"m_bAcceptedForUse", "fieldtype":"bool" } - ], - "struct": "RemoteStorageGetPublishedFileDetailsResult_t" - }, - { - "callback_id": 1319, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nResultsReturned", "fieldtype":"int32" }, - { "fieldname":"m_nTotalResultCount", "fieldtype":"int32" }, - { "fieldname":"m_rgPublishedFileId", "fieldtype":"PublishedFileId_t [50]" }, - { "fieldname":"m_rgScore", "fieldtype":"float [50]" }, - { "fieldname":"m_nAppId", "fieldtype":"AppId_t" }, - { "fieldname":"m_unStartIndex", "fieldtype":"uint32" } - ], - "struct": "RemoteStorageEnumerateWorkshopFilesResult_t" - }, - { - "callback_id": 1320, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_unPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_nVotesFor", "fieldtype":"int32" }, - { "fieldname":"m_nVotesAgainst", "fieldtype":"int32" }, - { "fieldname":"m_nReports", "fieldtype":"int32" }, - { "fieldname":"m_fScore", "fieldtype":"float" } - ], - "struct": "RemoteStorageGetPublishedItemVoteDetailsResult_t" - }, - { - "callback_id": 1321, - "fields": [ - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } - ], - "struct": "RemoteStoragePublishedFileSubscribed_t" - }, - { - "callback_id": 1322, - "fields": [ - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } - ], - "struct": "RemoteStoragePublishedFileUnsubscribed_t" - }, - { - "callback_id": 1323, - "fields": [ - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } - ], - "struct": "RemoteStoragePublishedFileDeleted_t" - }, - { - "callback_id": 1324, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } - ], - "struct": "RemoteStorageUpdateUserPublishedItemVoteResult_t" - }, - { - "callback_id": 1325, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_eVote", "fieldtype":"EWorkshopVote" } - ], - "struct": "RemoteStorageUserVoteDetails_t" - }, - { - "callback_id": 1326, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nResultsReturned", "fieldtype":"int32" }, - { "fieldname":"m_nTotalResultCount", "fieldtype":"int32" }, - { "fieldname":"m_rgPublishedFileId", "fieldtype":"PublishedFileId_t [50]" } - ], - "struct": "RemoteStorageEnumerateUserSharedWorkshopFilesResult_t" - }, - { - "callback_id": 1327, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_eAction", "fieldtype":"EWorkshopFileAction" } - ], - "struct": "RemoteStorageSetUserPublishedFileActionResult_t" - }, - { - "callback_id": 1328, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_eAction", "fieldtype":"EWorkshopFileAction" }, - { "fieldname":"m_nResultsReturned", "fieldtype":"int32" }, - { "fieldname":"m_nTotalResultCount", "fieldtype":"int32" }, - { "fieldname":"m_rgPublishedFileId", "fieldtype":"PublishedFileId_t [50]" }, - { "fieldname":"m_rgRTimeUpdated", "fieldtype":"uint32 [50]" } - ], - "struct": "RemoteStorageEnumeratePublishedFilesByUserActionResult_t" - }, - { - "callback_id": 1329, - "fields": [ - { "fieldname":"m_dPercentFile", "fieldtype":"double" }, - { "fieldname":"m_bPreview", "fieldtype":"bool" } - ], - "struct": "RemoteStoragePublishFileProgress_t" - }, - { - "callback_id": 1330, - "fields": [ - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_ulUnused", "fieldtype":"uint64" } - ], - "struct": "RemoteStoragePublishedFileUpdated_t" - }, - { - "callback_id": 1331, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" } - ], - "struct": "RemoteStorageFileWriteAsyncComplete_t" - }, - { - "callback_id": 1332, - "fields": [ - { "fieldname":"m_hFileReadAsync", "fieldtype":"SteamAPICall_t" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nOffset", "fieldtype":"uint32" }, - { "fieldname":"m_cubRead", "fieldtype":"uint32" } - ], - "struct": "RemoteStorageFileReadAsyncComplete_t" - }, - { - "callback_id": 1101, - "fields": [ - { "fieldname":"m_nGameID", "fieldtype":"uint64" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } - ], - "struct": "UserStatsReceived_t" - }, - { - "callback_id": 1102, - "fields": [ - { "fieldname":"m_nGameID", "fieldtype":"uint64" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" } - ], - "struct": "UserStatsStored_t" - }, - { - "callback_id": 1103, - "fields": [ - { "fieldname":"m_nGameID", "fieldtype":"uint64" }, - { "fieldname":"m_bGroupAchievement", "fieldtype":"bool" }, - { "fieldname":"m_rgchAchievementName", "fieldtype":"char [128]" }, - { "fieldname":"m_nCurProgress", "fieldtype":"uint32" }, - { "fieldname":"m_nMaxProgress", "fieldtype":"uint32" } - ], - "struct": "UserAchievementStored_t" - }, - { - "callback_id": 1104, - "fields": [ - { "fieldname":"m_hSteamLeaderboard", "fieldtype":"SteamLeaderboard_t" }, - { "fieldname":"m_bLeaderboardFound", "fieldtype":"uint8" } - ], - "struct": "LeaderboardFindResult_t" - }, - { - "callback_id": 1105, - "fields": [ - { "fieldname":"m_hSteamLeaderboard", "fieldtype":"SteamLeaderboard_t" }, - { "fieldname":"m_hSteamLeaderboardEntries", "fieldtype":"SteamLeaderboardEntries_t" }, - { "fieldname":"m_cEntryCount", "fieldtype":"int" } - ], - "struct": "LeaderboardScoresDownloaded_t" - }, - { - "callback_id": 1106, - "fields": [ - { "fieldname":"m_bSuccess", "fieldtype":"uint8" }, - { "fieldname":"m_hSteamLeaderboard", "fieldtype":"SteamLeaderboard_t" }, - { "fieldname":"m_nScore", "fieldtype":"int32" }, - { "fieldname":"m_bScoreChanged", "fieldtype":"uint8" }, - { "fieldname":"m_nGlobalRankNew", "fieldtype":"int" }, - { "fieldname":"m_nGlobalRankPrevious", "fieldtype":"int" } - ], - "struct": "LeaderboardScoreUploaded_t" - }, - { - "callback_id": 1107, - "fields": [ - { "fieldname":"m_bSuccess", "fieldtype":"uint8" }, - { "fieldname":"m_cPlayers", "fieldtype":"int32" } - ], - "struct": "NumberOfCurrentPlayers_t" - }, - { - "callback_id": 1108, - "fields": [ - { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } - ], - "struct": "UserStatsUnloaded_t" - }, - { - "callback_id": 1109, - "fields": [ - { "fieldname":"m_nGameID", "fieldtype":"CGameID" }, - { "fieldname":"m_rgchAchievementName", "fieldtype":"char [128]" }, - { "fieldname":"m_bAchieved", "fieldtype":"bool" }, - { "fieldname":"m_nIconHandle", "fieldtype":"int" } - ], - "struct": "UserAchievementIconFetched_t" - }, - { - "callback_id": 1110, - "fields": [ - { "fieldname":"m_nGameID", "fieldtype":"uint64" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" } - ], - "struct": "GlobalAchievementPercentagesReady_t" - }, - { - "callback_id": 1111, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_hSteamLeaderboard", "fieldtype":"SteamLeaderboard_t" } - ], - "struct": "LeaderboardUGCSet_t" - }, - { - "callback_id": 1112, - "fields": [ - { "fieldname":"m_nGameID", "fieldtype":"uint64" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_ulRequiredDiskSpace", "fieldtype":"uint64" } - ], - "struct": "PS3TrophiesInstalled_t" - }, - { - "callback_id": 1112, - "fields": [ - { "fieldname":"m_nGameID", "fieldtype":"uint64" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" } - ], - "struct": "GlobalStatsReceived_t" - }, - { - "callback_id": 1005, - "fields": [ - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } - ], - "struct": "DlcInstalled_t" - }, - { - "callback_id": 1008, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"ERegisterActivationCodeResult" }, - { "fieldname":"m_unPackageRegistered", "fieldtype":"uint32" } - ], - "struct": "RegisterActivationCodeResponse_t" - }, - { - "callback_id": 1014, - "fields": [], - "struct": "NewUrlLaunchParameters_t" - }, - { - "callback_id": 1021, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nAppID", "fieldtype":"uint32" }, - { "fieldname":"m_cchKeyLength", "fieldtype":"uint32" }, - { "fieldname":"m_rgchKey", "fieldtype":"char [240]" } - ], - "struct": "AppProofOfPurchaseKeyResponse_t" - }, - { - "callback_id": 1023, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_ulFileSize", "fieldtype":"uint64" }, - { "fieldname":"m_FileSHA", "fieldtype":"uint8 [20]" }, - { "fieldname":"m_unFlags", "fieldtype":"uint32" } - ], - "struct": "FileDetailsResult_t" - }, - { - "callback_id": 1030, - "fields": [ - { "fieldname":"m_unAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_bIsOffline", "fieldtype":"bool" }, - { "fieldname":"m_unSecondsAllowed", "fieldtype":"uint32" }, - { "fieldname":"m_unSecondsPlayed", "fieldtype":"uint32" } - ], - "struct": "TimedTrialStatus_t" - }, - { - "callback_id": 1202, - "fields": [ - { "fieldname":"m_steamIDRemote", "fieldtype":"CSteamID" } - ], - "struct": "P2PSessionRequest_t" - }, - { - "callback_id": 1203, - "fields": [ - { "fieldname":"m_steamIDRemote", "fieldtype":"CSteamID" }, - { "fieldname":"m_eP2PSessionError", "fieldtype":"uint8" } - ], - "struct": "P2PSessionConnectFail_t" - }, - { - "callback_id": 1201, - "fields": [ - { "fieldname":"m_hSocket", "fieldtype":"SNetSocket_t" }, - { "fieldname":"m_hListenSocket", "fieldtype":"SNetListenSocket_t" }, - { "fieldname":"m_steamIDRemote", "fieldtype":"CSteamID" }, - { "fieldname":"m_eSNetSocketState", "fieldtype":"int" } - ], - "struct": "SocketStatusCallback_t" - }, - { - "callback_id": 2301, - "fields": [ - { "fieldname":"m_hLocal", "fieldtype":"ScreenshotHandle" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" } - ], - "struct": "ScreenshotReady_t" - }, - { - "callback_id": 2302, - "fields": [], - "struct": "ScreenshotRequested_t" - }, - { - "callback_id": 4001, - "fields": [], - "struct": "PlaybackStatusHasChanged_t" - }, - { - "callback_id": 4002, - "fields": [ - { "fieldname":"m_flNewVolume", "fieldtype":"float" } - ], - "struct": "VolumeHasChanged_t" - }, - { - "callback_id": 4101, - "fields": [], - "struct": "MusicPlayerRemoteWillActivate_t" - }, - { - "callback_id": 4102, - "fields": [], - "struct": "MusicPlayerRemoteWillDeactivate_t" - }, - { - "callback_id": 4103, - "fields": [], - "struct": "MusicPlayerRemoteToFront_t" - }, - { - "callback_id": 4104, - "fields": [], - "struct": "MusicPlayerWillQuit_t" - }, - { - "callback_id": 4105, - "fields": [], - "struct": "MusicPlayerWantsPlay_t" - }, - { - "callback_id": 4106, - "fields": [], - "struct": "MusicPlayerWantsPause_t" - }, - { - "callback_id": 4107, - "fields": [], - "struct": "MusicPlayerWantsPlayPrevious_t" - }, - { - "callback_id": 4108, - "fields": [], - "struct": "MusicPlayerWantsPlayNext_t" - }, - { - "callback_id": 4109, - "fields": [ - { "fieldname":"m_bShuffled", "fieldtype":"bool" } - ], - "struct": "MusicPlayerWantsShuffled_t" - }, - { - "callback_id": 4110, - "fields": [ - { "fieldname":"m_bLooped", "fieldtype":"bool" } - ], - "struct": "MusicPlayerWantsLooped_t" - }, - { - "callback_id": 4011, - "fields": [ - { "fieldname":"m_flNewVolume", "fieldtype":"float" } - ], - "struct": "MusicPlayerWantsVolume_t" - }, - { - "callback_id": 4012, - "fields": [ - { "fieldname":"nID", "fieldtype":"int" } - ], - "struct": "MusicPlayerSelectsQueueEntry_t" - }, - { - "callback_id": 4013, - "fields": [ - { "fieldname":"nID", "fieldtype":"int" } - ], - "struct": "MusicPlayerSelectsPlaylistEntry_t" - }, - { - "callback_id": 4114, - "fields": [ - { "fieldname":"m_nPlayingRepeatStatus", "fieldtype":"int" } - ], - "struct": "MusicPlayerWantsPlayingRepeatStatus_t" - }, - { - "callback_id": 2101, - "fields": [ - { "fieldname":"m_hRequest", "fieldtype":"HTTPRequestHandle" }, - { "fieldname":"m_ulContextValue", "fieldtype":"uint64" }, - { "fieldname":"m_bRequestSuccessful", "fieldtype":"bool" }, - { "fieldname":"m_eStatusCode", "fieldtype":"EHTTPStatusCode" }, - { "fieldname":"m_unBodySize", "fieldtype":"uint32" } - ], - "struct": "HTTPRequestCompleted_t" - }, - { - "callback_id": 2102, - "fields": [ - { "fieldname":"m_hRequest", "fieldtype":"HTTPRequestHandle" }, - { "fieldname":"m_ulContextValue", "fieldtype":"uint64" } - ], - "struct": "HTTPRequestHeadersReceived_t" - }, - { - "callback_id": 2103, - "fields": [ - { "fieldname":"m_hRequest", "fieldtype":"HTTPRequestHandle" }, - { "fieldname":"m_ulContextValue", "fieldtype":"uint64" }, - { "fieldname":"m_cOffset", "fieldtype":"uint32" }, - { "fieldname":"m_cBytesReceived", "fieldtype":"uint32" } - ], - "struct": "HTTPRequestDataReceived_t" - }, - { - "callback_id": 3401, - "fields": [ - { "fieldname":"m_handle", "fieldtype":"UGCQueryHandle_t" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_unNumResultsReturned", "fieldtype":"uint32" }, - { "fieldname":"m_unTotalMatchingResults", "fieldtype":"uint32" }, - { "fieldname":"m_bCachedData", "fieldtype":"bool" }, - { "fieldname":"m_rgchNextCursor", "fieldtype":"char [256]" } - ], - "struct": "SteamUGCQueryCompleted_t" - }, - { - "callback_id": 3402, - "fields": [ - { "fieldname":"m_details", "fieldtype":"SteamUGCDetails_t" }, - { "fieldname":"m_bCachedData", "fieldtype":"bool" } - ], - "struct": "SteamUGCRequestUGCDetailsResult_t" - }, - { - "callback_id": 3403, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype":"bool" } - ], - "struct": "CreateItemResult_t" - }, - { - "callback_id": 3404, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype":"bool" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } - ], - "struct": "SubmitItemUpdateResult_t" - }, - { - "callback_id": 3405, - "fields": [ - { "fieldname":"m_unAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } - ], - "struct": "ItemInstalled_t" - }, - { - "callback_id": 3406, - "fields": [ - { "fieldname":"m_unAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" } - ], - "struct": "DownloadItemResult_t" - }, - { - "callback_id": 3407, - "fields": [ - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_bWasAddRequest", "fieldtype":"bool" } - ], - "struct": "UserFavoriteItemsListChanged_t" - }, - { - "callback_id": 3408, - "fields": [ - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_bVoteUp", "fieldtype":"bool" } - ], - "struct": "SetUserItemVoteResult_t" - }, - { - "callback_id": 3409, - "fields": [ - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_bVotedUp", "fieldtype":"bool" }, - { "fieldname":"m_bVotedDown", "fieldtype":"bool" }, - { "fieldname":"m_bVoteSkipped", "fieldtype":"bool" } - ], - "struct": "GetUserItemVoteResult_t" - }, - { - "callback_id": 3410, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" } - ], - "struct": "StartPlaytimeTrackingResult_t" - }, - { - "callback_id": 3411, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" } - ], - "struct": "StopPlaytimeTrackingResult_t" - }, - { - "callback_id": 3412, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_nChildPublishedFileId", "fieldtype":"PublishedFileId_t" } - ], - "struct": "AddUGCDependencyResult_t" - }, - { - "callback_id": 3413, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_nChildPublishedFileId", "fieldtype":"PublishedFileId_t" } - ], - "struct": "RemoveUGCDependencyResult_t" - }, - { - "callback_id": 3414, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } - ], - "struct": "AddAppDependencyResult_t" - }, - { - "callback_id": 3415, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } - ], - "struct": "RemoveAppDependencyResult_t" - }, - { - "callback_id": 3416, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_rgAppIDs", "fieldtype":"AppId_t [32]" }, - { "fieldname":"m_nNumAppDependencies", "fieldtype":"uint32" }, - { "fieldname":"m_nTotalNumAppDependencies", "fieldtype":"uint32" } - ], - "struct": "GetAppDependenciesResult_t" - }, - { - "callback_id": 3417, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } - ], - "struct": "DeleteItemResult_t" - }, - { - "callback_id": 3901, - "fields": [ - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } - ], - "struct": "SteamAppInstalled_t" - }, - { - "callback_id": 3902, - "fields": [ - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } - ], - "struct": "SteamAppUninstalled_t" - }, - { - "callback_id": 4501, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" } - ], - "struct": "HTML_BrowserReady_t" - }, - { - "callback_id": 4502, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"pBGRA", "fieldtype":"const char *" }, - { "fieldname":"unWide", "fieldtype":"uint32" }, - { "fieldname":"unTall", "fieldtype":"uint32" }, - { "fieldname":"unUpdateX", "fieldtype":"uint32" }, - { "fieldname":"unUpdateY", "fieldtype":"uint32" }, - { "fieldname":"unUpdateWide", "fieldtype":"uint32" }, - { "fieldname":"unUpdateTall", "fieldtype":"uint32" }, - { "fieldname":"unScrollX", "fieldtype":"uint32" }, - { "fieldname":"unScrollY", "fieldtype":"uint32" }, - { "fieldname":"flPageScale", "fieldtype":"float" }, - { "fieldname":"unPageSerial", "fieldtype":"uint32" } - ], - "struct": "HTML_NeedsPaint_t" - }, - { - "callback_id": 4503, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"pchURL", "fieldtype":"const char *" }, - { "fieldname":"pchTarget", "fieldtype":"const char *" }, - { "fieldname":"pchPostData", "fieldtype":"const char *" }, - { "fieldname":"bIsRedirect", "fieldtype":"bool" } - ], - "struct": "HTML_StartRequest_t" - }, - { - "callback_id": 4504, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" } - ], - "struct": "HTML_CloseBrowser_t" - }, - { - "callback_id": 4505, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"pchURL", "fieldtype":"const char *" }, - { "fieldname":"pchPostData", "fieldtype":"const char *" }, - { "fieldname":"bIsRedirect", "fieldtype":"bool" }, - { "fieldname":"pchPageTitle", "fieldtype":"const char *" }, - { "fieldname":"bNewNavigation", "fieldtype":"bool" } - ], - "struct": "HTML_URLChanged_t" - }, - { - "callback_id": 4506, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"pchURL", "fieldtype":"const char *" }, - { "fieldname":"pchPageTitle", "fieldtype":"const char *" } - ], - "struct": "HTML_FinishedRequest_t" - }, - { - "callback_id": 4507, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"pchURL", "fieldtype":"const char *" } - ], - "struct": "HTML_OpenLinkInNewTab_t" - }, - { - "callback_id": 4508, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"pchTitle", "fieldtype":"const char *" } - ], - "struct": "HTML_ChangedTitle_t" - }, - { - "callback_id": 4509, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"unResults", "fieldtype":"uint32" }, - { "fieldname":"unCurrentMatch", "fieldtype":"uint32" } - ], - "struct": "HTML_SearchResults_t" - }, - { - "callback_id": 4510, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"bCanGoBack", "fieldtype":"bool" }, - { "fieldname":"bCanGoForward", "fieldtype":"bool" } - ], - "struct": "HTML_CanGoBackAndForward_t" - }, - { - "callback_id": 4511, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"unScrollMax", "fieldtype":"uint32" }, - { "fieldname":"unScrollCurrent", "fieldtype":"uint32" }, - { "fieldname":"flPageScale", "fieldtype":"float" }, - { "fieldname":"bVisible", "fieldtype":"bool" }, - { "fieldname":"unPageSize", "fieldtype":"uint32" } - ], - "struct": "HTML_HorizontalScroll_t" - }, - { - "callback_id": 4512, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"unScrollMax", "fieldtype":"uint32" }, - { "fieldname":"unScrollCurrent", "fieldtype":"uint32" }, - { "fieldname":"flPageScale", "fieldtype":"float" }, - { "fieldname":"bVisible", "fieldtype":"bool" }, - { "fieldname":"unPageSize", "fieldtype":"uint32" } - ], - "struct": "HTML_VerticalScroll_t" - }, - { - "callback_id": 4513, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"x", "fieldtype":"uint32" }, - { "fieldname":"y", "fieldtype":"uint32" }, - { "fieldname":"pchURL", "fieldtype":"const char *" }, - { "fieldname":"bInput", "fieldtype":"bool" }, - { "fieldname":"bLiveLink", "fieldtype":"bool" } - ], - "struct": "HTML_LinkAtPosition_t" - }, - { - "callback_id": 4514, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"pchMessage", "fieldtype":"const char *" } - ], - "struct": "HTML_JSAlert_t" - }, - { - "callback_id": 4515, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"pchMessage", "fieldtype":"const char *" } - ], - "struct": "HTML_JSConfirm_t" - }, - { - "callback_id": 4516, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"pchTitle", "fieldtype":"const char *" }, - { "fieldname":"pchInitialFile", "fieldtype":"const char *" } - ], - "struct": "HTML_FileOpenDialog_t" - }, - { - "callback_id": 4521, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"pchURL", "fieldtype":"const char *" }, - { "fieldname":"unX", "fieldtype":"uint32" }, - { "fieldname":"unY", "fieldtype":"uint32" }, - { "fieldname":"unWide", "fieldtype":"uint32" }, - { "fieldname":"unTall", "fieldtype":"uint32" }, - { "fieldname":"unNewWindow_BrowserHandle_IGNORE", "fieldtype":"HHTMLBrowser" } - ], - "struct": "HTML_NewWindow_t" - }, - { - "callback_id": 4522, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"eMouseCursor", "fieldtype":"uint32" } - ], - "struct": "HTML_SetCursor_t" - }, - { - "callback_id": 4523, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"pchMsg", "fieldtype":"const char *" } - ], - "struct": "HTML_StatusText_t" - }, - { - "callback_id": 4524, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"pchMsg", "fieldtype":"const char *" } - ], - "struct": "HTML_ShowToolTip_t" - }, - { - "callback_id": 4525, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"pchMsg", "fieldtype":"const char *" } - ], - "struct": "HTML_UpdateToolTip_t" - }, - { - "callback_id": 4526, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" } - ], - "struct": "HTML_HideToolTip_t" - }, - { - "callback_id": 4527, - "fields": [ - { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, - { "fieldname":"unOldBrowserHandle", "fieldtype":"HHTMLBrowser" } - ], - "struct": "HTML_BrowserRestarted_t" - }, - { - "callback_id": 4700, - "fields": [ - { "fieldname":"m_handle", "fieldtype":"SteamInventoryResult_t" }, - { "fieldname":"m_result", "fieldtype":"EResult" } - ], - "struct": "SteamInventoryResultReady_t" - }, - { - "callback_id": 4701, - "fields": [ - { "fieldname":"m_handle", "fieldtype":"SteamInventoryResult_t" } - ], - "struct": "SteamInventoryFullUpdate_t" - }, - { - "callback_id": 4702, - "fields": [], - "struct": "SteamInventoryDefinitionUpdate_t" - }, - { - "callback_id": 4703, - "fields": [ - { "fieldname":"m_result", "fieldtype":"EResult" }, - { "fieldname":"m_steamID", "fieldtype":"CSteamID" }, - { "fieldname":"m_numEligiblePromoItemDefs", "fieldtype":"int" }, - { "fieldname":"m_bCachedData", "fieldtype":"bool" } - ], - "struct": "SteamInventoryEligiblePromoItemDefIDs_t" - }, - { - "callback_id": 4704, - "fields": [ - { "fieldname":"m_result", "fieldtype":"EResult" }, - { "fieldname":"m_ulOrderID", "fieldtype":"uint64" }, - { "fieldname":"m_ulTransID", "fieldtype":"uint64" } - ], - "struct": "SteamInventoryStartPurchaseResult_t" - }, - { - "callback_id": 4705, - "fields": [ - { "fieldname":"m_result", "fieldtype":"EResult" }, - { "fieldname":"m_rgchCurrency", "fieldtype":"char [4]" } - ], - "struct": "SteamInventoryRequestPricesResult_t" - }, - { - "callback_id": 4611, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_unVideoAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_rgchURL", "fieldtype":"char [256]" } - ], - "struct": "GetVideoURLResult_t" - }, - { - "callback_id": 4624, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_unVideoAppID", "fieldtype":"AppId_t" } - ], - "struct": "GetOPFSettingsResult_t" - }, - { - "callback_id": 5001, - "fields": [], - "struct": "SteamParentalSettingsChanged_t" - }, - { - "callback_id": 5701, - "fields": [ - { "fieldname":"m_unSessionID", "fieldtype":"RemotePlaySessionID_t" } - ], - "struct": "SteamRemotePlaySessionConnected_t" - }, - { - "callback_id": 5702, - "fields": [ - { "fieldname":"m_unSessionID", "fieldtype":"RemotePlaySessionID_t" } - ], - "struct": "SteamRemotePlaySessionDisconnected_t" - }, - { - "callback_id": 1251, - "fields": [ - { "fieldname":"m_identityRemote", "fieldtype":"SteamNetworkingIdentity" } - ], - "struct": "SteamNetworkingMessagesSessionRequest_t" - }, - { - "callback_id": 1252, - "fields": [ - { "fieldname":"m_info", "fieldtype":"SteamNetConnectionInfo_t" } - ], - "struct": "SteamNetworkingMessagesSessionFailed_t" - }, - { - "callback_id": 1221, - "fields": [ - { "fieldname":"m_hConn", "fieldtype":"HSteamNetConnection" }, - { "fieldname":"m_info", "fieldtype":"SteamNetConnectionInfo_t" }, - { "fieldname":"m_eOldState", "fieldtype":"ESteamNetworkingConnectionState" } - ], - "struct": "SteamNetConnectionStatusChangedCallback_t" - }, - { - "callback_id": 1222, - "fields": [ - { "fieldname":"m_eAvail", "fieldtype":"ESteamNetworkingAvailability" }, - { "fieldname":"m_debugMsg", "fieldtype":"char [256]" } - ], - "struct": "SteamNetAuthenticationStatus_t" - }, - { - "callback_id": 1281, - "fields": [ - { "fieldname":"m_eAvail", "fieldtype":"ESteamNetworkingAvailability" }, - { "fieldname":"m_bPingMeasurementInProgress", "fieldtype":"int" }, - { "fieldname":"m_eAvailNetworkConfig", "fieldtype":"ESteamNetworkingAvailability" }, - { "fieldname":"m_eAvailAnyRelay", "fieldtype":"ESteamNetworkingAvailability" }, - { "fieldname":"m_debugMsg", "fieldtype":"char [256]" } - ], - "struct": "SteamRelayNetworkStatus_t" - }, - { - "callback_id": 201, - "fields": [ - { "fieldname":"m_SteamID", "fieldtype":"CSteamID" }, - { "fieldname":"m_OwnerSteamID", "fieldtype":"CSteamID" } - ], - "struct": "GSClientApprove_t" - }, - { - "callback_id": 202, - "fields": [ - { "fieldname":"m_SteamID", "fieldtype":"CSteamID" }, - { "fieldname":"m_eDenyReason", "fieldtype":"EDenyReason" }, - { "fieldname":"m_rgchOptionalText", "fieldtype":"char [128]" } - ], - "struct": "GSClientDeny_t" - }, - { - "callback_id": 203, - "fields": [ - { "fieldname":"m_SteamID", "fieldtype":"CSteamID" }, - { "fieldname":"m_eDenyReason", "fieldtype":"EDenyReason" } - ], - "struct": "GSClientKick_t" - }, - { - "callback_id": 206, - "fields": [ - { "fieldname":"m_SteamID", "fieldtype":"uint64" }, - { "fieldname":"m_pchAchievement", "fieldtype":"char [128]" }, - { "fieldname":"m_bUnlocked", "fieldtype":"bool" } - ], - "struct": "GSClientAchievementStatus_t" - }, - { - "callback_id": 115, - "fields": [ - { "fieldname":"m_bSecure", "fieldtype":"uint8" } - ], - "struct": "GSPolicyResponse_t" - }, - { - "callback_id": 207, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_nRank", "fieldtype":"int32" }, - { "fieldname":"m_unTotalConnects", "fieldtype":"uint32" }, - { "fieldname":"m_unTotalMinutesPlayed", "fieldtype":"uint32" } - ], - "struct": "GSGameplayStats_t" - }, - { - "callback_id": 208, - "fields": [ - { "fieldname":"m_SteamIDUser", "fieldtype":"CSteamID" }, - { "fieldname":"m_SteamIDGroup", "fieldtype":"CSteamID" }, - { "fieldname":"m_bMember", "fieldtype":"bool" }, - { "fieldname":"m_bOfficer", "fieldtype":"bool" } - ], - "struct": "GSClientGroupStatus_t" - }, - { - "callback_id": 209, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_unReputationScore", "fieldtype":"uint32" }, - { "fieldname":"m_bBanned", "fieldtype":"bool" }, - { "fieldname":"m_unBannedIP", "fieldtype":"uint32" }, - { "fieldname":"m_usBannedPort", "fieldtype":"uint16" }, - { "fieldname":"m_ulBannedGameID", "fieldtype":"uint64" }, - { "fieldname":"m_unBanExpires", "fieldtype":"uint32" } - ], - "struct": "GSReputation_t" - }, - { - "callback_id": 210, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" } - ], - "struct": "AssociateWithClanResult_t" - }, - { - "callback_id": 211, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_cPlayersThatDontLikeCandidate", "fieldtype":"int" }, - { "fieldname":"m_cPlayersThatCandidateDoesntLike", "fieldtype":"int" }, - { "fieldname":"m_cClanPlayersThatDontLikeCandidate", "fieldtype":"int" }, - { "fieldname":"m_SteamIDCandidate", "fieldtype":"CSteamID" } - ], - "struct": "ComputeNewPlayerCompatibilityResult_t" - }, - { - "callback_id": 1800, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } - ], - "struct": "GSStatsReceived_t" - }, - { - "callback_id": 1801, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } - ], - "struct": "GSStatsStored_t" - }, - { - "callback_id": 1108, - "fields": [ - { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } - ], - "struct": "GSStatsUnloaded_t" - } - ], - "consts": [ - { "constname":"k_cubSaltSize", "consttype":"int", "constval":"8" }, - { "constname":"k_GIDNil", "consttype":"GID_t", "constval":"0xffffffffffffffffull" }, - { "constname":"k_TxnIDNil", "consttype":"GID_t", "constval":"k_GIDNil" }, - { "constname":"k_TxnIDUnknown", "consttype":"GID_t", "constval":"0" }, - { "constname":"k_JobIDNil", "consttype":"JobID_t", "constval":"0xffffffffffffffffull" }, - { "constname":"k_uPackageIdInvalid", "consttype":"PackageId_t", "constval":"0xFFFFFFFF" }, - { "constname":"k_uBundleIdInvalid", "consttype":"BundleId_t", "constval":"0" }, - { "constname":"k_uAppIdInvalid", "consttype":"AppId_t", "constval":"0x0" }, - { "constname":"k_ulAssetClassIdInvalid", "consttype":"AssetClassId_t", "constval":"0x0" }, - { "constname":"k_uPhysicalItemIdInvalid", "consttype":"PhysicalItemId_t", "constval":"0x0" }, - { "constname":"k_uDepotIdInvalid", "consttype":"DepotId_t", "constval":"0x0" }, - { "constname":"k_uCellIDInvalid", "consttype":"CellID_t", "constval":"0xFFFFFFFF" }, - { "constname":"k_uAPICallInvalid", "consttype":"SteamAPICall_t", "constval":"0x0" }, - { "constname":"k_uPartnerIdInvalid", "consttype":"PartnerId_t", "constval":"0" }, - { "constname":"k_uManifestIdInvalid", "consttype":"ManifestId_t", "constval":"0" }, - { "constname":"k_ulSiteIdInvalid", "consttype":"SiteId_t", "constval":"0" }, - { "constname":"k_ulPartyBeaconIdInvalid", "consttype":"PartyBeaconID_t", "constval":"0" }, - { "constname":"k_HAuthTicketInvalid", "consttype":"HAuthTicket", "constval":"0" }, - { "constname":"k_unSteamAccountIDMask", "consttype":"unsigned int", "constval":"0xFFFFFFFF" }, - { "constname":"k_unSteamAccountInstanceMask", "consttype":"unsigned int", "constval":"0x000FFFFF" }, - { "constname":"k_unSteamUserDefaultInstance", "consttype":"unsigned int", "constval":"1" }, - { "constname":"k_cchGameExtraInfoMax", "consttype":"int", "constval":"64" }, - { "constname":"k_cchMaxFriendsGroupName", "consttype":"int", "constval":"64" }, - { "constname":"k_cFriendsGroupLimit", "consttype":"int", "constval":"100" }, - { "constname":"k_FriendsGroupID_Invalid", "consttype":"FriendsGroupID_t", "constval":"- 1" }, - { "constname":"k_cEnumerateFollowersMax", "consttype":"int", "constval":"50" }, - { "constname":"k_cubChatMetadataMax", "consttype":"uint32", "constval":"8192" }, - { "constname":"k_cbMaxGameServerGameDir", "consttype":"int", "constval":"32" }, - { "constname":"k_cbMaxGameServerMapName", "consttype":"int", "constval":"32" }, - { "constname":"k_cbMaxGameServerGameDescription", "consttype":"int", "constval":"64" }, - { "constname":"k_cbMaxGameServerName", "consttype":"int", "constval":"64" }, - { "constname":"k_cbMaxGameServerTags", "consttype":"int", "constval":"128" }, - { "constname":"k_cbMaxGameServerGameData", "consttype":"int", "constval":"2048" }, - { "constname":"HSERVERQUERY_INVALID", "consttype":"int", "constval":"0xffffffff" }, - { "constname":"k_unFavoriteFlagNone", "consttype":"uint32", "constval":"0x00" }, - { "constname":"k_unFavoriteFlagFavorite", "consttype":"uint32", "constval":"0x01" }, - { "constname":"k_unFavoriteFlagHistory", "consttype":"uint32", "constval":"0x02" }, - { "constname":"k_unMaxCloudFileChunkSize", "consttype":"uint32", "constval":"100 * 1024 * 1024" }, - { "constname":"k_PublishedFileIdInvalid", "consttype":"PublishedFileId_t", "constval":"0" }, - { "constname":"k_UGCHandleInvalid", "consttype":"UGCHandle_t", "constval":"0xffffffffffffffffull" }, - { "constname":"k_PublishedFileUpdateHandleInvalid", "consttype":"PublishedFileUpdateHandle_t", "constval":"0xffffffffffffffffull" }, - { "constname":"k_UGCFileStreamHandleInvalid", "consttype":"UGCFileWriteStreamHandle_t", "constval":"0xffffffffffffffffull" }, - { "constname":"k_cchPublishedDocumentTitleMax", "consttype":"uint32", "constval":"128 + 1" }, - { "constname":"k_cchPublishedDocumentDescriptionMax", "consttype":"uint32", "constval":"8000" }, - { "constname":"k_cchPublishedDocumentChangeDescriptionMax", "consttype":"uint32", "constval":"8000" }, - { "constname":"k_unEnumeratePublishedFilesMaxResults", "consttype":"uint32", "constval":"50" }, - { "constname":"k_cchTagListMax", "consttype":"uint32", "constval":"1024 + 1" }, - { "constname":"k_cchFilenameMax", "consttype":"uint32", "constval":"260" }, - { "constname":"k_cchPublishedFileURLMax", "consttype":"uint32", "constval":"256" }, - { "constname":"k_cubAppProofOfPurchaseKeyMax", "consttype":"int", "constval":"240" }, - { "constname":"k_nScreenshotMaxTaggedUsers", "consttype":"uint32", "constval":"32" }, - { "constname":"k_nScreenshotMaxTaggedPublishedFiles", "consttype":"uint32", "constval":"32" }, - { "constname":"k_cubUFSTagTypeMax", "consttype":"int", "constval":"255" }, - { "constname":"k_cubUFSTagValueMax", "consttype":"int", "constval":"255" }, - { "constname":"k_ScreenshotThumbWidth", "consttype":"int", "constval":"200" }, - { "constname":"k_UGCQueryHandleInvalid", "consttype":"UGCQueryHandle_t", "constval":"0xffffffffffffffffull" }, - { "constname":"k_UGCUpdateHandleInvalid", "consttype":"UGCUpdateHandle_t", "constval":"0xffffffffffffffffull" }, - { "constname":"kNumUGCResultsPerPage", "consttype":"uint32", "constval":"50" }, - { "constname":"k_cchDeveloperMetadataMax", "consttype":"uint32", "constval":"5000" }, - { "constname":"INVALID_HTMLBROWSER", "consttype":"uint32", "constval":"0" }, - { "constname":"k_SteamItemInstanceIDInvalid", "consttype":"SteamItemInstanceID_t", "constval":"( SteamItemInstanceID_t ) ~ 0" }, - { "constname":"k_SteamInventoryResultInvalid", "consttype":"SteamInventoryResult_t", "constval":"- 1" }, - { "constname":"k_SteamInventoryUpdateHandleInvalid", "consttype":"SteamInventoryUpdateHandle_t", "constval":"0xffffffffffffffffull" }, - { "constname":"k_HSteamNetConnection_Invalid", "consttype":"HSteamNetConnection", "constval":"0" }, - { "constname":"k_HSteamListenSocket_Invalid", "consttype":"HSteamListenSocket", "constval":"0" }, - { "constname":"k_HSteamNetPollGroup_Invalid", "consttype":"HSteamNetPollGroup", "constval":"0" }, - { "constname":"k_cchMaxSteamNetworkingErrMsg", "consttype":"int", "constval":"1024" }, - { "constname":"k_cchSteamNetworkingMaxConnectionCloseReason", "consttype":"int", "constval":"128" }, - { "constname":"k_cchSteamNetworkingMaxConnectionDescription", "consttype":"int", "constval":"128" }, - { "constname":"k_cbMaxSteamNetworkingSocketsMessageSizeSend", "consttype":"int", "constval":"512 * 1024" }, - { "constname":"k_nSteamNetworkingSend_Unreliable", "consttype":"int", "constval":"0" }, - { "constname":"k_nSteamNetworkingSend_NoNagle", "consttype":"int", "constval":"1" }, - { "constname":"k_nSteamNetworkingSend_UnreliableNoNagle", "consttype":"int", "constval":"k_nSteamNetworkingSend_Unreliable | k_nSteamNetworkingSend_NoNagle" }, - { "constname":"k_nSteamNetworkingSend_NoDelay", "consttype":"int", "constval":"4" }, - { "constname":"k_nSteamNetworkingSend_UnreliableNoDelay", "consttype":"int", "constval":"k_nSteamNetworkingSend_Unreliable | k_nSteamNetworkingSend_NoDelay | k_nSteamNetworkingSend_NoNagle" }, - { "constname":"k_nSteamNetworkingSend_Reliable", "consttype":"int", "constval":"8" }, - { "constname":"k_nSteamNetworkingSend_ReliableNoNagle", "consttype":"int", "constval":"k_nSteamNetworkingSend_Reliable | k_nSteamNetworkingSend_NoNagle" }, - { "constname":"k_nSteamNetworkingSend_UseCurrentThread", "consttype":"int", "constval":"16" }, - { "constname":"k_nSteamNetworkingSend_AutoRestartBrokenSession", "consttype":"int", "constval":"32" }, - { "constname":"k_cchMaxSteamNetworkingPingLocationString", "consttype":"int", "constval":"1024" }, - { "constname":"k_nSteamNetworkingPing_Failed", "consttype":"int", "constval":"- 1" }, - { "constname":"k_nSteamNetworkingPing_Unknown", "consttype":"int", "constval":"- 2" }, - { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Default", "consttype":"int", "constval":"- 1" }, - { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Disable", "consttype":"int", "constval":"0" }, - { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Relay", "consttype":"int", "constval":"1" }, - { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Private", "consttype":"int", "constval":"2" }, - { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Public", "consttype":"int", "constval":"4" }, - { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_All", "consttype":"int", "constval":"0x7fffffff" }, - { "constname":"k_SteamDatagramPOPID_dev", "consttype":"SteamNetworkingPOPID", "constval":"( ( uint32 ) 'd' << 16U ) | ( ( uint32 ) 'e' << 8U ) | ( uint32 ) 'v'" }, - { "constname":"k_cbSteamDatagramMaxSerializedTicket", "consttype":"uint32", "constval":"512" }, - { "constname":"k_cbMaxSteamDatagramGameCoordinatorServerLoginAppData", "consttype":"uint32", "constval":"2048" }, - { "constname":"k_cbMaxSteamDatagramGameCoordinatorServerLoginSerialized", "consttype":"uint32", "constval":"4096" } - ], - "enums": [ - { - "enumname": "ESteamIPType", - "values": [ - { "name":"k_ESteamIPTypeIPv4", "value":"0" }, - { "name":"k_ESteamIPTypeIPv6", "value":"1" } - ] - }, - { - "enumname": "EUniverse", - "values": [ - { "name":"k_EUniverseInvalid", "value":"0" }, - { "name":"k_EUniversePublic", "value":"1" }, - { "name":"k_EUniverseBeta", "value":"2" }, - { "name":"k_EUniverseInternal", "value":"3" }, - { "name":"k_EUniverseDev", "value":"4" }, - { "name":"k_EUniverseMax", "value":"5" } - ] - }, - { - "enumname": "EResult", - "values": [ - { "name":"k_EResultNone", "value":"0" }, - { "name":"k_EResultOK", "value":"1" }, - { "name":"k_EResultFail", "value":"2" }, - { "name":"k_EResultNoConnection", "value":"3" }, - { "name":"k_EResultInvalidPassword", "value":"5" }, - { "name":"k_EResultLoggedInElsewhere", "value":"6" }, - { "name":"k_EResultInvalidProtocolVer", "value":"7" }, - { "name":"k_EResultInvalidParam", "value":"8" }, - { "name":"k_EResultFileNotFound", "value":"9" }, - { "name":"k_EResultBusy", "value":"10" }, - { "name":"k_EResultInvalidState", "value":"11" }, - { "name":"k_EResultInvalidName", "value":"12" }, - { "name":"k_EResultInvalidEmail", "value":"13" }, - { "name":"k_EResultDuplicateName", "value":"14" }, - { "name":"k_EResultAccessDenied", "value":"15" }, - { "name":"k_EResultTimeout", "value":"16" }, - { "name":"k_EResultBanned", "value":"17" }, - { "name":"k_EResultAccountNotFound", "value":"18" }, - { "name":"k_EResultInvalidSteamID", "value":"19" }, - { "name":"k_EResultServiceUnavailable", "value":"20" }, - { "name":"k_EResultNotLoggedOn", "value":"21" }, - { "name":"k_EResultPending", "value":"22" }, - { "name":"k_EResultEncryptionFailure", "value":"23" }, - { "name":"k_EResultInsufficientPrivilege", "value":"24" }, - { "name":"k_EResultLimitExceeded", "value":"25" }, - { "name":"k_EResultRevoked", "value":"26" }, - { "name":"k_EResultExpired", "value":"27" }, - { "name":"k_EResultAlreadyRedeemed", "value":"28" }, - { "name":"k_EResultDuplicateRequest", "value":"29" }, - { "name":"k_EResultAlreadyOwned", "value":"30" }, - { "name":"k_EResultIPNotFound", "value":"31" }, - { "name":"k_EResultPersistFailed", "value":"32" }, - { "name":"k_EResultLockingFailed", "value":"33" }, - { "name":"k_EResultLogonSessionReplaced", "value":"34" }, - { "name":"k_EResultConnectFailed", "value":"35" }, - { "name":"k_EResultHandshakeFailed", "value":"36" }, - { "name":"k_EResultIOFailure", "value":"37" }, - { "name":"k_EResultRemoteDisconnect", "value":"38" }, - { "name":"k_EResultShoppingCartNotFound", "value":"39" }, - { "name":"k_EResultBlocked", "value":"40" }, - { "name":"k_EResultIgnored", "value":"41" }, - { "name":"k_EResultNoMatch", "value":"42" }, - { "name":"k_EResultAccountDisabled", "value":"43" }, - { "name":"k_EResultServiceReadOnly", "value":"44" }, - { "name":"k_EResultAccountNotFeatured", "value":"45" }, - { "name":"k_EResultAdministratorOK", "value":"46" }, - { "name":"k_EResultContentVersion", "value":"47" }, - { "name":"k_EResultTryAnotherCM", "value":"48" }, - { "name":"k_EResultPasswordRequiredToKickSession", "value":"49" }, - { "name":"k_EResultAlreadyLoggedInElsewhere", "value":"50" }, - { "name":"k_EResultSuspended", "value":"51" }, - { "name":"k_EResultCancelled", "value":"52" }, - { "name":"k_EResultDataCorruption", "value":"53" }, - { "name":"k_EResultDiskFull", "value":"54" }, - { "name":"k_EResultRemoteCallFailed", "value":"55" }, - { "name":"k_EResultPasswordUnset", "value":"56" }, - { "name":"k_EResultExternalAccountUnlinked", "value":"57" }, - { "name":"k_EResultPSNTicketInvalid", "value":"58" }, - { "name":"k_EResultExternalAccountAlreadyLinked", "value":"59" }, - { "name":"k_EResultRemoteFileConflict", "value":"60" }, - { "name":"k_EResultIllegalPassword", "value":"61" }, - { "name":"k_EResultSameAsPreviousValue", "value":"62" }, - { "name":"k_EResultAccountLogonDenied", "value":"63" }, - { "name":"k_EResultCannotUseOldPassword", "value":"64" }, - { "name":"k_EResultInvalidLoginAuthCode", "value":"65" }, - { "name":"k_EResultAccountLogonDeniedNoMail", "value":"66" }, - { "name":"k_EResultHardwareNotCapableOfIPT", "value":"67" }, - { "name":"k_EResultIPTInitError", "value":"68" }, - { "name":"k_EResultParentalControlRestricted", "value":"69" }, - { "name":"k_EResultFacebookQueryError", "value":"70" }, - { "name":"k_EResultExpiredLoginAuthCode", "value":"71" }, - { "name":"k_EResultIPLoginRestrictionFailed", "value":"72" }, - { "name":"k_EResultAccountLockedDown", "value":"73" }, - { "name":"k_EResultAccountLogonDeniedVerifiedEmailRequired", "value":"74" }, - { "name":"k_EResultNoMatchingURL", "value":"75" }, - { "name":"k_EResultBadResponse", "value":"76" }, - { "name":"k_EResultRequirePasswordReEntry", "value":"77" }, - { "name":"k_EResultValueOutOfRange", "value":"78" }, - { "name":"k_EResultUnexpectedError", "value":"79" }, - { "name":"k_EResultDisabled", "value":"80" }, - { "name":"k_EResultInvalidCEGSubmission", "value":"81" }, - { "name":"k_EResultRestrictedDevice", "value":"82" }, - { "name":"k_EResultRegionLocked", "value":"83" }, - { "name":"k_EResultRateLimitExceeded", "value":"84" }, - { "name":"k_EResultAccountLoginDeniedNeedTwoFactor", "value":"85" }, - { "name":"k_EResultItemDeleted", "value":"86" }, - { "name":"k_EResultAccountLoginDeniedThrottle", "value":"87" }, - { "name":"k_EResultTwoFactorCodeMismatch", "value":"88" }, - { "name":"k_EResultTwoFactorActivationCodeMismatch", "value":"89" }, - { "name":"k_EResultAccountAssociatedToMultiplePartners", "value":"90" }, - { "name":"k_EResultNotModified", "value":"91" }, - { "name":"k_EResultNoMobileDevice", "value":"92" }, - { "name":"k_EResultTimeNotSynced", "value":"93" }, - { "name":"k_EResultSmsCodeFailed", "value":"94" }, - { "name":"k_EResultAccountLimitExceeded", "value":"95" }, - { "name":"k_EResultAccountActivityLimitExceeded", "value":"96" }, - { "name":"k_EResultPhoneActivityLimitExceeded", "value":"97" }, - { "name":"k_EResultRefundToWallet", "value":"98" }, - { "name":"k_EResultEmailSendFailure", "value":"99" }, - { "name":"k_EResultNotSettled", "value":"100" }, - { "name":"k_EResultNeedCaptcha", "value":"101" }, - { "name":"k_EResultGSLTDenied", "value":"102" }, - { "name":"k_EResultGSOwnerDenied", "value":"103" }, - { "name":"k_EResultInvalidItemType", "value":"104" }, - { "name":"k_EResultIPBanned", "value":"105" }, - { "name":"k_EResultGSLTExpired", "value":"106" }, - { "name":"k_EResultInsufficientFunds", "value":"107" }, - { "name":"k_EResultTooManyPending", "value":"108" }, - { "name":"k_EResultNoSiteLicensesFound", "value":"109" }, - { "name":"k_EResultWGNetworkSendExceeded", "value":"110" }, - { "name":"k_EResultAccountNotFriends", "value":"111" }, - { "name":"k_EResultLimitedUserAccount", "value":"112" }, - { "name":"k_EResultCantRemoveItem", "value":"113" }, - { "name":"k_EResultAccountDeleted", "value":"114" }, - { "name":"k_EResultExistingUserCancelledLicense", "value":"115" }, - { "name":"k_EResultCommunityCooldown", "value":"116" }, - { "name":"k_EResultNoLauncherSpecified", "value":"117" }, - { "name":"k_EResultMustAgreeToSSA", "value":"118" }, - { "name":"k_EResultLauncherMigrated", "value":"119" } - ] - }, - { - "enumname": "EVoiceResult", - "values": [ - { "name":"k_EVoiceResultOK", "value":"0" }, - { "name":"k_EVoiceResultNotInitialized", "value":"1" }, - { "name":"k_EVoiceResultNotRecording", "value":"2" }, - { "name":"k_EVoiceResultNoData", "value":"3" }, - { "name":"k_EVoiceResultBufferTooSmall", "value":"4" }, - { "name":"k_EVoiceResultDataCorrupted", "value":"5" }, - { "name":"k_EVoiceResultRestricted", "value":"6" }, - { "name":"k_EVoiceResultUnsupportedCodec", "value":"7" }, - { "name":"k_EVoiceResultReceiverOutOfDate", "value":"8" }, - { "name":"k_EVoiceResultReceiverDidNotAnswer", "value":"9" } - ] - }, - { - "enumname": "EDenyReason", - "values": [ - { "name":"k_EDenyInvalid", "value":"0" }, - { "name":"k_EDenyInvalidVersion", "value":"1" }, - { "name":"k_EDenyGeneric", "value":"2" }, - { "name":"k_EDenyNotLoggedOn", "value":"3" }, - { "name":"k_EDenyNoLicense", "value":"4" }, - { "name":"k_EDenyCheater", "value":"5" }, - { "name":"k_EDenyLoggedInElseWhere", "value":"6" }, - { "name":"k_EDenyUnknownText", "value":"7" }, - { "name":"k_EDenyIncompatibleAnticheat", "value":"8" }, - { "name":"k_EDenyMemoryCorruption", "value":"9" }, - { "name":"k_EDenyIncompatibleSoftware", "value":"10" }, - { "name":"k_EDenySteamConnectionLost", "value":"11" }, - { "name":"k_EDenySteamConnectionError", "value":"12" }, - { "name":"k_EDenySteamResponseTimedOut", "value":"13" }, - { "name":"k_EDenySteamValidationStalled", "value":"14" }, - { "name":"k_EDenySteamOwnerLeftGuestUser", "value":"15" } - ] - }, - { - "enumname": "EBeginAuthSessionResult", - "values": [ - { "name":"k_EBeginAuthSessionResultOK", "value":"0" }, - { "name":"k_EBeginAuthSessionResultInvalidTicket", "value":"1" }, - { "name":"k_EBeginAuthSessionResultDuplicateRequest", "value":"2" }, - { "name":"k_EBeginAuthSessionResultInvalidVersion", "value":"3" }, - { "name":"k_EBeginAuthSessionResultGameMismatch", "value":"4" }, - { "name":"k_EBeginAuthSessionResultExpiredTicket", "value":"5" } - ] - }, - { - "enumname": "EAuthSessionResponse", - "values": [ - { "name":"k_EAuthSessionResponseOK", "value":"0" }, - { "name":"k_EAuthSessionResponseUserNotConnectedToSteam", "value":"1" }, - { "name":"k_EAuthSessionResponseNoLicenseOrExpired", "value":"2" }, - { "name":"k_EAuthSessionResponseVACBanned", "value":"3" }, - { "name":"k_EAuthSessionResponseLoggedInElseWhere", "value":"4" }, - { "name":"k_EAuthSessionResponseVACCheckTimedOut", "value":"5" }, - { "name":"k_EAuthSessionResponseAuthTicketCanceled", "value":"6" }, - { "name":"k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed", "value":"7" }, - { "name":"k_EAuthSessionResponseAuthTicketInvalid", "value":"8" }, - { "name":"k_EAuthSessionResponsePublisherIssuedBan", "value":"9" } - ] - }, - { - "enumname": "EUserHasLicenseForAppResult", - "values": [ - { "name":"k_EUserHasLicenseResultHasLicense", "value":"0" }, - { "name":"k_EUserHasLicenseResultDoesNotHaveLicense", "value":"1" }, - { "name":"k_EUserHasLicenseResultNoAuth", "value":"2" } - ] - }, - { - "enumname": "EAccountType", - "values": [ - { "name":"k_EAccountTypeInvalid", "value":"0" }, - { "name":"k_EAccountTypeIndividual", "value":"1" }, - { "name":"k_EAccountTypeMultiseat", "value":"2" }, - { "name":"k_EAccountTypeGameServer", "value":"3" }, - { "name":"k_EAccountTypeAnonGameServer", "value":"4" }, - { "name":"k_EAccountTypePending", "value":"5" }, - { "name":"k_EAccountTypeContentServer", "value":"6" }, - { "name":"k_EAccountTypeClan", "value":"7" }, - { "name":"k_EAccountTypeChat", "value":"8" }, - { "name":"k_EAccountTypeConsoleUser", "value":"9" }, - { "name":"k_EAccountTypeAnonUser", "value":"10" }, - { "name":"k_EAccountTypeMax", "value":"11" } - ] - }, - { - "enumname": "EAppReleaseState", - "values": [ - { "name":"k_EAppReleaseState_Unknown", "value":"0" }, - { "name":"k_EAppReleaseState_Unavailable", "value":"1" }, - { "name":"k_EAppReleaseState_Prerelease", "value":"2" }, - { "name":"k_EAppReleaseState_PreloadOnly", "value":"3" }, - { "name":"k_EAppReleaseState_Released", "value":"4" } - ] - }, - { - "enumname": "EAppOwnershipFlags", - "values": [ - { "name":"k_EAppOwnershipFlags_None", "value":"0" }, - { "name":"k_EAppOwnershipFlags_OwnsLicense", "value":"1" }, - { "name":"k_EAppOwnershipFlags_FreeLicense", "value":"2" }, - { "name":"k_EAppOwnershipFlags_RegionRestricted", "value":"4" }, - { "name":"k_EAppOwnershipFlags_LowViolence", "value":"8" }, - { "name":"k_EAppOwnershipFlags_InvalidPlatform", "value":"16" }, - { "name":"k_EAppOwnershipFlags_SharedLicense", "value":"32" }, - { "name":"k_EAppOwnershipFlags_FreeWeekend", "value":"64" }, - { "name":"k_EAppOwnershipFlags_RetailLicense", "value":"128" }, - { "name":"k_EAppOwnershipFlags_LicenseLocked", "value":"256" }, - { "name":"k_EAppOwnershipFlags_LicensePending", "value":"512" }, - { "name":"k_EAppOwnershipFlags_LicenseExpired", "value":"1024" }, - { "name":"k_EAppOwnershipFlags_LicensePermanent", "value":"2048" }, - { "name":"k_EAppOwnershipFlags_LicenseRecurring", "value":"4096" }, - { "name":"k_EAppOwnershipFlags_LicenseCanceled", "value":"8192" }, - { "name":"k_EAppOwnershipFlags_AutoGrant", "value":"16384" }, - { "name":"k_EAppOwnershipFlags_PendingGift", "value":"32768" }, - { "name":"k_EAppOwnershipFlags_RentalNotActivated", "value":"65536" }, - { "name":"k_EAppOwnershipFlags_Rental", "value":"131072" }, - { "name":"k_EAppOwnershipFlags_SiteLicense", "value":"262144" }, - { "name":"k_EAppOwnershipFlags_LegacyFreeSub", "value":"524288" }, - { "name":"k_EAppOwnershipFlags_InvalidOSType", "value":"1048576" }, - { "name":"k_EAppOwnershipFlags_TimedTrial", "value":"2097152" } - ] - }, - { - "enumname": "EAppType", - "values": [ - { "name":"k_EAppType_Invalid", "value":"0" }, - { "name":"k_EAppType_Game", "value":"1" }, - { "name":"k_EAppType_Application", "value":"2" }, - { "name":"k_EAppType_Tool", "value":"4" }, - { "name":"k_EAppType_Demo", "value":"8" }, - { "name":"k_EAppType_Media_DEPRECATED", "value":"16" }, - { "name":"k_EAppType_DLC", "value":"32" }, - { "name":"k_EAppType_Guide", "value":"64" }, - { "name":"k_EAppType_Driver", "value":"128" }, - { "name":"k_EAppType_Config", "value":"256" }, - { "name":"k_EAppType_Hardware", "value":"512" }, - { "name":"k_EAppType_Franchise", "value":"1024" }, - { "name":"k_EAppType_Video", "value":"2048" }, - { "name":"k_EAppType_Plugin", "value":"4096" }, - { "name":"k_EAppType_MusicAlbum", "value":"8192" }, - { "name":"k_EAppType_Series", "value":"16384" }, - { "name":"k_EAppType_Comic_UNUSED", "value":"32768" }, - { "name":"k_EAppType_Beta", "value":"65536" }, - { "name":"k_EAppType_Shortcut", "value":"1073741824" }, - { "name":"k_EAppType_DepotOnly_DEPRECATED", "value":"-2147483648" } - ] - }, - { - "enumname": "ESteamUserStatType", - "values": [ - { "name":"k_ESteamUserStatTypeINVALID", "value":"0" }, - { "name":"k_ESteamUserStatTypeINT", "value":"1" }, - { "name":"k_ESteamUserStatTypeFLOAT", "value":"2" }, - { "name":"k_ESteamUserStatTypeAVGRATE", "value":"3" }, - { "name":"k_ESteamUserStatTypeACHIEVEMENTS", "value":"4" }, - { "name":"k_ESteamUserStatTypeGROUPACHIEVEMENTS", "value":"5" }, - { "name":"k_ESteamUserStatTypeMAX", "value":"6" } - ] - }, - { - "enumname": "EChatEntryType", - "values": [ - { "name":"k_EChatEntryTypeInvalid", "value":"0" }, - { "name":"k_EChatEntryTypeChatMsg", "value":"1" }, - { "name":"k_EChatEntryTypeTyping", "value":"2" }, - { "name":"k_EChatEntryTypeInviteGame", "value":"3" }, - { "name":"k_EChatEntryTypeEmote", "value":"4" }, - { "name":"k_EChatEntryTypeLeftConversation", "value":"6" }, - { "name":"k_EChatEntryTypeEntered", "value":"7" }, - { "name":"k_EChatEntryTypeWasKicked", "value":"8" }, - { "name":"k_EChatEntryTypeWasBanned", "value":"9" }, - { "name":"k_EChatEntryTypeDisconnected", "value":"10" }, - { "name":"k_EChatEntryTypeHistoricalChat", "value":"11" }, - { "name":"k_EChatEntryTypeLinkBlocked", "value":"14" } - ] - }, - { - "enumname": "EChatRoomEnterResponse", - "values": [ - { "name":"k_EChatRoomEnterResponseSuccess", "value":"1" }, - { "name":"k_EChatRoomEnterResponseDoesntExist", "value":"2" }, - { "name":"k_EChatRoomEnterResponseNotAllowed", "value":"3" }, - { "name":"k_EChatRoomEnterResponseFull", "value":"4" }, - { "name":"k_EChatRoomEnterResponseError", "value":"5" }, - { "name":"k_EChatRoomEnterResponseBanned", "value":"6" }, - { "name":"k_EChatRoomEnterResponseLimited", "value":"7" }, - { "name":"k_EChatRoomEnterResponseClanDisabled", "value":"8" }, - { "name":"k_EChatRoomEnterResponseCommunityBan", "value":"9" }, - { "name":"k_EChatRoomEnterResponseMemberBlockedYou", "value":"10" }, - { "name":"k_EChatRoomEnterResponseYouBlockedMember", "value":"11" }, - { "name":"k_EChatRoomEnterResponseRatelimitExceeded", "value":"15" } - ] - }, - { - "enumname": "EChatSteamIDInstanceFlags", - "values": [ - { "name":"k_EChatAccountInstanceMask", "value":"4095" }, - { "name":"k_EChatInstanceFlagClan", "value":"524288" }, - { "name":"k_EChatInstanceFlagLobby", "value":"262144" }, - { "name":"k_EChatInstanceFlagMMSLobby", "value":"131072" } - ] - }, - { - "enumname": "EMarketingMessageFlags", - "values": [ - { "name":"k_EMarketingMessageFlagsNone", "value":"0" }, - { "name":"k_EMarketingMessageFlagsHighPriority", "value":"1" }, - { "name":"k_EMarketingMessageFlagsPlatformWindows", "value":"2" }, - { "name":"k_EMarketingMessageFlagsPlatformMac", "value":"4" }, - { "name":"k_EMarketingMessageFlagsPlatformLinux", "value":"8" }, - { "name":"k_EMarketingMessageFlagsPlatformRestrictions", "value":"14" } - ] - }, - { - "enumname": "ENotificationPosition", - "values": [ - { "name":"k_EPositionTopLeft", "value":"0" }, - { "name":"k_EPositionTopRight", "value":"1" }, - { "name":"k_EPositionBottomLeft", "value":"2" }, - { "name":"k_EPositionBottomRight", "value":"3" } - ] - }, - { - "enumname": "EBroadcastUploadResult", - "values": [ - { "name":"k_EBroadcastUploadResultNone", "value":"0" }, - { "name":"k_EBroadcastUploadResultOK", "value":"1" }, - { "name":"k_EBroadcastUploadResultInitFailed", "value":"2" }, - { "name":"k_EBroadcastUploadResultFrameFailed", "value":"3" }, - { "name":"k_EBroadcastUploadResultTimeout", "value":"4" }, - { "name":"k_EBroadcastUploadResultBandwidthExceeded", "value":"5" }, - { "name":"k_EBroadcastUploadResultLowFPS", "value":"6" }, - { "name":"k_EBroadcastUploadResultMissingKeyFrames", "value":"7" }, - { "name":"k_EBroadcastUploadResultNoConnection", "value":"8" }, - { "name":"k_EBroadcastUploadResultRelayFailed", "value":"9" }, - { "name":"k_EBroadcastUploadResultSettingsChanged", "value":"10" }, - { "name":"k_EBroadcastUploadResultMissingAudio", "value":"11" }, - { "name":"k_EBroadcastUploadResultTooFarBehind", "value":"12" }, - { "name":"k_EBroadcastUploadResultTranscodeBehind", "value":"13" }, - { "name":"k_EBroadcastUploadResultNotAllowedToPlay", "value":"14" }, - { "name":"k_EBroadcastUploadResultBusy", "value":"15" }, - { "name":"k_EBroadcastUploadResultBanned", "value":"16" }, - { "name":"k_EBroadcastUploadResultAlreadyActive", "value":"17" }, - { "name":"k_EBroadcastUploadResultForcedOff", "value":"18" }, - { "name":"k_EBroadcastUploadResultAudioBehind", "value":"19" }, - { "name":"k_EBroadcastUploadResultShutdown", "value":"20" }, - { "name":"k_EBroadcastUploadResultDisconnect", "value":"21" }, - { "name":"k_EBroadcastUploadResultVideoInitFailed", "value":"22" }, - { "name":"k_EBroadcastUploadResultAudioInitFailed", "value":"23" } - ] - }, - { - "enumname": "ELaunchOptionType", - "values": [ - { "name":"k_ELaunchOptionType_None", "value":"0" }, - { "name":"k_ELaunchOptionType_Default", "value":"1" }, - { "name":"k_ELaunchOptionType_SafeMode", "value":"2" }, - { "name":"k_ELaunchOptionType_Multiplayer", "value":"3" }, - { "name":"k_ELaunchOptionType_Config", "value":"4" }, - { "name":"k_ELaunchOptionType_OpenVR", "value":"5" }, - { "name":"k_ELaunchOptionType_Server", "value":"6" }, - { "name":"k_ELaunchOptionType_Editor", "value":"7" }, - { "name":"k_ELaunchOptionType_Manual", "value":"8" }, - { "name":"k_ELaunchOptionType_Benchmark", "value":"9" }, - { "name":"k_ELaunchOptionType_Option1", "value":"10" }, - { "name":"k_ELaunchOptionType_Option2", "value":"11" }, - { "name":"k_ELaunchOptionType_Option3", "value":"12" }, - { "name":"k_ELaunchOptionType_OculusVR", "value":"13" }, - { "name":"k_ELaunchOptionType_OpenVROverlay", "value":"14" }, - { "name":"k_ELaunchOptionType_OSVR", "value":"15" }, - { "name":"k_ELaunchOptionType_Dialog", "value":"1000" } - ] - }, - { - "enumname": "EVRHMDType", - "values": [ - { "name":"k_eEVRHMDType_None", "value":"-1" }, - { "name":"k_eEVRHMDType_Unknown", "value":"0" }, - { "name":"k_eEVRHMDType_HTC_Dev", "value":"1" }, - { "name":"k_eEVRHMDType_HTC_VivePre", "value":"2" }, - { "name":"k_eEVRHMDType_HTC_Vive", "value":"3" }, - { "name":"k_eEVRHMDType_HTC_VivePro", "value":"4" }, - { "name":"k_eEVRHMDType_HTC_ViveCosmos", "value":"5" }, - { "name":"k_eEVRHMDType_HTC_Unknown", "value":"20" }, - { "name":"k_eEVRHMDType_Oculus_DK1", "value":"21" }, - { "name":"k_eEVRHMDType_Oculus_DK2", "value":"22" }, - { "name":"k_eEVRHMDType_Oculus_Rift", "value":"23" }, - { "name":"k_eEVRHMDType_Oculus_RiftS", "value":"24" }, - { "name":"k_eEVRHMDType_Oculus_Quest", "value":"25" }, - { "name":"k_eEVRHMDType_Oculus_Unknown", "value":"40" }, - { "name":"k_eEVRHMDType_Acer_Unknown", "value":"50" }, - { "name":"k_eEVRHMDType_Acer_WindowsMR", "value":"51" }, - { "name":"k_eEVRHMDType_Dell_Unknown", "value":"60" }, - { "name":"k_eEVRHMDType_Dell_Visor", "value":"61" }, - { "name":"k_eEVRHMDType_Lenovo_Unknown", "value":"70" }, - { "name":"k_eEVRHMDType_Lenovo_Explorer", "value":"71" }, - { "name":"k_eEVRHMDType_HP_Unknown", "value":"80" }, - { "name":"k_eEVRHMDType_HP_WindowsMR", "value":"81" }, - { "name":"k_eEVRHMDType_HP_Reverb", "value":"82" }, - { "name":"k_eEVRHMDType_HP_ReverbG2", "value":"1463" }, - { "name":"k_eEVRHMDType_Samsung_Unknown", "value":"90" }, - { "name":"k_eEVRHMDType_Samsung_Odyssey", "value":"91" }, - { "name":"k_eEVRHMDType_Unannounced_Unknown", "value":"100" }, - { "name":"k_eEVRHMDType_Unannounced_WindowsMR", "value":"101" }, - { "name":"k_eEVRHMDType_vridge", "value":"110" }, - { "name":"k_eEVRHMDType_Huawei_Unknown", "value":"120" }, - { "name":"k_eEVRHMDType_Huawei_VR2", "value":"121" }, - { "name":"k_eEVRHMDType_Huawei_EndOfRange", "value":"129" }, - { "name":"k_eEVRHmdType_Valve_Unknown", "value":"130" }, - { "name":"k_eEVRHmdType_Valve_Index", "value":"131" } - ] - }, - { - "enumname": "EMarketNotAllowedReasonFlags", - "values": [ - { "name":"k_EMarketNotAllowedReason_None", "value":"0" }, - { "name":"k_EMarketNotAllowedReason_TemporaryFailure", "value":"1" }, - { "name":"k_EMarketNotAllowedReason_AccountDisabled", "value":"2" }, - { "name":"k_EMarketNotAllowedReason_AccountLockedDown", "value":"4" }, - { "name":"k_EMarketNotAllowedReason_AccountLimited", "value":"8" }, - { "name":"k_EMarketNotAllowedReason_TradeBanned", "value":"16" }, - { "name":"k_EMarketNotAllowedReason_AccountNotTrusted", "value":"32" }, - { "name":"k_EMarketNotAllowedReason_SteamGuardNotEnabled", "value":"64" }, - { "name":"k_EMarketNotAllowedReason_SteamGuardOnlyRecentlyEnabled", "value":"128" }, - { "name":"k_EMarketNotAllowedReason_RecentPasswordReset", "value":"256" }, - { "name":"k_EMarketNotAllowedReason_NewPaymentMethod", "value":"512" }, - { "name":"k_EMarketNotAllowedReason_InvalidCookie", "value":"1024" }, - { "name":"k_EMarketNotAllowedReason_UsingNewDevice", "value":"2048" }, - { "name":"k_EMarketNotAllowedReason_RecentSelfRefund", "value":"4096" }, - { "name":"k_EMarketNotAllowedReason_NewPaymentMethodCannotBeVerified", "value":"8192" }, - { "name":"k_EMarketNotAllowedReason_NoRecentPurchases", "value":"16384" }, - { "name":"k_EMarketNotAllowedReason_AcceptedWalletGift", "value":"32768" } - ] - }, - { - "enumname": "EDurationControlProgress", - "values": [ - { "name":"k_EDurationControlProgress_Full", "value":"0" }, - { "name":"k_EDurationControlProgress_Half", "value":"1" }, - { "name":"k_EDurationControlProgress_None", "value":"2" }, - { "name":"k_EDurationControl_ExitSoon_3h", "value":"3" }, - { "name":"k_EDurationControl_ExitSoon_5h", "value":"4" }, - { "name":"k_EDurationControl_ExitSoon_Night", "value":"5" } - ] - }, - { - "enumname": "EDurationControlNotification", - "values": [ - { "name":"k_EDurationControlNotification_None", "value":"0" }, - { "name":"k_EDurationControlNotification_1Hour", "value":"1" }, - { "name":"k_EDurationControlNotification_3Hours", "value":"2" }, - { "name":"k_EDurationControlNotification_HalfProgress", "value":"3" }, - { "name":"k_EDurationControlNotification_NoProgress", "value":"4" }, - { "name":"k_EDurationControlNotification_ExitSoon_3h", "value":"5" }, - { "name":"k_EDurationControlNotification_ExitSoon_5h", "value":"6" }, - { "name":"k_EDurationControlNotification_ExitSoon_Night", "value":"7" } - ] - }, - { - "enumname": "EDurationControlOnlineState", - "values": [ - { "name":"k_EDurationControlOnlineState_Invalid", "value":"0" }, - { "name":"k_EDurationControlOnlineState_Offline", "value":"1" }, - { "name":"k_EDurationControlOnlineState_Online", "value":"2" }, - { "name":"k_EDurationControlOnlineState_OnlineHighPri", "value":"3" } - ] - }, - { - "enumname": "EGameSearchErrorCode_t", - "values": [ - { "name":"k_EGameSearchErrorCode_OK", "value":"1" }, - { "name":"k_EGameSearchErrorCode_Failed_Search_Already_In_Progress", "value":"2" }, - { "name":"k_EGameSearchErrorCode_Failed_No_Search_In_Progress", "value":"3" }, - { "name":"k_EGameSearchErrorCode_Failed_Not_Lobby_Leader", "value":"4" }, - { "name":"k_EGameSearchErrorCode_Failed_No_Host_Available", "value":"5" }, - { "name":"k_EGameSearchErrorCode_Failed_Search_Params_Invalid", "value":"6" }, - { "name":"k_EGameSearchErrorCode_Failed_Offline", "value":"7" }, - { "name":"k_EGameSearchErrorCode_Failed_NotAuthorized", "value":"8" }, - { "name":"k_EGameSearchErrorCode_Failed_Unknown_Error", "value":"9" } - ] - }, - { - "enumname": "EPlayerResult_t", - "values": [ - { "name":"k_EPlayerResultFailedToConnect", "value":"1" }, - { "name":"k_EPlayerResultAbandoned", "value":"2" }, - { "name":"k_EPlayerResultKicked", "value":"3" }, - { "name":"k_EPlayerResultIncomplete", "value":"4" }, - { "name":"k_EPlayerResultCompleted", "value":"5" } - ] - }, - { - "enumname": "ESteamIPv6ConnectivityProtocol", - "values": [ - { "name":"k_ESteamIPv6ConnectivityProtocol_Invalid", "value":"0" }, - { "name":"k_ESteamIPv6ConnectivityProtocol_HTTP", "value":"1" }, - { "name":"k_ESteamIPv6ConnectivityProtocol_UDP", "value":"2" } - ] - }, - { - "enumname": "ESteamIPv6ConnectivityState", - "values": [ - { "name":"k_ESteamIPv6ConnectivityState_Unknown", "value":"0" }, - { "name":"k_ESteamIPv6ConnectivityState_Good", "value":"1" }, - { "name":"k_ESteamIPv6ConnectivityState_Bad", "value":"2" } - ] - }, - { - "enumname": "EFriendRelationship", - "values": [ - { "name":"k_EFriendRelationshipNone", "value":"0" }, - { "name":"k_EFriendRelationshipBlocked", "value":"1" }, - { "name":"k_EFriendRelationshipRequestRecipient", "value":"2" }, - { "name":"k_EFriendRelationshipFriend", "value":"3" }, - { "name":"k_EFriendRelationshipRequestInitiator", "value":"4" }, - { "name":"k_EFriendRelationshipIgnored", "value":"5" }, - { "name":"k_EFriendRelationshipIgnoredFriend", "value":"6" }, - { "name":"k_EFriendRelationshipSuggested_DEPRECATED", "value":"7" }, - { "name":"k_EFriendRelationshipMax", "value":"8" } - ] - }, - { - "enumname": "EPersonaState", - "values": [ - { "name":"k_EPersonaStateOffline", "value":"0" }, - { "name":"k_EPersonaStateOnline", "value":"1" }, - { "name":"k_EPersonaStateBusy", "value":"2" }, - { "name":"k_EPersonaStateAway", "value":"3" }, - { "name":"k_EPersonaStateSnooze", "value":"4" }, - { "name":"k_EPersonaStateLookingToTrade", "value":"5" }, - { "name":"k_EPersonaStateLookingToPlay", "value":"6" }, - { "name":"k_EPersonaStateInvisible", "value":"7" }, - { "name":"k_EPersonaStateMax", "value":"8" } - ] - }, - { - "enumname": "EFriendFlags", - "values": [ - { "name":"k_EFriendFlagNone", "value":"0" }, - { "name":"k_EFriendFlagBlocked", "value":"1" }, - { "name":"k_EFriendFlagFriendshipRequested", "value":"2" }, - { "name":"k_EFriendFlagImmediate", "value":"4" }, - { "name":"k_EFriendFlagClanMember", "value":"8" }, - { "name":"k_EFriendFlagOnGameServer", "value":"16" }, - { "name":"k_EFriendFlagRequestingFriendship", "value":"128" }, - { "name":"k_EFriendFlagRequestingInfo", "value":"256" }, - { "name":"k_EFriendFlagIgnored", "value":"512" }, - { "name":"k_EFriendFlagIgnoredFriend", "value":"1024" }, - { "name":"k_EFriendFlagChatMember", "value":"4096" }, - { "name":"k_EFriendFlagAll", "value":"65535" } - ] - }, - { - "enumname": "EUserRestriction", - "values": [ - { "name":"k_nUserRestrictionNone", "value":"0" }, - { "name":"k_nUserRestrictionUnknown", "value":"1" }, - { "name":"k_nUserRestrictionAnyChat", "value":"2" }, - { "name":"k_nUserRestrictionVoiceChat", "value":"4" }, - { "name":"k_nUserRestrictionGroupChat", "value":"8" }, - { "name":"k_nUserRestrictionRating", "value":"16" }, - { "name":"k_nUserRestrictionGameInvites", "value":"32" }, - { "name":"k_nUserRestrictionTrading", "value":"64" } - ] - }, - { - "enumname": "EOverlayToStoreFlag", - "values": [ - { "name":"k_EOverlayToStoreFlag_None", "value":"0" }, - { "name":"k_EOverlayToStoreFlag_AddToCart", "value":"1" }, - { "name":"k_EOverlayToStoreFlag_AddToCartAndShow", "value":"2" } - ] - }, - { - "enumname": "EActivateGameOverlayToWebPageMode", - "values": [ - { "name":"k_EActivateGameOverlayToWebPageMode_Default", "value":"0" }, - { "name":"k_EActivateGameOverlayToWebPageMode_Modal", "value":"1" } - ] - }, - { - "enumname": "EPersonaChange", - "values": [ - { "name":"k_EPersonaChangeName", "value":"1" }, - { "name":"k_EPersonaChangeStatus", "value":"2" }, - { "name":"k_EPersonaChangeComeOnline", "value":"4" }, - { "name":"k_EPersonaChangeGoneOffline", "value":"8" }, - { "name":"k_EPersonaChangeGamePlayed", "value":"16" }, - { "name":"k_EPersonaChangeGameServer", "value":"32" }, - { "name":"k_EPersonaChangeAvatar", "value":"64" }, - { "name":"k_EPersonaChangeJoinedSource", "value":"128" }, - { "name":"k_EPersonaChangeLeftSource", "value":"256" }, - { "name":"k_EPersonaChangeRelationshipChanged", "value":"512" }, - { "name":"k_EPersonaChangeNameFirstSet", "value":"1024" }, - { "name":"k_EPersonaChangeBroadcast", "value":"2048" }, - { "name":"k_EPersonaChangeNickname", "value":"4096" }, - { "name":"k_EPersonaChangeSteamLevel", "value":"8192" }, - { "name":"k_EPersonaChangeRichPresence", "value":"16384" } - ] - }, - { - "enumname": "ESteamAPICallFailure", - "values": [ - { "name":"k_ESteamAPICallFailureNone", "value":"-1" }, - { "name":"k_ESteamAPICallFailureSteamGone", "value":"0" }, - { "name":"k_ESteamAPICallFailureNetworkFailure", "value":"1" }, - { "name":"k_ESteamAPICallFailureInvalidHandle", "value":"2" }, - { "name":"k_ESteamAPICallFailureMismatchedCallback", "value":"3" } - ] - }, - { - "enumname": "EGamepadTextInputMode", - "values": [ - { "name":"k_EGamepadTextInputModeNormal", "value":"0" }, - { "name":"k_EGamepadTextInputModePassword", "value":"1" } - ] - }, - { - "enumname": "EGamepadTextInputLineMode", - "values": [ - { "name":"k_EGamepadTextInputLineModeSingleLine", "value":"0" }, - { "name":"k_EGamepadTextInputLineModeMultipleLines", "value":"1" } - ] - }, - { - "enumname": "ETextFilteringContext", - "values": [ - { "name":"k_ETextFilteringContextUnknown", "value":"0" }, - { "name":"k_ETextFilteringContextGameContent", "value":"1" }, - { "name":"k_ETextFilteringContextChat", "value":"2" }, - { "name":"k_ETextFilteringContextName", "value":"3" } - ] - }, - { - "enumname": "ECheckFileSignature", - "values": [ - { "name":"k_ECheckFileSignatureInvalidSignature", "value":"0" }, - { "name":"k_ECheckFileSignatureValidSignature", "value":"1" }, - { "name":"k_ECheckFileSignatureFileNotFound", "value":"2" }, - { "name":"k_ECheckFileSignatureNoSignaturesFoundForThisApp", "value":"3" }, - { "name":"k_ECheckFileSignatureNoSignaturesFoundForThisFile", "value":"4" } - ] - }, - { - "enumname": "EMatchMakingServerResponse", - "values": [ - { "name":"eServerResponded", "value":"0" }, - { "name":"eServerFailedToRespond", "value":"1" }, - { "name":"eNoServersListedOnMasterServer", "value":"2" } - ] - }, - { - "enumname": "ELobbyType", - "values": [ - { "name":"k_ELobbyTypePrivate", "value":"0" }, - { "name":"k_ELobbyTypeFriendsOnly", "value":"1" }, - { "name":"k_ELobbyTypePublic", "value":"2" }, - { "name":"k_ELobbyTypeInvisible", "value":"3" }, - { "name":"k_ELobbyTypePrivateUnique", "value":"4" } - ] - }, - { - "enumname": "ELobbyComparison", - "values": [ - { "name":"k_ELobbyComparisonEqualToOrLessThan", "value":"-2" }, - { "name":"k_ELobbyComparisonLessThan", "value":"-1" }, - { "name":"k_ELobbyComparisonEqual", "value":"0" }, - { "name":"k_ELobbyComparisonGreaterThan", "value":"1" }, - { "name":"k_ELobbyComparisonEqualToOrGreaterThan", "value":"2" }, - { "name":"k_ELobbyComparisonNotEqual", "value":"3" } - ] - }, - { - "enumname": "ELobbyDistanceFilter", - "values": [ - { "name":"k_ELobbyDistanceFilterClose", "value":"0" }, - { "name":"k_ELobbyDistanceFilterDefault", "value":"1" }, - { "name":"k_ELobbyDistanceFilterFar", "value":"2" }, - { "name":"k_ELobbyDistanceFilterWorldwide", "value":"3" } - ] - }, - { - "enumname": "EChatMemberStateChange", - "values": [ - { "name":"k_EChatMemberStateChangeEntered", "value":"1" }, - { "name":"k_EChatMemberStateChangeLeft", "value":"2" }, - { "name":"k_EChatMemberStateChangeDisconnected", "value":"4" }, - { "name":"k_EChatMemberStateChangeKicked", "value":"8" }, - { "name":"k_EChatMemberStateChangeBanned", "value":"16" } - ] - }, - { - "enumname": "ESteamPartyBeaconLocationType", - "values": [ - { "name":"k_ESteamPartyBeaconLocationType_Invalid", "value":"0" }, - { "name":"k_ESteamPartyBeaconLocationType_ChatGroup", "value":"1" }, - { "name":"k_ESteamPartyBeaconLocationType_Max", "value":"2" } - ] - }, - { - "enumname": "ESteamPartyBeaconLocationData", - "values": [ - { "name":"k_ESteamPartyBeaconLocationDataInvalid", "value":"0" }, - { "name":"k_ESteamPartyBeaconLocationDataName", "value":"1" }, - { "name":"k_ESteamPartyBeaconLocationDataIconURLSmall", "value":"2" }, - { "name":"k_ESteamPartyBeaconLocationDataIconURLMedium", "value":"3" }, - { "name":"k_ESteamPartyBeaconLocationDataIconURLLarge", "value":"4" } - ] - }, - { - "enumname": "ERemoteStoragePlatform", - "values": [ - { "name":"k_ERemoteStoragePlatformNone", "value":"0" }, - { "name":"k_ERemoteStoragePlatformWindows", "value":"1" }, - { "name":"k_ERemoteStoragePlatformOSX", "value":"2" }, - { "name":"k_ERemoteStoragePlatformPS3", "value":"4" }, - { "name":"k_ERemoteStoragePlatformLinux", "value":"8" }, - { "name":"k_ERemoteStoragePlatformSwitch", "value":"16" }, - { "name":"k_ERemoteStoragePlatformAndroid", "value":"32" }, - { "name":"k_ERemoteStoragePlatformIOS", "value":"64" }, - { "name":"k_ERemoteStoragePlatformAll", "value":"-1" } - ] - }, - { - "enumname": "ERemoteStoragePublishedFileVisibility", - "values": [ - { "name":"k_ERemoteStoragePublishedFileVisibilityPublic", "value":"0" }, - { "name":"k_ERemoteStoragePublishedFileVisibilityFriendsOnly", "value":"1" }, - { "name":"k_ERemoteStoragePublishedFileVisibilityPrivate", "value":"2" }, - { "name":"k_ERemoteStoragePublishedFileVisibilityUnlisted", "value":"3" } - ] - }, - { - "enumname": "EWorkshopFileType", - "values": [ - { "name":"k_EWorkshopFileTypeFirst", "value":"0" }, - { "name":"k_EWorkshopFileTypeCommunity", "value":"0" }, - { "name":"k_EWorkshopFileTypeMicrotransaction", "value":"1" }, - { "name":"k_EWorkshopFileTypeCollection", "value":"2" }, - { "name":"k_EWorkshopFileTypeArt", "value":"3" }, - { "name":"k_EWorkshopFileTypeVideo", "value":"4" }, - { "name":"k_EWorkshopFileTypeScreenshot", "value":"5" }, - { "name":"k_EWorkshopFileTypeGame", "value":"6" }, - { "name":"k_EWorkshopFileTypeSoftware", "value":"7" }, - { "name":"k_EWorkshopFileTypeConcept", "value":"8" }, - { "name":"k_EWorkshopFileTypeWebGuide", "value":"9" }, - { "name":"k_EWorkshopFileTypeIntegratedGuide", "value":"10" }, - { "name":"k_EWorkshopFileTypeMerch", "value":"11" }, - { "name":"k_EWorkshopFileTypeControllerBinding", "value":"12" }, - { "name":"k_EWorkshopFileTypeSteamworksAccessInvite", "value":"13" }, - { "name":"k_EWorkshopFileTypeSteamVideo", "value":"14" }, - { "name":"k_EWorkshopFileTypeGameManagedItem", "value":"15" }, - { "name":"k_EWorkshopFileTypeMax", "value":"16" } - ] - }, - { - "enumname": "EWorkshopVote", - "values": [ - { "name":"k_EWorkshopVoteUnvoted", "value":"0" }, - { "name":"k_EWorkshopVoteFor", "value":"1" }, - { "name":"k_EWorkshopVoteAgainst", "value":"2" }, - { "name":"k_EWorkshopVoteLater", "value":"3" } - ] - }, - { - "enumname": "EWorkshopFileAction", - "values": [ - { "name":"k_EWorkshopFileActionPlayed", "value":"0" }, - { "name":"k_EWorkshopFileActionCompleted", "value":"1" } - ] - }, - { - "enumname": "EWorkshopEnumerationType", - "values": [ - { "name":"k_EWorkshopEnumerationTypeRankedByVote", "value":"0" }, - { "name":"k_EWorkshopEnumerationTypeRecent", "value":"1" }, - { "name":"k_EWorkshopEnumerationTypeTrending", "value":"2" }, - { "name":"k_EWorkshopEnumerationTypeFavoritesOfFriends", "value":"3" }, - { "name":"k_EWorkshopEnumerationTypeVotedByFriends", "value":"4" }, - { "name":"k_EWorkshopEnumerationTypeContentByFriends", "value":"5" }, - { "name":"k_EWorkshopEnumerationTypeRecentFromFollowedUsers", "value":"6" } - ] - }, - { - "enumname": "EWorkshopVideoProvider", - "values": [ - { "name":"k_EWorkshopVideoProviderNone", "value":"0" }, - { "name":"k_EWorkshopVideoProviderYoutube", "value":"1" } - ] - }, - { - "enumname": "EUGCReadAction", - "values": [ - { "name":"k_EUGCRead_ContinueReadingUntilFinished", "value":"0" }, - { "name":"k_EUGCRead_ContinueReading", "value":"1" }, - { "name":"k_EUGCRead_Close", "value":"2" } - ] - }, - { - "enumname": "ELeaderboardDataRequest", - "values": [ - { "name":"k_ELeaderboardDataRequestGlobal", "value":"0" }, - { "name":"k_ELeaderboardDataRequestGlobalAroundUser", "value":"1" }, - { "name":"k_ELeaderboardDataRequestFriends", "value":"2" }, - { "name":"k_ELeaderboardDataRequestUsers", "value":"3" } - ] - }, - { - "enumname": "ELeaderboardSortMethod", - "values": [ - { "name":"k_ELeaderboardSortMethodNone", "value":"0" }, - { "name":"k_ELeaderboardSortMethodAscending", "value":"1" }, - { "name":"k_ELeaderboardSortMethodDescending", "value":"2" } - ] - }, - { - "enumname": "ELeaderboardDisplayType", - "values": [ - { "name":"k_ELeaderboardDisplayTypeNone", "value":"0" }, - { "name":"k_ELeaderboardDisplayTypeNumeric", "value":"1" }, - { "name":"k_ELeaderboardDisplayTypeTimeSeconds", "value":"2" }, - { "name":"k_ELeaderboardDisplayTypeTimeMilliSeconds", "value":"3" } - ] - }, - { - "enumname": "ELeaderboardUploadScoreMethod", - "values": [ - { "name":"k_ELeaderboardUploadScoreMethodNone", "value":"0" }, - { "name":"k_ELeaderboardUploadScoreMethodKeepBest", "value":"1" }, - { "name":"k_ELeaderboardUploadScoreMethodForceUpdate", "value":"2" } - ] - }, - { - "enumname": "ERegisterActivationCodeResult", - "values": [ - { "name":"k_ERegisterActivationCodeResultOK", "value":"0" }, - { "name":"k_ERegisterActivationCodeResultFail", "value":"1" }, - { "name":"k_ERegisterActivationCodeResultAlreadyRegistered", "value":"2" }, - { "name":"k_ERegisterActivationCodeResultTimeout", "value":"3" }, - { "name":"k_ERegisterActivationCodeAlreadyOwned", "value":"4" } - ] - }, - { - "enumname": "EP2PSessionError", - "values": [ - { "name":"k_EP2PSessionErrorNone", "value":"0" }, - { "name":"k_EP2PSessionErrorNoRightsToApp", "value":"2" }, - { "name":"k_EP2PSessionErrorTimeout", "value":"4" }, - { "name":"k_EP2PSessionErrorNotRunningApp_DELETED", "value":"1" }, - { "name":"k_EP2PSessionErrorDestinationNotLoggedIn_DELETED", "value":"3" }, - { "name":"k_EP2PSessionErrorMax", "value":"5" } - ] - }, - { - "enumname": "EP2PSend", - "values": [ - { "name":"k_EP2PSendUnreliable", "value":"0" }, - { "name":"k_EP2PSendUnreliableNoDelay", "value":"1" }, - { "name":"k_EP2PSendReliable", "value":"2" }, - { "name":"k_EP2PSendReliableWithBuffering", "value":"3" } - ] - }, - { - "enumname": "ESNetSocketState", - "values": [ - { "name":"k_ESNetSocketStateInvalid", "value":"0" }, - { "name":"k_ESNetSocketStateConnected", "value":"1" }, - { "name":"k_ESNetSocketStateInitiated", "value":"10" }, - { "name":"k_ESNetSocketStateLocalCandidatesFound", "value":"11" }, - { "name":"k_ESNetSocketStateReceivedRemoteCandidates", "value":"12" }, - { "name":"k_ESNetSocketStateChallengeHandshake", "value":"15" }, - { "name":"k_ESNetSocketStateDisconnecting", "value":"21" }, - { "name":"k_ESNetSocketStateLocalDisconnect", "value":"22" }, - { "name":"k_ESNetSocketStateTimeoutDuringConnect", "value":"23" }, - { "name":"k_ESNetSocketStateRemoteEndDisconnected", "value":"24" }, - { "name":"k_ESNetSocketStateConnectionBroken", "value":"25" } - ] - }, - { - "enumname": "ESNetSocketConnectionType", - "values": [ - { "name":"k_ESNetSocketConnectionTypeNotConnected", "value":"0" }, - { "name":"k_ESNetSocketConnectionTypeUDP", "value":"1" }, - { "name":"k_ESNetSocketConnectionTypeUDPRelay", "value":"2" } - ] - }, - { - "enumname": "EVRScreenshotType", - "values": [ - { "name":"k_EVRScreenshotType_None", "value":"0" }, - { "name":"k_EVRScreenshotType_Mono", "value":"1" }, - { "name":"k_EVRScreenshotType_Stereo", "value":"2" }, - { "name":"k_EVRScreenshotType_MonoCubemap", "value":"3" }, - { "name":"k_EVRScreenshotType_MonoPanorama", "value":"4" }, - { "name":"k_EVRScreenshotType_StereoPanorama", "value":"5" } - ] - }, - { - "enumname": "AudioPlayback_Status", - "values": [ - { "name":"AudioPlayback_Undefined", "value":"0" }, - { "name":"AudioPlayback_Playing", "value":"1" }, - { "name":"AudioPlayback_Paused", "value":"2" }, - { "name":"AudioPlayback_Idle", "value":"3" } - ] - }, - { - "enumname": "EHTTPMethod", - "values": [ - { "name":"k_EHTTPMethodInvalid", "value":"0" }, - { "name":"k_EHTTPMethodGET", "value":"1" }, - { "name":"k_EHTTPMethodHEAD", "value":"2" }, - { "name":"k_EHTTPMethodPOST", "value":"3" }, - { "name":"k_EHTTPMethodPUT", "value":"4" }, - { "name":"k_EHTTPMethodDELETE", "value":"5" }, - { "name":"k_EHTTPMethodOPTIONS", "value":"6" }, - { "name":"k_EHTTPMethodPATCH", "value":"7" } - ] - }, - { - "enumname": "EHTTPStatusCode", - "values": [ - { "name":"k_EHTTPStatusCodeInvalid", "value":"0" }, - { "name":"k_EHTTPStatusCode100Continue", "value":"100" }, - { "name":"k_EHTTPStatusCode101SwitchingProtocols", "value":"101" }, - { "name":"k_EHTTPStatusCode200OK", "value":"200" }, - { "name":"k_EHTTPStatusCode201Created", "value":"201" }, - { "name":"k_EHTTPStatusCode202Accepted", "value":"202" }, - { "name":"k_EHTTPStatusCode203NonAuthoritative", "value":"203" }, - { "name":"k_EHTTPStatusCode204NoContent", "value":"204" }, - { "name":"k_EHTTPStatusCode205ResetContent", "value":"205" }, - { "name":"k_EHTTPStatusCode206PartialContent", "value":"206" }, - { "name":"k_EHTTPStatusCode300MultipleChoices", "value":"300" }, - { "name":"k_EHTTPStatusCode301MovedPermanently", "value":"301" }, - { "name":"k_EHTTPStatusCode302Found", "value":"302" }, - { "name":"k_EHTTPStatusCode303SeeOther", "value":"303" }, - { "name":"k_EHTTPStatusCode304NotModified", "value":"304" }, - { "name":"k_EHTTPStatusCode305UseProxy", "value":"305" }, - { "name":"k_EHTTPStatusCode307TemporaryRedirect", "value":"307" }, - { "name":"k_EHTTPStatusCode400BadRequest", "value":"400" }, - { "name":"k_EHTTPStatusCode401Unauthorized", "value":"401" }, - { "name":"k_EHTTPStatusCode402PaymentRequired", "value":"402" }, - { "name":"k_EHTTPStatusCode403Forbidden", "value":"403" }, - { "name":"k_EHTTPStatusCode404NotFound", "value":"404" }, - { "name":"k_EHTTPStatusCode405MethodNotAllowed", "value":"405" }, - { "name":"k_EHTTPStatusCode406NotAcceptable", "value":"406" }, - { "name":"k_EHTTPStatusCode407ProxyAuthRequired", "value":"407" }, - { "name":"k_EHTTPStatusCode408RequestTimeout", "value":"408" }, - { "name":"k_EHTTPStatusCode409Conflict", "value":"409" }, - { "name":"k_EHTTPStatusCode410Gone", "value":"410" }, - { "name":"k_EHTTPStatusCode411LengthRequired", "value":"411" }, - { "name":"k_EHTTPStatusCode412PreconditionFailed", "value":"412" }, - { "name":"k_EHTTPStatusCode413RequestEntityTooLarge", "value":"413" }, - { "name":"k_EHTTPStatusCode414RequestURITooLong", "value":"414" }, - { "name":"k_EHTTPStatusCode415UnsupportedMediaType", "value":"415" }, - { "name":"k_EHTTPStatusCode416RequestedRangeNotSatisfiable", "value":"416" }, - { "name":"k_EHTTPStatusCode417ExpectationFailed", "value":"417" }, - { "name":"k_EHTTPStatusCode4xxUnknown", "value":"418" }, - { "name":"k_EHTTPStatusCode429TooManyRequests", "value":"429" }, - { "name":"k_EHTTPStatusCode444ConnectionClosed", "value":"444" }, - { "name":"k_EHTTPStatusCode500InternalServerError", "value":"500" }, - { "name":"k_EHTTPStatusCode501NotImplemented", "value":"501" }, - { "name":"k_EHTTPStatusCode502BadGateway", "value":"502" }, - { "name":"k_EHTTPStatusCode503ServiceUnavailable", "value":"503" }, - { "name":"k_EHTTPStatusCode504GatewayTimeout", "value":"504" }, - { "name":"k_EHTTPStatusCode505HTTPVersionNotSupported", "value":"505" }, - { "name":"k_EHTTPStatusCode5xxUnknown", "value":"599" } - ] - }, - { - "enumname": "EInputSourceMode", - "values": [ - { "name":"k_EInputSourceMode_None", "value":"0" }, - { "name":"k_EInputSourceMode_Dpad", "value":"1" }, - { "name":"k_EInputSourceMode_Buttons", "value":"2" }, - { "name":"k_EInputSourceMode_FourButtons", "value":"3" }, - { "name":"k_EInputSourceMode_AbsoluteMouse", "value":"4" }, - { "name":"k_EInputSourceMode_RelativeMouse", "value":"5" }, - { "name":"k_EInputSourceMode_JoystickMove", "value":"6" }, - { "name":"k_EInputSourceMode_JoystickMouse", "value":"7" }, - { "name":"k_EInputSourceMode_JoystickCamera", "value":"8" }, - { "name":"k_EInputSourceMode_ScrollWheel", "value":"9" }, - { "name":"k_EInputSourceMode_Trigger", "value":"10" }, - { "name":"k_EInputSourceMode_TouchMenu", "value":"11" }, - { "name":"k_EInputSourceMode_MouseJoystick", "value":"12" }, - { "name":"k_EInputSourceMode_MouseRegion", "value":"13" }, - { "name":"k_EInputSourceMode_RadialMenu", "value":"14" }, - { "name":"k_EInputSourceMode_SingleButton", "value":"15" }, - { "name":"k_EInputSourceMode_Switches", "value":"16" } - ] - }, - { - "enumname": "EInputActionOrigin", - "values": [ - { "name":"k_EInputActionOrigin_None", "value":"0" }, - { "name":"k_EInputActionOrigin_SteamController_A", "value":"1" }, - { "name":"k_EInputActionOrigin_SteamController_B", "value":"2" }, - { "name":"k_EInputActionOrigin_SteamController_X", "value":"3" }, - { "name":"k_EInputActionOrigin_SteamController_Y", "value":"4" }, - { "name":"k_EInputActionOrigin_SteamController_LeftBumper", "value":"5" }, - { "name":"k_EInputActionOrigin_SteamController_RightBumper", "value":"6" }, - { "name":"k_EInputActionOrigin_SteamController_LeftGrip", "value":"7" }, - { "name":"k_EInputActionOrigin_SteamController_RightGrip", "value":"8" }, - { "name":"k_EInputActionOrigin_SteamController_Start", "value":"9" }, - { "name":"k_EInputActionOrigin_SteamController_Back", "value":"10" }, - { "name":"k_EInputActionOrigin_SteamController_LeftPad_Touch", "value":"11" }, - { "name":"k_EInputActionOrigin_SteamController_LeftPad_Swipe", "value":"12" }, - { "name":"k_EInputActionOrigin_SteamController_LeftPad_Click", "value":"13" }, - { "name":"k_EInputActionOrigin_SteamController_LeftPad_DPadNorth", "value":"14" }, - { "name":"k_EInputActionOrigin_SteamController_LeftPad_DPadSouth", "value":"15" }, - { "name":"k_EInputActionOrigin_SteamController_LeftPad_DPadWest", "value":"16" }, - { "name":"k_EInputActionOrigin_SteamController_LeftPad_DPadEast", "value":"17" }, - { "name":"k_EInputActionOrigin_SteamController_RightPad_Touch", "value":"18" }, - { "name":"k_EInputActionOrigin_SteamController_RightPad_Swipe", "value":"19" }, - { "name":"k_EInputActionOrigin_SteamController_RightPad_Click", "value":"20" }, - { "name":"k_EInputActionOrigin_SteamController_RightPad_DPadNorth", "value":"21" }, - { "name":"k_EInputActionOrigin_SteamController_RightPad_DPadSouth", "value":"22" }, - { "name":"k_EInputActionOrigin_SteamController_RightPad_DPadWest", "value":"23" }, - { "name":"k_EInputActionOrigin_SteamController_RightPad_DPadEast", "value":"24" }, - { "name":"k_EInputActionOrigin_SteamController_LeftTrigger_Pull", "value":"25" }, - { "name":"k_EInputActionOrigin_SteamController_LeftTrigger_Click", "value":"26" }, - { "name":"k_EInputActionOrigin_SteamController_RightTrigger_Pull", "value":"27" }, - { "name":"k_EInputActionOrigin_SteamController_RightTrigger_Click", "value":"28" }, - { "name":"k_EInputActionOrigin_SteamController_LeftStick_Move", "value":"29" }, - { "name":"k_EInputActionOrigin_SteamController_LeftStick_Click", "value":"30" }, - { "name":"k_EInputActionOrigin_SteamController_LeftStick_DPadNorth", "value":"31" }, - { "name":"k_EInputActionOrigin_SteamController_LeftStick_DPadSouth", "value":"32" }, - { "name":"k_EInputActionOrigin_SteamController_LeftStick_DPadWest", "value":"33" }, - { "name":"k_EInputActionOrigin_SteamController_LeftStick_DPadEast", "value":"34" }, - { "name":"k_EInputActionOrigin_SteamController_Gyro_Move", "value":"35" }, - { "name":"k_EInputActionOrigin_SteamController_Gyro_Pitch", "value":"36" }, - { "name":"k_EInputActionOrigin_SteamController_Gyro_Yaw", "value":"37" }, - { "name":"k_EInputActionOrigin_SteamController_Gyro_Roll", "value":"38" }, - { "name":"k_EInputActionOrigin_SteamController_Reserved0", "value":"39" }, - { "name":"k_EInputActionOrigin_SteamController_Reserved1", "value":"40" }, - { "name":"k_EInputActionOrigin_SteamController_Reserved2", "value":"41" }, - { "name":"k_EInputActionOrigin_SteamController_Reserved3", "value":"42" }, - { "name":"k_EInputActionOrigin_SteamController_Reserved4", "value":"43" }, - { "name":"k_EInputActionOrigin_SteamController_Reserved5", "value":"44" }, - { "name":"k_EInputActionOrigin_SteamController_Reserved6", "value":"45" }, - { "name":"k_EInputActionOrigin_SteamController_Reserved7", "value":"46" }, - { "name":"k_EInputActionOrigin_SteamController_Reserved8", "value":"47" }, - { "name":"k_EInputActionOrigin_SteamController_Reserved9", "value":"48" }, - { "name":"k_EInputActionOrigin_SteamController_Reserved10", "value":"49" }, - { "name":"k_EInputActionOrigin_PS4_X", "value":"50" }, - { "name":"k_EInputActionOrigin_PS4_Circle", "value":"51" }, - { "name":"k_EInputActionOrigin_PS4_Triangle", "value":"52" }, - { "name":"k_EInputActionOrigin_PS4_Square", "value":"53" }, - { "name":"k_EInputActionOrigin_PS4_LeftBumper", "value":"54" }, - { "name":"k_EInputActionOrigin_PS4_RightBumper", "value":"55" }, - { "name":"k_EInputActionOrigin_PS4_Options", "value":"56" }, - { "name":"k_EInputActionOrigin_PS4_Share", "value":"57" }, - { "name":"k_EInputActionOrigin_PS4_LeftPad_Touch", "value":"58" }, - { "name":"k_EInputActionOrigin_PS4_LeftPad_Swipe", "value":"59" }, - { "name":"k_EInputActionOrigin_PS4_LeftPad_Click", "value":"60" }, - { "name":"k_EInputActionOrigin_PS4_LeftPad_DPadNorth", "value":"61" }, - { "name":"k_EInputActionOrigin_PS4_LeftPad_DPadSouth", "value":"62" }, - { "name":"k_EInputActionOrigin_PS4_LeftPad_DPadWest", "value":"63" }, - { "name":"k_EInputActionOrigin_PS4_LeftPad_DPadEast", "value":"64" }, - { "name":"k_EInputActionOrigin_PS4_RightPad_Touch", "value":"65" }, - { "name":"k_EInputActionOrigin_PS4_RightPad_Swipe", "value":"66" }, - { "name":"k_EInputActionOrigin_PS4_RightPad_Click", "value":"67" }, - { "name":"k_EInputActionOrigin_PS4_RightPad_DPadNorth", "value":"68" }, - { "name":"k_EInputActionOrigin_PS4_RightPad_DPadSouth", "value":"69" }, - { "name":"k_EInputActionOrigin_PS4_RightPad_DPadWest", "value":"70" }, - { "name":"k_EInputActionOrigin_PS4_RightPad_DPadEast", "value":"71" }, - { "name":"k_EInputActionOrigin_PS4_CenterPad_Touch", "value":"72" }, - { "name":"k_EInputActionOrigin_PS4_CenterPad_Swipe", "value":"73" }, - { "name":"k_EInputActionOrigin_PS4_CenterPad_Click", "value":"74" }, - { "name":"k_EInputActionOrigin_PS4_CenterPad_DPadNorth", "value":"75" }, - { "name":"k_EInputActionOrigin_PS4_CenterPad_DPadSouth", "value":"76" }, - { "name":"k_EInputActionOrigin_PS4_CenterPad_DPadWest", "value":"77" }, - { "name":"k_EInputActionOrigin_PS4_CenterPad_DPadEast", "value":"78" }, - { "name":"k_EInputActionOrigin_PS4_LeftTrigger_Pull", "value":"79" }, - { "name":"k_EInputActionOrigin_PS4_LeftTrigger_Click", "value":"80" }, - { "name":"k_EInputActionOrigin_PS4_RightTrigger_Pull", "value":"81" }, - { "name":"k_EInputActionOrigin_PS4_RightTrigger_Click", "value":"82" }, - { "name":"k_EInputActionOrigin_PS4_LeftStick_Move", "value":"83" }, - { "name":"k_EInputActionOrigin_PS4_LeftStick_Click", "value":"84" }, - { "name":"k_EInputActionOrigin_PS4_LeftStick_DPadNorth", "value":"85" }, - { "name":"k_EInputActionOrigin_PS4_LeftStick_DPadSouth", "value":"86" }, - { "name":"k_EInputActionOrigin_PS4_LeftStick_DPadWest", "value":"87" }, - { "name":"k_EInputActionOrigin_PS4_LeftStick_DPadEast", "value":"88" }, - { "name":"k_EInputActionOrigin_PS4_RightStick_Move", "value":"89" }, - { "name":"k_EInputActionOrigin_PS4_RightStick_Click", "value":"90" }, - { "name":"k_EInputActionOrigin_PS4_RightStick_DPadNorth", "value":"91" }, - { "name":"k_EInputActionOrigin_PS4_RightStick_DPadSouth", "value":"92" }, - { "name":"k_EInputActionOrigin_PS4_RightStick_DPadWest", "value":"93" }, - { "name":"k_EInputActionOrigin_PS4_RightStick_DPadEast", "value":"94" }, - { "name":"k_EInputActionOrigin_PS4_DPad_North", "value":"95" }, - { "name":"k_EInputActionOrigin_PS4_DPad_South", "value":"96" }, - { "name":"k_EInputActionOrigin_PS4_DPad_West", "value":"97" }, - { "name":"k_EInputActionOrigin_PS4_DPad_East", "value":"98" }, - { "name":"k_EInputActionOrigin_PS4_Gyro_Move", "value":"99" }, - { "name":"k_EInputActionOrigin_PS4_Gyro_Pitch", "value":"100" }, - { "name":"k_EInputActionOrigin_PS4_Gyro_Yaw", "value":"101" }, - { "name":"k_EInputActionOrigin_PS4_Gyro_Roll", "value":"102" }, - { "name":"k_EInputActionOrigin_PS4_DPad_Move", "value":"103" }, - { "name":"k_EInputActionOrigin_PS4_Reserved1", "value":"104" }, - { "name":"k_EInputActionOrigin_PS4_Reserved2", "value":"105" }, - { "name":"k_EInputActionOrigin_PS4_Reserved3", "value":"106" }, - { "name":"k_EInputActionOrigin_PS4_Reserved4", "value":"107" }, - { "name":"k_EInputActionOrigin_PS4_Reserved5", "value":"108" }, - { "name":"k_EInputActionOrigin_PS4_Reserved6", "value":"109" }, - { "name":"k_EInputActionOrigin_PS4_Reserved7", "value":"110" }, - { "name":"k_EInputActionOrigin_PS4_Reserved8", "value":"111" }, - { "name":"k_EInputActionOrigin_PS4_Reserved9", "value":"112" }, - { "name":"k_EInputActionOrigin_PS4_Reserved10", "value":"113" }, - { "name":"k_EInputActionOrigin_XBoxOne_A", "value":"114" }, - { "name":"k_EInputActionOrigin_XBoxOne_B", "value":"115" }, - { "name":"k_EInputActionOrigin_XBoxOne_X", "value":"116" }, - { "name":"k_EInputActionOrigin_XBoxOne_Y", "value":"117" }, - { "name":"k_EInputActionOrigin_XBoxOne_LeftBumper", "value":"118" }, - { "name":"k_EInputActionOrigin_XBoxOne_RightBumper", "value":"119" }, - { "name":"k_EInputActionOrigin_XBoxOne_Menu", "value":"120" }, - { "name":"k_EInputActionOrigin_XBoxOne_View", "value":"121" }, - { "name":"k_EInputActionOrigin_XBoxOne_LeftTrigger_Pull", "value":"122" }, - { "name":"k_EInputActionOrigin_XBoxOne_LeftTrigger_Click", "value":"123" }, - { "name":"k_EInputActionOrigin_XBoxOne_RightTrigger_Pull", "value":"124" }, - { "name":"k_EInputActionOrigin_XBoxOne_RightTrigger_Click", "value":"125" }, - { "name":"k_EInputActionOrigin_XBoxOne_LeftStick_Move", "value":"126" }, - { "name":"k_EInputActionOrigin_XBoxOne_LeftStick_Click", "value":"127" }, - { "name":"k_EInputActionOrigin_XBoxOne_LeftStick_DPadNorth", "value":"128" }, - { "name":"k_EInputActionOrigin_XBoxOne_LeftStick_DPadSouth", "value":"129" }, - { "name":"k_EInputActionOrigin_XBoxOne_LeftStick_DPadWest", "value":"130" }, - { "name":"k_EInputActionOrigin_XBoxOne_LeftStick_DPadEast", "value":"131" }, - { "name":"k_EInputActionOrigin_XBoxOne_RightStick_Move", "value":"132" }, - { "name":"k_EInputActionOrigin_XBoxOne_RightStick_Click", "value":"133" }, - { "name":"k_EInputActionOrigin_XBoxOne_RightStick_DPadNorth", "value":"134" }, - { "name":"k_EInputActionOrigin_XBoxOne_RightStick_DPadSouth", "value":"135" }, - { "name":"k_EInputActionOrigin_XBoxOne_RightStick_DPadWest", "value":"136" }, - { "name":"k_EInputActionOrigin_XBoxOne_RightStick_DPadEast", "value":"137" }, - { "name":"k_EInputActionOrigin_XBoxOne_DPad_North", "value":"138" }, - { "name":"k_EInputActionOrigin_XBoxOne_DPad_South", "value":"139" }, - { "name":"k_EInputActionOrigin_XBoxOne_DPad_West", "value":"140" }, - { "name":"k_EInputActionOrigin_XBoxOne_DPad_East", "value":"141" }, - { "name":"k_EInputActionOrigin_XBoxOne_DPad_Move", "value":"142" }, - { "name":"k_EInputActionOrigin_XBoxOne_Reserved1", "value":"143" }, - { "name":"k_EInputActionOrigin_XBoxOne_Reserved2", "value":"144" }, - { "name":"k_EInputActionOrigin_XBoxOne_Reserved3", "value":"145" }, - { "name":"k_EInputActionOrigin_XBoxOne_Reserved4", "value":"146" }, - { "name":"k_EInputActionOrigin_XBoxOne_Reserved5", "value":"147" }, - { "name":"k_EInputActionOrigin_XBoxOne_Reserved6", "value":"148" }, - { "name":"k_EInputActionOrigin_XBoxOne_Reserved7", "value":"149" }, - { "name":"k_EInputActionOrigin_XBoxOne_Reserved8", "value":"150" }, - { "name":"k_EInputActionOrigin_XBoxOne_Reserved9", "value":"151" }, - { "name":"k_EInputActionOrigin_XBoxOne_Reserved10", "value":"152" }, - { "name":"k_EInputActionOrigin_XBox360_A", "value":"153" }, - { "name":"k_EInputActionOrigin_XBox360_B", "value":"154" }, - { "name":"k_EInputActionOrigin_XBox360_X", "value":"155" }, - { "name":"k_EInputActionOrigin_XBox360_Y", "value":"156" }, - { "name":"k_EInputActionOrigin_XBox360_LeftBumper", "value":"157" }, - { "name":"k_EInputActionOrigin_XBox360_RightBumper", "value":"158" }, - { "name":"k_EInputActionOrigin_XBox360_Start", "value":"159" }, - { "name":"k_EInputActionOrigin_XBox360_Back", "value":"160" }, - { "name":"k_EInputActionOrigin_XBox360_LeftTrigger_Pull", "value":"161" }, - { "name":"k_EInputActionOrigin_XBox360_LeftTrigger_Click", "value":"162" }, - { "name":"k_EInputActionOrigin_XBox360_RightTrigger_Pull", "value":"163" }, - { "name":"k_EInputActionOrigin_XBox360_RightTrigger_Click", "value":"164" }, - { "name":"k_EInputActionOrigin_XBox360_LeftStick_Move", "value":"165" }, - { "name":"k_EInputActionOrigin_XBox360_LeftStick_Click", "value":"166" }, - { "name":"k_EInputActionOrigin_XBox360_LeftStick_DPadNorth", "value":"167" }, - { "name":"k_EInputActionOrigin_XBox360_LeftStick_DPadSouth", "value":"168" }, - { "name":"k_EInputActionOrigin_XBox360_LeftStick_DPadWest", "value":"169" }, - { "name":"k_EInputActionOrigin_XBox360_LeftStick_DPadEast", "value":"170" }, - { "name":"k_EInputActionOrigin_XBox360_RightStick_Move", "value":"171" }, - { "name":"k_EInputActionOrigin_XBox360_RightStick_Click", "value":"172" }, - { "name":"k_EInputActionOrigin_XBox360_RightStick_DPadNorth", "value":"173" }, - { "name":"k_EInputActionOrigin_XBox360_RightStick_DPadSouth", "value":"174" }, - { "name":"k_EInputActionOrigin_XBox360_RightStick_DPadWest", "value":"175" }, - { "name":"k_EInputActionOrigin_XBox360_RightStick_DPadEast", "value":"176" }, - { "name":"k_EInputActionOrigin_XBox360_DPad_North", "value":"177" }, - { "name":"k_EInputActionOrigin_XBox360_DPad_South", "value":"178" }, - { "name":"k_EInputActionOrigin_XBox360_DPad_West", "value":"179" }, - { "name":"k_EInputActionOrigin_XBox360_DPad_East", "value":"180" }, - { "name":"k_EInputActionOrigin_XBox360_DPad_Move", "value":"181" }, - { "name":"k_EInputActionOrigin_XBox360_Reserved1", "value":"182" }, - { "name":"k_EInputActionOrigin_XBox360_Reserved2", "value":"183" }, - { "name":"k_EInputActionOrigin_XBox360_Reserved3", "value":"184" }, - { "name":"k_EInputActionOrigin_XBox360_Reserved4", "value":"185" }, - { "name":"k_EInputActionOrigin_XBox360_Reserved5", "value":"186" }, - { "name":"k_EInputActionOrigin_XBox360_Reserved6", "value":"187" }, - { "name":"k_EInputActionOrigin_XBox360_Reserved7", "value":"188" }, - { "name":"k_EInputActionOrigin_XBox360_Reserved8", "value":"189" }, - { "name":"k_EInputActionOrigin_XBox360_Reserved9", "value":"190" }, - { "name":"k_EInputActionOrigin_XBox360_Reserved10", "value":"191" }, - { "name":"k_EInputActionOrigin_Switch_A", "value":"192" }, - { "name":"k_EInputActionOrigin_Switch_B", "value":"193" }, - { "name":"k_EInputActionOrigin_Switch_X", "value":"194" }, - { "name":"k_EInputActionOrigin_Switch_Y", "value":"195" }, - { "name":"k_EInputActionOrigin_Switch_LeftBumper", "value":"196" }, - { "name":"k_EInputActionOrigin_Switch_RightBumper", "value":"197" }, - { "name":"k_EInputActionOrigin_Switch_Plus", "value":"198" }, - { "name":"k_EInputActionOrigin_Switch_Minus", "value":"199" }, - { "name":"k_EInputActionOrigin_Switch_Capture", "value":"200" }, - { "name":"k_EInputActionOrigin_Switch_LeftTrigger_Pull", "value":"201" }, - { "name":"k_EInputActionOrigin_Switch_LeftTrigger_Click", "value":"202" }, - { "name":"k_EInputActionOrigin_Switch_RightTrigger_Pull", "value":"203" }, - { "name":"k_EInputActionOrigin_Switch_RightTrigger_Click", "value":"204" }, - { "name":"k_EInputActionOrigin_Switch_LeftStick_Move", "value":"205" }, - { "name":"k_EInputActionOrigin_Switch_LeftStick_Click", "value":"206" }, - { "name":"k_EInputActionOrigin_Switch_LeftStick_DPadNorth", "value":"207" }, - { "name":"k_EInputActionOrigin_Switch_LeftStick_DPadSouth", "value":"208" }, - { "name":"k_EInputActionOrigin_Switch_LeftStick_DPadWest", "value":"209" }, - { "name":"k_EInputActionOrigin_Switch_LeftStick_DPadEast", "value":"210" }, - { "name":"k_EInputActionOrigin_Switch_RightStick_Move", "value":"211" }, - { "name":"k_EInputActionOrigin_Switch_RightStick_Click", "value":"212" }, - { "name":"k_EInputActionOrigin_Switch_RightStick_DPadNorth", "value":"213" }, - { "name":"k_EInputActionOrigin_Switch_RightStick_DPadSouth", "value":"214" }, - { "name":"k_EInputActionOrigin_Switch_RightStick_DPadWest", "value":"215" }, - { "name":"k_EInputActionOrigin_Switch_RightStick_DPadEast", "value":"216" }, - { "name":"k_EInputActionOrigin_Switch_DPad_North", "value":"217" }, - { "name":"k_EInputActionOrigin_Switch_DPad_South", "value":"218" }, - { "name":"k_EInputActionOrigin_Switch_DPad_West", "value":"219" }, - { "name":"k_EInputActionOrigin_Switch_DPad_East", "value":"220" }, - { "name":"k_EInputActionOrigin_Switch_ProGyro_Move", "value":"221" }, - { "name":"k_EInputActionOrigin_Switch_ProGyro_Pitch", "value":"222" }, - { "name":"k_EInputActionOrigin_Switch_ProGyro_Yaw", "value":"223" }, - { "name":"k_EInputActionOrigin_Switch_ProGyro_Roll", "value":"224" }, - { "name":"k_EInputActionOrigin_Switch_DPad_Move", "value":"225" }, - { "name":"k_EInputActionOrigin_Switch_Reserved1", "value":"226" }, - { "name":"k_EInputActionOrigin_Switch_Reserved2", "value":"227" }, - { "name":"k_EInputActionOrigin_Switch_Reserved3", "value":"228" }, - { "name":"k_EInputActionOrigin_Switch_Reserved4", "value":"229" }, - { "name":"k_EInputActionOrigin_Switch_Reserved5", "value":"230" }, - { "name":"k_EInputActionOrigin_Switch_Reserved6", "value":"231" }, - { "name":"k_EInputActionOrigin_Switch_Reserved7", "value":"232" }, - { "name":"k_EInputActionOrigin_Switch_Reserved8", "value":"233" }, - { "name":"k_EInputActionOrigin_Switch_Reserved9", "value":"234" }, - { "name":"k_EInputActionOrigin_Switch_Reserved10", "value":"235" }, - { "name":"k_EInputActionOrigin_Switch_RightGyro_Move", "value":"236" }, - { "name":"k_EInputActionOrigin_Switch_RightGyro_Pitch", "value":"237" }, - { "name":"k_EInputActionOrigin_Switch_RightGyro_Yaw", "value":"238" }, - { "name":"k_EInputActionOrigin_Switch_RightGyro_Roll", "value":"239" }, - { "name":"k_EInputActionOrigin_Switch_LeftGyro_Move", "value":"240" }, - { "name":"k_EInputActionOrigin_Switch_LeftGyro_Pitch", "value":"241" }, - { "name":"k_EInputActionOrigin_Switch_LeftGyro_Yaw", "value":"242" }, - { "name":"k_EInputActionOrigin_Switch_LeftGyro_Roll", "value":"243" }, - { "name":"k_EInputActionOrigin_Switch_LeftGrip_Lower", "value":"244" }, - { "name":"k_EInputActionOrigin_Switch_LeftGrip_Upper", "value":"245" }, - { "name":"k_EInputActionOrigin_Switch_RightGrip_Lower", "value":"246" }, - { "name":"k_EInputActionOrigin_Switch_RightGrip_Upper", "value":"247" }, - { "name":"k_EInputActionOrigin_Switch_Reserved11", "value":"248" }, - { "name":"k_EInputActionOrigin_Switch_Reserved12", "value":"249" }, - { "name":"k_EInputActionOrigin_Switch_Reserved13", "value":"250" }, - { "name":"k_EInputActionOrigin_Switch_Reserved14", "value":"251" }, - { "name":"k_EInputActionOrigin_Switch_Reserved15", "value":"252" }, - { "name":"k_EInputActionOrigin_Switch_Reserved16", "value":"253" }, - { "name":"k_EInputActionOrigin_Switch_Reserved17", "value":"254" }, - { "name":"k_EInputActionOrigin_Switch_Reserved18", "value":"255" }, - { "name":"k_EInputActionOrigin_Switch_Reserved19", "value":"256" }, - { "name":"k_EInputActionOrigin_Switch_Reserved20", "value":"257" }, - { "name":"k_EInputActionOrigin_PS5_X", "value":"258" }, - { "name":"k_EInputActionOrigin_PS5_Circle", "value":"259" }, - { "name":"k_EInputActionOrigin_PS5_Triangle", "value":"260" }, - { "name":"k_EInputActionOrigin_PS5_Square", "value":"261" }, - { "name":"k_EInputActionOrigin_PS5_LeftBumper", "value":"262" }, - { "name":"k_EInputActionOrigin_PS5_RightBumper", "value":"263" }, - { "name":"k_EInputActionOrigin_PS5_Option", "value":"264" }, - { "name":"k_EInputActionOrigin_PS5_Create", "value":"265" }, - { "name":"k_EInputActionOrigin_PS5_Mute", "value":"266" }, - { "name":"k_EInputActionOrigin_PS5_LeftPad_Touch", "value":"267" }, - { "name":"k_EInputActionOrigin_PS5_LeftPad_Swipe", "value":"268" }, - { "name":"k_EInputActionOrigin_PS5_LeftPad_Click", "value":"269" }, - { "name":"k_EInputActionOrigin_PS5_LeftPad_DPadNorth", "value":"270" }, - { "name":"k_EInputActionOrigin_PS5_LeftPad_DPadSouth", "value":"271" }, - { "name":"k_EInputActionOrigin_PS5_LeftPad_DPadWest", "value":"272" }, - { "name":"k_EInputActionOrigin_PS5_LeftPad_DPadEast", "value":"273" }, - { "name":"k_EInputActionOrigin_PS5_RightPad_Touch", "value":"274" }, - { "name":"k_EInputActionOrigin_PS5_RightPad_Swipe", "value":"275" }, - { "name":"k_EInputActionOrigin_PS5_RightPad_Click", "value":"276" }, - { "name":"k_EInputActionOrigin_PS5_RightPad_DPadNorth", "value":"277" }, - { "name":"k_EInputActionOrigin_PS5_RightPad_DPadSouth", "value":"278" }, - { "name":"k_EInputActionOrigin_PS5_RightPad_DPadWest", "value":"279" }, - { "name":"k_EInputActionOrigin_PS5_RightPad_DPadEast", "value":"280" }, - { "name":"k_EInputActionOrigin_PS5_CenterPad_Touch", "value":"281" }, - { "name":"k_EInputActionOrigin_PS5_CenterPad_Swipe", "value":"282" }, - { "name":"k_EInputActionOrigin_PS5_CenterPad_Click", "value":"283" }, - { "name":"k_EInputActionOrigin_PS5_CenterPad_DPadNorth", "value":"284" }, - { "name":"k_EInputActionOrigin_PS5_CenterPad_DPadSouth", "value":"285" }, - { "name":"k_EInputActionOrigin_PS5_CenterPad_DPadWest", "value":"286" }, - { "name":"k_EInputActionOrigin_PS5_CenterPad_DPadEast", "value":"287" }, - { "name":"k_EInputActionOrigin_PS5_LeftTrigger_Pull", "value":"288" }, - { "name":"k_EInputActionOrigin_PS5_LeftTrigger_Click", "value":"289" }, - { "name":"k_EInputActionOrigin_PS5_RightTrigger_Pull", "value":"290" }, - { "name":"k_EInputActionOrigin_PS5_RightTrigger_Click", "value":"291" }, - { "name":"k_EInputActionOrigin_PS5_LeftStick_Move", "value":"292" }, - { "name":"k_EInputActionOrigin_PS5_LeftStick_Click", "value":"293" }, - { "name":"k_EInputActionOrigin_PS5_LeftStick_DPadNorth", "value":"294" }, - { "name":"k_EInputActionOrigin_PS5_LeftStick_DPadSouth", "value":"295" }, - { "name":"k_EInputActionOrigin_PS5_LeftStick_DPadWest", "value":"296" }, - { "name":"k_EInputActionOrigin_PS5_LeftStick_DPadEast", "value":"297" }, - { "name":"k_EInputActionOrigin_PS5_RightStick_Move", "value":"298" }, - { "name":"k_EInputActionOrigin_PS5_RightStick_Click", "value":"299" }, - { "name":"k_EInputActionOrigin_PS5_RightStick_DPadNorth", "value":"300" }, - { "name":"k_EInputActionOrigin_PS5_RightStick_DPadSouth", "value":"301" }, - { "name":"k_EInputActionOrigin_PS5_RightStick_DPadWest", "value":"302" }, - { "name":"k_EInputActionOrigin_PS5_RightStick_DPadEast", "value":"303" }, - { "name":"k_EInputActionOrigin_PS5_DPad_North", "value":"304" }, - { "name":"k_EInputActionOrigin_PS5_DPad_South", "value":"305" }, - { "name":"k_EInputActionOrigin_PS5_DPad_West", "value":"306" }, - { "name":"k_EInputActionOrigin_PS5_DPad_East", "value":"307" }, - { "name":"k_EInputActionOrigin_PS5_Gyro_Move", "value":"308" }, - { "name":"k_EInputActionOrigin_PS5_Gyro_Pitch", "value":"309" }, - { "name":"k_EInputActionOrigin_PS5_Gyro_Yaw", "value":"310" }, - { "name":"k_EInputActionOrigin_PS5_Gyro_Roll", "value":"311" }, - { "name":"k_EInputActionOrigin_PS5_DPad_Move", "value":"312" }, - { "name":"k_EInputActionOrigin_PS5_Reserved1", "value":"313" }, - { "name":"k_EInputActionOrigin_PS5_Reserved2", "value":"314" }, - { "name":"k_EInputActionOrigin_PS5_Reserved3", "value":"315" }, - { "name":"k_EInputActionOrigin_PS5_Reserved4", "value":"316" }, - { "name":"k_EInputActionOrigin_PS5_Reserved5", "value":"317" }, - { "name":"k_EInputActionOrigin_PS5_Reserved6", "value":"318" }, - { "name":"k_EInputActionOrigin_PS5_Reserved7", "value":"319" }, - { "name":"k_EInputActionOrigin_PS5_Reserved8", "value":"320" }, - { "name":"k_EInputActionOrigin_PS5_Reserved9", "value":"321" }, - { "name":"k_EInputActionOrigin_PS5_Reserved10", "value":"322" }, - { "name":"k_EInputActionOrigin_PS5_Reserved11", "value":"323" }, - { "name":"k_EInputActionOrigin_PS5_Reserved12", "value":"324" }, - { "name":"k_EInputActionOrigin_PS5_Reserved13", "value":"325" }, - { "name":"k_EInputActionOrigin_PS5_Reserved14", "value":"326" }, - { "name":"k_EInputActionOrigin_PS5_Reserved15", "value":"327" }, - { "name":"k_EInputActionOrigin_PS5_Reserved16", "value":"328" }, - { "name":"k_EInputActionOrigin_PS5_Reserved17", "value":"329" }, - { "name":"k_EInputActionOrigin_PS5_Reserved18", "value":"330" }, - { "name":"k_EInputActionOrigin_PS5_Reserved19", "value":"331" }, - { "name":"k_EInputActionOrigin_PS5_Reserved20", "value":"332" }, - { "name":"k_EInputActionOrigin_Count", "value":"333" }, - { "name":"k_EInputActionOrigin_MaximumPossibleValue", "value":"32767" } - ] - }, - { - "enumname": "EXboxOrigin", - "values": [ - { "name":"k_EXboxOrigin_A", "value":"0" }, - { "name":"k_EXboxOrigin_B", "value":"1" }, - { "name":"k_EXboxOrigin_X", "value":"2" }, - { "name":"k_EXboxOrigin_Y", "value":"3" }, - { "name":"k_EXboxOrigin_LeftBumper", "value":"4" }, - { "name":"k_EXboxOrigin_RightBumper", "value":"5" }, - { "name":"k_EXboxOrigin_Menu", "value":"6" }, - { "name":"k_EXboxOrigin_View", "value":"7" }, - { "name":"k_EXboxOrigin_LeftTrigger_Pull", "value":"8" }, - { "name":"k_EXboxOrigin_LeftTrigger_Click", "value":"9" }, - { "name":"k_EXboxOrigin_RightTrigger_Pull", "value":"10" }, - { "name":"k_EXboxOrigin_RightTrigger_Click", "value":"11" }, - { "name":"k_EXboxOrigin_LeftStick_Move", "value":"12" }, - { "name":"k_EXboxOrigin_LeftStick_Click", "value":"13" }, - { "name":"k_EXboxOrigin_LeftStick_DPadNorth", "value":"14" }, - { "name":"k_EXboxOrigin_LeftStick_DPadSouth", "value":"15" }, - { "name":"k_EXboxOrigin_LeftStick_DPadWest", "value":"16" }, - { "name":"k_EXboxOrigin_LeftStick_DPadEast", "value":"17" }, - { "name":"k_EXboxOrigin_RightStick_Move", "value":"18" }, - { "name":"k_EXboxOrigin_RightStick_Click", "value":"19" }, - { "name":"k_EXboxOrigin_RightStick_DPadNorth", "value":"20" }, - { "name":"k_EXboxOrigin_RightStick_DPadSouth", "value":"21" }, - { "name":"k_EXboxOrigin_RightStick_DPadWest", "value":"22" }, - { "name":"k_EXboxOrigin_RightStick_DPadEast", "value":"23" }, - { "name":"k_EXboxOrigin_DPad_North", "value":"24" }, - { "name":"k_EXboxOrigin_DPad_South", "value":"25" }, - { "name":"k_EXboxOrigin_DPad_West", "value":"26" }, - { "name":"k_EXboxOrigin_DPad_East", "value":"27" }, - { "name":"k_EXboxOrigin_Count", "value":"28" } - ] - }, - { - "enumname": "ESteamControllerPad", - "values": [ - { "name":"k_ESteamControllerPad_Left", "value":"0" }, - { "name":"k_ESteamControllerPad_Right", "value":"1" } - ] - }, - { - "enumname": "ESteamInputType", - "values": [ - { "name":"k_ESteamInputType_Unknown", "value":"0" }, - { "name":"k_ESteamInputType_SteamController", "value":"1" }, - { "name":"k_ESteamInputType_XBox360Controller", "value":"2" }, - { "name":"k_ESteamInputType_XBoxOneController", "value":"3" }, - { "name":"k_ESteamInputType_GenericGamepad", "value":"4" }, - { "name":"k_ESteamInputType_PS4Controller", "value":"5" }, - { "name":"k_ESteamInputType_AppleMFiController", "value":"6" }, - { "name":"k_ESteamInputType_AndroidController", "value":"7" }, - { "name":"k_ESteamInputType_SwitchJoyConPair", "value":"8" }, - { "name":"k_ESteamInputType_SwitchJoyConSingle", "value":"9" }, - { "name":"k_ESteamInputType_SwitchProController", "value":"10" }, - { "name":"k_ESteamInputType_MobileTouch", "value":"11" }, - { "name":"k_ESteamInputType_PS3Controller", "value":"12" }, - { "name":"k_ESteamInputType_PS5Controller", "value":"13" }, - { "name":"k_ESteamInputType_Count", "value":"14" }, - { "name":"k_ESteamInputType_MaximumPossibleValue", "value":"255" } - ] - }, - { - "enumname": "ESteamInputLEDFlag", - "values": [ - { "name":"k_ESteamInputLEDFlag_SetColor", "value":"0" }, - { "name":"k_ESteamInputLEDFlag_RestoreUserDefault", "value":"1" } - ] - }, - { - "enumname": "EControllerActionOrigin", - "values": [ - { "name":"k_EControllerActionOrigin_None", "value":"0" }, - { "name":"k_EControllerActionOrigin_A", "value":"1" }, - { "name":"k_EControllerActionOrigin_B", "value":"2" }, - { "name":"k_EControllerActionOrigin_X", "value":"3" }, - { "name":"k_EControllerActionOrigin_Y", "value":"4" }, - { "name":"k_EControllerActionOrigin_LeftBumper", "value":"5" }, - { "name":"k_EControllerActionOrigin_RightBumper", "value":"6" }, - { "name":"k_EControllerActionOrigin_LeftGrip", "value":"7" }, - { "name":"k_EControllerActionOrigin_RightGrip", "value":"8" }, - { "name":"k_EControllerActionOrigin_Start", "value":"9" }, - { "name":"k_EControllerActionOrigin_Back", "value":"10" }, - { "name":"k_EControllerActionOrigin_LeftPad_Touch", "value":"11" }, - { "name":"k_EControllerActionOrigin_LeftPad_Swipe", "value":"12" }, - { "name":"k_EControllerActionOrigin_LeftPad_Click", "value":"13" }, - { "name":"k_EControllerActionOrigin_LeftPad_DPadNorth", "value":"14" }, - { "name":"k_EControllerActionOrigin_LeftPad_DPadSouth", "value":"15" }, - { "name":"k_EControllerActionOrigin_LeftPad_DPadWest", "value":"16" }, - { "name":"k_EControllerActionOrigin_LeftPad_DPadEast", "value":"17" }, - { "name":"k_EControllerActionOrigin_RightPad_Touch", "value":"18" }, - { "name":"k_EControllerActionOrigin_RightPad_Swipe", "value":"19" }, - { "name":"k_EControllerActionOrigin_RightPad_Click", "value":"20" }, - { "name":"k_EControllerActionOrigin_RightPad_DPadNorth", "value":"21" }, - { "name":"k_EControllerActionOrigin_RightPad_DPadSouth", "value":"22" }, - { "name":"k_EControllerActionOrigin_RightPad_DPadWest", "value":"23" }, - { "name":"k_EControllerActionOrigin_RightPad_DPadEast", "value":"24" }, - { "name":"k_EControllerActionOrigin_LeftTrigger_Pull", "value":"25" }, - { "name":"k_EControllerActionOrigin_LeftTrigger_Click", "value":"26" }, - { "name":"k_EControllerActionOrigin_RightTrigger_Pull", "value":"27" }, - { "name":"k_EControllerActionOrigin_RightTrigger_Click", "value":"28" }, - { "name":"k_EControllerActionOrigin_LeftStick_Move", "value":"29" }, - { "name":"k_EControllerActionOrigin_LeftStick_Click", "value":"30" }, - { "name":"k_EControllerActionOrigin_LeftStick_DPadNorth", "value":"31" }, - { "name":"k_EControllerActionOrigin_LeftStick_DPadSouth", "value":"32" }, - { "name":"k_EControllerActionOrigin_LeftStick_DPadWest", "value":"33" }, - { "name":"k_EControllerActionOrigin_LeftStick_DPadEast", "value":"34" }, - { "name":"k_EControllerActionOrigin_Gyro_Move", "value":"35" }, - { "name":"k_EControllerActionOrigin_Gyro_Pitch", "value":"36" }, - { "name":"k_EControllerActionOrigin_Gyro_Yaw", "value":"37" }, - { "name":"k_EControllerActionOrigin_Gyro_Roll", "value":"38" }, - { "name":"k_EControllerActionOrigin_PS4_X", "value":"39" }, - { "name":"k_EControllerActionOrigin_PS4_Circle", "value":"40" }, - { "name":"k_EControllerActionOrigin_PS4_Triangle", "value":"41" }, - { "name":"k_EControllerActionOrigin_PS4_Square", "value":"42" }, - { "name":"k_EControllerActionOrigin_PS4_LeftBumper", "value":"43" }, - { "name":"k_EControllerActionOrigin_PS4_RightBumper", "value":"44" }, - { "name":"k_EControllerActionOrigin_PS4_Options", "value":"45" }, - { "name":"k_EControllerActionOrigin_PS4_Share", "value":"46" }, - { "name":"k_EControllerActionOrigin_PS4_LeftPad_Touch", "value":"47" }, - { "name":"k_EControllerActionOrigin_PS4_LeftPad_Swipe", "value":"48" }, - { "name":"k_EControllerActionOrigin_PS4_LeftPad_Click", "value":"49" }, - { "name":"k_EControllerActionOrigin_PS4_LeftPad_DPadNorth", "value":"50" }, - { "name":"k_EControllerActionOrigin_PS4_LeftPad_DPadSouth", "value":"51" }, - { "name":"k_EControllerActionOrigin_PS4_LeftPad_DPadWest", "value":"52" }, - { "name":"k_EControllerActionOrigin_PS4_LeftPad_DPadEast", "value":"53" }, - { "name":"k_EControllerActionOrigin_PS4_RightPad_Touch", "value":"54" }, - { "name":"k_EControllerActionOrigin_PS4_RightPad_Swipe", "value":"55" }, - { "name":"k_EControllerActionOrigin_PS4_RightPad_Click", "value":"56" }, - { "name":"k_EControllerActionOrigin_PS4_RightPad_DPadNorth", "value":"57" }, - { "name":"k_EControllerActionOrigin_PS4_RightPad_DPadSouth", "value":"58" }, - { "name":"k_EControllerActionOrigin_PS4_RightPad_DPadWest", "value":"59" }, - { "name":"k_EControllerActionOrigin_PS4_RightPad_DPadEast", "value":"60" }, - { "name":"k_EControllerActionOrigin_PS4_CenterPad_Touch", "value":"61" }, - { "name":"k_EControllerActionOrigin_PS4_CenterPad_Swipe", "value":"62" }, - { "name":"k_EControllerActionOrigin_PS4_CenterPad_Click", "value":"63" }, - { "name":"k_EControllerActionOrigin_PS4_CenterPad_DPadNorth", "value":"64" }, - { "name":"k_EControllerActionOrigin_PS4_CenterPad_DPadSouth", "value":"65" }, - { "name":"k_EControllerActionOrigin_PS4_CenterPad_DPadWest", "value":"66" }, - { "name":"k_EControllerActionOrigin_PS4_CenterPad_DPadEast", "value":"67" }, - { "name":"k_EControllerActionOrigin_PS4_LeftTrigger_Pull", "value":"68" }, - { "name":"k_EControllerActionOrigin_PS4_LeftTrigger_Click", "value":"69" }, - { "name":"k_EControllerActionOrigin_PS4_RightTrigger_Pull", "value":"70" }, - { "name":"k_EControllerActionOrigin_PS4_RightTrigger_Click", "value":"71" }, - { "name":"k_EControllerActionOrigin_PS4_LeftStick_Move", "value":"72" }, - { "name":"k_EControllerActionOrigin_PS4_LeftStick_Click", "value":"73" }, - { "name":"k_EControllerActionOrigin_PS4_LeftStick_DPadNorth", "value":"74" }, - { "name":"k_EControllerActionOrigin_PS4_LeftStick_DPadSouth", "value":"75" }, - { "name":"k_EControllerActionOrigin_PS4_LeftStick_DPadWest", "value":"76" }, - { "name":"k_EControllerActionOrigin_PS4_LeftStick_DPadEast", "value":"77" }, - { "name":"k_EControllerActionOrigin_PS4_RightStick_Move", "value":"78" }, - { "name":"k_EControllerActionOrigin_PS4_RightStick_Click", "value":"79" }, - { "name":"k_EControllerActionOrigin_PS4_RightStick_DPadNorth", "value":"80" }, - { "name":"k_EControllerActionOrigin_PS4_RightStick_DPadSouth", "value":"81" }, - { "name":"k_EControllerActionOrigin_PS4_RightStick_DPadWest", "value":"82" }, - { "name":"k_EControllerActionOrigin_PS4_RightStick_DPadEast", "value":"83" }, - { "name":"k_EControllerActionOrigin_PS4_DPad_North", "value":"84" }, - { "name":"k_EControllerActionOrigin_PS4_DPad_South", "value":"85" }, - { "name":"k_EControllerActionOrigin_PS4_DPad_West", "value":"86" }, - { "name":"k_EControllerActionOrigin_PS4_DPad_East", "value":"87" }, - { "name":"k_EControllerActionOrigin_PS4_Gyro_Move", "value":"88" }, - { "name":"k_EControllerActionOrigin_PS4_Gyro_Pitch", "value":"89" }, - { "name":"k_EControllerActionOrigin_PS4_Gyro_Yaw", "value":"90" }, - { "name":"k_EControllerActionOrigin_PS4_Gyro_Roll", "value":"91" }, - { "name":"k_EControllerActionOrigin_XBoxOne_A", "value":"92" }, - { "name":"k_EControllerActionOrigin_XBoxOne_B", "value":"93" }, - { "name":"k_EControllerActionOrigin_XBoxOne_X", "value":"94" }, - { "name":"k_EControllerActionOrigin_XBoxOne_Y", "value":"95" }, - { "name":"k_EControllerActionOrigin_XBoxOne_LeftBumper", "value":"96" }, - { "name":"k_EControllerActionOrigin_XBoxOne_RightBumper", "value":"97" }, - { "name":"k_EControllerActionOrigin_XBoxOne_Menu", "value":"98" }, - { "name":"k_EControllerActionOrigin_XBoxOne_View", "value":"99" }, - { "name":"k_EControllerActionOrigin_XBoxOne_LeftTrigger_Pull", "value":"100" }, - { "name":"k_EControllerActionOrigin_XBoxOne_LeftTrigger_Click", "value":"101" }, - { "name":"k_EControllerActionOrigin_XBoxOne_RightTrigger_Pull", "value":"102" }, - { "name":"k_EControllerActionOrigin_XBoxOne_RightTrigger_Click", "value":"103" }, - { "name":"k_EControllerActionOrigin_XBoxOne_LeftStick_Move", "value":"104" }, - { "name":"k_EControllerActionOrigin_XBoxOne_LeftStick_Click", "value":"105" }, - { "name":"k_EControllerActionOrigin_XBoxOne_LeftStick_DPadNorth", "value":"106" }, - { "name":"k_EControllerActionOrigin_XBoxOne_LeftStick_DPadSouth", "value":"107" }, - { "name":"k_EControllerActionOrigin_XBoxOne_LeftStick_DPadWest", "value":"108" }, - { "name":"k_EControllerActionOrigin_XBoxOne_LeftStick_DPadEast", "value":"109" }, - { "name":"k_EControllerActionOrigin_XBoxOne_RightStick_Move", "value":"110" }, - { "name":"k_EControllerActionOrigin_XBoxOne_RightStick_Click", "value":"111" }, - { "name":"k_EControllerActionOrigin_XBoxOne_RightStick_DPadNorth", "value":"112" }, - { "name":"k_EControllerActionOrigin_XBoxOne_RightStick_DPadSouth", "value":"113" }, - { "name":"k_EControllerActionOrigin_XBoxOne_RightStick_DPadWest", "value":"114" }, - { "name":"k_EControllerActionOrigin_XBoxOne_RightStick_DPadEast", "value":"115" }, - { "name":"k_EControllerActionOrigin_XBoxOne_DPad_North", "value":"116" }, - { "name":"k_EControllerActionOrigin_XBoxOne_DPad_South", "value":"117" }, - { "name":"k_EControllerActionOrigin_XBoxOne_DPad_West", "value":"118" }, - { "name":"k_EControllerActionOrigin_XBoxOne_DPad_East", "value":"119" }, - { "name":"k_EControllerActionOrigin_XBox360_A", "value":"120" }, - { "name":"k_EControllerActionOrigin_XBox360_B", "value":"121" }, - { "name":"k_EControllerActionOrigin_XBox360_X", "value":"122" }, - { "name":"k_EControllerActionOrigin_XBox360_Y", "value":"123" }, - { "name":"k_EControllerActionOrigin_XBox360_LeftBumper", "value":"124" }, - { "name":"k_EControllerActionOrigin_XBox360_RightBumper", "value":"125" }, - { "name":"k_EControllerActionOrigin_XBox360_Start", "value":"126" }, - { "name":"k_EControllerActionOrigin_XBox360_Back", "value":"127" }, - { "name":"k_EControllerActionOrigin_XBox360_LeftTrigger_Pull", "value":"128" }, - { "name":"k_EControllerActionOrigin_XBox360_LeftTrigger_Click", "value":"129" }, - { "name":"k_EControllerActionOrigin_XBox360_RightTrigger_Pull", "value":"130" }, - { "name":"k_EControllerActionOrigin_XBox360_RightTrigger_Click", "value":"131" }, - { "name":"k_EControllerActionOrigin_XBox360_LeftStick_Move", "value":"132" }, - { "name":"k_EControllerActionOrigin_XBox360_LeftStick_Click", "value":"133" }, - { "name":"k_EControllerActionOrigin_XBox360_LeftStick_DPadNorth", "value":"134" }, - { "name":"k_EControllerActionOrigin_XBox360_LeftStick_DPadSouth", "value":"135" }, - { "name":"k_EControllerActionOrigin_XBox360_LeftStick_DPadWest", "value":"136" }, - { "name":"k_EControllerActionOrigin_XBox360_LeftStick_DPadEast", "value":"137" }, - { "name":"k_EControllerActionOrigin_XBox360_RightStick_Move", "value":"138" }, - { "name":"k_EControllerActionOrigin_XBox360_RightStick_Click", "value":"139" }, - { "name":"k_EControllerActionOrigin_XBox360_RightStick_DPadNorth", "value":"140" }, - { "name":"k_EControllerActionOrigin_XBox360_RightStick_DPadSouth", "value":"141" }, - { "name":"k_EControllerActionOrigin_XBox360_RightStick_DPadWest", "value":"142" }, - { "name":"k_EControllerActionOrigin_XBox360_RightStick_DPadEast", "value":"143" }, - { "name":"k_EControllerActionOrigin_XBox360_DPad_North", "value":"144" }, - { "name":"k_EControllerActionOrigin_XBox360_DPad_South", "value":"145" }, - { "name":"k_EControllerActionOrigin_XBox360_DPad_West", "value":"146" }, - { "name":"k_EControllerActionOrigin_XBox360_DPad_East", "value":"147" }, - { "name":"k_EControllerActionOrigin_SteamV2_A", "value":"148" }, - { "name":"k_EControllerActionOrigin_SteamV2_B", "value":"149" }, - { "name":"k_EControllerActionOrigin_SteamV2_X", "value":"150" }, - { "name":"k_EControllerActionOrigin_SteamV2_Y", "value":"151" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftBumper", "value":"152" }, - { "name":"k_EControllerActionOrigin_SteamV2_RightBumper", "value":"153" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftGrip_Lower", "value":"154" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftGrip_Upper", "value":"155" }, - { "name":"k_EControllerActionOrigin_SteamV2_RightGrip_Lower", "value":"156" }, - { "name":"k_EControllerActionOrigin_SteamV2_RightGrip_Upper", "value":"157" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftBumper_Pressure", "value":"158" }, - { "name":"k_EControllerActionOrigin_SteamV2_RightBumper_Pressure", "value":"159" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftGrip_Pressure", "value":"160" }, - { "name":"k_EControllerActionOrigin_SteamV2_RightGrip_Pressure", "value":"161" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftGrip_Upper_Pressure", "value":"162" }, - { "name":"k_EControllerActionOrigin_SteamV2_RightGrip_Upper_Pressure", "value":"163" }, - { "name":"k_EControllerActionOrigin_SteamV2_Start", "value":"164" }, - { "name":"k_EControllerActionOrigin_SteamV2_Back", "value":"165" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_Touch", "value":"166" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_Swipe", "value":"167" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_Click", "value":"168" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_Pressure", "value":"169" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_DPadNorth", "value":"170" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_DPadSouth", "value":"171" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_DPadWest", "value":"172" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_DPadEast", "value":"173" }, - { "name":"k_EControllerActionOrigin_SteamV2_RightPad_Touch", "value":"174" }, - { "name":"k_EControllerActionOrigin_SteamV2_RightPad_Swipe", "value":"175" }, - { "name":"k_EControllerActionOrigin_SteamV2_RightPad_Click", "value":"176" }, - { "name":"k_EControllerActionOrigin_SteamV2_RightPad_Pressure", "value":"177" }, - { "name":"k_EControllerActionOrigin_SteamV2_RightPad_DPadNorth", "value":"178" }, - { "name":"k_EControllerActionOrigin_SteamV2_RightPad_DPadSouth", "value":"179" }, - { "name":"k_EControllerActionOrigin_SteamV2_RightPad_DPadWest", "value":"180" }, - { "name":"k_EControllerActionOrigin_SteamV2_RightPad_DPadEast", "value":"181" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftTrigger_Pull", "value":"182" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftTrigger_Click", "value":"183" }, - { "name":"k_EControllerActionOrigin_SteamV2_RightTrigger_Pull", "value":"184" }, - { "name":"k_EControllerActionOrigin_SteamV2_RightTrigger_Click", "value":"185" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftStick_Move", "value":"186" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftStick_Click", "value":"187" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftStick_DPadNorth", "value":"188" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftStick_DPadSouth", "value":"189" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftStick_DPadWest", "value":"190" }, - { "name":"k_EControllerActionOrigin_SteamV2_LeftStick_DPadEast", "value":"191" }, - { "name":"k_EControllerActionOrigin_SteamV2_Gyro_Move", "value":"192" }, - { "name":"k_EControllerActionOrigin_SteamV2_Gyro_Pitch", "value":"193" }, - { "name":"k_EControllerActionOrigin_SteamV2_Gyro_Yaw", "value":"194" }, - { "name":"k_EControllerActionOrigin_SteamV2_Gyro_Roll", "value":"195" }, - { "name":"k_EControllerActionOrigin_Switch_A", "value":"196" }, - { "name":"k_EControllerActionOrigin_Switch_B", "value":"197" }, - { "name":"k_EControllerActionOrigin_Switch_X", "value":"198" }, - { "name":"k_EControllerActionOrigin_Switch_Y", "value":"199" }, - { "name":"k_EControllerActionOrigin_Switch_LeftBumper", "value":"200" }, - { "name":"k_EControllerActionOrigin_Switch_RightBumper", "value":"201" }, - { "name":"k_EControllerActionOrigin_Switch_Plus", "value":"202" }, - { "name":"k_EControllerActionOrigin_Switch_Minus", "value":"203" }, - { "name":"k_EControllerActionOrigin_Switch_Capture", "value":"204" }, - { "name":"k_EControllerActionOrigin_Switch_LeftTrigger_Pull", "value":"205" }, - { "name":"k_EControllerActionOrigin_Switch_LeftTrigger_Click", "value":"206" }, - { "name":"k_EControllerActionOrigin_Switch_RightTrigger_Pull", "value":"207" }, - { "name":"k_EControllerActionOrigin_Switch_RightTrigger_Click", "value":"208" }, - { "name":"k_EControllerActionOrigin_Switch_LeftStick_Move", "value":"209" }, - { "name":"k_EControllerActionOrigin_Switch_LeftStick_Click", "value":"210" }, - { "name":"k_EControllerActionOrigin_Switch_LeftStick_DPadNorth", "value":"211" }, - { "name":"k_EControllerActionOrigin_Switch_LeftStick_DPadSouth", "value":"212" }, - { "name":"k_EControllerActionOrigin_Switch_LeftStick_DPadWest", "value":"213" }, - { "name":"k_EControllerActionOrigin_Switch_LeftStick_DPadEast", "value":"214" }, - { "name":"k_EControllerActionOrigin_Switch_RightStick_Move", "value":"215" }, - { "name":"k_EControllerActionOrigin_Switch_RightStick_Click", "value":"216" }, - { "name":"k_EControllerActionOrigin_Switch_RightStick_DPadNorth", "value":"217" }, - { "name":"k_EControllerActionOrigin_Switch_RightStick_DPadSouth", "value":"218" }, - { "name":"k_EControllerActionOrigin_Switch_RightStick_DPadWest", "value":"219" }, - { "name":"k_EControllerActionOrigin_Switch_RightStick_DPadEast", "value":"220" }, - { "name":"k_EControllerActionOrigin_Switch_DPad_North", "value":"221" }, - { "name":"k_EControllerActionOrigin_Switch_DPad_South", "value":"222" }, - { "name":"k_EControllerActionOrigin_Switch_DPad_West", "value":"223" }, - { "name":"k_EControllerActionOrigin_Switch_DPad_East", "value":"224" }, - { "name":"k_EControllerActionOrigin_Switch_ProGyro_Move", "value":"225" }, - { "name":"k_EControllerActionOrigin_Switch_ProGyro_Pitch", "value":"226" }, - { "name":"k_EControllerActionOrigin_Switch_ProGyro_Yaw", "value":"227" }, - { "name":"k_EControllerActionOrigin_Switch_ProGyro_Roll", "value":"228" }, - { "name":"k_EControllerActionOrigin_Switch_RightGyro_Move", "value":"229" }, - { "name":"k_EControllerActionOrigin_Switch_RightGyro_Pitch", "value":"230" }, - { "name":"k_EControllerActionOrigin_Switch_RightGyro_Yaw", "value":"231" }, - { "name":"k_EControllerActionOrigin_Switch_RightGyro_Roll", "value":"232" }, - { "name":"k_EControllerActionOrigin_Switch_LeftGyro_Move", "value":"233" }, - { "name":"k_EControllerActionOrigin_Switch_LeftGyro_Pitch", "value":"234" }, - { "name":"k_EControllerActionOrigin_Switch_LeftGyro_Yaw", "value":"235" }, - { "name":"k_EControllerActionOrigin_Switch_LeftGyro_Roll", "value":"236" }, - { "name":"k_EControllerActionOrigin_Switch_LeftGrip_Lower", "value":"237" }, - { "name":"k_EControllerActionOrigin_Switch_LeftGrip_Upper", "value":"238" }, - { "name":"k_EControllerActionOrigin_Switch_RightGrip_Lower", "value":"239" }, - { "name":"k_EControllerActionOrigin_Switch_RightGrip_Upper", "value":"240" }, - { "name":"k_EControllerActionOrigin_PS4_DPad_Move", "value":"241" }, - { "name":"k_EControllerActionOrigin_XBoxOne_DPad_Move", "value":"242" }, - { "name":"k_EControllerActionOrigin_XBox360_DPad_Move", "value":"243" }, - { "name":"k_EControllerActionOrigin_Switch_DPad_Move", "value":"244" }, - { "name":"k_EControllerActionOrigin_PS5_X", "value":"245" }, - { "name":"k_EControllerActionOrigin_PS5_Circle", "value":"246" }, - { "name":"k_EControllerActionOrigin_PS5_Triangle", "value":"247" }, - { "name":"k_EControllerActionOrigin_PS5_Square", "value":"248" }, - { "name":"k_EControllerActionOrigin_PS5_LeftBumper", "value":"249" }, - { "name":"k_EControllerActionOrigin_PS5_RightBumper", "value":"250" }, - { "name":"k_EControllerActionOrigin_PS5_Option", "value":"251" }, - { "name":"k_EControllerActionOrigin_PS5_Create", "value":"252" }, - { "name":"k_EControllerActionOrigin_PS5_Mute", "value":"253" }, - { "name":"k_EControllerActionOrigin_PS5_LeftPad_Touch", "value":"254" }, - { "name":"k_EControllerActionOrigin_PS5_LeftPad_Swipe", "value":"255" }, - { "name":"k_EControllerActionOrigin_PS5_LeftPad_Click", "value":"256" }, - { "name":"k_EControllerActionOrigin_PS5_LeftPad_DPadNorth", "value":"257" }, - { "name":"k_EControllerActionOrigin_PS5_LeftPad_DPadSouth", "value":"258" }, - { "name":"k_EControllerActionOrigin_PS5_LeftPad_DPadWest", "value":"259" }, - { "name":"k_EControllerActionOrigin_PS5_LeftPad_DPadEast", "value":"260" }, - { "name":"k_EControllerActionOrigin_PS5_RightPad_Touch", "value":"261" }, - { "name":"k_EControllerActionOrigin_PS5_RightPad_Swipe", "value":"262" }, - { "name":"k_EControllerActionOrigin_PS5_RightPad_Click", "value":"263" }, - { "name":"k_EControllerActionOrigin_PS5_RightPad_DPadNorth", "value":"264" }, - { "name":"k_EControllerActionOrigin_PS5_RightPad_DPadSouth", "value":"265" }, - { "name":"k_EControllerActionOrigin_PS5_RightPad_DPadWest", "value":"266" }, - { "name":"k_EControllerActionOrigin_PS5_RightPad_DPadEast", "value":"267" }, - { "name":"k_EControllerActionOrigin_PS5_CenterPad_Touch", "value":"268" }, - { "name":"k_EControllerActionOrigin_PS5_CenterPad_Swipe", "value":"269" }, - { "name":"k_EControllerActionOrigin_PS5_CenterPad_Click", "value":"270" }, - { "name":"k_EControllerActionOrigin_PS5_CenterPad_DPadNorth", "value":"271" }, - { "name":"k_EControllerActionOrigin_PS5_CenterPad_DPadSouth", "value":"272" }, - { "name":"k_EControllerActionOrigin_PS5_CenterPad_DPadWest", "value":"273" }, - { "name":"k_EControllerActionOrigin_PS5_CenterPad_DPadEast", "value":"274" }, - { "name":"k_EControllerActionOrigin_PS5_LeftTrigger_Pull", "value":"275" }, - { "name":"k_EControllerActionOrigin_PS5_LeftTrigger_Click", "value":"276" }, - { "name":"k_EControllerActionOrigin_PS5_RightTrigger_Pull", "value":"277" }, - { "name":"k_EControllerActionOrigin_PS5_RightTrigger_Click", "value":"278" }, - { "name":"k_EControllerActionOrigin_PS5_LeftStick_Move", "value":"279" }, - { "name":"k_EControllerActionOrigin_PS5_LeftStick_Click", "value":"280" }, - { "name":"k_EControllerActionOrigin_PS5_LeftStick_DPadNorth", "value":"281" }, - { "name":"k_EControllerActionOrigin_PS5_LeftStick_DPadSouth", "value":"282" }, - { "name":"k_EControllerActionOrigin_PS5_LeftStick_DPadWest", "value":"283" }, - { "name":"k_EControllerActionOrigin_PS5_LeftStick_DPadEast", "value":"284" }, - { "name":"k_EControllerActionOrigin_PS5_RightStick_Move", "value":"285" }, - { "name":"k_EControllerActionOrigin_PS5_RightStick_Click", "value":"286" }, - { "name":"k_EControllerActionOrigin_PS5_RightStick_DPadNorth", "value":"287" }, - { "name":"k_EControllerActionOrigin_PS5_RightStick_DPadSouth", "value":"288" }, - { "name":"k_EControllerActionOrigin_PS5_RightStick_DPadWest", "value":"289" }, - { "name":"k_EControllerActionOrigin_PS5_RightStick_DPadEast", "value":"290" }, - { "name":"k_EControllerActionOrigin_PS5_DPad_Move", "value":"291" }, - { "name":"k_EControllerActionOrigin_PS5_DPad_North", "value":"292" }, - { "name":"k_EControllerActionOrigin_PS5_DPad_South", "value":"293" }, - { "name":"k_EControllerActionOrigin_PS5_DPad_West", "value":"294" }, - { "name":"k_EControllerActionOrigin_PS5_DPad_East", "value":"295" }, - { "name":"k_EControllerActionOrigin_PS5_Gyro_Move", "value":"296" }, - { "name":"k_EControllerActionOrigin_PS5_Gyro_Pitch", "value":"297" }, - { "name":"k_EControllerActionOrigin_PS5_Gyro_Yaw", "value":"298" }, - { "name":"k_EControllerActionOrigin_PS5_Gyro_Roll", "value":"299" }, - { "name":"k_EControllerActionOrigin_Count", "value":"300" }, - { "name":"k_EControllerActionOrigin_MaximumPossibleValue", "value":"32767" } - ] - }, - { - "enumname": "ESteamControllerLEDFlag", - "values": [ - { "name":"k_ESteamControllerLEDFlag_SetColor", "value":"0" }, - { "name":"k_ESteamControllerLEDFlag_RestoreUserDefault", "value":"1" } - ] - }, - { - "enumname": "EUGCMatchingUGCType", - "values": [ - { "name":"k_EUGCMatchingUGCType_Items", "value":"0" }, - { "name":"k_EUGCMatchingUGCType_Items_Mtx", "value":"1" }, - { "name":"k_EUGCMatchingUGCType_Items_ReadyToUse", "value":"2" }, - { "name":"k_EUGCMatchingUGCType_Collections", "value":"3" }, - { "name":"k_EUGCMatchingUGCType_Artwork", "value":"4" }, - { "name":"k_EUGCMatchingUGCType_Videos", "value":"5" }, - { "name":"k_EUGCMatchingUGCType_Screenshots", "value":"6" }, - { "name":"k_EUGCMatchingUGCType_AllGuides", "value":"7" }, - { "name":"k_EUGCMatchingUGCType_WebGuides", "value":"8" }, - { "name":"k_EUGCMatchingUGCType_IntegratedGuides", "value":"9" }, - { "name":"k_EUGCMatchingUGCType_UsableInGame", "value":"10" }, - { "name":"k_EUGCMatchingUGCType_ControllerBindings", "value":"11" }, - { "name":"k_EUGCMatchingUGCType_GameManagedItems", "value":"12" }, - { "name":"k_EUGCMatchingUGCType_All", "value":"-1" } - ] - }, - { - "enumname": "EUserUGCList", - "values": [ - { "name":"k_EUserUGCList_Published", "value":"0" }, - { "name":"k_EUserUGCList_VotedOn", "value":"1" }, - { "name":"k_EUserUGCList_VotedUp", "value":"2" }, - { "name":"k_EUserUGCList_VotedDown", "value":"3" }, - { "name":"k_EUserUGCList_WillVoteLater", "value":"4" }, - { "name":"k_EUserUGCList_Favorited", "value":"5" }, - { "name":"k_EUserUGCList_Subscribed", "value":"6" }, - { "name":"k_EUserUGCList_UsedOrPlayed", "value":"7" }, - { "name":"k_EUserUGCList_Followed", "value":"8" } - ] - }, - { - "enumname": "EUserUGCListSortOrder", - "values": [ - { "name":"k_EUserUGCListSortOrder_CreationOrderDesc", "value":"0" }, - { "name":"k_EUserUGCListSortOrder_CreationOrderAsc", "value":"1" }, - { "name":"k_EUserUGCListSortOrder_TitleAsc", "value":"2" }, - { "name":"k_EUserUGCListSortOrder_LastUpdatedDesc", "value":"3" }, - { "name":"k_EUserUGCListSortOrder_SubscriptionDateDesc", "value":"4" }, - { "name":"k_EUserUGCListSortOrder_VoteScoreDesc", "value":"5" }, - { "name":"k_EUserUGCListSortOrder_ForModeration", "value":"6" } - ] - }, - { - "enumname": "EUGCQuery", - "values": [ - { "name":"k_EUGCQuery_RankedByVote", "value":"0" }, - { "name":"k_EUGCQuery_RankedByPublicationDate", "value":"1" }, - { "name":"k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate", "value":"2" }, - { "name":"k_EUGCQuery_RankedByTrend", "value":"3" }, - { "name":"k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate", "value":"4" }, - { "name":"k_EUGCQuery_CreatedByFriendsRankedByPublicationDate", "value":"5" }, - { "name":"k_EUGCQuery_RankedByNumTimesReported", "value":"6" }, - { "name":"k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate", "value":"7" }, - { "name":"k_EUGCQuery_NotYetRated", "value":"8" }, - { "name":"k_EUGCQuery_RankedByTotalVotesAsc", "value":"9" }, - { "name":"k_EUGCQuery_RankedByVotesUp", "value":"10" }, - { "name":"k_EUGCQuery_RankedByTextSearch", "value":"11" }, - { "name":"k_EUGCQuery_RankedByTotalUniqueSubscriptions", "value":"12" }, - { "name":"k_EUGCQuery_RankedByPlaytimeTrend", "value":"13" }, - { "name":"k_EUGCQuery_RankedByTotalPlaytime", "value":"14" }, - { "name":"k_EUGCQuery_RankedByAveragePlaytimeTrend", "value":"15" }, - { "name":"k_EUGCQuery_RankedByLifetimeAveragePlaytime", "value":"16" }, - { "name":"k_EUGCQuery_RankedByPlaytimeSessionsTrend", "value":"17" }, - { "name":"k_EUGCQuery_RankedByLifetimePlaytimeSessions", "value":"18" } - ] - }, - { - "enumname": "EItemUpdateStatus", - "values": [ - { "name":"k_EItemUpdateStatusInvalid", "value":"0" }, - { "name":"k_EItemUpdateStatusPreparingConfig", "value":"1" }, - { "name":"k_EItemUpdateStatusPreparingContent", "value":"2" }, - { "name":"k_EItemUpdateStatusUploadingContent", "value":"3" }, - { "name":"k_EItemUpdateStatusUploadingPreviewFile", "value":"4" }, - { "name":"k_EItemUpdateStatusCommittingChanges", "value":"5" } - ] - }, - { - "enumname": "EItemState", - "values": [ - { "name":"k_EItemStateNone", "value":"0" }, - { "name":"k_EItemStateSubscribed", "value":"1" }, - { "name":"k_EItemStateLegacyItem", "value":"2" }, - { "name":"k_EItemStateInstalled", "value":"4" }, - { "name":"k_EItemStateNeedsUpdate", "value":"8" }, - { "name":"k_EItemStateDownloading", "value":"16" }, - { "name":"k_EItemStateDownloadPending", "value":"32" } - ] - }, - { - "enumname": "EItemStatistic", - "values": [ - { "name":"k_EItemStatistic_NumSubscriptions", "value":"0" }, - { "name":"k_EItemStatistic_NumFavorites", "value":"1" }, - { "name":"k_EItemStatistic_NumFollowers", "value":"2" }, - { "name":"k_EItemStatistic_NumUniqueSubscriptions", "value":"3" }, - { "name":"k_EItemStatistic_NumUniqueFavorites", "value":"4" }, - { "name":"k_EItemStatistic_NumUniqueFollowers", "value":"5" }, - { "name":"k_EItemStatistic_NumUniqueWebsiteViews", "value":"6" }, - { "name":"k_EItemStatistic_ReportScore", "value":"7" }, - { "name":"k_EItemStatistic_NumSecondsPlayed", "value":"8" }, - { "name":"k_EItemStatistic_NumPlaytimeSessions", "value":"9" }, - { "name":"k_EItemStatistic_NumComments", "value":"10" }, - { "name":"k_EItemStatistic_NumSecondsPlayedDuringTimePeriod", "value":"11" }, - { "name":"k_EItemStatistic_NumPlaytimeSessionsDuringTimePeriod", "value":"12" } - ] - }, - { - "enumname": "EItemPreviewType", - "values": [ - { "name":"k_EItemPreviewType_Image", "value":"0" }, - { "name":"k_EItemPreviewType_YouTubeVideo", "value":"1" }, - { "name":"k_EItemPreviewType_Sketchfab", "value":"2" }, - { "name":"k_EItemPreviewType_EnvironmentMap_HorizontalCross", "value":"3" }, - { "name":"k_EItemPreviewType_EnvironmentMap_LatLong", "value":"4" }, - { "name":"k_EItemPreviewType_ReservedMax", "value":"255" } - ] - }, - { - "enumname": "ESteamItemFlags", - "values": [ - { "name":"k_ESteamItemNoTrade", "value":"1" }, - { "name":"k_ESteamItemRemoved", "value":"256" }, - { "name":"k_ESteamItemConsumed", "value":"512" } - ] - }, - { - "enumname": "EParentalFeature", - "values": [ - { "name":"k_EFeatureInvalid", "value":"0" }, - { "name":"k_EFeatureStore", "value":"1" }, - { "name":"k_EFeatureCommunity", "value":"2" }, - { "name":"k_EFeatureProfile", "value":"3" }, - { "name":"k_EFeatureFriends", "value":"4" }, - { "name":"k_EFeatureNews", "value":"5" }, - { "name":"k_EFeatureTrading", "value":"6" }, - { "name":"k_EFeatureSettings", "value":"7" }, - { "name":"k_EFeatureConsole", "value":"8" }, - { "name":"k_EFeatureBrowser", "value":"9" }, - { "name":"k_EFeatureParentalSetup", "value":"10" }, - { "name":"k_EFeatureLibrary", "value":"11" }, - { "name":"k_EFeatureTest", "value":"12" }, - { "name":"k_EFeatureSiteLicense", "value":"13" }, - { "name":"k_EFeatureMax", "value":"14" } - ] - }, - { - "enumname": "ESteamDeviceFormFactor", - "values": [ - { "name":"k_ESteamDeviceFormFactorUnknown", "value":"0" }, - { "name":"k_ESteamDeviceFormFactorPhone", "value":"1" }, - { "name":"k_ESteamDeviceFormFactorTablet", "value":"2" }, - { "name":"k_ESteamDeviceFormFactorComputer", "value":"3" }, - { "name":"k_ESteamDeviceFormFactorTV", "value":"4" } - ] - }, - { - "enumname": "ESteamNetworkingAvailability", - "values": [ - { "name":"k_ESteamNetworkingAvailability_CannotTry", "value":"-102" }, - { "name":"k_ESteamNetworkingAvailability_Failed", "value":"-101" }, - { "name":"k_ESteamNetworkingAvailability_Previously", "value":"-100" }, - { "name":"k_ESteamNetworkingAvailability_Retrying", "value":"-10" }, - { "name":"k_ESteamNetworkingAvailability_NeverTried", "value":"1" }, - { "name":"k_ESteamNetworkingAvailability_Waiting", "value":"2" }, - { "name":"k_ESteamNetworkingAvailability_Attempting", "value":"3" }, - { "name":"k_ESteamNetworkingAvailability_Current", "value":"100" }, - { "name":"k_ESteamNetworkingAvailability_Unknown", "value":"0" }, - { "name":"k_ESteamNetworkingAvailability__Force32bit", "value":"2147483647" } - ] - }, - { - "enumname": "ESteamNetworkingIdentityType", - "values": [ - { "name":"k_ESteamNetworkingIdentityType_Invalid", "value":"0" }, - { "name":"k_ESteamNetworkingIdentityType_SteamID", "value":"16" }, - { "name":"k_ESteamNetworkingIdentityType_XboxPairwiseID", "value":"17" }, - { "name":"k_ESteamNetworkingIdentityType_SonyPSN", "value":"18" }, - { "name":"k_ESteamNetworkingIdentityType_GoogleStadia", "value":"19" }, - { "name":"k_ESteamNetworkingIdentityType_IPAddress", "value":"1" }, - { "name":"k_ESteamNetworkingIdentityType_GenericString", "value":"2" }, - { "name":"k_ESteamNetworkingIdentityType_GenericBytes", "value":"3" }, - { "name":"k_ESteamNetworkingIdentityType_UnknownType", "value":"4" }, - { "name":"k_ESteamNetworkingIdentityType__Force32bit", "value":"2147483647" } - ] - }, - { - "enumname": "ESteamNetworkingConnectionState", - "values": [ - { "name":"k_ESteamNetworkingConnectionState_None", "value":"0" }, - { "name":"k_ESteamNetworkingConnectionState_Connecting", "value":"1" }, - { "name":"k_ESteamNetworkingConnectionState_FindingRoute", "value":"2" }, - { "name":"k_ESteamNetworkingConnectionState_Connected", "value":"3" }, - { "name":"k_ESteamNetworkingConnectionState_ClosedByPeer", "value":"4" }, - { "name":"k_ESteamNetworkingConnectionState_ProblemDetectedLocally", "value":"5" }, - { "name":"k_ESteamNetworkingConnectionState_FinWait", "value":"-1" }, - { "name":"k_ESteamNetworkingConnectionState_Linger", "value":"-2" }, - { "name":"k_ESteamNetworkingConnectionState_Dead", "value":"-3" }, - { "name":"k_ESteamNetworkingConnectionState__Force32Bit", "value":"2147483647" } - ] - }, - { - "enumname": "ESteamNetConnectionEnd", - "values": [ - { "name":"k_ESteamNetConnectionEnd_Invalid", "value":"0" }, - { "name":"k_ESteamNetConnectionEnd_App_Min", "value":"1000" }, - { "name":"k_ESteamNetConnectionEnd_App_Generic", "value":"1000" }, - { "name":"k_ESteamNetConnectionEnd_App_Max", "value":"1999" }, - { "name":"k_ESteamNetConnectionEnd_AppException_Min", "value":"2000" }, - { "name":"k_ESteamNetConnectionEnd_AppException_Generic", "value":"2000" }, - { "name":"k_ESteamNetConnectionEnd_AppException_Max", "value":"2999" }, - { "name":"k_ESteamNetConnectionEnd_Local_Min", "value":"3000" }, - { "name":"k_ESteamNetConnectionEnd_Local_OfflineMode", "value":"3001" }, - { "name":"k_ESteamNetConnectionEnd_Local_ManyRelayConnectivity", "value":"3002" }, - { "name":"k_ESteamNetConnectionEnd_Local_HostedServerPrimaryRelay", "value":"3003" }, - { "name":"k_ESteamNetConnectionEnd_Local_NetworkConfig", "value":"3004" }, - { "name":"k_ESteamNetConnectionEnd_Local_Rights", "value":"3005" }, - { "name":"k_ESteamNetConnectionEnd_Local_P2P_ICE_NoPublicAddresses", "value":"3006" }, - { "name":"k_ESteamNetConnectionEnd_Local_Max", "value":"3999" }, - { "name":"k_ESteamNetConnectionEnd_Remote_Min", "value":"4000" }, - { "name":"k_ESteamNetConnectionEnd_Remote_Timeout", "value":"4001" }, - { "name":"k_ESteamNetConnectionEnd_Remote_BadCrypt", "value":"4002" }, - { "name":"k_ESteamNetConnectionEnd_Remote_BadCert", "value":"4003" }, - { "name":"k_ESteamNetConnectionEnd_Remote_NotLoggedIn", "value":"4004" }, - { "name":"k_ESteamNetConnectionEnd_Remote_NotRunningApp", "value":"4005" }, - { "name":"k_ESteamNetConnectionEnd_Remote_BadProtocolVersion", "value":"4006" }, - { "name":"k_ESteamNetConnectionEnd_Remote_P2P_ICE_NoPublicAddresses", "value":"4007" }, - { "name":"k_ESteamNetConnectionEnd_Remote_Max", "value":"4999" }, - { "name":"k_ESteamNetConnectionEnd_Misc_Min", "value":"5000" }, - { "name":"k_ESteamNetConnectionEnd_Misc_Generic", "value":"5001" }, - { "name":"k_ESteamNetConnectionEnd_Misc_InternalError", "value":"5002" }, - { "name":"k_ESteamNetConnectionEnd_Misc_Timeout", "value":"5003" }, - { "name":"k_ESteamNetConnectionEnd_Misc_RelayConnectivity", "value":"5004" }, - { "name":"k_ESteamNetConnectionEnd_Misc_SteamConnectivity", "value":"5005" }, - { "name":"k_ESteamNetConnectionEnd_Misc_NoRelaySessionsToClient", "value":"5006" }, - { "name":"k_ESteamNetConnectionEnd_Misc_P2P_Rendezvous", "value":"5008" }, - { "name":"k_ESteamNetConnectionEnd_Misc_P2P_NAT_Firewall", "value":"5009" }, - { "name":"k_ESteamNetConnectionEnd_Misc_PeerSentNoConnection", "value":"5010" }, - { "name":"k_ESteamNetConnectionEnd_Misc_Max", "value":"5999" }, - { "name":"k_ESteamNetConnectionEnd__Force32Bit", "value":"2147483647" } - ] - }, - { - "enumname": "ESteamNetTransportKind", - "values": [ - { "name":"k_ESteamNetTransport_Unknown", "value":"0" }, - { "name":"k_ESteamNetTransport_LoopbackBuffers", "value":"1" }, - { "name":"k_ESteamNetTransport_LocalHost", "value":"2" }, - { "name":"k_ESteamNetTransport_UDP", "value":"3" }, - { "name":"k_ESteamNetTransport_UDPProbablyLocal", "value":"4" }, - { "name":"k_ESteamNetTransport_TURN", "value":"5" }, - { "name":"k_ESteamNetTransport_SDRP2P", "value":"6" }, - { "name":"k_ESteamNetTransport_SDRHostedServer", "value":"7" }, - { "name":"k_ESteamNetTransport_Force32Bit", "value":"2147483647" } - ] - }, - { - "enumname": "ESteamNetworkingConfigScope", - "values": [ - { "name":"k_ESteamNetworkingConfig_Global", "value":"1" }, - { "name":"k_ESteamNetworkingConfig_SocketsInterface", "value":"2" }, - { "name":"k_ESteamNetworkingConfig_ListenSocket", "value":"3" }, - { "name":"k_ESteamNetworkingConfig_Connection", "value":"4" }, - { "name":"k_ESteamNetworkingConfigScope__Force32Bit", "value":"2147483647" } - ] - }, - { - "enumname": "ESteamNetworkingConfigDataType", - "values": [ - { "name":"k_ESteamNetworkingConfig_Int32", "value":"1" }, - { "name":"k_ESteamNetworkingConfig_Int64", "value":"2" }, - { "name":"k_ESteamNetworkingConfig_Float", "value":"3" }, - { "name":"k_ESteamNetworkingConfig_String", "value":"4" }, - { "name":"k_ESteamNetworkingConfig_Ptr", "value":"5" }, - { "name":"k_ESteamNetworkingConfigDataType__Force32Bit", "value":"2147483647" } - ] - }, - { - "enumname": "ESteamNetworkingConfigValue", - "values": [ - { "name":"k_ESteamNetworkingConfig_Invalid", "value":"0" }, - { "name":"k_ESteamNetworkingConfig_FakePacketLoss_Send", "value":"2" }, - { "name":"k_ESteamNetworkingConfig_FakePacketLoss_Recv", "value":"3" }, - { "name":"k_ESteamNetworkingConfig_FakePacketLag_Send", "value":"4" }, - { "name":"k_ESteamNetworkingConfig_FakePacketLag_Recv", "value":"5" }, - { "name":"k_ESteamNetworkingConfig_FakePacketReorder_Send", "value":"6" }, - { "name":"k_ESteamNetworkingConfig_FakePacketReorder_Recv", "value":"7" }, - { "name":"k_ESteamNetworkingConfig_FakePacketReorder_Time", "value":"8" }, - { "name":"k_ESteamNetworkingConfig_FakePacketDup_Send", "value":"26" }, - { "name":"k_ESteamNetworkingConfig_FakePacketDup_Recv", "value":"27" }, - { "name":"k_ESteamNetworkingConfig_FakePacketDup_TimeMax", "value":"28" }, - { "name":"k_ESteamNetworkingConfig_TimeoutInitial", "value":"24" }, - { "name":"k_ESteamNetworkingConfig_TimeoutConnected", "value":"25" }, - { "name":"k_ESteamNetworkingConfig_SendBufferSize", "value":"9" }, - { "name":"k_ESteamNetworkingConfig_SendRateMin", "value":"10" }, - { "name":"k_ESteamNetworkingConfig_SendRateMax", "value":"11" }, - { "name":"k_ESteamNetworkingConfig_NagleTime", "value":"12" }, - { "name":"k_ESteamNetworkingConfig_IP_AllowWithoutAuth", "value":"23" }, - { "name":"k_ESteamNetworkingConfig_MTU_PacketSize", "value":"32" }, - { "name":"k_ESteamNetworkingConfig_MTU_DataSize", "value":"33" }, - { "name":"k_ESteamNetworkingConfig_Unencrypted", "value":"34" }, - { "name":"k_ESteamNetworkingConfig_EnumerateDevVars", "value":"35" }, - { "name":"k_ESteamNetworkingConfig_SymmetricConnect", "value":"37" }, - { "name":"k_ESteamNetworkingConfig_LocalVirtualPort", "value":"38" }, - { "name":"k_ESteamNetworkingConfig_Callback_ConnectionStatusChanged", "value":"201" }, - { "name":"k_ESteamNetworkingConfig_Callback_AuthStatusChanged", "value":"202" }, - { "name":"k_ESteamNetworkingConfig_Callback_RelayNetworkStatusChanged", "value":"203" }, - { "name":"k_ESteamNetworkingConfig_Callback_MessagesSessionRequest", "value":"204" }, - { "name":"k_ESteamNetworkingConfig_Callback_MessagesSessionFailed", "value":"205" }, - { "name":"k_ESteamNetworkingConfig_Callback_CreateConnectionSignaling", "value":"206" }, - { "name":"k_ESteamNetworkingConfig_P2P_STUN_ServerList", "value":"103" }, - { "name":"k_ESteamNetworkingConfig_P2P_Transport_ICE_Enable", "value":"104" }, - { "name":"k_ESteamNetworkingConfig_P2P_Transport_ICE_Penalty", "value":"105" }, - { "name":"k_ESteamNetworkingConfig_P2P_Transport_SDR_Penalty", "value":"106" }, - { "name":"k_ESteamNetworkingConfig_SDRClient_ConsecutitivePingTimeoutsFailInitial", "value":"19" }, - { "name":"k_ESteamNetworkingConfig_SDRClient_ConsecutitivePingTimeoutsFail", "value":"20" }, - { "name":"k_ESteamNetworkingConfig_SDRClient_MinPingsBeforePingAccurate", "value":"21" }, - { "name":"k_ESteamNetworkingConfig_SDRClient_SingleSocket", "value":"22" }, - { "name":"k_ESteamNetworkingConfig_SDRClient_ForceRelayCluster", "value":"29" }, - { "name":"k_ESteamNetworkingConfig_SDRClient_DebugTicketAddress", "value":"30" }, - { "name":"k_ESteamNetworkingConfig_SDRClient_ForceProxyAddr", "value":"31" }, - { "name":"k_ESteamNetworkingConfig_SDRClient_FakeClusterPing", "value":"36" }, - { "name":"k_ESteamNetworkingConfig_LogLevel_AckRTT", "value":"13" }, - { "name":"k_ESteamNetworkingConfig_LogLevel_PacketDecode", "value":"14" }, - { "name":"k_ESteamNetworkingConfig_LogLevel_Message", "value":"15" }, - { "name":"k_ESteamNetworkingConfig_LogLevel_PacketGaps", "value":"16" }, - { "name":"k_ESteamNetworkingConfig_LogLevel_P2PRendezvous", "value":"17" }, - { "name":"k_ESteamNetworkingConfig_LogLevel_SDRRelayPings", "value":"18" }, - { "name":"k_ESteamNetworkingConfigValue__Force32Bit", "value":"2147483647" } - ] - }, - { - "enumname": "ESteamNetworkingGetConfigValueResult", - "values": [ - { "name":"k_ESteamNetworkingGetConfigValue_BadValue", "value":"-1" }, - { "name":"k_ESteamNetworkingGetConfigValue_BadScopeObj", "value":"-2" }, - { "name":"k_ESteamNetworkingGetConfigValue_BufferTooSmall", "value":"-3" }, - { "name":"k_ESteamNetworkingGetConfigValue_OK", "value":"1" }, - { "name":"k_ESteamNetworkingGetConfigValue_OKInherited", "value":"2" }, - { "name":"k_ESteamNetworkingGetConfigValueResult__Force32Bit", "value":"2147483647" } - ] - }, - { - "enumname": "ESteamNetworkingSocketsDebugOutputType", - "values": [ - { "name":"k_ESteamNetworkingSocketsDebugOutputType_None", "value":"0" }, - { "name":"k_ESteamNetworkingSocketsDebugOutputType_Bug", "value":"1" }, - { "name":"k_ESteamNetworkingSocketsDebugOutputType_Error", "value":"2" }, - { "name":"k_ESteamNetworkingSocketsDebugOutputType_Important", "value":"3" }, - { "name":"k_ESteamNetworkingSocketsDebugOutputType_Warning", "value":"4" }, - { "name":"k_ESteamNetworkingSocketsDebugOutputType_Msg", "value":"5" }, - { "name":"k_ESteamNetworkingSocketsDebugOutputType_Verbose", "value":"6" }, - { "name":"k_ESteamNetworkingSocketsDebugOutputType_Debug", "value":"7" }, - { "name":"k_ESteamNetworkingSocketsDebugOutputType_Everything", "value":"8" }, - { "name":"k_ESteamNetworkingSocketsDebugOutputType__Force32Bit", "value":"2147483647" } - ] - }, - { - "enumname": "EServerMode", - "values": [ - { "name":"eServerModeInvalid", "value":"0" }, - { "name":"eServerModeNoAuthentication", "value":"1" }, - { "name":"eServerModeAuthentication", "value":"2" }, - { "name":"eServerModeAuthenticationAndSecure", "value":"3" } - ] - } - ], - "interfaces": [ - { - "classname": "ISteamClient", - "fields": [], - "methods": [ - { - "methodname": "CreateSteamPipe", - "methodname_flat": "SteamAPI_ISteamClient_CreateSteamPipe", - "params": [], - "returntype": "HSteamPipe" - }, - { - "methodname": "BReleaseSteamPipe", - "methodname_flat": "SteamAPI_ISteamClient_BReleaseSteamPipe", - "params": [ - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" } - ], - "returntype": "bool" - }, - { - "methodname": "ConnectToGlobalUser", - "methodname_flat": "SteamAPI_ISteamClient_ConnectToGlobalUser", - "params": [ - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" } - ], - "returntype": "HSteamUser" - }, - { - "methodname": "CreateLocalUser", - "methodname_flat": "SteamAPI_ISteamClient_CreateLocalUser", - "params": [ - { "paramname":"phSteamPipe", "paramtype":"HSteamPipe *" }, - { "paramname":"eAccountType", "paramtype":"EAccountType" } - ], - "returntype": "HSteamUser" - }, - { - "methodname": "ReleaseUser", - "methodname_flat": "SteamAPI_ISteamClient_ReleaseUser", - "params": [ - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"hUser", "paramtype":"HSteamUser" } - ], - "returntype": "void" - }, - { - "methodname": "GetISteamUser", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamUser", - "params": [ - { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamUser *" - }, - { - "methodname": "GetISteamGameServer", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamGameServer", - "params": [ - { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamGameServer *" - }, - { - "methodname": "SetLocalIPBinding", - "methodname_flat": "SteamAPI_ISteamClient_SetLocalIPBinding", - "params": [ - { "paramname":"unIP", "paramtype":"const SteamIPAddress_t &" }, - { "paramname":"usPort", "paramtype":"uint16" } - ], - "returntype": "void" - }, - { - "methodname": "GetISteamFriends", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamFriends", - "params": [ - { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamFriends *" - }, - { - "methodname": "GetISteamUtils", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamUtils", - "params": [ - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamUtils *" - }, - { - "methodname": "GetISteamMatchmaking", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamMatchmaking", - "params": [ - { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamMatchmaking *" - }, - { - "methodname": "GetISteamMatchmakingServers", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamMatchmakingServers", - "params": [ - { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamMatchmakingServers *" - }, - { - "methodname": "GetISteamGenericInterface", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamGenericInterface", - "params": [ - { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "void *" - }, - { - "methodname": "GetISteamUserStats", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamUserStats", - "params": [ - { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamUserStats *" - }, - { - "methodname": "GetISteamGameServerStats", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamGameServerStats", - "params": [ - { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamGameServerStats *" - }, - { - "methodname": "GetISteamApps", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamApps", - "params": [ - { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamApps *" - }, - { - "methodname": "GetISteamNetworking", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamNetworking", - "params": [ - { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamNetworking *" - }, - { - "methodname": "GetISteamRemoteStorage", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamRemoteStorage", - "params": [ - { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamRemoteStorage *" - }, - { - "methodname": "GetISteamScreenshots", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamScreenshots", - "params": [ - { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamScreenshots *" - }, - { - "methodname": "GetISteamGameSearch", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamGameSearch", - "params": [ - { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamGameSearch *" - }, - { - "methodname": "GetIPCCallCount", - "methodname_flat": "SteamAPI_ISteamClient_GetIPCCallCount", - "params": [], - "returntype": "uint32" - }, - { - "methodname": "SetWarningMessageHook", - "methodname_flat": "SteamAPI_ISteamClient_SetWarningMessageHook", - "params": [ - { "paramname":"pFunction", "paramtype":"SteamAPIWarningMessageHook_t" } - ], - "returntype": "void" - }, - { - "methodname": "BShutdownIfAllPipesClosed", - "methodname_flat": "SteamAPI_ISteamClient_BShutdownIfAllPipesClosed", - "params": [], - "returntype": "bool" - }, - { - "methodname": "GetISteamHTTP", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamHTTP", - "params": [ - { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamHTTP *" - }, - { - "methodname": "GetISteamController", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamController", - "params": [ - { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamController *" - }, - { - "methodname": "GetISteamUGC", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamUGC", - "params": [ - { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamUGC *" - }, - { - "methodname": "GetISteamAppList", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamAppList", - "params": [ - { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamAppList *" - }, - { - "methodname": "GetISteamMusic", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamMusic", - "params": [ - { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamMusic *" - }, - { - "methodname": "GetISteamMusicRemote", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamMusicRemote", - "params": [ - { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamMusicRemote *" - }, - { - "methodname": "GetISteamHTMLSurface", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamHTMLSurface", - "params": [ - { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamHTMLSurface *" - }, - { - "methodname": "GetISteamInventory", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamInventory", - "params": [ - { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamInventory *" - }, - { - "methodname": "GetISteamVideo", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamVideo", - "params": [ - { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamVideo *" - }, - { - "methodname": "GetISteamParentalSettings", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamParentalSettings", - "params": [ - { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamParentalSettings *" - }, - { - "methodname": "GetISteamInput", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamInput", - "params": [ - { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamInput *" - }, - { - "methodname": "GetISteamParties", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamParties", - "params": [ - { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamParties *" - }, - { - "methodname": "GetISteamRemotePlay", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamRemotePlay", - "params": [ - { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamRemotePlay *" - } - ] - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamUser", - "name_flat": "SteamAPI_SteamUser_v021" - } - ], - "classname": "ISteamUser", - "fields": [], - "methods": [ - { - "methodname": "GetHSteamUser", - "methodname_flat": "SteamAPI_ISteamUser_GetHSteamUser", - "params": [], - "returntype": "HSteamUser" - }, - { - "methodname": "BLoggedOn", - "methodname_flat": "SteamAPI_ISteamUser_BLoggedOn", - "params": [], - "returntype": "bool" - }, - { - "methodname": "GetSteamID", - "methodname_flat": "SteamAPI_ISteamUser_GetSteamID", - "params": [], - "returntype": "CSteamID", - "returntype_flat": "uint64_steamid" - }, - { - "methodname": "InitiateGameConnection", - "methodname_flat": "SteamAPI_ISteamUser_InitiateGameConnection", - "params": [ - { "paramname":"pAuthBlob", "paramtype":"void *" }, - { "paramname":"cbMaxAuthBlob", "paramtype":"int" }, - { "paramname":"steamIDGameServer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"unIPServer", "paramtype":"uint32" }, - { "paramname":"usPortServer", "paramtype":"uint16" }, - { "paramname":"bSecure", "paramtype":"bool" } - ], - "returntype": "int" - }, - { - "methodname": "TerminateGameConnection", - "methodname_flat": "SteamAPI_ISteamUser_TerminateGameConnection", - "params": [ - { "paramname":"unIPServer", "paramtype":"uint32" }, - { "paramname":"usPortServer", "paramtype":"uint16" } - ], - "returntype": "void" - }, - { - "methodname": "TrackAppUsageEvent", - "methodname_flat": "SteamAPI_ISteamUser_TrackAppUsageEvent", - "params": [ - { "paramname":"gameID", "paramtype":"CGameID", "paramtype_flat":"uint64_gameid" }, - { "paramname":"eAppUsageEvent", "paramtype":"int" }, - { "paramname":"pchExtraInfo", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "GetUserDataFolder", - "methodname_flat": "SteamAPI_ISteamUser_GetUserDataFolder", - "params": [ - { "paramname":"pchBuffer", "paramtype":"char *" }, - { "paramname":"cubBuffer", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "methodname": "StartVoiceRecording", - "methodname_flat": "SteamAPI_ISteamUser_StartVoiceRecording", - "params": [], - "returntype": "void" - }, - { - "methodname": "StopVoiceRecording", - "methodname_flat": "SteamAPI_ISteamUser_StopVoiceRecording", - "params": [], - "returntype": "void" - }, - { - "methodname": "GetAvailableVoice", - "methodname_flat": "SteamAPI_ISteamUser_GetAvailableVoice", - "params": [ - { "paramname":"pcbCompressed", "paramtype":"uint32 *" }, - { "paramname":"pcbUncompressed_Deprecated", "paramtype":"uint32 *" }, - { "paramname":"nUncompressedVoiceDesiredSampleRate_Deprecated", "paramtype":"uint32" } - ], - "returntype": "EVoiceResult" - }, - { - "methodname": "GetVoice", - "methodname_flat": "SteamAPI_ISteamUser_GetVoice", - "params": [ - { "paramname":"bWantCompressed", "paramtype":"bool" }, - { "paramname":"pDestBuffer", "paramtype":"void *" }, - { "paramname":"cbDestBufferSize", "paramtype":"uint32" }, - { "paramname":"nBytesWritten", "paramtype":"uint32 *" }, - { "paramname":"bWantUncompressed_Deprecated", "paramtype":"bool" }, - { "paramname":"pUncompressedDestBuffer_Deprecated", "paramtype":"void *" }, - { "paramname":"cbUncompressedDestBufferSize_Deprecated", "paramtype":"uint32" }, - { "paramname":"nUncompressBytesWritten_Deprecated", "paramtype":"uint32 *" }, - { "paramname":"nUncompressedVoiceDesiredSampleRate_Deprecated", "paramtype":"uint32" } - ], - "returntype": "EVoiceResult" - }, - { - "methodname": "DecompressVoice", - "methodname_flat": "SteamAPI_ISteamUser_DecompressVoice", - "params": [ - { "paramname":"pCompressed", "paramtype":"const void *" }, - { "paramname":"cbCompressed", "paramtype":"uint32" }, - { "paramname":"pDestBuffer", "paramtype":"void *" }, - { "paramname":"cbDestBufferSize", "paramtype":"uint32" }, - { "paramname":"nBytesWritten", "paramtype":"uint32 *" }, - { "paramname":"nDesiredSampleRate", "paramtype":"uint32" } - ], - "returntype": "EVoiceResult" - }, - { - "methodname": "GetVoiceOptimalSampleRate", - "methodname_flat": "SteamAPI_ISteamUser_GetVoiceOptimalSampleRate", - "params": [], - "returntype": "uint32" - }, - { - "methodname": "GetAuthSessionTicket", - "methodname_flat": "SteamAPI_ISteamUser_GetAuthSessionTicket", - "params": [ - { "paramname":"pTicket", "paramtype":"void *" }, - { "paramname":"cbMaxTicket", "paramtype":"int" }, - { "paramname":"pcbTicket", "paramtype":"uint32 *" } - ], - "returntype": "HAuthTicket" - }, - { - "methodname": "BeginAuthSession", - "methodname_flat": "SteamAPI_ISteamUser_BeginAuthSession", - "params": [ - { "paramname":"pAuthTicket", "paramtype":"const void *" }, - { "paramname":"cbAuthTicket", "paramtype":"int" }, - { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "EBeginAuthSessionResult" - }, - { - "methodname": "EndAuthSession", - "methodname_flat": "SteamAPI_ISteamUser_EndAuthSession", - "params": [ - { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "void" - }, - { - "methodname": "CancelAuthTicket", - "methodname_flat": "SteamAPI_ISteamUser_CancelAuthTicket", - "params": [ - { "paramname":"hAuthTicket", "paramtype":"HAuthTicket" } - ], - "returntype": "void" - }, - { - "methodname": "UserHasLicenseForApp", - "methodname_flat": "SteamAPI_ISteamUser_UserHasLicenseForApp", - "params": [ - { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"appID", "paramtype":"AppId_t" } - ], - "returntype": "EUserHasLicenseForAppResult" - }, - { - "methodname": "BIsBehindNAT", - "methodname_flat": "SteamAPI_ISteamUser_BIsBehindNAT", - "params": [], - "returntype": "bool" - }, - { - "methodname": "AdvertiseGame", - "methodname_flat": "SteamAPI_ISteamUser_AdvertiseGame", - "params": [ - { "paramname":"steamIDGameServer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"unIPServer", "paramtype":"uint32" }, - { "paramname":"usPortServer", "paramtype":"uint16" } - ], - "returntype": "void" - }, - { - "callresult": "EncryptedAppTicketResponse_t", - "methodname": "RequestEncryptedAppTicket", - "methodname_flat": "SteamAPI_ISteamUser_RequestEncryptedAppTicket", - "params": [ - { "paramname":"pDataToInclude", "paramtype":"void *" }, - { "paramname":"cbDataToInclude", "paramtype":"int" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetEncryptedAppTicket", - "methodname_flat": "SteamAPI_ISteamUser_GetEncryptedAppTicket", - "params": [ - { "paramname":"pTicket", "paramtype":"void *" }, - { "paramname":"cbMaxTicket", "paramtype":"int" }, - { "paramname":"pcbTicket", "paramtype":"uint32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetGameBadgeLevel", - "methodname_flat": "SteamAPI_ISteamUser_GetGameBadgeLevel", - "params": [ - { "paramname":"nSeries", "paramtype":"int" }, - { "paramname":"bFoil", "paramtype":"bool" } - ], - "returntype": "int" - }, - { - "methodname": "GetPlayerSteamLevel", - "methodname_flat": "SteamAPI_ISteamUser_GetPlayerSteamLevel", - "params": [], - "returntype": "int" - }, - { - "callresult": "StoreAuthURLResponse_t", - "methodname": "RequestStoreAuthURL", - "methodname_flat": "SteamAPI_ISteamUser_RequestStoreAuthURL", - "params": [ - { "paramname":"pchRedirectURL", "paramtype":"const char *" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "BIsPhoneVerified", - "methodname_flat": "SteamAPI_ISteamUser_BIsPhoneVerified", - "params": [], - "returntype": "bool" - }, - { - "methodname": "BIsTwoFactorEnabled", - "methodname_flat": "SteamAPI_ISteamUser_BIsTwoFactorEnabled", - "params": [], - "returntype": "bool" - }, - { - "methodname": "BIsPhoneIdentifying", - "methodname_flat": "SteamAPI_ISteamUser_BIsPhoneIdentifying", - "params": [], - "returntype": "bool" - }, - { - "methodname": "BIsPhoneRequiringVerification", - "methodname_flat": "SteamAPI_ISteamUser_BIsPhoneRequiringVerification", - "params": [], - "returntype": "bool" - }, - { - "callresult": "MarketEligibilityResponse_t", - "methodname": "GetMarketEligibility", - "methodname_flat": "SteamAPI_ISteamUser_GetMarketEligibility", - "params": [], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "DurationControl_t", - "methodname": "GetDurationControl", - "methodname_flat": "SteamAPI_ISteamUser_GetDurationControl", - "params": [], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "BSetDurationControlOnlineState", - "methodname_flat": "SteamAPI_ISteamUser_BSetDurationControlOnlineState", - "params": [ - { "paramname":"eNewState", "paramtype":"EDurationControlOnlineState" } - ], - "returntype": "bool" - } - ], - "version_string": "SteamUser021" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamFriends", - "name_flat": "SteamAPI_SteamFriends_v017" - } - ], - "classname": "ISteamFriends", - "fields": [], - "methods": [ - { - "methodname": "GetPersonaName", - "methodname_flat": "SteamAPI_ISteamFriends_GetPersonaName", - "params": [], - "returntype": "const char *" - }, - { - "callresult": "SetPersonaNameResponse_t", - "methodname": "SetPersonaName", - "methodname_flat": "SteamAPI_ISteamFriends_SetPersonaName", - "params": [ - { "paramname":"pchPersonaName", "paramtype":"const char *" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetPersonaState", - "methodname_flat": "SteamAPI_ISteamFriends_GetPersonaState", - "params": [], - "returntype": "EPersonaState" - }, - { - "methodname": "GetFriendCount", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendCount", - "params": [ - { "paramname":"iFriendFlags", "paramtype":"int" } - ], - "returntype": "int" - }, - { - "methodname": "GetFriendByIndex", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendByIndex", - "params": [ - { "paramname":"iFriend", "paramtype":"int" }, - { "paramname":"iFriendFlags", "paramtype":"int" } - ], - "returntype": "CSteamID", - "returntype_flat": "uint64_steamid" - }, - { - "methodname": "GetFriendRelationship", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendRelationship", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "EFriendRelationship" - }, - { - "methodname": "GetFriendPersonaState", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendPersonaState", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "EPersonaState" - }, - { - "methodname": "GetFriendPersonaName", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendPersonaName", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "const char *" - }, - { - "methodname": "GetFriendGamePlayed", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendGamePlayed", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { - "out_struct": "", - "paramname": "pFriendGameInfo", - "paramtype": "FriendGameInfo_t *" - } - ], - "returntype": "bool" - }, - { - "methodname": "GetFriendPersonaNameHistory", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendPersonaNameHistory", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"iPersonaName", "paramtype":"int" } - ], - "returntype": "const char *" - }, - { - "methodname": "GetFriendSteamLevel", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendSteamLevel", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "int" - }, - { - "methodname": "GetPlayerNickname", - "methodname_flat": "SteamAPI_ISteamFriends_GetPlayerNickname", - "params": [ - { "paramname":"steamIDPlayer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "const char *" - }, - { - "methodname": "GetFriendsGroupCount", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendsGroupCount", - "params": [], - "returntype": "int" - }, - { - "methodname": "GetFriendsGroupIDByIndex", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex", - "params": [ - { "paramname":"iFG", "paramtype":"int" } - ], - "returntype": "FriendsGroupID_t" - }, - { - "methodname": "GetFriendsGroupName", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendsGroupName", - "params": [ - { "paramname":"friendsGroupID", "paramtype":"FriendsGroupID_t" } - ], - "returntype": "const char *" - }, - { - "methodname": "GetFriendsGroupMembersCount", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendsGroupMembersCount", - "params": [ - { "paramname":"friendsGroupID", "paramtype":"FriendsGroupID_t" } - ], - "returntype": "int" - }, - { - "methodname": "GetFriendsGroupMembersList", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendsGroupMembersList", - "params": [ - { "paramname":"friendsGroupID", "paramtype":"FriendsGroupID_t" }, - { - "out_array_call": "nMembersCount,GetFriendsGroupMembersCount,friendsGroupID", - "paramname": "pOutSteamIDMembers", - "paramtype": "CSteamID *" - }, - { "paramname":"nMembersCount", "paramtype":"int" } - ], - "returntype": "void" - }, - { - "methodname": "HasFriend", - "methodname_flat": "SteamAPI_ISteamFriends_HasFriend", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"iFriendFlags", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "methodname": "GetClanCount", - "methodname_flat": "SteamAPI_ISteamFriends_GetClanCount", - "params": [], - "returntype": "int" - }, - { - "methodname": "GetClanByIndex", - "methodname_flat": "SteamAPI_ISteamFriends_GetClanByIndex", - "params": [ - { "paramname":"iClan", "paramtype":"int" } - ], - "returntype": "CSteamID", - "returntype_flat": "uint64_steamid" - }, - { - "methodname": "GetClanName", - "methodname_flat": "SteamAPI_ISteamFriends_GetClanName", - "params": [ - { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "const char *" - }, - { - "methodname": "GetClanTag", - "methodname_flat": "SteamAPI_ISteamFriends_GetClanTag", - "params": [ - { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "const char *" - }, - { - "methodname": "GetClanActivityCounts", - "methodname_flat": "SteamAPI_ISteamFriends_GetClanActivityCounts", - "params": [ - { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pnOnline", "paramtype":"int *" }, - { "paramname":"pnInGame", "paramtype":"int *" }, - { "paramname":"pnChatting", "paramtype":"int *" } - ], - "returntype": "bool" - }, - { - "callresult": "DownloadClanActivityCountsResult_t", - "methodname": "DownloadClanActivityCounts", - "methodname_flat": "SteamAPI_ISteamFriends_DownloadClanActivityCounts", - "params": [ - { - "array_count": "cClansToRequest", - "paramname": "psteamIDClans", - "paramtype": "CSteamID *" - }, - { "paramname":"cClansToRequest", "paramtype":"int" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetFriendCountFromSource", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendCountFromSource", - "params": [ - { "paramname":"steamIDSource", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "int" - }, - { - "methodname": "GetFriendFromSourceByIndex", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendFromSourceByIndex", - "params": [ - { "paramname":"steamIDSource", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"iFriend", "paramtype":"int" } - ], - "returntype": "CSteamID", - "returntype_flat": "uint64_steamid" - }, - { - "methodname": "IsUserInSource", - "methodname_flat": "SteamAPI_ISteamFriends_IsUserInSource", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"steamIDSource", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "bool" - }, - { - "methodname": "SetInGameVoiceSpeaking", - "methodname_flat": "SteamAPI_ISteamFriends_SetInGameVoiceSpeaking", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"bSpeaking", "paramtype":"bool" } - ], - "returntype": "void" - }, - { - "methodname": "ActivateGameOverlay", - "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlay", - "params": [ - { "paramname":"pchDialog", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "ActivateGameOverlayToUser", - "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlayToUser", - "params": [ - { "paramname":"pchDialog", "paramtype":"const char *" }, - { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "void" - }, - { - "methodname": "ActivateGameOverlayToWebPage", - "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage", - "params": [ - { "paramname":"pchURL", "paramtype":"const char *" }, - { "paramname":"eMode", "paramtype":"EActivateGameOverlayToWebPageMode" } - ], - "returntype": "void" - }, - { - "methodname": "ActivateGameOverlayToStore", - "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlayToStore", - "params": [ - { "paramname":"nAppID", "paramtype":"AppId_t" }, - { "paramname":"eFlag", "paramtype":"EOverlayToStoreFlag" } - ], - "returntype": "void" - }, - { - "methodname": "SetPlayedWith", - "methodname_flat": "SteamAPI_ISteamFriends_SetPlayedWith", - "params": [ - { "paramname":"steamIDUserPlayedWith", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "void" - }, - { - "methodname": "ActivateGameOverlayInviteDialog", - "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "void" - }, - { - "methodname": "GetSmallFriendAvatar", - "methodname_flat": "SteamAPI_ISteamFriends_GetSmallFriendAvatar", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "int" - }, - { - "methodname": "GetMediumFriendAvatar", - "methodname_flat": "SteamAPI_ISteamFriends_GetMediumFriendAvatar", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "int" - }, - { - "methodname": "GetLargeFriendAvatar", - "methodname_flat": "SteamAPI_ISteamFriends_GetLargeFriendAvatar", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "int" - }, - { - "methodname": "RequestUserInformation", - "methodname_flat": "SteamAPI_ISteamFriends_RequestUserInformation", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"bRequireNameOnly", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "callresult": "ClanOfficerListResponse_t", - "methodname": "RequestClanOfficerList", - "methodname_flat": "SteamAPI_ISteamFriends_RequestClanOfficerList", - "params": [ - { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetClanOwner", - "methodname_flat": "SteamAPI_ISteamFriends_GetClanOwner", - "params": [ - { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "CSteamID", - "returntype_flat": "uint64_steamid" - }, - { - "methodname": "GetClanOfficerCount", - "methodname_flat": "SteamAPI_ISteamFriends_GetClanOfficerCount", - "params": [ - { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "int" - }, - { - "methodname": "GetClanOfficerByIndex", - "methodname_flat": "SteamAPI_ISteamFriends_GetClanOfficerByIndex", - "params": [ - { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"iOfficer", "paramtype":"int" } - ], - "returntype": "CSteamID", - "returntype_flat": "uint64_steamid" - }, - { - "methodname": "GetUserRestrictions", - "methodname_flat": "SteamAPI_ISteamFriends_GetUserRestrictions", - "params": [], - "returntype": "uint32" - }, - { - "methodname": "SetRichPresence", - "methodname_flat": "SteamAPI_ISteamFriends_SetRichPresence", - "params": [ - { "paramname":"pchKey", "paramtype":"const char *" }, - { "paramname":"pchValue", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "ClearRichPresence", - "methodname_flat": "SteamAPI_ISteamFriends_ClearRichPresence", - "params": [], - "returntype": "void" - }, - { - "methodname": "GetFriendRichPresence", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendRichPresence", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchKey", "paramtype":"const char *" } - ], - "returntype": "const char *" - }, - { - "methodname": "GetFriendRichPresenceKeyCount", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "int" - }, - { - "methodname": "GetFriendRichPresenceKeyByIndex", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"iKey", "paramtype":"int" } - ], - "returntype": "const char *" - }, - { - "methodname": "RequestFriendRichPresence", - "methodname_flat": "SteamAPI_ISteamFriends_RequestFriendRichPresence", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "void" - }, - { - "methodname": "InviteUserToGame", - "methodname_flat": "SteamAPI_ISteamFriends_InviteUserToGame", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchConnectString", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetCoplayFriendCount", - "methodname_flat": "SteamAPI_ISteamFriends_GetCoplayFriendCount", - "params": [], - "returntype": "int" - }, - { - "methodname": "GetCoplayFriend", - "methodname_flat": "SteamAPI_ISteamFriends_GetCoplayFriend", - "params": [ - { "paramname":"iCoplayFriend", "paramtype":"int" } - ], - "returntype": "CSteamID", - "returntype_flat": "uint64_steamid" - }, - { - "methodname": "GetFriendCoplayTime", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendCoplayTime", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "int" - }, - { - "methodname": "GetFriendCoplayGame", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendCoplayGame", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "AppId_t" - }, - { - "callresult": "JoinClanChatRoomCompletionResult_t", - "methodname": "JoinClanChatRoom", - "methodname_flat": "SteamAPI_ISteamFriends_JoinClanChatRoom", - "params": [ - { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "LeaveClanChatRoom", - "methodname_flat": "SteamAPI_ISteamFriends_LeaveClanChatRoom", - "params": [ - { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "bool" - }, - { - "methodname": "GetClanChatMemberCount", - "methodname_flat": "SteamAPI_ISteamFriends_GetClanChatMemberCount", - "params": [ - { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "int" - }, - { - "methodname": "GetChatMemberByIndex", - "methodname_flat": "SteamAPI_ISteamFriends_GetChatMemberByIndex", - "params": [ - { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"iUser", "paramtype":"int" } - ], - "returntype": "CSteamID", - "returntype_flat": "uint64_steamid" - }, - { - "methodname": "SendClanChatMessage", - "methodname_flat": "SteamAPI_ISteamFriends_SendClanChatMessage", - "params": [ - { "paramname":"steamIDClanChat", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchText", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetClanChatMessage", - "methodname_flat": "SteamAPI_ISteamFriends_GetClanChatMessage", - "params": [ - { "paramname":"steamIDClanChat", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"iMessage", "paramtype":"int" }, - { "paramname":"prgchText", "paramtype":"void *" }, - { "paramname":"cchTextMax", "paramtype":"int" }, - { "paramname":"peChatEntryType", "paramtype":"EChatEntryType *" }, - { - "out_struct": "", - "paramname": "psteamidChatter", - "paramtype": "CSteamID *" - } - ], - "returntype": "int" - }, - { - "methodname": "IsClanChatAdmin", - "methodname_flat": "SteamAPI_ISteamFriends_IsClanChatAdmin", - "params": [ - { "paramname":"steamIDClanChat", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "bool" - }, - { - "methodname": "IsClanChatWindowOpenInSteam", - "methodname_flat": "SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam", - "params": [ - { "paramname":"steamIDClanChat", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "bool" - }, - { - "methodname": "OpenClanChatWindowInSteam", - "methodname_flat": "SteamAPI_ISteamFriends_OpenClanChatWindowInSteam", - "params": [ - { "paramname":"steamIDClanChat", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "bool" - }, - { - "methodname": "CloseClanChatWindowInSteam", - "methodname_flat": "SteamAPI_ISteamFriends_CloseClanChatWindowInSteam", - "params": [ - { "paramname":"steamIDClanChat", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "bool" - }, - { - "methodname": "SetListenForFriendsMessages", - "methodname_flat": "SteamAPI_ISteamFriends_SetListenForFriendsMessages", - "params": [ - { "paramname":"bInterceptEnabled", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "ReplyToFriendMessage", - "methodname_flat": "SteamAPI_ISteamFriends_ReplyToFriendMessage", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchMsgToSend", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetFriendMessage", - "methodname_flat": "SteamAPI_ISteamFriends_GetFriendMessage", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"iMessageID", "paramtype":"int" }, - { "paramname":"pvData", "paramtype":"void *" }, - { "paramname":"cubData", "paramtype":"int" }, - { "paramname":"peChatEntryType", "paramtype":"EChatEntryType *" } - ], - "returntype": "int" - }, - { - "callresult": "FriendsGetFollowerCount_t", - "methodname": "GetFollowerCount", - "methodname_flat": "SteamAPI_ISteamFriends_GetFollowerCount", - "params": [ - { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "FriendsIsFollowing_t", - "methodname": "IsFollowing", - "methodname_flat": "SteamAPI_ISteamFriends_IsFollowing", - "params": [ - { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "FriendsEnumerateFollowingList_t", - "methodname": "EnumerateFollowingList", - "methodname_flat": "SteamAPI_ISteamFriends_EnumerateFollowingList", - "params": [ - { "paramname":"unStartIndex", "paramtype":"uint32" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "IsClanPublic", - "methodname_flat": "SteamAPI_ISteamFriends_IsClanPublic", - "params": [ - { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "bool" - }, - { - "methodname": "IsClanOfficialGameGroup", - "methodname_flat": "SteamAPI_ISteamFriends_IsClanOfficialGameGroup", - "params": [ - { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "bool" - }, - { - "methodname": "GetNumChatsWithUnreadPriorityMessages", - "methodname_flat": "SteamAPI_ISteamFriends_GetNumChatsWithUnreadPriorityMessages", - "params": [], - "returntype": "int" - }, - { - "methodname": "ActivateGameOverlayRemotePlayTogetherInviteDialog", - "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlayRemotePlayTogetherInviteDialog", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "void" - }, - { - "methodname": "RegisterProtocolInOverlayBrowser", - "methodname_flat": "SteamAPI_ISteamFriends_RegisterProtocolInOverlayBrowser", - "params": [ - { "paramname":"pchProtocol", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "ActivateGameOverlayInviteDialogConnectString", - "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialogConnectString", - "params": [ - { "paramname":"pchConnectString", "paramtype":"const char *" } - ], - "returntype": "void" - } - ], - "version_string": "SteamFriends017" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamUtils", - "name_flat": "SteamAPI_SteamUtils_v010" - }, - { - "kind": "gameserver", - "name": "SteamGameServerUtils", - "name_flat": "SteamAPI_SteamGameServerUtils_v010" - } - ], - "classname": "ISteamUtils", - "fields": [], - "methods": [ - { - "methodname": "GetSecondsSinceAppActive", - "methodname_flat": "SteamAPI_ISteamUtils_GetSecondsSinceAppActive", - "params": [], - "returntype": "uint32" - }, - { - "methodname": "GetSecondsSinceComputerActive", - "methodname_flat": "SteamAPI_ISteamUtils_GetSecondsSinceComputerActive", - "params": [], - "returntype": "uint32" - }, - { - "methodname": "GetConnectedUniverse", - "methodname_flat": "SteamAPI_ISteamUtils_GetConnectedUniverse", - "params": [], - "returntype": "EUniverse" - }, - { - "methodname": "GetServerRealTime", - "methodname_flat": "SteamAPI_ISteamUtils_GetServerRealTime", - "params": [], - "returntype": "uint32" - }, - { - "methodname": "GetIPCountry", - "methodname_flat": "SteamAPI_ISteamUtils_GetIPCountry", - "params": [], - "returntype": "const char *" - }, - { - "methodname": "GetImageSize", - "methodname_flat": "SteamAPI_ISteamUtils_GetImageSize", - "params": [ - { "paramname":"iImage", "paramtype":"int" }, - { "paramname":"pnWidth", "paramtype":"uint32 *" }, - { "paramname":"pnHeight", "paramtype":"uint32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetImageRGBA", - "methodname_flat": "SteamAPI_ISteamUtils_GetImageRGBA", - "params": [ - { "paramname":"iImage", "paramtype":"int" }, - { "paramname":"pubDest", "paramtype":"uint8 *" }, - { "paramname":"nDestBufferSize", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "methodname": "GetCurrentBatteryPower", - "methodname_flat": "SteamAPI_ISteamUtils_GetCurrentBatteryPower", - "params": [], - "returntype": "uint8" - }, - { - "methodname": "GetAppID", - "methodname_flat": "SteamAPI_ISteamUtils_GetAppID", - "params": [], - "returntype": "uint32" - }, - { - "methodname": "SetOverlayNotificationPosition", - "methodname_flat": "SteamAPI_ISteamUtils_SetOverlayNotificationPosition", - "params": [ - { "paramname":"eNotificationPosition", "paramtype":"ENotificationPosition" } - ], - "returntype": "void" - }, - { - "methodname": "IsAPICallCompleted", - "methodname_flat": "SteamAPI_ISteamUtils_IsAPICallCompleted", - "params": [ - { "paramname":"hSteamAPICall", "paramtype":"SteamAPICall_t" }, - { "paramname":"pbFailed", "paramtype":"bool *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetAPICallFailureReason", - "methodname_flat": "SteamAPI_ISteamUtils_GetAPICallFailureReason", - "params": [ - { "paramname":"hSteamAPICall", "paramtype":"SteamAPICall_t" } - ], - "returntype": "ESteamAPICallFailure" - }, - { - "methodname": "GetAPICallResult", - "methodname_flat": "SteamAPI_ISteamUtils_GetAPICallResult", - "params": [ - { "paramname":"hSteamAPICall", "paramtype":"SteamAPICall_t" }, - { "paramname":"pCallback", "paramtype":"void *" }, - { "paramname":"cubCallback", "paramtype":"int" }, - { "paramname":"iCallbackExpected", "paramtype":"int" }, - { "paramname":"pbFailed", "paramtype":"bool *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetIPCCallCount", - "methodname_flat": "SteamAPI_ISteamUtils_GetIPCCallCount", - "params": [], - "returntype": "uint32" - }, - { - "methodname": "SetWarningMessageHook", - "methodname_flat": "SteamAPI_ISteamUtils_SetWarningMessageHook", - "params": [ - { "paramname":"pFunction", "paramtype":"SteamAPIWarningMessageHook_t" } - ], - "returntype": "void" - }, - { - "methodname": "IsOverlayEnabled", - "methodname_flat": "SteamAPI_ISteamUtils_IsOverlayEnabled", - "params": [], - "returntype": "bool" - }, - { - "methodname": "BOverlayNeedsPresent", - "methodname_flat": "SteamAPI_ISteamUtils_BOverlayNeedsPresent", - "params": [], - "returntype": "bool" - }, - { - "callresult": "CheckFileSignature_t", - "methodname": "CheckFileSignature", - "methodname_flat": "SteamAPI_ISteamUtils_CheckFileSignature", - "params": [ - { "paramname":"szFileName", "paramtype":"const char *" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "ShowGamepadTextInput", - "methodname_flat": "SteamAPI_ISteamUtils_ShowGamepadTextInput", - "params": [ - { "paramname":"eInputMode", "paramtype":"EGamepadTextInputMode" }, - { "paramname":"eLineInputMode", "paramtype":"EGamepadTextInputLineMode" }, - { "paramname":"pchDescription", "paramtype":"const char *" }, - { "paramname":"unCharMax", "paramtype":"uint32" }, - { "paramname":"pchExistingText", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetEnteredGamepadTextLength", - "methodname_flat": "SteamAPI_ISteamUtils_GetEnteredGamepadTextLength", - "params": [], - "returntype": "uint32" - }, - { - "methodname": "GetEnteredGamepadTextInput", - "methodname_flat": "SteamAPI_ISteamUtils_GetEnteredGamepadTextInput", - "params": [ - { "paramname":"pchText", "paramtype":"char *" }, - { "paramname":"cchText", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "GetSteamUILanguage", - "methodname_flat": "SteamAPI_ISteamUtils_GetSteamUILanguage", - "params": [], - "returntype": "const char *" - }, - { - "methodname": "IsSteamRunningInVR", - "methodname_flat": "SteamAPI_ISteamUtils_IsSteamRunningInVR", - "params": [], - "returntype": "bool" - }, - { - "methodname": "SetOverlayNotificationInset", - "methodname_flat": "SteamAPI_ISteamUtils_SetOverlayNotificationInset", - "params": [ - { "paramname":"nHorizontalInset", "paramtype":"int" }, - { "paramname":"nVerticalInset", "paramtype":"int" } - ], - "returntype": "void" - }, - { - "methodname": "IsSteamInBigPictureMode", - "methodname_flat": "SteamAPI_ISteamUtils_IsSteamInBigPictureMode", - "params": [], - "returntype": "bool" - }, - { - "methodname": "StartVRDashboard", - "methodname_flat": "SteamAPI_ISteamUtils_StartVRDashboard", - "params": [], - "returntype": "void" - }, - { - "methodname": "IsVRHeadsetStreamingEnabled", - "methodname_flat": "SteamAPI_ISteamUtils_IsVRHeadsetStreamingEnabled", - "params": [], - "returntype": "bool" - }, - { - "methodname": "SetVRHeadsetStreamingEnabled", - "methodname_flat": "SteamAPI_ISteamUtils_SetVRHeadsetStreamingEnabled", - "params": [ - { "paramname":"bEnabled", "paramtype":"bool" } - ], - "returntype": "void" - }, - { - "methodname": "IsSteamChinaLauncher", - "methodname_flat": "SteamAPI_ISteamUtils_IsSteamChinaLauncher", - "params": [], - "returntype": "bool" - }, - { - "methodname": "InitFilterText", - "methodname_flat": "SteamAPI_ISteamUtils_InitFilterText", - "params": [ - { "paramname":"unFilterOptions", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "FilterText", - "methodname_flat": "SteamAPI_ISteamUtils_FilterText", - "params": [ - { "paramname":"eContext", "paramtype":"ETextFilteringContext" }, - { "paramname":"sourceSteamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchInputMessage", "paramtype":"const char *" }, - { "paramname":"pchOutFilteredText", "paramtype":"char *" }, - { "paramname":"nByteSizeOutFilteredText", "paramtype":"uint32" } - ], - "returntype": "int" - }, - { - "methodname": "GetIPv6ConnectivityState", - "methodname_flat": "SteamAPI_ISteamUtils_GetIPv6ConnectivityState", - "params": [ - { "paramname":"eProtocol", "paramtype":"ESteamIPv6ConnectivityProtocol" } - ], - "returntype": "ESteamIPv6ConnectivityState" - } - ], - "version_string": "SteamUtils010" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamMatchmaking", - "name_flat": "SteamAPI_SteamMatchmaking_v009" - } - ], - "classname": "ISteamMatchmaking", - "fields": [], - "methods": [ - { - "methodname": "GetFavoriteGameCount", - "methodname_flat": "SteamAPI_ISteamMatchmaking_GetFavoriteGameCount", - "params": [], - "returntype": "int" - }, - { - "methodname": "GetFavoriteGame", - "methodname_flat": "SteamAPI_ISteamMatchmaking_GetFavoriteGame", - "params": [ - { "paramname":"iGame", "paramtype":"int" }, - { "paramname":"pnAppID", "paramtype":"AppId_t *" }, - { "paramname":"pnIP", "paramtype":"uint32 *" }, - { "paramname":"pnConnPort", "paramtype":"uint16 *" }, - { "paramname":"pnQueryPort", "paramtype":"uint16 *" }, - { "paramname":"punFlags", "paramtype":"uint32 *" }, - { "paramname":"pRTime32LastPlayedOnServer", "paramtype":"uint32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "AddFavoriteGame", - "methodname_flat": "SteamAPI_ISteamMatchmaking_AddFavoriteGame", - "params": [ - { "paramname":"nAppID", "paramtype":"AppId_t" }, - { "paramname":"nIP", "paramtype":"uint32" }, - { "paramname":"nConnPort", "paramtype":"uint16" }, - { "paramname":"nQueryPort", "paramtype":"uint16" }, - { "paramname":"unFlags", "paramtype":"uint32" }, - { "paramname":"rTime32LastPlayedOnServer", "paramtype":"uint32" } - ], - "returntype": "int" - }, - { - "methodname": "RemoveFavoriteGame", - "methodname_flat": "SteamAPI_ISteamMatchmaking_RemoveFavoriteGame", - "params": [ - { "paramname":"nAppID", "paramtype":"AppId_t" }, - { "paramname":"nIP", "paramtype":"uint32" }, - { "paramname":"nConnPort", "paramtype":"uint16" }, - { "paramname":"nQueryPort", "paramtype":"uint16" }, - { "paramname":"unFlags", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "callresult": "LobbyMatchList_t", - "methodname": "RequestLobbyList", - "methodname_flat": "SteamAPI_ISteamMatchmaking_RequestLobbyList", - "params": [], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "AddRequestLobbyListStringFilter", - "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter", - "params": [ - { "paramname":"pchKeyToMatch", "paramtype":"const char *" }, - { "paramname":"pchValueToMatch", "paramtype":"const char *" }, - { "paramname":"eComparisonType", "paramtype":"ELobbyComparison" } - ], - "returntype": "void" - }, - { - "methodname": "AddRequestLobbyListNumericalFilter", - "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter", - "params": [ - { "paramname":"pchKeyToMatch", "paramtype":"const char *" }, - { "paramname":"nValueToMatch", "paramtype":"int" }, - { "paramname":"eComparisonType", "paramtype":"ELobbyComparison" } - ], - "returntype": "void" - }, - { - "methodname": "AddRequestLobbyListNearValueFilter", - "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter", - "params": [ - { "paramname":"pchKeyToMatch", "paramtype":"const char *" }, - { "paramname":"nValueToBeCloseTo", "paramtype":"int" } - ], - "returntype": "void" - }, - { - "methodname": "AddRequestLobbyListFilterSlotsAvailable", - "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable", - "params": [ - { "paramname":"nSlotsAvailable", "paramtype":"int" } - ], - "returntype": "void" - }, - { - "methodname": "AddRequestLobbyListDistanceFilter", - "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter", - "params": [ - { "paramname":"eLobbyDistanceFilter", "paramtype":"ELobbyDistanceFilter" } - ], - "returntype": "void" - }, - { - "methodname": "AddRequestLobbyListResultCountFilter", - "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter", - "params": [ - { "paramname":"cMaxResults", "paramtype":"int" } - ], - "returntype": "void" - }, - { - "methodname": "AddRequestLobbyListCompatibleMembersFilter", - "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "void" - }, - { - "methodname": "GetLobbyByIndex", - "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyByIndex", - "params": [ - { "paramname":"iLobby", "paramtype":"int" } - ], - "returntype": "CSteamID", - "returntype_flat": "uint64_steamid" - }, - { - "callresult": "LobbyCreated_t", - "methodname": "CreateLobby", - "methodname_flat": "SteamAPI_ISteamMatchmaking_CreateLobby", - "params": [ - { "paramname":"eLobbyType", "paramtype":"ELobbyType" }, - { "paramname":"cMaxMembers", "paramtype":"int" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "LobbyEnter_t", - "methodname": "JoinLobby", - "methodname_flat": "SteamAPI_ISteamMatchmaking_JoinLobby", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "LeaveLobby", - "methodname_flat": "SteamAPI_ISteamMatchmaking_LeaveLobby", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "void" - }, - { - "methodname": "InviteUserToLobby", - "methodname_flat": "SteamAPI_ISteamMatchmaking_InviteUserToLobby", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"steamIDInvitee", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "bool" - }, - { - "methodname": "GetNumLobbyMembers", - "methodname_flat": "SteamAPI_ISteamMatchmaking_GetNumLobbyMembers", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "int" - }, - { - "methodname": "GetLobbyMemberByIndex", - "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"iMember", "paramtype":"int" } - ], - "returntype": "CSteamID", - "returntype_flat": "uint64_steamid" - }, - { - "methodname": "GetLobbyData", - "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyData", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchKey", "paramtype":"const char *" } - ], - "returntype": "const char *" - }, - { - "methodname": "SetLobbyData", - "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyData", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchKey", "paramtype":"const char *" }, - { "paramname":"pchValue", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetLobbyDataCount", - "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyDataCount", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "int" - }, - { - "methodname": "GetLobbyDataByIndex", - "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"iLobbyData", "paramtype":"int" }, - { "paramname":"pchKey", "paramtype":"char *" }, - { "paramname":"cchKeyBufferSize", "paramtype":"int" }, - { "paramname":"pchValue", "paramtype":"char *" }, - { "paramname":"cchValueBufferSize", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "methodname": "DeleteLobbyData", - "methodname_flat": "SteamAPI_ISteamMatchmaking_DeleteLobbyData", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchKey", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetLobbyMemberData", - "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyMemberData", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchKey", "paramtype":"const char *" } - ], - "returntype": "const char *" - }, - { - "methodname": "SetLobbyMemberData", - "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyMemberData", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchKey", "paramtype":"const char *" }, - { "paramname":"pchValue", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "SendLobbyChatMsg", - "methodname_flat": "SteamAPI_ISteamMatchmaking_SendLobbyChatMsg", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pvMsgBody", "paramtype":"const void *" }, - { "paramname":"cubMsgBody", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "methodname": "GetLobbyChatEntry", - "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyChatEntry", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"iChatID", "paramtype":"int" }, - { - "out_struct": "", - "paramname": "pSteamIDUser", - "paramtype": "CSteamID *" - }, - { "paramname":"pvData", "paramtype":"void *" }, - { "paramname":"cubData", "paramtype":"int" }, - { "paramname":"peChatEntryType", "paramtype":"EChatEntryType *" } - ], - "returntype": "int" - }, - { - "methodname": "RequestLobbyData", - "methodname_flat": "SteamAPI_ISteamMatchmaking_RequestLobbyData", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "bool" - }, - { - "methodname": "SetLobbyGameServer", - "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyGameServer", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"unGameServerIP", "paramtype":"uint32" }, - { "paramname":"unGameServerPort", "paramtype":"uint16" }, - { "paramname":"steamIDGameServer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "void" - }, - { - "methodname": "GetLobbyGameServer", - "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyGameServer", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"punGameServerIP", "paramtype":"uint32 *" }, - { "paramname":"punGameServerPort", "paramtype":"uint16 *" }, - { - "out_struct": "", - "paramname": "psteamIDGameServer", - "paramtype": "CSteamID *" - } - ], - "returntype": "bool" - }, - { - "methodname": "SetLobbyMemberLimit", - "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"cMaxMembers", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "methodname": "GetLobbyMemberLimit", - "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "int" - }, - { - "methodname": "SetLobbyType", - "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyType", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"eLobbyType", "paramtype":"ELobbyType" } - ], - "returntype": "bool" - }, - { - "methodname": "SetLobbyJoinable", - "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyJoinable", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"bLobbyJoinable", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "GetLobbyOwner", - "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyOwner", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "CSteamID", - "returntype_flat": "uint64_steamid" - }, - { - "methodname": "SetLobbyOwner", - "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyOwner", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"steamIDNewOwner", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "bool" - }, - { - "methodname": "SetLinkedLobby", - "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLinkedLobby", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"steamIDLobbyDependent", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "bool" - } - ], - "version_string": "SteamMatchMaking009" - }, - { - "classname": "ISteamMatchmakingServerListResponse", - "fields": [], - "methods": [ - { - "methodname": "ServerResponded", - "methodname_flat": "SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded", - "params": [ - { "paramname":"hRequest", "paramtype":"HServerListRequest" }, - { "paramname":"iServer", "paramtype":"int" } - ], - "returntype": "void" - }, - { - "methodname": "ServerFailedToRespond", - "methodname_flat": "SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond", - "params": [ - { "paramname":"hRequest", "paramtype":"HServerListRequest" }, - { "paramname":"iServer", "paramtype":"int" } - ], - "returntype": "void" - }, - { - "methodname": "RefreshComplete", - "methodname_flat": "SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete", - "params": [ - { "paramname":"hRequest", "paramtype":"HServerListRequest" }, - { "paramname":"response", "paramtype":"EMatchMakingServerResponse" } - ], - "returntype": "void" - } - ] - }, - { - "classname": "ISteamMatchmakingPingResponse", - "fields": [], - "methods": [ - { - "methodname": "ServerResponded", - "methodname_flat": "SteamAPI_ISteamMatchmakingPingResponse_ServerResponded", - "params": [ - { "paramname":"server", "paramtype":"gameserveritem_t &" } - ], - "returntype": "void" - }, - { - "methodname": "ServerFailedToRespond", - "methodname_flat": "SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond", - "params": [], - "returntype": "void" - } - ] - }, - { - "classname": "ISteamMatchmakingPlayersResponse", - "fields": [], - "methods": [ - { - "methodname": "AddPlayerToList", - "methodname_flat": "SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList", - "params": [ - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"nScore", "paramtype":"int" }, - { "paramname":"flTimePlayed", "paramtype":"float" } - ], - "returntype": "void" - }, - { - "methodname": "PlayersFailedToRespond", - "methodname_flat": "SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond", - "params": [], - "returntype": "void" - }, - { - "methodname": "PlayersRefreshComplete", - "methodname_flat": "SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete", - "params": [], - "returntype": "void" - } - ] - }, - { - "classname": "ISteamMatchmakingRulesResponse", - "fields": [], - "methods": [ - { - "methodname": "RulesResponded", - "methodname_flat": "SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded", - "params": [ - { "paramname":"pchRule", "paramtype":"const char *" }, - { "paramname":"pchValue", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "RulesFailedToRespond", - "methodname_flat": "SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond", - "params": [], - "returntype": "void" - }, - { - "methodname": "RulesRefreshComplete", - "methodname_flat": "SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete", - "params": [], - "returntype": "void" - } - ] - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamMatchmakingServers", - "name_flat": "SteamAPI_SteamMatchmakingServers_v002" - } - ], - "classname": "ISteamMatchmakingServers", - "fields": [], - "methods": [ - { - "methodname": "RequestInternetServerList", - "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RequestInternetServerList", - "params": [ - { "paramname":"iApp", "paramtype":"AppId_t" }, - { - "array_count": "nFilters", - "paramname": "ppchFilters", - "paramtype": "MatchMakingKeyValuePair_t **" - }, - { "paramname":"nFilters", "paramtype":"uint32" }, - { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingServerListResponse *" } - ], - "returntype": "HServerListRequest" - }, - { - "methodname": "RequestLANServerList", - "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RequestLANServerList", - "params": [ - { "paramname":"iApp", "paramtype":"AppId_t" }, - { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingServerListResponse *" } - ], - "returntype": "HServerListRequest" - }, - { - "methodname": "RequestFriendsServerList", - "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList", - "params": [ - { "paramname":"iApp", "paramtype":"AppId_t" }, - { - "array_count": "nFilters", - "paramname": "ppchFilters", - "paramtype": "MatchMakingKeyValuePair_t **" - }, - { "paramname":"nFilters", "paramtype":"uint32" }, - { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingServerListResponse *" } - ], - "returntype": "HServerListRequest" - }, - { - "methodname": "RequestFavoritesServerList", - "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList", - "params": [ - { "paramname":"iApp", "paramtype":"AppId_t" }, - { - "array_count": "nFilters", - "paramname": "ppchFilters", - "paramtype": "MatchMakingKeyValuePair_t **" - }, - { "paramname":"nFilters", "paramtype":"uint32" }, - { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingServerListResponse *" } - ], - "returntype": "HServerListRequest" - }, - { - "methodname": "RequestHistoryServerList", - "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList", - "params": [ - { "paramname":"iApp", "paramtype":"AppId_t" }, - { - "array_count": "nFilters", - "paramname": "ppchFilters", - "paramtype": "MatchMakingKeyValuePair_t **" - }, - { "paramname":"nFilters", "paramtype":"uint32" }, - { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingServerListResponse *" } - ], - "returntype": "HServerListRequest" - }, - { - "methodname": "RequestSpectatorServerList", - "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList", - "params": [ - { "paramname":"iApp", "paramtype":"AppId_t" }, - { - "array_count": "nFilters", - "paramname": "ppchFilters", - "paramtype": "MatchMakingKeyValuePair_t **" - }, - { "paramname":"nFilters", "paramtype":"uint32" }, - { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingServerListResponse *" } - ], - "returntype": "HServerListRequest" - }, - { - "methodname": "ReleaseRequest", - "methodname_flat": "SteamAPI_ISteamMatchmakingServers_ReleaseRequest", - "params": [ - { "paramname":"hServerListRequest", "paramtype":"HServerListRequest" } - ], - "returntype": "void" - }, - { - "methodname": "GetServerDetails", - "methodname_flat": "SteamAPI_ISteamMatchmakingServers_GetServerDetails", - "params": [ - { "paramname":"hRequest", "paramtype":"HServerListRequest" }, - { "paramname":"iServer", "paramtype":"int" } - ], - "returntype": "gameserveritem_t *" - }, - { - "methodname": "CancelQuery", - "methodname_flat": "SteamAPI_ISteamMatchmakingServers_CancelQuery", - "params": [ - { "paramname":"hRequest", "paramtype":"HServerListRequest" } - ], - "returntype": "void" - }, - { - "methodname": "RefreshQuery", - "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RefreshQuery", - "params": [ - { "paramname":"hRequest", "paramtype":"HServerListRequest" } - ], - "returntype": "void" - }, - { - "methodname": "IsRefreshing", - "methodname_flat": "SteamAPI_ISteamMatchmakingServers_IsRefreshing", - "params": [ - { "paramname":"hRequest", "paramtype":"HServerListRequest" } - ], - "returntype": "bool" - }, - { - "methodname": "GetServerCount", - "methodname_flat": "SteamAPI_ISteamMatchmakingServers_GetServerCount", - "params": [ - { "paramname":"hRequest", "paramtype":"HServerListRequest" } - ], - "returntype": "int" - }, - { - "methodname": "RefreshServer", - "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RefreshServer", - "params": [ - { "paramname":"hRequest", "paramtype":"HServerListRequest" }, - { "paramname":"iServer", "paramtype":"int" } - ], - "returntype": "void" - }, - { - "methodname": "PingServer", - "methodname_flat": "SteamAPI_ISteamMatchmakingServers_PingServer", - "params": [ - { "paramname":"unIP", "paramtype":"uint32" }, - { "paramname":"usPort", "paramtype":"uint16" }, - { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingPingResponse *" } - ], - "returntype": "HServerQuery" - }, - { - "methodname": "PlayerDetails", - "methodname_flat": "SteamAPI_ISteamMatchmakingServers_PlayerDetails", - "params": [ - { "paramname":"unIP", "paramtype":"uint32" }, - { "paramname":"usPort", "paramtype":"uint16" }, - { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingPlayersResponse *" } - ], - "returntype": "HServerQuery" - }, - { - "methodname": "ServerRules", - "methodname_flat": "SteamAPI_ISteamMatchmakingServers_ServerRules", - "params": [ - { "paramname":"unIP", "paramtype":"uint32" }, - { "paramname":"usPort", "paramtype":"uint16" }, - { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingRulesResponse *" } - ], - "returntype": "HServerQuery" - }, - { - "methodname": "CancelServerQuery", - "methodname_flat": "SteamAPI_ISteamMatchmakingServers_CancelServerQuery", - "params": [ - { "paramname":"hServerQuery", "paramtype":"HServerQuery" } - ], - "returntype": "void" - } - ], - "version_string": "SteamMatchMakingServers002" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamGameSearch", - "name_flat": "SteamAPI_SteamGameSearch_v001" - } - ], - "classname": "ISteamGameSearch", - "fields": [], - "methods": [ - { - "methodname": "AddGameSearchParams", - "methodname_flat": "SteamAPI_ISteamGameSearch_AddGameSearchParams", - "params": [ - { "paramname":"pchKeyToFind", "paramtype":"const char *" }, - { "paramname":"pchValuesToFind", "paramtype":"const char *" } - ], - "returntype": "EGameSearchErrorCode_t" - }, - { - "methodname": "SearchForGameWithLobby", - "methodname_flat": "SteamAPI_ISteamGameSearch_SearchForGameWithLobby", - "params": [ - { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"nPlayerMin", "paramtype":"int" }, - { "paramname":"nPlayerMax", "paramtype":"int" } - ], - "returntype": "EGameSearchErrorCode_t" - }, - { - "methodname": "SearchForGameSolo", - "methodname_flat": "SteamAPI_ISteamGameSearch_SearchForGameSolo", - "params": [ - { "paramname":"nPlayerMin", "paramtype":"int" }, - { "paramname":"nPlayerMax", "paramtype":"int" } - ], - "returntype": "EGameSearchErrorCode_t" - }, - { - "methodname": "AcceptGame", - "methodname_flat": "SteamAPI_ISteamGameSearch_AcceptGame", - "params": [], - "returntype": "EGameSearchErrorCode_t" - }, - { - "methodname": "DeclineGame", - "methodname_flat": "SteamAPI_ISteamGameSearch_DeclineGame", - "params": [], - "returntype": "EGameSearchErrorCode_t" - }, - { - "methodname": "RetrieveConnectionDetails", - "methodname_flat": "SteamAPI_ISteamGameSearch_RetrieveConnectionDetails", - "params": [ - { "paramname":"steamIDHost", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchConnectionDetails", "paramtype":"char *" }, - { "paramname":"cubConnectionDetails", "paramtype":"int" } - ], - "returntype": "EGameSearchErrorCode_t" - }, - { - "methodname": "EndGameSearch", - "methodname_flat": "SteamAPI_ISteamGameSearch_EndGameSearch", - "params": [], - "returntype": "EGameSearchErrorCode_t" - }, - { - "methodname": "SetGameHostParams", - "methodname_flat": "SteamAPI_ISteamGameSearch_SetGameHostParams", - "params": [ - { "paramname":"pchKey", "paramtype":"const char *" }, - { "paramname":"pchValue", "paramtype":"const char *" } - ], - "returntype": "EGameSearchErrorCode_t" - }, - { - "methodname": "SetConnectionDetails", - "methodname_flat": "SteamAPI_ISteamGameSearch_SetConnectionDetails", - "params": [ - { "paramname":"pchConnectionDetails", "paramtype":"const char *" }, - { "paramname":"cubConnectionDetails", "paramtype":"int" } - ], - "returntype": "EGameSearchErrorCode_t" - }, - { - "methodname": "RequestPlayersForGame", - "methodname_flat": "SteamAPI_ISteamGameSearch_RequestPlayersForGame", - "params": [ - { "paramname":"nPlayerMin", "paramtype":"int" }, - { "paramname":"nPlayerMax", "paramtype":"int" }, - { "paramname":"nMaxTeamSize", "paramtype":"int" } - ], - "returntype": "EGameSearchErrorCode_t" - }, - { - "methodname": "HostConfirmGameStart", - "methodname_flat": "SteamAPI_ISteamGameSearch_HostConfirmGameStart", - "params": [ - { "paramname":"ullUniqueGameID", "paramtype":"uint64" } - ], - "returntype": "EGameSearchErrorCode_t" - }, - { - "methodname": "CancelRequestPlayersForGame", - "methodname_flat": "SteamAPI_ISteamGameSearch_CancelRequestPlayersForGame", - "params": [], - "returntype": "EGameSearchErrorCode_t" - }, - { - "methodname": "SubmitPlayerResult", - "methodname_flat": "SteamAPI_ISteamGameSearch_SubmitPlayerResult", - "params": [ - { "paramname":"ullUniqueGameID", "paramtype":"uint64" }, - { "paramname":"steamIDPlayer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"EPlayerResult", "paramtype":"EPlayerResult_t" } - ], - "returntype": "EGameSearchErrorCode_t" - }, - { - "methodname": "EndGame", - "methodname_flat": "SteamAPI_ISteamGameSearch_EndGame", - "params": [ - { "paramname":"ullUniqueGameID", "paramtype":"uint64" } - ], - "returntype": "EGameSearchErrorCode_t" - } - ], - "version_string": "SteamMatchGameSearch001" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamParties", - "name_flat": "SteamAPI_SteamParties_v002" - } - ], - "classname": "ISteamParties", - "fields": [], - "methods": [ - { - "methodname": "GetNumActiveBeacons", - "methodname_flat": "SteamAPI_ISteamParties_GetNumActiveBeacons", - "params": [], - "returntype": "uint32" - }, - { - "methodname": "GetBeaconByIndex", - "methodname_flat": "SteamAPI_ISteamParties_GetBeaconByIndex", - "params": [ - { "paramname":"unIndex", "paramtype":"uint32" } - ], - "returntype": "PartyBeaconID_t" - }, - { - "methodname": "GetBeaconDetails", - "methodname_flat": "SteamAPI_ISteamParties_GetBeaconDetails", - "params": [ - { "paramname":"ulBeaconID", "paramtype":"PartyBeaconID_t" }, - { "paramname":"pSteamIDBeaconOwner", "paramtype":"CSteamID *" }, - { - "out_struct": "", - "paramname": "pLocation", - "paramtype": "SteamPartyBeaconLocation_t *" - }, - { - "out_string_count": "cchMetadata", - "paramname": "pchMetadata", - "paramtype": "char *" - }, - { "paramname":"cchMetadata", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "callresult": "JoinPartyCallback_t", - "methodname": "JoinParty", - "methodname_flat": "SteamAPI_ISteamParties_JoinParty", - "params": [ - { "paramname":"ulBeaconID", "paramtype":"PartyBeaconID_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetNumAvailableBeaconLocations", - "methodname_flat": "SteamAPI_ISteamParties_GetNumAvailableBeaconLocations", - "params": [ - { "paramname":"puNumLocations", "paramtype":"uint32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetAvailableBeaconLocations", - "methodname_flat": "SteamAPI_ISteamParties_GetAvailableBeaconLocations", - "params": [ - { "paramname":"pLocationList", "paramtype":"SteamPartyBeaconLocation_t *" }, - { "paramname":"uMaxNumLocations", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "callresult": "CreateBeaconCallback_t", - "methodname": "CreateBeacon", - "methodname_flat": "SteamAPI_ISteamParties_CreateBeacon", - "params": [ - { "paramname":"unOpenSlots", "paramtype":"uint32" }, - { "paramname":"pBeaconLocation", "paramtype":"SteamPartyBeaconLocation_t *" }, - { "paramname":"pchConnectString", "paramtype":"const char *" }, - { "paramname":"pchMetadata", "paramtype":"const char *" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "OnReservationCompleted", - "methodname_flat": "SteamAPI_ISteamParties_OnReservationCompleted", - "params": [ - { "paramname":"ulBeacon", "paramtype":"PartyBeaconID_t" }, - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "void" - }, - { - "methodname": "CancelReservation", - "methodname_flat": "SteamAPI_ISteamParties_CancelReservation", - "params": [ - { "paramname":"ulBeacon", "paramtype":"PartyBeaconID_t" }, - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "void" - }, - { - "callresult": "ChangeNumOpenSlotsCallback_t", - "methodname": "ChangeNumOpenSlots", - "methodname_flat": "SteamAPI_ISteamParties_ChangeNumOpenSlots", - "params": [ - { "paramname":"ulBeacon", "paramtype":"PartyBeaconID_t" }, - { "paramname":"unOpenSlots", "paramtype":"uint32" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "DestroyBeacon", - "methodname_flat": "SteamAPI_ISteamParties_DestroyBeacon", - "params": [ - { "paramname":"ulBeacon", "paramtype":"PartyBeaconID_t" } - ], - "returntype": "bool" - }, - { - "methodname": "GetBeaconLocationData", - "methodname_flat": "SteamAPI_ISteamParties_GetBeaconLocationData", - "params": [ - { "paramname":"BeaconLocation", "paramtype":"SteamPartyBeaconLocation_t" }, - { "paramname":"eData", "paramtype":"ESteamPartyBeaconLocationData" }, - { - "out_string_count": "cchDataStringOut", - "paramname": "pchDataStringOut", - "paramtype": "char *" - }, - { "paramname":"cchDataStringOut", "paramtype":"int" } - ], - "returntype": "bool" - } - ], - "version_string": "SteamParties002" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamRemoteStorage", - "name_flat": "SteamAPI_SteamRemoteStorage_v014" - } - ], - "classname": "ISteamRemoteStorage", - "fields": [], - "methods": [ - { - "methodname": "FileWrite", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileWrite", - "params": [ - { "paramname":"pchFile", "paramtype":"const char *" }, - { "paramname":"pvData", "paramtype":"const void *" }, - { "paramname":"cubData", "paramtype":"int32" } - ], - "returntype": "bool" - }, - { - "methodname": "FileRead", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileRead", - "params": [ - { "paramname":"pchFile", "paramtype":"const char *" }, - { "paramname":"pvData", "paramtype":"void *" }, - { "paramname":"cubDataToRead", "paramtype":"int32" } - ], - "returntype": "int32" - }, - { - "callresult": "RemoteStorageFileWriteAsyncComplete_t", - "methodname": "FileWriteAsync", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileWriteAsync", - "params": [ - { "paramname":"pchFile", "paramtype":"const char *" }, - { "paramname":"pvData", "paramtype":"const void *" }, - { "paramname":"cubData", "paramtype":"uint32" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoteStorageFileReadAsyncComplete_t", - "methodname": "FileReadAsync", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileReadAsync", - "params": [ - { "paramname":"pchFile", "paramtype":"const char *" }, - { "paramname":"nOffset", "paramtype":"uint32" }, - { "paramname":"cubToRead", "paramtype":"uint32" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "FileReadAsyncComplete", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete", - "params": [ - { "paramname":"hReadCall", "paramtype":"SteamAPICall_t" }, - { "paramname":"pvBuffer", "paramtype":"void *" }, - { "paramname":"cubToRead", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "FileForget", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileForget", - "params": [ - { "paramname":"pchFile", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "FileDelete", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileDelete", - "params": [ - { "paramname":"pchFile", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "callresult": "RemoteStorageFileShareResult_t", - "methodname": "FileShare", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileShare", - "params": [ - { "paramname":"pchFile", "paramtype":"const char *" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "SetSyncPlatforms", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_SetSyncPlatforms", - "params": [ - { "paramname":"pchFile", "paramtype":"const char *" }, - { "paramname":"eRemoteStoragePlatform", "paramtype":"ERemoteStoragePlatform" } - ], - "returntype": "bool" - }, - { - "methodname": "FileWriteStreamOpen", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen", - "params": [ - { "paramname":"pchFile", "paramtype":"const char *" } - ], - "returntype": "UGCFileWriteStreamHandle_t" - }, - { - "methodname": "FileWriteStreamWriteChunk", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk", - "params": [ - { "paramname":"writeHandle", "paramtype":"UGCFileWriteStreamHandle_t" }, - { "paramname":"pvData", "paramtype":"const void *" }, - { "paramname":"cubData", "paramtype":"int32" } - ], - "returntype": "bool" - }, - { - "methodname": "FileWriteStreamClose", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileWriteStreamClose", - "params": [ - { "paramname":"writeHandle", "paramtype":"UGCFileWriteStreamHandle_t" } - ], - "returntype": "bool" - }, - { - "methodname": "FileWriteStreamCancel", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel", - "params": [ - { "paramname":"writeHandle", "paramtype":"UGCFileWriteStreamHandle_t" } - ], - "returntype": "bool" - }, - { - "methodname": "FileExists", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileExists", - "params": [ - { "paramname":"pchFile", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "FilePersisted", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_FilePersisted", - "params": [ - { "paramname":"pchFile", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetFileSize", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetFileSize", - "params": [ - { "paramname":"pchFile", "paramtype":"const char *" } - ], - "returntype": "int32" - }, - { - "methodname": "GetFileTimestamp", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetFileTimestamp", - "params": [ - { "paramname":"pchFile", "paramtype":"const char *" } - ], - "returntype": "int64" - }, - { - "methodname": "GetSyncPlatforms", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetSyncPlatforms", - "params": [ - { "paramname":"pchFile", "paramtype":"const char *" } - ], - "returntype": "ERemoteStoragePlatform" - }, - { - "methodname": "GetFileCount", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetFileCount", - "params": [], - "returntype": "int32" - }, - { - "methodname": "GetFileNameAndSize", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetFileNameAndSize", - "params": [ - { "paramname":"iFile", "paramtype":"int" }, - { "paramname":"pnFileSizeInBytes", "paramtype":"int32 *" } - ], - "returntype": "const char *" - }, - { - "methodname": "GetQuota", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetQuota", - "params": [ - { "paramname":"pnTotalBytes", "paramtype":"uint64 *" }, - { "paramname":"puAvailableBytes", "paramtype":"uint64 *" } - ], - "returntype": "bool" - }, - { - "methodname": "IsCloudEnabledForAccount", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount", - "params": [], - "returntype": "bool" - }, - { - "methodname": "IsCloudEnabledForApp", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp", - "params": [], - "returntype": "bool" - }, - { - "methodname": "SetCloudEnabledForApp", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp", - "params": [ - { "paramname":"bEnabled", "paramtype":"bool" } - ], - "returntype": "void" - }, - { - "callresult": "RemoteStorageDownloadUGCResult_t", - "methodname": "UGCDownload", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_UGCDownload", - "params": [ - { "paramname":"hContent", "paramtype":"UGCHandle_t" }, - { "paramname":"unPriority", "paramtype":"uint32" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetUGCDownloadProgress", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress", - "params": [ - { "paramname":"hContent", "paramtype":"UGCHandle_t" }, - { "paramname":"pnBytesDownloaded", "paramtype":"int32 *" }, - { "paramname":"pnBytesExpected", "paramtype":"int32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetUGCDetails", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetUGCDetails", - "params": [ - { "paramname":"hContent", "paramtype":"UGCHandle_t" }, - { "paramname":"pnAppID", "paramtype":"AppId_t *" }, - { - "out_string": "", - "paramname": "ppchName", - "paramtype": "char **" - }, - { "paramname":"pnFileSizeInBytes", "paramtype":"int32 *" }, - { - "out_struct": "", - "paramname": "pSteamIDOwner", - "paramtype": "CSteamID *" - } - ], - "returntype": "bool" - }, - { - "methodname": "UGCRead", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_UGCRead", - "params": [ - { "paramname":"hContent", "paramtype":"UGCHandle_t" }, - { "paramname":"pvData", "paramtype":"void *" }, - { "paramname":"cubDataToRead", "paramtype":"int32" }, - { "paramname":"cOffset", "paramtype":"uint32" }, - { "paramname":"eAction", "paramtype":"EUGCReadAction" } - ], - "returntype": "int32" - }, - { - "methodname": "GetCachedUGCCount", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetCachedUGCCount", - "params": [], - "returntype": "int32" - }, - { - "methodname": "GetCachedUGCHandle", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle", - "params": [ - { "paramname":"iCachedContent", "paramtype":"int32" } - ], - "returntype": "UGCHandle_t" - }, - { - "callresult": "RemoteStoragePublishFileProgress_t", - "methodname": "PublishWorkshopFile", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_PublishWorkshopFile", - "params": [ - { "paramname":"pchFile", "paramtype":"const char *" }, - { "paramname":"pchPreviewFile", "paramtype":"const char *" }, - { "paramname":"nConsumerAppId", "paramtype":"AppId_t" }, - { "paramname":"pchTitle", "paramtype":"const char *" }, - { "paramname":"pchDescription", "paramtype":"const char *" }, - { "paramname":"eVisibility", "paramtype":"ERemoteStoragePublishedFileVisibility" }, - { "paramname":"pTags", "paramtype":"SteamParamStringArray_t *" }, - { "paramname":"eWorkshopFileType", "paramtype":"EWorkshopFileType" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "CreatePublishedFileUpdateRequest", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest", - "params": [ - { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" } - ], - "returntype": "PublishedFileUpdateHandle_t" - }, - { - "methodname": "UpdatePublishedFileFile", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile", - "params": [ - { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, - { "paramname":"pchFile", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "UpdatePublishedFilePreviewFile", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile", - "params": [ - { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, - { "paramname":"pchPreviewFile", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "UpdatePublishedFileTitle", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle", - "params": [ - { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, - { "paramname":"pchTitle", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "UpdatePublishedFileDescription", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription", - "params": [ - { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, - { "paramname":"pchDescription", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "UpdatePublishedFileVisibility", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility", - "params": [ - { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, - { "paramname":"eVisibility", "paramtype":"ERemoteStoragePublishedFileVisibility" } - ], - "returntype": "bool" - }, - { - "methodname": "UpdatePublishedFileTags", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags", - "params": [ - { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, - { "paramname":"pTags", "paramtype":"SteamParamStringArray_t *" } - ], - "returntype": "bool" - }, - { - "callresult": "RemoteStorageUpdatePublishedFileResult_t", - "methodname": "CommitPublishedFileUpdate", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate", - "params": [ - { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoteStorageGetPublishedFileDetailsResult_t", - "methodname": "GetPublishedFileDetails", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails", - "params": [ - { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" }, - { "paramname":"unMaxSecondsOld", "paramtype":"uint32" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoteStorageDeletePublishedFileResult_t", - "methodname": "DeletePublishedFile", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_DeletePublishedFile", - "params": [ - { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoteStorageEnumerateUserPublishedFilesResult_t", - "methodname": "EnumerateUserPublishedFiles", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles", - "params": [ - { "paramname":"unStartIndex", "paramtype":"uint32" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoteStorageSubscribePublishedFileResult_t", - "methodname": "SubscribePublishedFile", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_SubscribePublishedFile", - "params": [ - { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoteStorageEnumerateUserSubscribedFilesResult_t", - "methodname": "EnumerateUserSubscribedFiles", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles", - "params": [ - { "paramname":"unStartIndex", "paramtype":"uint32" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoteStorageUnsubscribePublishedFileResult_t", - "methodname": "UnsubscribePublishedFile", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile", - "params": [ - { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "UpdatePublishedFileSetChangeDescription", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription", - "params": [ - { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, - { "paramname":"pchChangeDescription", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "callresult": "RemoteStorageGetPublishedItemVoteDetailsResult_t", - "methodname": "GetPublishedItemVoteDetails", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails", - "params": [ - { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoteStorageUpdateUserPublishedItemVoteResult_t", - "methodname": "UpdateUserPublishedItemVote", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote", - "params": [ - { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" }, - { "paramname":"bVoteUp", "paramtype":"bool" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoteStorageGetPublishedItemVoteDetailsResult_t", - "methodname": "GetUserPublishedItemVoteDetails", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails", - "params": [ - { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoteStorageEnumerateUserPublishedFilesResult_t", - "methodname": "EnumerateUserSharedWorkshopFiles", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles", - "params": [ - { "paramname":"steamId", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"unStartIndex", "paramtype":"uint32" }, - { "paramname":"pRequiredTags", "paramtype":"SteamParamStringArray_t *" }, - { "paramname":"pExcludedTags", "paramtype":"SteamParamStringArray_t *" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoteStoragePublishFileProgress_t", - "methodname": "PublishVideo", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_PublishVideo", - "params": [ - { "paramname":"eVideoProvider", "paramtype":"EWorkshopVideoProvider" }, - { "paramname":"pchVideoAccount", "paramtype":"const char *" }, - { "paramname":"pchVideoIdentifier", "paramtype":"const char *" }, - { "paramname":"pchPreviewFile", "paramtype":"const char *" }, - { "paramname":"nConsumerAppId", "paramtype":"AppId_t" }, - { "paramname":"pchTitle", "paramtype":"const char *" }, - { "paramname":"pchDescription", "paramtype":"const char *" }, - { "paramname":"eVisibility", "paramtype":"ERemoteStoragePublishedFileVisibility" }, - { "paramname":"pTags", "paramtype":"SteamParamStringArray_t *" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoteStorageSetUserPublishedFileActionResult_t", - "methodname": "SetUserPublishedFileAction", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction", - "params": [ - { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" }, - { "paramname":"eAction", "paramtype":"EWorkshopFileAction" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoteStorageEnumeratePublishedFilesByUserActionResult_t", - "methodname": "EnumeratePublishedFilesByUserAction", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction", - "params": [ - { "paramname":"eAction", "paramtype":"EWorkshopFileAction" }, - { "paramname":"unStartIndex", "paramtype":"uint32" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoteStorageEnumerateWorkshopFilesResult_t", - "methodname": "EnumeratePublishedWorkshopFiles", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles", - "params": [ - { "paramname":"eEnumerationType", "paramtype":"EWorkshopEnumerationType" }, - { "paramname":"unStartIndex", "paramtype":"uint32" }, - { "paramname":"unCount", "paramtype":"uint32" }, - { "paramname":"unDays", "paramtype":"uint32" }, - { "paramname":"pTags", "paramtype":"SteamParamStringArray_t *" }, - { "paramname":"pUserTags", "paramtype":"SteamParamStringArray_t *" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoteStorageDownloadUGCResult_t", - "methodname": "UGCDownloadToLocation", - "methodname_flat": "SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation", - "params": [ - { "paramname":"hContent", "paramtype":"UGCHandle_t" }, - { "paramname":"pchLocation", "paramtype":"const char *" }, - { "paramname":"unPriority", "paramtype":"uint32" } - ], - "returntype": "SteamAPICall_t" - } - ], - "version_string": "STEAMREMOTESTORAGE_INTERFACE_VERSION014" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamUserStats", - "name_flat": "SteamAPI_SteamUserStats_v012" - } - ], - "classname": "ISteamUserStats", - "fields": [], - "methods": [ - { - "callback": "UserStatsReceived_t", - "methodname": "RequestCurrentStats", - "methodname_flat": "SteamAPI_ISteamUserStats_RequestCurrentStats", - "params": [], - "returntype": "bool" - }, - { - "methodname": "GetStat", - "methodname_flat": "SteamAPI_ISteamUserStats_GetStatInt32", - "params": [ - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"pData", "paramtype":"int32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetStat", - "methodname_flat": "SteamAPI_ISteamUserStats_GetStatFloat", - "params": [ - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"pData", "paramtype":"float *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetStat", - "methodname_flat": "SteamAPI_ISteamUserStats_SetStatInt32", - "params": [ - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"nData", "paramtype":"int32" } - ], - "returntype": "bool" - }, - { - "methodname": "SetStat", - "methodname_flat": "SteamAPI_ISteamUserStats_SetStatFloat", - "params": [ - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"fData", "paramtype":"float" } - ], - "returntype": "bool" - }, - { - "methodname": "UpdateAvgRateStat", - "methodname_flat": "SteamAPI_ISteamUserStats_UpdateAvgRateStat", - "params": [ - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"flCountThisSession", "paramtype":"float" }, - { "paramname":"dSessionLength", "paramtype":"double" } - ], - "returntype": "bool" - }, - { - "methodname": "GetAchievement", - "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievement", - "params": [ - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"pbAchieved", "paramtype":"bool *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetAchievement", - "methodname_flat": "SteamAPI_ISteamUserStats_SetAchievement", - "params": [ - { "paramname":"pchName", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "ClearAchievement", - "methodname_flat": "SteamAPI_ISteamUserStats_ClearAchievement", - "params": [ - { "paramname":"pchName", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetAchievementAndUnlockTime", - "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime", - "params": [ - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"pbAchieved", "paramtype":"bool *" }, - { "paramname":"punUnlockTime", "paramtype":"uint32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "StoreStats", - "methodname_flat": "SteamAPI_ISteamUserStats_StoreStats", - "params": [], - "returntype": "bool" - }, - { - "methodname": "GetAchievementIcon", - "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementIcon", - "params": [ - { "paramname":"pchName", "paramtype":"const char *" } - ], - "returntype": "int" - }, - { - "methodname": "GetAchievementDisplayAttribute", - "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute", - "params": [ - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"pchKey", "paramtype":"const char *" } - ], - "returntype": "const char *" - }, - { - "methodname": "IndicateAchievementProgress", - "methodname_flat": "SteamAPI_ISteamUserStats_IndicateAchievementProgress", - "params": [ - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"nCurProgress", "paramtype":"uint32" }, - { "paramname":"nMaxProgress", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "GetNumAchievements", - "methodname_flat": "SteamAPI_ISteamUserStats_GetNumAchievements", - "params": [], - "returntype": "uint32" - }, - { - "methodname": "GetAchievementName", - "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementName", - "params": [ - { "paramname":"iAchievement", "paramtype":"uint32" } - ], - "returntype": "const char *" - }, - { - "callresult": "UserStatsReceived_t", - "methodname": "RequestUserStats", - "methodname_flat": "SteamAPI_ISteamUserStats_RequestUserStats", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetUserStat", - "methodname_flat": "SteamAPI_ISteamUserStats_GetUserStatInt32", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"pData", "paramtype":"int32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetUserStat", - "methodname_flat": "SteamAPI_ISteamUserStats_GetUserStatFloat", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"pData", "paramtype":"float *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetUserAchievement", - "methodname_flat": "SteamAPI_ISteamUserStats_GetUserAchievement", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"pbAchieved", "paramtype":"bool *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetUserAchievementAndUnlockTime", - "methodname_flat": "SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"pbAchieved", "paramtype":"bool *" }, - { "paramname":"punUnlockTime", "paramtype":"uint32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "ResetAllStats", - "methodname_flat": "SteamAPI_ISteamUserStats_ResetAllStats", - "params": [ - { "paramname":"bAchievementsToo", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "callresult": "LeaderboardFindResult_t", - "methodname": "FindOrCreateLeaderboard", - "methodname_flat": "SteamAPI_ISteamUserStats_FindOrCreateLeaderboard", - "params": [ - { "paramname":"pchLeaderboardName", "paramtype":"const char *" }, - { "paramname":"eLeaderboardSortMethod", "paramtype":"ELeaderboardSortMethod" }, - { "paramname":"eLeaderboardDisplayType", "paramtype":"ELeaderboardDisplayType" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "LeaderboardFindResult_t", - "methodname": "FindLeaderboard", - "methodname_flat": "SteamAPI_ISteamUserStats_FindLeaderboard", - "params": [ - { "paramname":"pchLeaderboardName", "paramtype":"const char *" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetLeaderboardName", - "methodname_flat": "SteamAPI_ISteamUserStats_GetLeaderboardName", - "params": [ - { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" } - ], - "returntype": "const char *" - }, - { - "methodname": "GetLeaderboardEntryCount", - "methodname_flat": "SteamAPI_ISteamUserStats_GetLeaderboardEntryCount", - "params": [ - { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" } - ], - "returntype": "int" - }, - { - "methodname": "GetLeaderboardSortMethod", - "methodname_flat": "SteamAPI_ISteamUserStats_GetLeaderboardSortMethod", - "params": [ - { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" } - ], - "returntype": "ELeaderboardSortMethod" - }, - { - "methodname": "GetLeaderboardDisplayType", - "methodname_flat": "SteamAPI_ISteamUserStats_GetLeaderboardDisplayType", - "params": [ - { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" } - ], - "returntype": "ELeaderboardDisplayType" - }, - { - "callresult": "LeaderboardScoresDownloaded_t", - "methodname": "DownloadLeaderboardEntries", - "methodname_flat": "SteamAPI_ISteamUserStats_DownloadLeaderboardEntries", - "params": [ - { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" }, - { "paramname":"eLeaderboardDataRequest", "paramtype":"ELeaderboardDataRequest" }, - { "paramname":"nRangeStart", "paramtype":"int" }, - { "paramname":"nRangeEnd", "paramtype":"int" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "LeaderboardScoresDownloaded_t", - "desc": "Downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers", - "methodname": "DownloadLeaderboardEntriesForUsers", - "methodname_flat": "SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers", - "params": [ - { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" }, - { - "array_count": "cUsers", - "desc": "Array of users to retrieve", - "paramname": "prgUsers", - "paramtype": "CSteamID *" - }, - { "paramname":"cUsers", "paramtype":"int" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetDownloadedLeaderboardEntry", - "methodname_flat": "SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry", - "params": [ - { "paramname":"hSteamLeaderboardEntries", "paramtype":"SteamLeaderboardEntries_t" }, - { "paramname":"index", "paramtype":"int" }, - { "paramname":"pLeaderboardEntry", "paramtype":"LeaderboardEntry_t *" }, - { "paramname":"pDetails", "paramtype":"int32 *" }, - { "paramname":"cDetailsMax", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "callresult": "LeaderboardScoreUploaded_t", - "methodname": "UploadLeaderboardScore", - "methodname_flat": "SteamAPI_ISteamUserStats_UploadLeaderboardScore", - "params": [ - { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" }, - { "paramname":"eLeaderboardUploadScoreMethod", "paramtype":"ELeaderboardUploadScoreMethod" }, - { "paramname":"nScore", "paramtype":"int32" }, - { "paramname":"pScoreDetails", "paramtype":"const int32 *" }, - { "paramname":"cScoreDetailsCount", "paramtype":"int" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "LeaderboardUGCSet_t", - "methodname": "AttachLeaderboardUGC", - "methodname_flat": "SteamAPI_ISteamUserStats_AttachLeaderboardUGC", - "params": [ - { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" }, - { "paramname":"hUGC", "paramtype":"UGCHandle_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "NumberOfCurrentPlayers_t", - "methodname": "GetNumberOfCurrentPlayers", - "methodname_flat": "SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers", - "params": [], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "GlobalAchievementPercentagesReady_t", - "methodname": "RequestGlobalAchievementPercentages", - "methodname_flat": "SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages", - "params": [], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetMostAchievedAchievementInfo", - "methodname_flat": "SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo", - "params": [ - { "paramname":"pchName", "paramtype":"char *" }, - { "paramname":"unNameBufLen", "paramtype":"uint32" }, - { "paramname":"pflPercent", "paramtype":"float *" }, - { "paramname":"pbAchieved", "paramtype":"bool *" } - ], - "returntype": "int" - }, - { - "methodname": "GetNextMostAchievedAchievementInfo", - "methodname_flat": "SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo", - "params": [ - { "paramname":"iIteratorPrevious", "paramtype":"int" }, - { "paramname":"pchName", "paramtype":"char *" }, - { "paramname":"unNameBufLen", "paramtype":"uint32" }, - { "paramname":"pflPercent", "paramtype":"float *" }, - { "paramname":"pbAchieved", "paramtype":"bool *" } - ], - "returntype": "int" - }, - { - "methodname": "GetAchievementAchievedPercent", - "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementAchievedPercent", - "params": [ - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"pflPercent", "paramtype":"float *" } - ], - "returntype": "bool" - }, - { - "callresult": "GlobalStatsReceived_t", - "methodname": "RequestGlobalStats", - "methodname_flat": "SteamAPI_ISteamUserStats_RequestGlobalStats", - "params": [ - { "paramname":"nHistoryDays", "paramtype":"int" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetGlobalStat", - "methodname_flat": "SteamAPI_ISteamUserStats_GetGlobalStatInt64", - "params": [ - { "paramname":"pchStatName", "paramtype":"const char *" }, - { "paramname":"pData", "paramtype":"int64 *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetGlobalStat", - "methodname_flat": "SteamAPI_ISteamUserStats_GetGlobalStatDouble", - "params": [ - { "paramname":"pchStatName", "paramtype":"const char *" }, - { "paramname":"pData", "paramtype":"double *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetGlobalStatHistory", - "methodname_flat": "SteamAPI_ISteamUserStats_GetGlobalStatHistoryInt64", - "params": [ - { "paramname":"pchStatName", "paramtype":"const char *" }, - { - "array_count": "cubData", - "paramname": "pData", - "paramtype": "int64 *" - }, - { "paramname":"cubData", "paramtype":"uint32" } - ], - "returntype": "int32" - }, - { - "methodname": "GetGlobalStatHistory", - "methodname_flat": "SteamAPI_ISteamUserStats_GetGlobalStatHistoryDouble", - "params": [ - { "paramname":"pchStatName", "paramtype":"const char *" }, - { - "array_count": "cubData", - "paramname": "pData", - "paramtype": "double *" - }, - { "paramname":"cubData", "paramtype":"uint32" } - ], - "returntype": "int32" - }, - { - "methodname": "GetAchievementProgressLimits", - "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementProgressLimitsInt32", - "params": [ - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"pnMinProgress", "paramtype":"int32 *" }, - { "paramname":"pnMaxProgress", "paramtype":"int32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetAchievementProgressLimits", - "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementProgressLimitsFloat", - "params": [ - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"pfMinProgress", "paramtype":"float *" }, - { "paramname":"pfMaxProgress", "paramtype":"float *" } - ], - "returntype": "bool" - } - ], - "version_string": "STEAMUSERSTATS_INTERFACE_VERSION012" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamApps", - "name_flat": "SteamAPI_SteamApps_v008" - }, - { - "kind": "gameserver", - "name": "SteamGameServerApps", - "name_flat": "SteamAPI_SteamGameServerApps_v008" - } - ], - "classname": "ISteamApps", - "fields": [], - "methods": [ - { - "methodname": "BIsSubscribed", - "methodname_flat": "SteamAPI_ISteamApps_BIsSubscribed", - "params": [], - "returntype": "bool" - }, - { - "methodname": "BIsLowViolence", - "methodname_flat": "SteamAPI_ISteamApps_BIsLowViolence", - "params": [], - "returntype": "bool" - }, - { - "methodname": "BIsCybercafe", - "methodname_flat": "SteamAPI_ISteamApps_BIsCybercafe", - "params": [], - "returntype": "bool" - }, - { - "methodname": "BIsVACBanned", - "methodname_flat": "SteamAPI_ISteamApps_BIsVACBanned", - "params": [], - "returntype": "bool" - }, - { - "methodname": "GetCurrentGameLanguage", - "methodname_flat": "SteamAPI_ISteamApps_GetCurrentGameLanguage", - "params": [], - "returntype": "const char *" - }, - { - "methodname": "GetAvailableGameLanguages", - "methodname_flat": "SteamAPI_ISteamApps_GetAvailableGameLanguages", - "params": [], - "returntype": "const char *" - }, - { - "methodname": "BIsSubscribedApp", - "methodname_flat": "SteamAPI_ISteamApps_BIsSubscribedApp", - "params": [ - { "paramname":"appID", "paramtype":"AppId_t" } - ], - "returntype": "bool" - }, - { - "methodname": "BIsDlcInstalled", - "methodname_flat": "SteamAPI_ISteamApps_BIsDlcInstalled", - "params": [ - { "paramname":"appID", "paramtype":"AppId_t" } - ], - "returntype": "bool" - }, - { - "methodname": "GetEarliestPurchaseUnixTime", - "methodname_flat": "SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime", - "params": [ - { "paramname":"nAppID", "paramtype":"AppId_t" } - ], - "returntype": "uint32" - }, - { - "methodname": "BIsSubscribedFromFreeWeekend", - "methodname_flat": "SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend", - "params": [], - "returntype": "bool" - }, - { - "methodname": "GetDLCCount", - "methodname_flat": "SteamAPI_ISteamApps_GetDLCCount", - "params": [], - "returntype": "int" - }, - { - "methodname": "BGetDLCDataByIndex", - "methodname_flat": "SteamAPI_ISteamApps_BGetDLCDataByIndex", - "params": [ - { "paramname":"iDLC", "paramtype":"int" }, - { "paramname":"pAppID", "paramtype":"AppId_t *" }, - { "paramname":"pbAvailable", "paramtype":"bool *" }, - { "paramname":"pchName", "paramtype":"char *" }, - { "paramname":"cchNameBufferSize", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "methodname": "InstallDLC", - "methodname_flat": "SteamAPI_ISteamApps_InstallDLC", - "params": [ - { "paramname":"nAppID", "paramtype":"AppId_t" } - ], - "returntype": "void" - }, - { - "methodname": "UninstallDLC", - "methodname_flat": "SteamAPI_ISteamApps_UninstallDLC", - "params": [ - { "paramname":"nAppID", "paramtype":"AppId_t" } - ], - "returntype": "void" - }, - { - "methodname": "RequestAppProofOfPurchaseKey", - "methodname_flat": "SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey", - "params": [ - { "paramname":"nAppID", "paramtype":"AppId_t" } - ], - "returntype": "void" - }, - { - "methodname": "GetCurrentBetaName", - "methodname_flat": "SteamAPI_ISteamApps_GetCurrentBetaName", - "params": [ - { "paramname":"pchName", "paramtype":"char *" }, - { "paramname":"cchNameBufferSize", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "methodname": "MarkContentCorrupt", - "methodname_flat": "SteamAPI_ISteamApps_MarkContentCorrupt", - "params": [ - { "paramname":"bMissingFilesOnly", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "GetInstalledDepots", - "methodname_flat": "SteamAPI_ISteamApps_GetInstalledDepots", - "params": [ - { "paramname":"appID", "paramtype":"AppId_t" }, - { "paramname":"pvecDepots", "paramtype":"DepotId_t *" }, - { "paramname":"cMaxDepots", "paramtype":"uint32" } - ], - "returntype": "uint32" - }, - { - "methodname": "GetAppInstallDir", - "methodname_flat": "SteamAPI_ISteamApps_GetAppInstallDir", - "params": [ - { "paramname":"appID", "paramtype":"AppId_t" }, - { "paramname":"pchFolder", "paramtype":"char *" }, - { "paramname":"cchFolderBufferSize", "paramtype":"uint32" } - ], - "returntype": "uint32" - }, - { - "methodname": "BIsAppInstalled", - "methodname_flat": "SteamAPI_ISteamApps_BIsAppInstalled", - "params": [ - { "paramname":"appID", "paramtype":"AppId_t" } - ], - "returntype": "bool" - }, - { - "methodname": "GetAppOwner", - "methodname_flat": "SteamAPI_ISteamApps_GetAppOwner", - "params": [], - "returntype": "CSteamID", - "returntype_flat": "uint64_steamid" - }, - { - "methodname": "GetLaunchQueryParam", - "methodname_flat": "SteamAPI_ISteamApps_GetLaunchQueryParam", - "params": [ - { "paramname":"pchKey", "paramtype":"const char *" } - ], - "returntype": "const char *" - }, - { - "methodname": "GetDlcDownloadProgress", - "methodname_flat": "SteamAPI_ISteamApps_GetDlcDownloadProgress", - "params": [ - { "paramname":"nAppID", "paramtype":"AppId_t" }, - { "paramname":"punBytesDownloaded", "paramtype":"uint64 *" }, - { "paramname":"punBytesTotal", "paramtype":"uint64 *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetAppBuildId", - "methodname_flat": "SteamAPI_ISteamApps_GetAppBuildId", - "params": [], - "returntype": "int" - }, - { - "methodname": "RequestAllProofOfPurchaseKeys", - "methodname_flat": "SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys", - "params": [], - "returntype": "void" - }, - { - "callresult": "FileDetailsResult_t", - "methodname": "GetFileDetails", - "methodname_flat": "SteamAPI_ISteamApps_GetFileDetails", - "params": [ - { "paramname":"pszFileName", "paramtype":"const char *" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetLaunchCommandLine", - "methodname_flat": "SteamAPI_ISteamApps_GetLaunchCommandLine", - "params": [ - { "paramname":"pszCommandLine", "paramtype":"char *" }, - { "paramname":"cubCommandLine", "paramtype":"int" } - ], - "returntype": "int" - }, - { - "methodname": "BIsSubscribedFromFamilySharing", - "methodname_flat": "SteamAPI_ISteamApps_BIsSubscribedFromFamilySharing", - "params": [], - "returntype": "bool" - }, - { - "methodname": "BIsTimedTrial", - "methodname_flat": "SteamAPI_ISteamApps_BIsTimedTrial", - "params": [ - { "paramname":"punSecondsAllowed", "paramtype":"uint32 *" }, - { "paramname":"punSecondsPlayed", "paramtype":"uint32 *" } - ], - "returntype": "bool" - } - ], - "version_string": "STEAMAPPS_INTERFACE_VERSION008" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamNetworking", - "name_flat": "SteamAPI_SteamNetworking_v006" - }, - { - "kind": "gameserver", - "name": "SteamGameServerNetworking", - "name_flat": "SteamAPI_SteamGameServerNetworking_v006" - } - ], - "classname": "ISteamNetworking", - "fields": [], - "methods": [ - { - "methodname": "SendP2PPacket", - "methodname_flat": "SteamAPI_ISteamNetworking_SendP2PPacket", - "params": [ - { "paramname":"steamIDRemote", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pubData", "paramtype":"const void *" }, - { "paramname":"cubData", "paramtype":"uint32" }, - { "paramname":"eP2PSendType", "paramtype":"EP2PSend" }, - { "paramname":"nChannel", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "methodname": "IsP2PPacketAvailable", - "methodname_flat": "SteamAPI_ISteamNetworking_IsP2PPacketAvailable", - "params": [ - { "paramname":"pcubMsgSize", "paramtype":"uint32 *" }, - { "paramname":"nChannel", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "methodname": "ReadP2PPacket", - "methodname_flat": "SteamAPI_ISteamNetworking_ReadP2PPacket", - "params": [ - { "paramname":"pubDest", "paramtype":"void *" }, - { "paramname":"cubDest", "paramtype":"uint32" }, - { "paramname":"pcubMsgSize", "paramtype":"uint32 *" }, - { "paramname":"psteamIDRemote", "paramtype":"CSteamID *" }, - { "paramname":"nChannel", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "methodname": "AcceptP2PSessionWithUser", - "methodname_flat": "SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser", - "params": [ - { "paramname":"steamIDRemote", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "bool" - }, - { - "methodname": "CloseP2PSessionWithUser", - "methodname_flat": "SteamAPI_ISteamNetworking_CloseP2PSessionWithUser", - "params": [ - { "paramname":"steamIDRemote", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "bool" - }, - { - "methodname": "CloseP2PChannelWithUser", - "methodname_flat": "SteamAPI_ISteamNetworking_CloseP2PChannelWithUser", - "params": [ - { "paramname":"steamIDRemote", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"nChannel", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "methodname": "GetP2PSessionState", - "methodname_flat": "SteamAPI_ISteamNetworking_GetP2PSessionState", - "params": [ - { "paramname":"steamIDRemote", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pConnectionState", "paramtype":"P2PSessionState_t *" } - ], - "returntype": "bool" - }, - { - "methodname": "AllowP2PPacketRelay", - "methodname_flat": "SteamAPI_ISteamNetworking_AllowP2PPacketRelay", - "params": [ - { "paramname":"bAllow", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "CreateListenSocket", - "methodname_flat": "SteamAPI_ISteamNetworking_CreateListenSocket", - "params": [ - { "paramname":"nVirtualP2PPort", "paramtype":"int" }, - { "paramname":"nIP", "paramtype":"SteamIPAddress_t" }, - { "paramname":"nPort", "paramtype":"uint16" }, - { "paramname":"bAllowUseOfPacketRelay", "paramtype":"bool" } - ], - "returntype": "SNetListenSocket_t" - }, - { - "methodname": "CreateP2PConnectionSocket", - "methodname_flat": "SteamAPI_ISteamNetworking_CreateP2PConnectionSocket", - "params": [ - { "paramname":"steamIDTarget", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"nVirtualPort", "paramtype":"int" }, - { "paramname":"nTimeoutSec", "paramtype":"int" }, - { "paramname":"bAllowUseOfPacketRelay", "paramtype":"bool" } - ], - "returntype": "SNetSocket_t" - }, - { - "methodname": "CreateConnectionSocket", - "methodname_flat": "SteamAPI_ISteamNetworking_CreateConnectionSocket", - "params": [ - { "paramname":"nIP", "paramtype":"SteamIPAddress_t" }, - { "paramname":"nPort", "paramtype":"uint16" }, - { "paramname":"nTimeoutSec", "paramtype":"int" } - ], - "returntype": "SNetSocket_t" - }, - { - "methodname": "DestroySocket", - "methodname_flat": "SteamAPI_ISteamNetworking_DestroySocket", - "params": [ - { "paramname":"hSocket", "paramtype":"SNetSocket_t" }, - { "paramname":"bNotifyRemoteEnd", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "DestroyListenSocket", - "methodname_flat": "SteamAPI_ISteamNetworking_DestroyListenSocket", - "params": [ - { "paramname":"hSocket", "paramtype":"SNetListenSocket_t" }, - { "paramname":"bNotifyRemoteEnd", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "SendDataOnSocket", - "methodname_flat": "SteamAPI_ISteamNetworking_SendDataOnSocket", - "params": [ - { "paramname":"hSocket", "paramtype":"SNetSocket_t" }, - { "paramname":"pubData", "paramtype":"void *" }, - { "paramname":"cubData", "paramtype":"uint32" }, - { "paramname":"bReliable", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "IsDataAvailableOnSocket", - "methodname_flat": "SteamAPI_ISteamNetworking_IsDataAvailableOnSocket", - "params": [ - { "paramname":"hSocket", "paramtype":"SNetSocket_t" }, - { "paramname":"pcubMsgSize", "paramtype":"uint32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "RetrieveDataFromSocket", - "methodname_flat": "SteamAPI_ISteamNetworking_RetrieveDataFromSocket", - "params": [ - { "paramname":"hSocket", "paramtype":"SNetSocket_t" }, - { "paramname":"pubDest", "paramtype":"void *" }, - { "paramname":"cubDest", "paramtype":"uint32" }, - { "paramname":"pcubMsgSize", "paramtype":"uint32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "IsDataAvailable", - "methodname_flat": "SteamAPI_ISteamNetworking_IsDataAvailable", - "params": [ - { "paramname":"hListenSocket", "paramtype":"SNetListenSocket_t" }, - { "paramname":"pcubMsgSize", "paramtype":"uint32 *" }, - { "paramname":"phSocket", "paramtype":"SNetSocket_t *" } - ], - "returntype": "bool" - }, - { - "methodname": "RetrieveData", - "methodname_flat": "SteamAPI_ISteamNetworking_RetrieveData", - "params": [ - { "paramname":"hListenSocket", "paramtype":"SNetListenSocket_t" }, - { "paramname":"pubDest", "paramtype":"void *" }, - { "paramname":"cubDest", "paramtype":"uint32" }, - { "paramname":"pcubMsgSize", "paramtype":"uint32 *" }, - { "paramname":"phSocket", "paramtype":"SNetSocket_t *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetSocketInfo", - "methodname_flat": "SteamAPI_ISteamNetworking_GetSocketInfo", - "params": [ - { "paramname":"hSocket", "paramtype":"SNetSocket_t" }, - { "paramname":"pSteamIDRemote", "paramtype":"CSteamID *" }, - { "paramname":"peSocketStatus", "paramtype":"int *" }, - { "paramname":"punIPRemote", "paramtype":"SteamIPAddress_t *" }, - { "paramname":"punPortRemote", "paramtype":"uint16 *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetListenSocketInfo", - "methodname_flat": "SteamAPI_ISteamNetworking_GetListenSocketInfo", - "params": [ - { "paramname":"hListenSocket", "paramtype":"SNetListenSocket_t" }, - { "paramname":"pnIP", "paramtype":"SteamIPAddress_t *" }, - { "paramname":"pnPort", "paramtype":"uint16 *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetSocketConnectionType", - "methodname_flat": "SteamAPI_ISteamNetworking_GetSocketConnectionType", - "params": [ - { "paramname":"hSocket", "paramtype":"SNetSocket_t" } - ], - "returntype": "ESNetSocketConnectionType" - }, - { - "methodname": "GetMaxPacketSize", - "methodname_flat": "SteamAPI_ISteamNetworking_GetMaxPacketSize", - "params": [ - { "paramname":"hSocket", "paramtype":"SNetSocket_t" } - ], - "returntype": "int" - } - ], - "version_string": "SteamNetworking006" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamScreenshots", - "name_flat": "SteamAPI_SteamScreenshots_v003" - } - ], - "classname": "ISteamScreenshots", - "fields": [], - "methods": [ - { - "methodname": "WriteScreenshot", - "methodname_flat": "SteamAPI_ISteamScreenshots_WriteScreenshot", - "params": [ - { "paramname":"pubRGB", "paramtype":"void *" }, - { "paramname":"cubRGB", "paramtype":"uint32" }, - { "paramname":"nWidth", "paramtype":"int" }, - { "paramname":"nHeight", "paramtype":"int" } - ], - "returntype": "ScreenshotHandle" - }, - { - "methodname": "AddScreenshotToLibrary", - "methodname_flat": "SteamAPI_ISteamScreenshots_AddScreenshotToLibrary", - "params": [ - { "paramname":"pchFilename", "paramtype":"const char *" }, - { "paramname":"pchThumbnailFilename", "paramtype":"const char *" }, - { "paramname":"nWidth", "paramtype":"int" }, - { "paramname":"nHeight", "paramtype":"int" } - ], - "returntype": "ScreenshotHandle" - }, - { - "methodname": "TriggerScreenshot", - "methodname_flat": "SteamAPI_ISteamScreenshots_TriggerScreenshot", - "params": [], - "returntype": "void" - }, - { - "methodname": "HookScreenshots", - "methodname_flat": "SteamAPI_ISteamScreenshots_HookScreenshots", - "params": [ - { "paramname":"bHook", "paramtype":"bool" } - ], - "returntype": "void" - }, - { - "methodname": "SetLocation", - "methodname_flat": "SteamAPI_ISteamScreenshots_SetLocation", - "params": [ - { "paramname":"hScreenshot", "paramtype":"ScreenshotHandle" }, - { "paramname":"pchLocation", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "TagUser", - "methodname_flat": "SteamAPI_ISteamScreenshots_TagUser", - "params": [ - { "paramname":"hScreenshot", "paramtype":"ScreenshotHandle" }, - { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "bool" - }, - { - "methodname": "TagPublishedFile", - "methodname_flat": "SteamAPI_ISteamScreenshots_TagPublishedFile", - "params": [ - { "paramname":"hScreenshot", "paramtype":"ScreenshotHandle" }, - { "paramname":"unPublishedFileID", "paramtype":"PublishedFileId_t" } - ], - "returntype": "bool" - }, - { - "methodname": "IsScreenshotsHooked", - "methodname_flat": "SteamAPI_ISteamScreenshots_IsScreenshotsHooked", - "params": [], - "returntype": "bool" - }, - { - "methodname": "AddVRScreenshotToLibrary", - "methodname_flat": "SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary", - "params": [ - { "paramname":"eType", "paramtype":"EVRScreenshotType" }, - { "paramname":"pchFilename", "paramtype":"const char *" }, - { "paramname":"pchVRFilename", "paramtype":"const char *" } - ], - "returntype": "ScreenshotHandle" - } - ], - "version_string": "STEAMSCREENSHOTS_INTERFACE_VERSION003" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamMusic", - "name_flat": "SteamAPI_SteamMusic_v001" - } - ], - "classname": "ISteamMusic", - "fields": [], - "methods": [ - { - "methodname": "BIsEnabled", - "methodname_flat": "SteamAPI_ISteamMusic_BIsEnabled", - "params": [], - "returntype": "bool" - }, - { - "methodname": "BIsPlaying", - "methodname_flat": "SteamAPI_ISteamMusic_BIsPlaying", - "params": [], - "returntype": "bool" - }, - { - "methodname": "GetPlaybackStatus", - "methodname_flat": "SteamAPI_ISteamMusic_GetPlaybackStatus", - "params": [], - "returntype": "AudioPlayback_Status" - }, - { - "methodname": "Play", - "methodname_flat": "SteamAPI_ISteamMusic_Play", - "params": [], - "returntype": "void" - }, - { - "methodname": "Pause", - "methodname_flat": "SteamAPI_ISteamMusic_Pause", - "params": [], - "returntype": "void" - }, - { - "methodname": "PlayPrevious", - "methodname_flat": "SteamAPI_ISteamMusic_PlayPrevious", - "params": [], - "returntype": "void" - }, - { - "methodname": "PlayNext", - "methodname_flat": "SteamAPI_ISteamMusic_PlayNext", - "params": [], - "returntype": "void" - }, - { - "methodname": "SetVolume", - "methodname_flat": "SteamAPI_ISteamMusic_SetVolume", - "params": [ - { "paramname":"flVolume", "paramtype":"float" } - ], - "returntype": "void" - }, - { - "methodname": "GetVolume", - "methodname_flat": "SteamAPI_ISteamMusic_GetVolume", - "params": [], - "returntype": "float" - } - ], - "version_string": "STEAMMUSIC_INTERFACE_VERSION001" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamMusicRemote", - "name_flat": "SteamAPI_SteamMusicRemote_v001" - } - ], - "classname": "ISteamMusicRemote", - "fields": [], - "methods": [ - { - "methodname": "RegisterSteamMusicRemote", - "methodname_flat": "SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote", - "params": [ - { "paramname":"pchName", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "DeregisterSteamMusicRemote", - "methodname_flat": "SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote", - "params": [], - "returntype": "bool" - }, - { - "methodname": "BIsCurrentMusicRemote", - "methodname_flat": "SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote", - "params": [], - "returntype": "bool" - }, - { - "methodname": "BActivationSuccess", - "methodname_flat": "SteamAPI_ISteamMusicRemote_BActivationSuccess", - "params": [ - { "paramname":"bValue", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "SetDisplayName", - "methodname_flat": "SteamAPI_ISteamMusicRemote_SetDisplayName", - "params": [ - { "paramname":"pchDisplayName", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetPNGIcon_64x64", - "methodname_flat": "SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64", - "params": [ - { "paramname":"pvBuffer", "paramtype":"void *" }, - { "paramname":"cbBufferLength", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "EnablePlayPrevious", - "methodname_flat": "SteamAPI_ISteamMusicRemote_EnablePlayPrevious", - "params": [ - { "paramname":"bValue", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "EnablePlayNext", - "methodname_flat": "SteamAPI_ISteamMusicRemote_EnablePlayNext", - "params": [ - { "paramname":"bValue", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "EnableShuffled", - "methodname_flat": "SteamAPI_ISteamMusicRemote_EnableShuffled", - "params": [ - { "paramname":"bValue", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "EnableLooped", - "methodname_flat": "SteamAPI_ISteamMusicRemote_EnableLooped", - "params": [ - { "paramname":"bValue", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "EnableQueue", - "methodname_flat": "SteamAPI_ISteamMusicRemote_EnableQueue", - "params": [ - { "paramname":"bValue", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "EnablePlaylists", - "methodname_flat": "SteamAPI_ISteamMusicRemote_EnablePlaylists", - "params": [ - { "paramname":"bValue", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "UpdatePlaybackStatus", - "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus", - "params": [ - { "paramname":"nStatus", "paramtype":"AudioPlayback_Status" } - ], - "returntype": "bool" - }, - { - "methodname": "UpdateShuffled", - "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdateShuffled", - "params": [ - { "paramname":"bValue", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "UpdateLooped", - "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdateLooped", - "params": [ - { "paramname":"bValue", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "UpdateVolume", - "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdateVolume", - "params": [ - { "paramname":"flValue", "paramtype":"float" } - ], - "returntype": "bool" - }, - { - "methodname": "CurrentEntryWillChange", - "methodname_flat": "SteamAPI_ISteamMusicRemote_CurrentEntryWillChange", - "params": [], - "returntype": "bool" - }, - { - "methodname": "CurrentEntryIsAvailable", - "methodname_flat": "SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable", - "params": [ - { "paramname":"bAvailable", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "UpdateCurrentEntryText", - "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText", - "params": [ - { "paramname":"pchText", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "UpdateCurrentEntryElapsedSeconds", - "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds", - "params": [ - { "paramname":"nValue", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "methodname": "UpdateCurrentEntryCoverArt", - "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt", - "params": [ - { "paramname":"pvBuffer", "paramtype":"void *" }, - { "paramname":"cbBufferLength", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "CurrentEntryDidChange", - "methodname_flat": "SteamAPI_ISteamMusicRemote_CurrentEntryDidChange", - "params": [], - "returntype": "bool" - }, - { - "methodname": "QueueWillChange", - "methodname_flat": "SteamAPI_ISteamMusicRemote_QueueWillChange", - "params": [], - "returntype": "bool" - }, - { - "methodname": "ResetQueueEntries", - "methodname_flat": "SteamAPI_ISteamMusicRemote_ResetQueueEntries", - "params": [], - "returntype": "bool" - }, - { - "methodname": "SetQueueEntry", - "methodname_flat": "SteamAPI_ISteamMusicRemote_SetQueueEntry", - "params": [ - { "paramname":"nID", "paramtype":"int" }, - { "paramname":"nPosition", "paramtype":"int" }, - { "paramname":"pchEntryText", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetCurrentQueueEntry", - "methodname_flat": "SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry", - "params": [ - { "paramname":"nID", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "methodname": "QueueDidChange", - "methodname_flat": "SteamAPI_ISteamMusicRemote_QueueDidChange", - "params": [], - "returntype": "bool" - }, - { - "methodname": "PlaylistWillChange", - "methodname_flat": "SteamAPI_ISteamMusicRemote_PlaylistWillChange", - "params": [], - "returntype": "bool" - }, - { - "methodname": "ResetPlaylistEntries", - "methodname_flat": "SteamAPI_ISteamMusicRemote_ResetPlaylistEntries", - "params": [], - "returntype": "bool" - }, - { - "methodname": "SetPlaylistEntry", - "methodname_flat": "SteamAPI_ISteamMusicRemote_SetPlaylistEntry", - "params": [ - { "paramname":"nID", "paramtype":"int" }, - { "paramname":"nPosition", "paramtype":"int" }, - { "paramname":"pchEntryText", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetCurrentPlaylistEntry", - "methodname_flat": "SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry", - "params": [ - { "paramname":"nID", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "methodname": "PlaylistDidChange", - "methodname_flat": "SteamAPI_ISteamMusicRemote_PlaylistDidChange", - "params": [], - "returntype": "bool" - } - ], - "version_string": "STEAMMUSICREMOTE_INTERFACE_VERSION001" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamHTTP", - "name_flat": "SteamAPI_SteamHTTP_v003" - }, - { - "kind": "gameserver", - "name": "SteamGameServerHTTP", - "name_flat": "SteamAPI_SteamGameServerHTTP_v003" - } - ], - "classname": "ISteamHTTP", - "fields": [], - "methods": [ - { - "methodname": "CreateHTTPRequest", - "methodname_flat": "SteamAPI_ISteamHTTP_CreateHTTPRequest", - "params": [ - { "paramname":"eHTTPRequestMethod", "paramtype":"EHTTPMethod" }, - { "paramname":"pchAbsoluteURL", "paramtype":"const char *" } - ], - "returntype": "HTTPRequestHandle" - }, - { - "methodname": "SetHTTPRequestContextValue", - "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestContextValue", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, - { "paramname":"ulContextValue", "paramtype":"uint64" } - ], - "returntype": "bool" - }, - { - "methodname": "SetHTTPRequestNetworkActivityTimeout", - "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, - { "paramname":"unTimeoutSeconds", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "SetHTTPRequestHeaderValue", - "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, - { "paramname":"pchHeaderName", "paramtype":"const char *" }, - { "paramname":"pchHeaderValue", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetHTTPRequestGetOrPostParameter", - "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, - { "paramname":"pchParamName", "paramtype":"const char *" }, - { "paramname":"pchParamValue", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SendHTTPRequest", - "methodname_flat": "SteamAPI_ISteamHTTP_SendHTTPRequest", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, - { "paramname":"pCallHandle", "paramtype":"SteamAPICall_t *" } - ], - "returntype": "bool" - }, - { - "methodname": "SendHTTPRequestAndStreamResponse", - "methodname_flat": "SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, - { "paramname":"pCallHandle", "paramtype":"SteamAPICall_t *" } - ], - "returntype": "bool" - }, - { - "methodname": "DeferHTTPRequest", - "methodname_flat": "SteamAPI_ISteamHTTP_DeferHTTPRequest", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" } - ], - "returntype": "bool" - }, - { - "methodname": "PrioritizeHTTPRequest", - "methodname_flat": "SteamAPI_ISteamHTTP_PrioritizeHTTPRequest", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" } - ], - "returntype": "bool" - }, - { - "methodname": "GetHTTPResponseHeaderSize", - "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, - { "paramname":"pchHeaderName", "paramtype":"const char *" }, - { "paramname":"unResponseHeaderSize", "paramtype":"uint32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetHTTPResponseHeaderValue", - "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, - { "paramname":"pchHeaderName", "paramtype":"const char *" }, - { "paramname":"pHeaderValueBuffer", "paramtype":"uint8 *" }, - { "paramname":"unBufferSize", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "GetHTTPResponseBodySize", - "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPResponseBodySize", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, - { "paramname":"unBodySize", "paramtype":"uint32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetHTTPResponseBodyData", - "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPResponseBodyData", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, - { "paramname":"pBodyDataBuffer", "paramtype":"uint8 *" }, - { "paramname":"unBufferSize", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "GetHTTPStreamingResponseBodyData", - "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, - { "paramname":"cOffset", "paramtype":"uint32" }, - { "paramname":"pBodyDataBuffer", "paramtype":"uint8 *" }, - { "paramname":"unBufferSize", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "ReleaseHTTPRequest", - "methodname_flat": "SteamAPI_ISteamHTTP_ReleaseHTTPRequest", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" } - ], - "returntype": "bool" - }, - { - "methodname": "GetHTTPDownloadProgressPct", - "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, - { "paramname":"pflPercentOut", "paramtype":"float *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetHTTPRequestRawPostBody", - "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, - { "paramname":"pchContentType", "paramtype":"const char *" }, - { "paramname":"pubBody", "paramtype":"uint8 *" }, - { "paramname":"unBodyLen", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "CreateCookieContainer", - "methodname_flat": "SteamAPI_ISteamHTTP_CreateCookieContainer", - "params": [ - { "paramname":"bAllowResponsesToModify", "paramtype":"bool" } - ], - "returntype": "HTTPCookieContainerHandle" - }, - { - "methodname": "ReleaseCookieContainer", - "methodname_flat": "SteamAPI_ISteamHTTP_ReleaseCookieContainer", - "params": [ - { "paramname":"hCookieContainer", "paramtype":"HTTPCookieContainerHandle" } - ], - "returntype": "bool" - }, - { - "methodname": "SetCookie", - "methodname_flat": "SteamAPI_ISteamHTTP_SetCookie", - "params": [ - { "paramname":"hCookieContainer", "paramtype":"HTTPCookieContainerHandle" }, - { "paramname":"pchHost", "paramtype":"const char *" }, - { "paramname":"pchUrl", "paramtype":"const char *" }, - { "paramname":"pchCookie", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetHTTPRequestCookieContainer", - "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, - { "paramname":"hCookieContainer", "paramtype":"HTTPCookieContainerHandle" } - ], - "returntype": "bool" - }, - { - "methodname": "SetHTTPRequestUserAgentInfo", - "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, - { "paramname":"pchUserAgentInfo", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetHTTPRequestRequiresVerifiedCertificate", - "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, - { "paramname":"bRequireVerifiedCertificate", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "SetHTTPRequestAbsoluteTimeoutMS", - "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, - { "paramname":"unMilliseconds", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "GetHTTPRequestWasTimedOut", - "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut", - "params": [ - { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, - { "paramname":"pbWasTimedOut", "paramtype":"bool *" } - ], - "returntype": "bool" - } - ], - "version_string": "STEAMHTTP_INTERFACE_VERSION003" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamInput", - "name_flat": "SteamAPI_SteamInput_v002" - } - ], - "classname": "ISteamInput", - "fields": [], - "methods": [ - { - "methodname": "Init", - "methodname_flat": "SteamAPI_ISteamInput_Init", - "params": [], - "returntype": "bool" - }, - { - "methodname": "Shutdown", - "methodname_flat": "SteamAPI_ISteamInput_Shutdown", - "params": [], - "returntype": "bool" - }, - { - "methodname": "RunFrame", - "methodname_flat": "SteamAPI_ISteamInput_RunFrame", - "params": [], - "returntype": "void" - }, - { - "methodname": "GetConnectedControllers", - "methodname_flat": "SteamAPI_ISteamInput_GetConnectedControllers", - "params": [ - { - "desc": "Receives list of connected controllers", - "out_array_count": "STEAM_INPUT_MAX_COUNT", - "paramname": "handlesOut", - "paramtype": "InputHandle_t *" - } - ], - "returntype": "int" - }, - { - "methodname": "GetActionSetHandle", - "methodname_flat": "SteamAPI_ISteamInput_GetActionSetHandle", - "params": [ - { "paramname":"pszActionSetName", "paramtype":"const char *" } - ], - "returntype": "InputActionSetHandle_t" - }, - { - "methodname": "ActivateActionSet", - "methodname_flat": "SteamAPI_ISteamInput_ActivateActionSet", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, - { "paramname":"actionSetHandle", "paramtype":"InputActionSetHandle_t" } - ], - "returntype": "void" - }, - { - "methodname": "GetCurrentActionSet", - "methodname_flat": "SteamAPI_ISteamInput_GetCurrentActionSet", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" } - ], - "returntype": "InputActionSetHandle_t" - }, - { - "methodname": "ActivateActionSetLayer", - "methodname_flat": "SteamAPI_ISteamInput_ActivateActionSetLayer", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, - { "paramname":"actionSetLayerHandle", "paramtype":"InputActionSetHandle_t" } - ], - "returntype": "void" - }, - { - "methodname": "DeactivateActionSetLayer", - "methodname_flat": "SteamAPI_ISteamInput_DeactivateActionSetLayer", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, - { "paramname":"actionSetLayerHandle", "paramtype":"InputActionSetHandle_t" } - ], - "returntype": "void" - }, - { - "methodname": "DeactivateAllActionSetLayers", - "methodname_flat": "SteamAPI_ISteamInput_DeactivateAllActionSetLayers", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" } - ], - "returntype": "void" - }, - { - "methodname": "GetActiveActionSetLayers", - "methodname_flat": "SteamAPI_ISteamInput_GetActiveActionSetLayers", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, - { - "desc": "Receives list of active layers", - "out_array_count": "STEAM_INPUT_MAX_ACTIVE_LAYERS", - "paramname": "handlesOut", - "paramtype": "InputActionSetHandle_t *" - } - ], - "returntype": "int" - }, - { - "methodname": "GetDigitalActionHandle", - "methodname_flat": "SteamAPI_ISteamInput_GetDigitalActionHandle", - "params": [ - { "paramname":"pszActionName", "paramtype":"const char *" } - ], - "returntype": "InputDigitalActionHandle_t" - }, - { - "methodname": "GetDigitalActionData", - "methodname_flat": "SteamAPI_ISteamInput_GetDigitalActionData", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, - { "paramname":"digitalActionHandle", "paramtype":"InputDigitalActionHandle_t" } - ], - "returntype": "InputDigitalActionData_t" - }, - { - "methodname": "GetDigitalActionOrigins", - "methodname_flat": "SteamAPI_ISteamInput_GetDigitalActionOrigins", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, - { "paramname":"actionSetHandle", "paramtype":"InputActionSetHandle_t" }, - { "paramname":"digitalActionHandle", "paramtype":"InputDigitalActionHandle_t" }, - { - "desc": "Receives list of action origins", - "out_array_count": "STEAM_INPUT_MAX_ORIGINS", - "paramname": "originsOut", - "paramtype": "EInputActionOrigin *" - } - ], - "returntype": "int" - }, - { - "methodname": "GetAnalogActionHandle", - "methodname_flat": "SteamAPI_ISteamInput_GetAnalogActionHandle", - "params": [ - { "paramname":"pszActionName", "paramtype":"const char *" } - ], - "returntype": "InputAnalogActionHandle_t" - }, - { - "methodname": "GetAnalogActionData", - "methodname_flat": "SteamAPI_ISteamInput_GetAnalogActionData", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, - { "paramname":"analogActionHandle", "paramtype":"InputAnalogActionHandle_t" } - ], - "returntype": "InputAnalogActionData_t" - }, - { - "methodname": "GetAnalogActionOrigins", - "methodname_flat": "SteamAPI_ISteamInput_GetAnalogActionOrigins", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, - { "paramname":"actionSetHandle", "paramtype":"InputActionSetHandle_t" }, - { "paramname":"analogActionHandle", "paramtype":"InputAnalogActionHandle_t" }, - { - "desc": "Receives list of action origins", - "out_array_count": "STEAM_INPUT_MAX_ORIGINS", - "paramname": "originsOut", - "paramtype": "EInputActionOrigin *" - } - ], - "returntype": "int" - }, - { - "methodname": "GetGlyphForActionOrigin", - "methodname_flat": "SteamAPI_ISteamInput_GetGlyphForActionOrigin", - "params": [ - { "paramname":"eOrigin", "paramtype":"EInputActionOrigin" } - ], - "returntype": "const char *" - }, - { - "methodname": "GetStringForActionOrigin", - "methodname_flat": "SteamAPI_ISteamInput_GetStringForActionOrigin", - "params": [ - { "paramname":"eOrigin", "paramtype":"EInputActionOrigin" } - ], - "returntype": "const char *" - }, - { - "methodname": "StopAnalogActionMomentum", - "methodname_flat": "SteamAPI_ISteamInput_StopAnalogActionMomentum", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, - { "paramname":"eAction", "paramtype":"InputAnalogActionHandle_t" } - ], - "returntype": "void" - }, - { - "methodname": "GetMotionData", - "methodname_flat": "SteamAPI_ISteamInput_GetMotionData", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" } - ], - "returntype": "InputMotionData_t" - }, - { - "methodname": "TriggerVibration", - "methodname_flat": "SteamAPI_ISteamInput_TriggerVibration", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, - { "paramname":"usLeftSpeed", "paramtype":"unsigned short" }, - { "paramname":"usRightSpeed", "paramtype":"unsigned short" } - ], - "returntype": "void" - }, - { - "methodname": "SetLEDColor", - "methodname_flat": "SteamAPI_ISteamInput_SetLEDColor", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, - { "paramname":"nColorR", "paramtype":"uint8" }, - { "paramname":"nColorG", "paramtype":"uint8" }, - { "paramname":"nColorB", "paramtype":"uint8" }, - { "paramname":"nFlags", "paramtype":"unsigned int" } - ], - "returntype": "void" - }, - { - "methodname": "TriggerHapticPulse", - "methodname_flat": "SteamAPI_ISteamInput_TriggerHapticPulse", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, - { "paramname":"eTargetPad", "paramtype":"ESteamControllerPad" }, - { "paramname":"usDurationMicroSec", "paramtype":"unsigned short" } - ], - "returntype": "void" - }, - { - "methodname": "TriggerRepeatedHapticPulse", - "methodname_flat": "SteamAPI_ISteamInput_TriggerRepeatedHapticPulse", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, - { "paramname":"eTargetPad", "paramtype":"ESteamControllerPad" }, - { "paramname":"usDurationMicroSec", "paramtype":"unsigned short" }, - { "paramname":"usOffMicroSec", "paramtype":"unsigned short" }, - { "paramname":"unRepeat", "paramtype":"unsigned short" }, - { "paramname":"nFlags", "paramtype":"unsigned int" } - ], - "returntype": "void" - }, - { - "methodname": "ShowBindingPanel", - "methodname_flat": "SteamAPI_ISteamInput_ShowBindingPanel", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" } - ], - "returntype": "bool" - }, - { - "methodname": "GetInputTypeForHandle", - "methodname_flat": "SteamAPI_ISteamInput_GetInputTypeForHandle", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" } - ], - "returntype": "ESteamInputType" - }, - { - "methodname": "GetControllerForGamepadIndex", - "methodname_flat": "SteamAPI_ISteamInput_GetControllerForGamepadIndex", - "params": [ - { "paramname":"nIndex", "paramtype":"int" } - ], - "returntype": "InputHandle_t" - }, - { - "methodname": "GetGamepadIndexForController", - "methodname_flat": "SteamAPI_ISteamInput_GetGamepadIndexForController", - "params": [ - { "paramname":"ulinputHandle", "paramtype":"InputHandle_t" } - ], - "returntype": "int" - }, - { - "methodname": "GetStringForXboxOrigin", - "methodname_flat": "SteamAPI_ISteamInput_GetStringForXboxOrigin", - "params": [ - { "paramname":"eOrigin", "paramtype":"EXboxOrigin" } - ], - "returntype": "const char *" - }, - { - "methodname": "GetGlyphForXboxOrigin", - "methodname_flat": "SteamAPI_ISteamInput_GetGlyphForXboxOrigin", - "params": [ - { "paramname":"eOrigin", "paramtype":"EXboxOrigin" } - ], - "returntype": "const char *" - }, - { - "methodname": "GetActionOriginFromXboxOrigin", - "methodname_flat": "SteamAPI_ISteamInput_GetActionOriginFromXboxOrigin", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, - { "paramname":"eOrigin", "paramtype":"EXboxOrigin" } - ], - "returntype": "EInputActionOrigin" - }, - { - "methodname": "TranslateActionOrigin", - "methodname_flat": "SteamAPI_ISteamInput_TranslateActionOrigin", - "params": [ - { "paramname":"eDestinationInputType", "paramtype":"ESteamInputType" }, - { "paramname":"eSourceOrigin", "paramtype":"EInputActionOrigin" } - ], - "returntype": "EInputActionOrigin" - }, - { - "methodname": "GetDeviceBindingRevision", - "methodname_flat": "SteamAPI_ISteamInput_GetDeviceBindingRevision", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, - { "paramname":"pMajor", "paramtype":"int *" }, - { "paramname":"pMinor", "paramtype":"int *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetRemotePlaySessionID", - "methodname_flat": "SteamAPI_ISteamInput_GetRemotePlaySessionID", - "params": [ - { "paramname":"inputHandle", "paramtype":"InputHandle_t" } - ], - "returntype": "uint32" - } - ], - "version_string": "SteamInput002" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamController", - "name_flat": "SteamAPI_SteamController_v008" - } - ], - "classname": "ISteamController", - "fields": [], - "methods": [ - { - "methodname": "Init", - "methodname_flat": "SteamAPI_ISteamController_Init", - "params": [], - "returntype": "bool" - }, - { - "methodname": "Shutdown", - "methodname_flat": "SteamAPI_ISteamController_Shutdown", - "params": [], - "returntype": "bool" - }, - { - "methodname": "RunFrame", - "methodname_flat": "SteamAPI_ISteamController_RunFrame", - "params": [], - "returntype": "void" - }, - { - "methodname": "GetConnectedControllers", - "methodname_flat": "SteamAPI_ISteamController_GetConnectedControllers", - "params": [ - { - "desc": "Receives list of connected controllers", - "out_array_count": "STEAM_CONTROLLER_MAX_COUNT", - "paramname": "handlesOut", - "paramtype": "ControllerHandle_t *" - } - ], - "returntype": "int" - }, - { - "methodname": "GetActionSetHandle", - "methodname_flat": "SteamAPI_ISteamController_GetActionSetHandle", - "params": [ - { "paramname":"pszActionSetName", "paramtype":"const char *" } - ], - "returntype": "ControllerActionSetHandle_t" - }, - { - "methodname": "ActivateActionSet", - "methodname_flat": "SteamAPI_ISteamController_ActivateActionSet", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, - { "paramname":"actionSetHandle", "paramtype":"ControllerActionSetHandle_t" } - ], - "returntype": "void" - }, - { - "methodname": "GetCurrentActionSet", - "methodname_flat": "SteamAPI_ISteamController_GetCurrentActionSet", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" } - ], - "returntype": "ControllerActionSetHandle_t" - }, - { - "methodname": "ActivateActionSetLayer", - "methodname_flat": "SteamAPI_ISteamController_ActivateActionSetLayer", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, - { "paramname":"actionSetLayerHandle", "paramtype":"ControllerActionSetHandle_t" } - ], - "returntype": "void" - }, - { - "methodname": "DeactivateActionSetLayer", - "methodname_flat": "SteamAPI_ISteamController_DeactivateActionSetLayer", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, - { "paramname":"actionSetLayerHandle", "paramtype":"ControllerActionSetHandle_t" } - ], - "returntype": "void" - }, - { - "methodname": "DeactivateAllActionSetLayers", - "methodname_flat": "SteamAPI_ISteamController_DeactivateAllActionSetLayers", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" } - ], - "returntype": "void" - }, - { - "methodname": "GetActiveActionSetLayers", - "methodname_flat": "SteamAPI_ISteamController_GetActiveActionSetLayers", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, - { - "desc": "Receives list of active layers", - "out_array_count": "STEAM_CONTROLLER_MAX_ACTIVE_LAYERS", - "paramname": "handlesOut", - "paramtype": "ControllerActionSetHandle_t *" - } - ], - "returntype": "int" - }, - { - "methodname": "GetDigitalActionHandle", - "methodname_flat": "SteamAPI_ISteamController_GetDigitalActionHandle", - "params": [ - { "paramname":"pszActionName", "paramtype":"const char *" } - ], - "returntype": "ControllerDigitalActionHandle_t" - }, - { - "methodname": "GetDigitalActionData", - "methodname_flat": "SteamAPI_ISteamController_GetDigitalActionData", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, - { "paramname":"digitalActionHandle", "paramtype":"ControllerDigitalActionHandle_t" } - ], - "returntype": "InputDigitalActionData_t" - }, - { - "methodname": "GetDigitalActionOrigins", - "methodname_flat": "SteamAPI_ISteamController_GetDigitalActionOrigins", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, - { "paramname":"actionSetHandle", "paramtype":"ControllerActionSetHandle_t" }, - { "paramname":"digitalActionHandle", "paramtype":"ControllerDigitalActionHandle_t" }, - { - "desc": "Receives list of aciton origins", - "out_array_count": "STEAM_CONTROLLER_MAX_ORIGINS", - "paramname": "originsOut", - "paramtype": "EControllerActionOrigin *" - } - ], - "returntype": "int" - }, - { - "methodname": "GetAnalogActionHandle", - "methodname_flat": "SteamAPI_ISteamController_GetAnalogActionHandle", - "params": [ - { "paramname":"pszActionName", "paramtype":"const char *" } - ], - "returntype": "ControllerAnalogActionHandle_t" - }, - { - "methodname": "GetAnalogActionData", - "methodname_flat": "SteamAPI_ISteamController_GetAnalogActionData", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, - { "paramname":"analogActionHandle", "paramtype":"ControllerAnalogActionHandle_t" } - ], - "returntype": "InputAnalogActionData_t" - }, - { - "methodname": "GetAnalogActionOrigins", - "methodname_flat": "SteamAPI_ISteamController_GetAnalogActionOrigins", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, - { "paramname":"actionSetHandle", "paramtype":"ControllerActionSetHandle_t" }, - { "paramname":"analogActionHandle", "paramtype":"ControllerAnalogActionHandle_t" }, - { - "desc": "Receives list of action origins", - "out_array_count": "STEAM_CONTROLLER_MAX_ORIGINS", - "paramname": "originsOut", - "paramtype": "EControllerActionOrigin *" - } - ], - "returntype": "int" - }, - { - "methodname": "GetGlyphForActionOrigin", - "methodname_flat": "SteamAPI_ISteamController_GetGlyphForActionOrigin", - "params": [ - { "paramname":"eOrigin", "paramtype":"EControllerActionOrigin" } - ], - "returntype": "const char *" - }, - { - "methodname": "GetStringForActionOrigin", - "methodname_flat": "SteamAPI_ISteamController_GetStringForActionOrigin", - "params": [ - { "paramname":"eOrigin", "paramtype":"EControllerActionOrigin" } - ], - "returntype": "const char *" - }, - { - "methodname": "StopAnalogActionMomentum", - "methodname_flat": "SteamAPI_ISteamController_StopAnalogActionMomentum", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, - { "paramname":"eAction", "paramtype":"ControllerAnalogActionHandle_t" } - ], - "returntype": "void" - }, - { - "methodname": "GetMotionData", - "methodname_flat": "SteamAPI_ISteamController_GetMotionData", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" } - ], - "returntype": "InputMotionData_t" - }, - { - "methodname": "TriggerHapticPulse", - "methodname_flat": "SteamAPI_ISteamController_TriggerHapticPulse", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, - { "paramname":"eTargetPad", "paramtype":"ESteamControllerPad" }, - { "paramname":"usDurationMicroSec", "paramtype":"unsigned short" } - ], - "returntype": "void" - }, - { - "methodname": "TriggerRepeatedHapticPulse", - "methodname_flat": "SteamAPI_ISteamController_TriggerRepeatedHapticPulse", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, - { "paramname":"eTargetPad", "paramtype":"ESteamControllerPad" }, - { "paramname":"usDurationMicroSec", "paramtype":"unsigned short" }, - { "paramname":"usOffMicroSec", "paramtype":"unsigned short" }, - { "paramname":"unRepeat", "paramtype":"unsigned short" }, - { "paramname":"nFlags", "paramtype":"unsigned int" } - ], - "returntype": "void" - }, - { - "methodname": "TriggerVibration", - "methodname_flat": "SteamAPI_ISteamController_TriggerVibration", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, - { "paramname":"usLeftSpeed", "paramtype":"unsigned short" }, - { "paramname":"usRightSpeed", "paramtype":"unsigned short" } - ], - "returntype": "void" - }, - { - "methodname": "SetLEDColor", - "methodname_flat": "SteamAPI_ISteamController_SetLEDColor", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, - { "paramname":"nColorR", "paramtype":"uint8" }, - { "paramname":"nColorG", "paramtype":"uint8" }, - { "paramname":"nColorB", "paramtype":"uint8" }, - { "paramname":"nFlags", "paramtype":"unsigned int" } - ], - "returntype": "void" - }, - { - "methodname": "ShowBindingPanel", - "methodname_flat": "SteamAPI_ISteamController_ShowBindingPanel", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" } - ], - "returntype": "bool" - }, - { - "methodname": "GetInputTypeForHandle", - "methodname_flat": "SteamAPI_ISteamController_GetInputTypeForHandle", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" } - ], - "returntype": "ESteamInputType" - }, - { - "methodname": "GetControllerForGamepadIndex", - "methodname_flat": "SteamAPI_ISteamController_GetControllerForGamepadIndex", - "params": [ - { "paramname":"nIndex", "paramtype":"int" } - ], - "returntype": "ControllerHandle_t" - }, - { - "methodname": "GetGamepadIndexForController", - "methodname_flat": "SteamAPI_ISteamController_GetGamepadIndexForController", - "params": [ - { "paramname":"ulControllerHandle", "paramtype":"ControllerHandle_t" } - ], - "returntype": "int" - }, - { - "methodname": "GetStringForXboxOrigin", - "methodname_flat": "SteamAPI_ISteamController_GetStringForXboxOrigin", - "params": [ - { "paramname":"eOrigin", "paramtype":"EXboxOrigin" } - ], - "returntype": "const char *" - }, - { - "methodname": "GetGlyphForXboxOrigin", - "methodname_flat": "SteamAPI_ISteamController_GetGlyphForXboxOrigin", - "params": [ - { "paramname":"eOrigin", "paramtype":"EXboxOrigin" } - ], - "returntype": "const char *" - }, - { - "methodname": "GetActionOriginFromXboxOrigin", - "methodname_flat": "SteamAPI_ISteamController_GetActionOriginFromXboxOrigin", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, - { "paramname":"eOrigin", "paramtype":"EXboxOrigin" } - ], - "returntype": "EControllerActionOrigin" - }, - { - "methodname": "TranslateActionOrigin", - "methodname_flat": "SteamAPI_ISteamController_TranslateActionOrigin", - "params": [ - { "paramname":"eDestinationInputType", "paramtype":"ESteamInputType" }, - { "paramname":"eSourceOrigin", "paramtype":"EControllerActionOrigin" } - ], - "returntype": "EControllerActionOrigin" - }, - { - "methodname": "GetControllerBindingRevision", - "methodname_flat": "SteamAPI_ISteamController_GetControllerBindingRevision", - "params": [ - { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, - { "paramname":"pMajor", "paramtype":"int *" }, - { "paramname":"pMinor", "paramtype":"int *" } - ], - "returntype": "bool" - } - ], - "version_string": "SteamController008" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamUGC", - "name_flat": "SteamAPI_SteamUGC_v015" - }, - { - "kind": "gameserver", - "name": "SteamGameServerUGC", - "name_flat": "SteamAPI_SteamGameServerUGC_v015" - } - ], - "classname": "ISteamUGC", - "fields": [], - "methods": [ - { - "methodname": "CreateQueryUserUGCRequest", - "methodname_flat": "SteamAPI_ISteamUGC_CreateQueryUserUGCRequest", - "params": [ - { "paramname":"unAccountID", "paramtype":"AccountID_t" }, - { "paramname":"eListType", "paramtype":"EUserUGCList" }, - { "paramname":"eMatchingUGCType", "paramtype":"EUGCMatchingUGCType" }, - { "paramname":"eSortOrder", "paramtype":"EUserUGCListSortOrder" }, - { "paramname":"nCreatorAppID", "paramtype":"AppId_t" }, - { "paramname":"nConsumerAppID", "paramtype":"AppId_t" }, - { "paramname":"unPage", "paramtype":"uint32" } - ], - "returntype": "UGCQueryHandle_t" - }, - { - "methodname": "CreateQueryAllUGCRequest", - "methodname_flat": "SteamAPI_ISteamUGC_CreateQueryAllUGCRequestPage", - "params": [ - { "paramname":"eQueryType", "paramtype":"EUGCQuery" }, - { "paramname":"eMatchingeMatchingUGCTypeFileType", "paramtype":"EUGCMatchingUGCType" }, - { "paramname":"nCreatorAppID", "paramtype":"AppId_t" }, - { "paramname":"nConsumerAppID", "paramtype":"AppId_t" }, - { "paramname":"unPage", "paramtype":"uint32" } - ], - "returntype": "UGCQueryHandle_t" - }, - { - "methodname": "CreateQueryAllUGCRequest", - "methodname_flat": "SteamAPI_ISteamUGC_CreateQueryAllUGCRequestCursor", - "params": [ - { "paramname":"eQueryType", "paramtype":"EUGCQuery" }, - { "paramname":"eMatchingeMatchingUGCTypeFileType", "paramtype":"EUGCMatchingUGCType" }, - { "paramname":"nCreatorAppID", "paramtype":"AppId_t" }, - { "paramname":"nConsumerAppID", "paramtype":"AppId_t" }, - { "paramname":"pchCursor", "paramtype":"const char *" } - ], - "returntype": "UGCQueryHandle_t" - }, - { - "methodname": "CreateQueryUGCDetailsRequest", - "methodname_flat": "SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest", - "params": [ - { "paramname":"pvecPublishedFileID", "paramtype":"PublishedFileId_t *" }, - { "paramname":"unNumPublishedFileIDs", "paramtype":"uint32" } - ], - "returntype": "UGCQueryHandle_t" - }, - { - "callresult": "SteamUGCQueryCompleted_t", - "methodname": "SendQueryUGCRequest", - "methodname_flat": "SteamAPI_ISteamUGC_SendQueryUGCRequest", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetQueryUGCResult", - "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCResult", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"index", "paramtype":"uint32" }, - { "paramname":"pDetails", "paramtype":"SteamUGCDetails_t *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetQueryUGCNumTags", - "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCNumTags", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"index", "paramtype":"uint32" } - ], - "returntype": "uint32" - }, - { - "methodname": "GetQueryUGCTag", - "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCTag", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"index", "paramtype":"uint32" }, - { "paramname":"indexTag", "paramtype":"uint32" }, - { - "out_string_count": "cchValueSize", - "paramname": "pchValue", - "paramtype": "char *" - }, - { "paramname":"cchValueSize", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "GetQueryUGCTagDisplayName", - "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCTagDisplayName", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"index", "paramtype":"uint32" }, - { "paramname":"indexTag", "paramtype":"uint32" }, - { - "out_string_count": "cchValueSize", - "paramname": "pchValue", - "paramtype": "char *" - }, - { "paramname":"cchValueSize", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "GetQueryUGCPreviewURL", - "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCPreviewURL", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"index", "paramtype":"uint32" }, - { - "out_string_count": "cchURLSize", - "paramname": "pchURL", - "paramtype": "char *" - }, - { "paramname":"cchURLSize", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "GetQueryUGCMetadata", - "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCMetadata", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"index", "paramtype":"uint32" }, - { - "out_string_count": "cchMetadatasize", - "paramname": "pchMetadata", - "paramtype": "char *" - }, - { "paramname":"cchMetadatasize", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "GetQueryUGCChildren", - "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCChildren", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"index", "paramtype":"uint32" }, - { "paramname":"pvecPublishedFileID", "paramtype":"PublishedFileId_t *" }, - { "paramname":"cMaxEntries", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "GetQueryUGCStatistic", - "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCStatistic", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"index", "paramtype":"uint32" }, - { "paramname":"eStatType", "paramtype":"EItemStatistic" }, - { "paramname":"pStatValue", "paramtype":"uint64 *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetQueryUGCNumAdditionalPreviews", - "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"index", "paramtype":"uint32" } - ], - "returntype": "uint32" - }, - { - "methodname": "GetQueryUGCAdditionalPreview", - "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"index", "paramtype":"uint32" }, - { "paramname":"previewIndex", "paramtype":"uint32" }, - { - "out_string_count": "cchURLSize", - "paramname": "pchURLOrVideoID", - "paramtype": "char *" - }, - { "paramname":"cchURLSize", "paramtype":"uint32" }, - { - "out_string_count": "cchURLSize", - "paramname": "pchOriginalFileName", - "paramtype": "char *" - }, - { "paramname":"cchOriginalFileNameSize", "paramtype":"uint32" }, - { "paramname":"pPreviewType", "paramtype":"EItemPreviewType *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetQueryUGCNumKeyValueTags", - "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"index", "paramtype":"uint32" } - ], - "returntype": "uint32" - }, - { - "methodname": "GetQueryUGCKeyValueTag", - "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"index", "paramtype":"uint32" }, - { "paramname":"keyValueTagIndex", "paramtype":"uint32" }, - { - "out_string_count": "cchKeySize", - "paramname": "pchKey", - "paramtype": "char *" - }, - { "paramname":"cchKeySize", "paramtype":"uint32" }, - { - "out_string_count": "cchValueSize", - "paramname": "pchValue", - "paramtype": "char *" - }, - { "paramname":"cchValueSize", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "GetQueryUGCKeyValueTag", - "methodname_flat": "SteamAPI_ISteamUGC_GetQueryFirstUGCKeyValueTag", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"index", "paramtype":"uint32" }, - { "paramname":"pchKey", "paramtype":"const char *" }, - { - "out_string_count": "cchValueSize", - "paramname": "pchValue", - "paramtype": "char *" - }, - { "paramname":"cchValueSize", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "ReleaseQueryUGCRequest", - "methodname_flat": "SteamAPI_ISteamUGC_ReleaseQueryUGCRequest", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" } - ], - "returntype": "bool" - }, - { - "methodname": "AddRequiredTag", - "methodname_flat": "SteamAPI_ISteamUGC_AddRequiredTag", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"pTagName", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "AddRequiredTagGroup", - "methodname_flat": "SteamAPI_ISteamUGC_AddRequiredTagGroup", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"pTagGroups", "paramtype":"const SteamParamStringArray_t *" } - ], - "returntype": "bool" - }, - { - "methodname": "AddExcludedTag", - "methodname_flat": "SteamAPI_ISteamUGC_AddExcludedTag", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"pTagName", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetReturnOnlyIDs", - "methodname_flat": "SteamAPI_ISteamUGC_SetReturnOnlyIDs", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"bReturnOnlyIDs", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "SetReturnKeyValueTags", - "methodname_flat": "SteamAPI_ISteamUGC_SetReturnKeyValueTags", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"bReturnKeyValueTags", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "SetReturnLongDescription", - "methodname_flat": "SteamAPI_ISteamUGC_SetReturnLongDescription", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"bReturnLongDescription", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "SetReturnMetadata", - "methodname_flat": "SteamAPI_ISteamUGC_SetReturnMetadata", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"bReturnMetadata", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "SetReturnChildren", - "methodname_flat": "SteamAPI_ISteamUGC_SetReturnChildren", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"bReturnChildren", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "SetReturnAdditionalPreviews", - "methodname_flat": "SteamAPI_ISteamUGC_SetReturnAdditionalPreviews", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"bReturnAdditionalPreviews", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "SetReturnTotalOnly", - "methodname_flat": "SteamAPI_ISteamUGC_SetReturnTotalOnly", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"bReturnTotalOnly", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "SetReturnPlaytimeStats", - "methodname_flat": "SteamAPI_ISteamUGC_SetReturnPlaytimeStats", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"unDays", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "SetLanguage", - "methodname_flat": "SteamAPI_ISteamUGC_SetLanguage", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"pchLanguage", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetAllowCachedResponse", - "methodname_flat": "SteamAPI_ISteamUGC_SetAllowCachedResponse", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"unMaxAgeSeconds", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "SetCloudFileNameFilter", - "methodname_flat": "SteamAPI_ISteamUGC_SetCloudFileNameFilter", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"pMatchCloudFileName", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetMatchAnyTag", - "methodname_flat": "SteamAPI_ISteamUGC_SetMatchAnyTag", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"bMatchAnyTag", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "SetSearchText", - "methodname_flat": "SteamAPI_ISteamUGC_SetSearchText", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"pSearchText", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetRankedByTrendDays", - "methodname_flat": "SteamAPI_ISteamUGC_SetRankedByTrendDays", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"unDays", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "AddRequiredKeyValueTag", - "methodname_flat": "SteamAPI_ISteamUGC_AddRequiredKeyValueTag", - "params": [ - { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, - { "paramname":"pKey", "paramtype":"const char *" }, - { "paramname":"pValue", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "callresult": "SteamUGCRequestUGCDetailsResult_t", - "methodname": "RequestUGCDetails", - "methodname_flat": "SteamAPI_ISteamUGC_RequestUGCDetails", - "params": [ - { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, - { "paramname":"unMaxAgeSeconds", "paramtype":"uint32" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "CreateItemResult_t", - "methodname": "CreateItem", - "methodname_flat": "SteamAPI_ISteamUGC_CreateItem", - "params": [ - { "paramname":"nConsumerAppId", "paramtype":"AppId_t" }, - { "paramname":"eFileType", "paramtype":"EWorkshopFileType" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "StartItemUpdate", - "methodname_flat": "SteamAPI_ISteamUGC_StartItemUpdate", - "params": [ - { "paramname":"nConsumerAppId", "paramtype":"AppId_t" }, - { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } - ], - "returntype": "UGCUpdateHandle_t" - }, - { - "methodname": "SetItemTitle", - "methodname_flat": "SteamAPI_ISteamUGC_SetItemTitle", - "params": [ - { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"pchTitle", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetItemDescription", - "methodname_flat": "SteamAPI_ISteamUGC_SetItemDescription", - "params": [ - { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"pchDescription", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetItemUpdateLanguage", - "methodname_flat": "SteamAPI_ISteamUGC_SetItemUpdateLanguage", - "params": [ - { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"pchLanguage", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetItemMetadata", - "methodname_flat": "SteamAPI_ISteamUGC_SetItemMetadata", - "params": [ - { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"pchMetaData", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetItemVisibility", - "methodname_flat": "SteamAPI_ISteamUGC_SetItemVisibility", - "params": [ - { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"eVisibility", "paramtype":"ERemoteStoragePublishedFileVisibility" } - ], - "returntype": "bool" - }, - { - "methodname": "SetItemTags", - "methodname_flat": "SteamAPI_ISteamUGC_SetItemTags", - "params": [ - { "paramname":"updateHandle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"pTags", "paramtype":"const SteamParamStringArray_t *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetItemContent", - "methodname_flat": "SteamAPI_ISteamUGC_SetItemContent", - "params": [ - { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"pszContentFolder", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetItemPreview", - "methodname_flat": "SteamAPI_ISteamUGC_SetItemPreview", - "params": [ - { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"pszPreviewFile", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetAllowLegacyUpload", - "methodname_flat": "SteamAPI_ISteamUGC_SetAllowLegacyUpload", - "params": [ - { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"bAllowLegacyUpload", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "RemoveAllItemKeyValueTags", - "methodname_flat": "SteamAPI_ISteamUGC_RemoveAllItemKeyValueTags", - "params": [ - { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" } - ], - "returntype": "bool" - }, - { - "methodname": "RemoveItemKeyValueTags", - "methodname_flat": "SteamAPI_ISteamUGC_RemoveItemKeyValueTags", - "params": [ - { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"pchKey", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "AddItemKeyValueTag", - "methodname_flat": "SteamAPI_ISteamUGC_AddItemKeyValueTag", - "params": [ - { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"pchKey", "paramtype":"const char *" }, - { "paramname":"pchValue", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "AddItemPreviewFile", - "methodname_flat": "SteamAPI_ISteamUGC_AddItemPreviewFile", - "params": [ - { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"pszPreviewFile", "paramtype":"const char *" }, - { "paramname":"type", "paramtype":"EItemPreviewType" } - ], - "returntype": "bool" - }, - { - "methodname": "AddItemPreviewVideo", - "methodname_flat": "SteamAPI_ISteamUGC_AddItemPreviewVideo", - "params": [ - { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"pszVideoID", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "UpdateItemPreviewFile", - "methodname_flat": "SteamAPI_ISteamUGC_UpdateItemPreviewFile", - "params": [ - { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"index", "paramtype":"uint32" }, - { "paramname":"pszPreviewFile", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "UpdateItemPreviewVideo", - "methodname_flat": "SteamAPI_ISteamUGC_UpdateItemPreviewVideo", - "params": [ - { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"index", "paramtype":"uint32" }, - { "paramname":"pszVideoID", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "RemoveItemPreview", - "methodname_flat": "SteamAPI_ISteamUGC_RemoveItemPreview", - "params": [ - { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"index", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "callresult": "SubmitItemUpdateResult_t", - "methodname": "SubmitItemUpdate", - "methodname_flat": "SteamAPI_ISteamUGC_SubmitItemUpdate", - "params": [ - { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"pchChangeNote", "paramtype":"const char *" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetItemUpdateProgress", - "methodname_flat": "SteamAPI_ISteamUGC_GetItemUpdateProgress", - "params": [ - { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"punBytesProcessed", "paramtype":"uint64 *" }, - { "paramname":"punBytesTotal", "paramtype":"uint64 *" } - ], - "returntype": "EItemUpdateStatus" - }, - { - "callresult": "SetUserItemVoteResult_t", - "methodname": "SetUserItemVote", - "methodname_flat": "SteamAPI_ISteamUGC_SetUserItemVote", - "params": [ - { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, - { "paramname":"bVoteUp", "paramtype":"bool" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "GetUserItemVoteResult_t", - "methodname": "GetUserItemVote", - "methodname_flat": "SteamAPI_ISteamUGC_GetUserItemVote", - "params": [ - { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "UserFavoriteItemsListChanged_t", - "methodname": "AddItemToFavorites", - "methodname_flat": "SteamAPI_ISteamUGC_AddItemToFavorites", - "params": [ - { "paramname":"nAppId", "paramtype":"AppId_t" }, - { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "UserFavoriteItemsListChanged_t", - "methodname": "RemoveItemFromFavorites", - "methodname_flat": "SteamAPI_ISteamUGC_RemoveItemFromFavorites", - "params": [ - { "paramname":"nAppId", "paramtype":"AppId_t" }, - { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoteStorageSubscribePublishedFileResult_t", - "methodname": "SubscribeItem", - "methodname_flat": "SteamAPI_ISteamUGC_SubscribeItem", - "params": [ - { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoteStorageUnsubscribePublishedFileResult_t", - "methodname": "UnsubscribeItem", - "methodname_flat": "SteamAPI_ISteamUGC_UnsubscribeItem", - "params": [ - { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetNumSubscribedItems", - "methodname_flat": "SteamAPI_ISteamUGC_GetNumSubscribedItems", - "params": [], - "returntype": "uint32" - }, - { - "methodname": "GetSubscribedItems", - "methodname_flat": "SteamAPI_ISteamUGC_GetSubscribedItems", - "params": [ - { "paramname":"pvecPublishedFileID", "paramtype":"PublishedFileId_t *" }, - { "paramname":"cMaxEntries", "paramtype":"uint32" } - ], - "returntype": "uint32" - }, - { - "methodname": "GetItemState", - "methodname_flat": "SteamAPI_ISteamUGC_GetItemState", - "params": [ - { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } - ], - "returntype": "uint32" - }, - { - "methodname": "GetItemInstallInfo", - "methodname_flat": "SteamAPI_ISteamUGC_GetItemInstallInfo", - "params": [ - { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, - { "paramname":"punSizeOnDisk", "paramtype":"uint64 *" }, - { - "out_string_count": "cchFolderSize", - "paramname": "pchFolder", - "paramtype": "char *" - }, - { "paramname":"cchFolderSize", "paramtype":"uint32" }, - { "paramname":"punTimeStamp", "paramtype":"uint32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetItemDownloadInfo", - "methodname_flat": "SteamAPI_ISteamUGC_GetItemDownloadInfo", - "params": [ - { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, - { "paramname":"punBytesDownloaded", "paramtype":"uint64 *" }, - { "paramname":"punBytesTotal", "paramtype":"uint64 *" } - ], - "returntype": "bool" - }, - { - "methodname": "DownloadItem", - "methodname_flat": "SteamAPI_ISteamUGC_DownloadItem", - "params": [ - { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, - { "paramname":"bHighPriority", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "BInitWorkshopForGameServer", - "methodname_flat": "SteamAPI_ISteamUGC_BInitWorkshopForGameServer", - "params": [ - { "paramname":"unWorkshopDepotID", "paramtype":"DepotId_t" }, - { "paramname":"pszFolder", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SuspendDownloads", - "methodname_flat": "SteamAPI_ISteamUGC_SuspendDownloads", - "params": [ - { "paramname":"bSuspend", "paramtype":"bool" } - ], - "returntype": "void" - }, - { - "callresult": "StartPlaytimeTrackingResult_t", - "methodname": "StartPlaytimeTracking", - "methodname_flat": "SteamAPI_ISteamUGC_StartPlaytimeTracking", - "params": [ - { "paramname":"pvecPublishedFileID", "paramtype":"PublishedFileId_t *" }, - { "paramname":"unNumPublishedFileIDs", "paramtype":"uint32" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "StopPlaytimeTrackingResult_t", - "methodname": "StopPlaytimeTracking", - "methodname_flat": "SteamAPI_ISteamUGC_StopPlaytimeTracking", - "params": [ - { "paramname":"pvecPublishedFileID", "paramtype":"PublishedFileId_t *" }, - { "paramname":"unNumPublishedFileIDs", "paramtype":"uint32" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "StopPlaytimeTrackingResult_t", - "methodname": "StopPlaytimeTrackingForAllItems", - "methodname_flat": "SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems", - "params": [], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "AddUGCDependencyResult_t", - "methodname": "AddDependency", - "methodname_flat": "SteamAPI_ISteamUGC_AddDependency", - "params": [ - { "paramname":"nParentPublishedFileID", "paramtype":"PublishedFileId_t" }, - { "paramname":"nChildPublishedFileID", "paramtype":"PublishedFileId_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoveUGCDependencyResult_t", - "methodname": "RemoveDependency", - "methodname_flat": "SteamAPI_ISteamUGC_RemoveDependency", - "params": [ - { "paramname":"nParentPublishedFileID", "paramtype":"PublishedFileId_t" }, - { "paramname":"nChildPublishedFileID", "paramtype":"PublishedFileId_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "AddAppDependencyResult_t", - "methodname": "AddAppDependency", - "methodname_flat": "SteamAPI_ISteamUGC_AddAppDependency", - "params": [ - { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, - { "paramname":"nAppID", "paramtype":"AppId_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "RemoveAppDependencyResult_t", - "methodname": "RemoveAppDependency", - "methodname_flat": "SteamAPI_ISteamUGC_RemoveAppDependency", - "params": [ - { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, - { "paramname":"nAppID", "paramtype":"AppId_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "GetAppDependenciesResult_t", - "methodname": "GetAppDependencies", - "methodname_flat": "SteamAPI_ISteamUGC_GetAppDependencies", - "params": [ - { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "DeleteItemResult_t", - "methodname": "DeleteItem", - "methodname_flat": "SteamAPI_ISteamUGC_DeleteItem", - "params": [ - { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } - ], - "returntype": "SteamAPICall_t" - } - ], - "version_string": "STEAMUGC_INTERFACE_VERSION015" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamAppList", - "name_flat": "SteamAPI_SteamAppList_v001" - } - ], - "classname": "ISteamAppList", - "fields": [], - "methods": [ - { - "methodname": "GetNumInstalledApps", - "methodname_flat": "SteamAPI_ISteamAppList_GetNumInstalledApps", - "params": [], - "returntype": "uint32" - }, - { - "methodname": "GetInstalledApps", - "methodname_flat": "SteamAPI_ISteamAppList_GetInstalledApps", - "params": [ - { "paramname":"pvecAppID", "paramtype":"AppId_t *" }, - { "paramname":"unMaxAppIDs", "paramtype":"uint32" } - ], - "returntype": "uint32" - }, - { - "methodname": "GetAppName", - "methodname_flat": "SteamAPI_ISteamAppList_GetAppName", - "params": [ - { "paramname":"nAppID", "paramtype":"AppId_t" }, - { - "out_string": "", - "paramname": "pchName", - "paramtype": "char *" - }, - { "paramname":"cchNameMax", "paramtype":"int" } - ], - "returntype": "int" - }, - { - "methodname": "GetAppInstallDir", - "methodname_flat": "SteamAPI_ISteamAppList_GetAppInstallDir", - "params": [ - { "paramname":"nAppID", "paramtype":"AppId_t" }, - { "paramname":"pchDirectory", "paramtype":"char *" }, - { "paramname":"cchNameMax", "paramtype":"int" } - ], - "returntype": "int" - }, - { - "methodname": "GetAppBuildId", - "methodname_flat": "SteamAPI_ISteamAppList_GetAppBuildId", - "params": [ - { "paramname":"nAppID", "paramtype":"AppId_t" } - ], - "returntype": "int" - } - ], - "version_string": "STEAMAPPLIST_INTERFACE_VERSION001" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamHTMLSurface", - "name_flat": "SteamAPI_SteamHTMLSurface_v005" - } - ], - "classname": "ISteamHTMLSurface", - "enums": [ - { - "enumname": "EHTMLMouseButton", - "fqname": "ISteamHTMLSurface::EHTMLMouseButton", - "values": [ - { "name":"eHTMLMouseButton_Left", "value":"0" }, - { "name":"eHTMLMouseButton_Right", "value":"1" }, - { "name":"eHTMLMouseButton_Middle", "value":"2" } - ] - }, - { - "enumname": "EMouseCursor", - "fqname": "ISteamHTMLSurface::EMouseCursor", - "values": [ - { "name":"dc_user", "value":"0" }, - { "name":"dc_none", "value":"1" }, - { "name":"dc_arrow", "value":"2" }, - { "name":"dc_ibeam", "value":"3" }, - { "name":"dc_hourglass", "value":"4" }, - { "name":"dc_waitarrow", "value":"5" }, - { "name":"dc_crosshair", "value":"6" }, - { "name":"dc_up", "value":"7" }, - { "name":"dc_sizenw", "value":"8" }, - { "name":"dc_sizese", "value":"9" }, - { "name":"dc_sizene", "value":"10" }, - { "name":"dc_sizesw", "value":"11" }, - { "name":"dc_sizew", "value":"12" }, - { "name":"dc_sizee", "value":"13" }, - { "name":"dc_sizen", "value":"14" }, - { "name":"dc_sizes", "value":"15" }, - { "name":"dc_sizewe", "value":"16" }, - { "name":"dc_sizens", "value":"17" }, - { "name":"dc_sizeall", "value":"18" }, - { "name":"dc_no", "value":"19" }, - { "name":"dc_hand", "value":"20" }, - { "name":"dc_blank", "value":"21" }, - { "name":"dc_middle_pan", "value":"22" }, - { "name":"dc_north_pan", "value":"23" }, - { "name":"dc_north_east_pan", "value":"24" }, - { "name":"dc_east_pan", "value":"25" }, - { "name":"dc_south_east_pan", "value":"26" }, - { "name":"dc_south_pan", "value":"27" }, - { "name":"dc_south_west_pan", "value":"28" }, - { "name":"dc_west_pan", "value":"29" }, - { "name":"dc_north_west_pan", "value":"30" }, - { "name":"dc_alias", "value":"31" }, - { "name":"dc_cell", "value":"32" }, - { "name":"dc_colresize", "value":"33" }, - { "name":"dc_copycur", "value":"34" }, - { "name":"dc_verticaltext", "value":"35" }, - { "name":"dc_rowresize", "value":"36" }, - { "name":"dc_zoomin", "value":"37" }, - { "name":"dc_zoomout", "value":"38" }, - { "name":"dc_help", "value":"39" }, - { "name":"dc_custom", "value":"40" }, - { "name":"dc_last", "value":"41" } - ] - }, - { - "enumname": "EHTMLKeyModifiers", - "fqname": "ISteamHTMLSurface::EHTMLKeyModifiers", - "values": [ - { "name":"k_eHTMLKeyModifier_None", "value":"0" }, - { "name":"k_eHTMLKeyModifier_AltDown", "value":"1" }, - { "name":"k_eHTMLKeyModifier_CtrlDown", "value":"2" }, - { "name":"k_eHTMLKeyModifier_ShiftDown", "value":"4" } - ] - } - ], - "fields": [], - "methods": [ - { - "methodname": "Init", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_Init", - "params": [], - "returntype": "bool" - }, - { - "methodname": "Shutdown", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_Shutdown", - "params": [], - "returntype": "bool" - }, - { - "callresult": "HTML_BrowserReady_t", - "methodname": "CreateBrowser", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_CreateBrowser", - "params": [ - { "paramname":"pchUserAgent", "paramtype":"const char *" }, - { "paramname":"pchUserCSS", "paramtype":"const char *" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "RemoveBrowser", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_RemoveBrowser", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } - ], - "returntype": "void" - }, - { - "methodname": "LoadURL", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_LoadURL", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"pchURL", "paramtype":"const char *" }, - { "paramname":"pchPostData", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "SetSize", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetSize", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"unWidth", "paramtype":"uint32" }, - { "paramname":"unHeight", "paramtype":"uint32" } - ], - "returntype": "void" - }, - { - "methodname": "StopLoad", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_StopLoad", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } - ], - "returntype": "void" - }, - { - "methodname": "Reload", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_Reload", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } - ], - "returntype": "void" - }, - { - "methodname": "GoBack", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_GoBack", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } - ], - "returntype": "void" - }, - { - "methodname": "GoForward", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_GoForward", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } - ], - "returntype": "void" - }, - { - "methodname": "AddHeader", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_AddHeader", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"pchKey", "paramtype":"const char *" }, - { "paramname":"pchValue", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "ExecuteJavascript", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_ExecuteJavascript", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"pchScript", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "MouseUp", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_MouseUp", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"eMouseButton", "paramtype":"ISteamHTMLSurface::EHTMLMouseButton" } - ], - "returntype": "void" - }, - { - "methodname": "MouseDown", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_MouseDown", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"eMouseButton", "paramtype":"ISteamHTMLSurface::EHTMLMouseButton" } - ], - "returntype": "void" - }, - { - "methodname": "MouseDoubleClick", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_MouseDoubleClick", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"eMouseButton", "paramtype":"ISteamHTMLSurface::EHTMLMouseButton" } - ], - "returntype": "void" - }, - { - "methodname": "MouseMove", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_MouseMove", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"x", "paramtype":"int" }, - { "paramname":"y", "paramtype":"int" } - ], - "returntype": "void" - }, - { - "methodname": "MouseWheel", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_MouseWheel", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"nDelta", "paramtype":"int32" } - ], - "returntype": "void" - }, - { - "methodname": "KeyDown", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_KeyDown", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"nNativeKeyCode", "paramtype":"uint32" }, - { "paramname":"eHTMLKeyModifiers", "paramtype":"ISteamHTMLSurface::EHTMLKeyModifiers" }, - { "paramname":"bIsSystemKey", "paramtype":"bool" } - ], - "returntype": "void" - }, - { - "methodname": "KeyUp", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_KeyUp", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"nNativeKeyCode", "paramtype":"uint32" }, - { "paramname":"eHTMLKeyModifiers", "paramtype":"ISteamHTMLSurface::EHTMLKeyModifiers" } - ], - "returntype": "void" - }, - { - "methodname": "KeyChar", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_KeyChar", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"cUnicodeChar", "paramtype":"uint32" }, - { "paramname":"eHTMLKeyModifiers", "paramtype":"ISteamHTMLSurface::EHTMLKeyModifiers" } - ], - "returntype": "void" - }, - { - "methodname": "SetHorizontalScroll", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetHorizontalScroll", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"nAbsolutePixelScroll", "paramtype":"uint32" } - ], - "returntype": "void" - }, - { - "methodname": "SetVerticalScroll", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetVerticalScroll", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"nAbsolutePixelScroll", "paramtype":"uint32" } - ], - "returntype": "void" - }, - { - "methodname": "SetKeyFocus", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetKeyFocus", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"bHasKeyFocus", "paramtype":"bool" } - ], - "returntype": "void" - }, - { - "methodname": "ViewSource", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_ViewSource", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } - ], - "returntype": "void" - }, - { - "methodname": "CopyToClipboard", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_CopyToClipboard", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } - ], - "returntype": "void" - }, - { - "methodname": "PasteFromClipboard", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_PasteFromClipboard", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } - ], - "returntype": "void" - }, - { - "methodname": "Find", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_Find", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"pchSearchStr", "paramtype":"const char *" }, - { "paramname":"bCurrentlyInFind", "paramtype":"bool" }, - { "paramname":"bReverse", "paramtype":"bool" } - ], - "returntype": "void" - }, - { - "methodname": "StopFind", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_StopFind", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } - ], - "returntype": "void" - }, - { - "methodname": "GetLinkAtPosition", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_GetLinkAtPosition", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"x", "paramtype":"int" }, - { "paramname":"y", "paramtype":"int" } - ], - "returntype": "void" - }, - { - "methodname": "SetCookie", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetCookie", - "params": [ - { "paramname":"pchHostname", "paramtype":"const char *" }, - { "paramname":"pchKey", "paramtype":"const char *" }, - { "paramname":"pchValue", "paramtype":"const char *" }, - { "paramname":"pchPath", "paramtype":"const char *" }, - { "paramname":"nExpires", "paramtype":"RTime32" }, - { "paramname":"bSecure", "paramtype":"bool" }, - { "paramname":"bHTTPOnly", "paramtype":"bool" } - ], - "returntype": "void" - }, - { - "methodname": "SetPageScaleFactor", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetPageScaleFactor", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"flZoom", "paramtype":"float" }, - { "paramname":"nPointX", "paramtype":"int" }, - { "paramname":"nPointY", "paramtype":"int" } - ], - "returntype": "void" - }, - { - "methodname": "SetBackgroundMode", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetBackgroundMode", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"bBackgroundMode", "paramtype":"bool" } - ], - "returntype": "void" - }, - { - "methodname": "SetDPIScalingFactor", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetDPIScalingFactor", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"flDPIScaling", "paramtype":"float" } - ], - "returntype": "void" - }, - { - "methodname": "OpenDeveloperTools", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_OpenDeveloperTools", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } - ], - "returntype": "void" - }, - { - "methodname": "AllowStartRequest", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_AllowStartRequest", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"bAllowed", "paramtype":"bool" } - ], - "returntype": "void" - }, - { - "methodname": "JSDialogResponse", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_JSDialogResponse", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"bResult", "paramtype":"bool" } - ], - "returntype": "void" - }, - { - "ignore": null, - "methodname": "FileLoadDialogResponse", - "methodname_flat": "SteamAPI_ISteamHTMLSurface_FileLoadDialogResponse", - "params": [ - { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, - { "paramname":"pchSelectedFiles", "paramtype":"const char **" } - ], - "returntype": "void" - } - ], - "version_string": "STEAMHTMLSURFACE_INTERFACE_VERSION_005" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamInventory", - "name_flat": "SteamAPI_SteamInventory_v003" - }, - { - "kind": "gameserver", - "name": "SteamGameServerInventory", - "name_flat": "SteamAPI_SteamGameServerInventory_v003" - } - ], - "classname": "ISteamInventory", - "fields": [], - "methods": [ - { - "desc": "Find out the status of an asynchronous inventory result handle.", - "methodname": "GetResultStatus", - "methodname_flat": "SteamAPI_ISteamInventory_GetResultStatus", - "params": [ - { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" } - ], - "returntype": "EResult" - }, - { - "desc": "Copies the contents of a result set into a flat array. The specific contents of the result set depend on which query which was used.", - "methodname": "GetResultItems", - "methodname_flat": "SteamAPI_ISteamInventory_GetResultItems", - "params": [ - { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" }, - { - "desc": "Output array", - "out_array_count": "punOutItemsArraySize", - "paramname": "pOutItemsArray", - "paramtype": "SteamItemDetails_t *" - }, - { "paramname":"punOutItemsArraySize", "paramtype":"uint32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetResultItemProperty", - "methodname_flat": "SteamAPI_ISteamInventory_GetResultItemProperty", - "params": [ - { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" }, - { "paramname":"unItemIndex", "paramtype":"uint32" }, - { "paramname":"pchPropertyName", "paramtype":"const char *" }, - { - "out_string_count": "punValueBufferSizeOut", - "paramname": "pchValueBuffer", - "paramtype": "char *" - }, - { "paramname":"punValueBufferSizeOut", "paramtype":"uint32 *" } - ], - "returntype": "bool" - }, - { - "desc": "Returns the server time at which the result was generated. Compare against the value of IClientUtils::GetServerRealTime() to determine age.", - "methodname": "GetResultTimestamp", - "methodname_flat": "SteamAPI_ISteamInventory_GetResultTimestamp", - "params": [ - { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" } - ], - "returntype": "uint32" - }, - { - "desc": "Returns true if the result belongs to the target steam ID or false if the result does not. This is important when using DeserializeResult to verify that a remote player is not pretending to have a different users inventory.", - "methodname": "CheckResultSteamID", - "methodname_flat": "SteamAPI_ISteamInventory_CheckResultSteamID", - "params": [ - { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" }, - { "paramname":"steamIDExpected", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "bool" - }, - { - "desc": "Destroys a result handle and frees all associated memory.", - "methodname": "DestroyResult", - "methodname_flat": "SteamAPI_ISteamInventory_DestroyResult", - "params": [ - { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" } - ], - "returntype": "void" - }, - { - "desc": "Captures the entire state of the current users Steam inventory.", - "methodname": "GetAllItems", - "methodname_flat": "SteamAPI_ISteamInventory_GetAllItems", - "params": [ - { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" } - ], - "returntype": "bool" - }, - { - "desc": "Captures the state of a subset of the current users Steam inventory identified by an array of item instance IDs.", - "methodname": "GetItemsByID", - "methodname_flat": "SteamAPI_ISteamInventory_GetItemsByID", - "params": [ - { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, - { - "array_count": "unCountInstanceIDs", - "paramname": "pInstanceIDs", - "paramtype": "const SteamItemInstanceID_t *" - }, - { "paramname":"unCountInstanceIDs", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "SerializeResult", - "methodname_flat": "SteamAPI_ISteamInventory_SerializeResult", - "params": [ - { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" }, - { - "out_buffer_count": "punOutBufferSize", - "paramname": "pOutBuffer", - "paramtype": "void *" - }, - { "paramname":"punOutBufferSize", "paramtype":"uint32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "DeserializeResult", - "methodname_flat": "SteamAPI_ISteamInventory_DeserializeResult", - "params": [ - { "paramname":"pOutResultHandle", "paramtype":"SteamInventoryResult_t *" }, - { - "buffer_count": "punOutBufferSize", - "paramname": "pBuffer", - "paramtype": "const void *" - }, - { "paramname":"unBufferSize", "paramtype":"uint32" }, - { "paramname":"bRESERVED_MUST_BE_FALSE", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "GenerateItems", - "methodname_flat": "SteamAPI_ISteamInventory_GenerateItems", - "params": [ - { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, - { - "array_count": "unArrayLength", - "paramname": "pArrayItemDefs", - "paramtype": "const SteamItemDef_t *" - }, - { - "array_count": "unArrayLength", - "paramname": "punArrayQuantity", - "paramtype": "const uint32 *" - }, - { "paramname":"unArrayLength", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "desc": "GrantPromoItems() checks the list of promotional items for which the user may be eligible and grants the items (one time only).", - "methodname": "GrantPromoItems", - "methodname_flat": "SteamAPI_ISteamInventory_GrantPromoItems", - "params": [ - { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" } - ], - "returntype": "bool" - }, - { - "methodname": "AddPromoItem", - "methodname_flat": "SteamAPI_ISteamInventory_AddPromoItem", - "params": [ - { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, - { "paramname":"itemDef", "paramtype":"SteamItemDef_t" } - ], - "returntype": "bool" - }, - { - "methodname": "AddPromoItems", - "methodname_flat": "SteamAPI_ISteamInventory_AddPromoItems", - "params": [ - { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, - { - "array_count": "unArrayLength", - "paramname": "pArrayItemDefs", - "paramtype": "const SteamItemDef_t *" - }, - { "paramname":"unArrayLength", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "desc": "ConsumeItem() removes items from the inventory permanently.", - "methodname": "ConsumeItem", - "methodname_flat": "SteamAPI_ISteamInventory_ConsumeItem", - "params": [ - { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, - { "paramname":"itemConsume", "paramtype":"SteamItemInstanceID_t" }, - { "paramname":"unQuantity", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "ExchangeItems", - "methodname_flat": "SteamAPI_ISteamInventory_ExchangeItems", - "params": [ - { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, - { - "array_count": "unArrayGenerateLength", - "paramname": "pArrayGenerate", - "paramtype": "const SteamItemDef_t *" - }, - { - "array_count": "unArrayGenerateLength", - "paramname": "punArrayGenerateQuantity", - "paramtype": "const uint32 *" - }, - { "paramname":"unArrayGenerateLength", "paramtype":"uint32" }, - { - "array_count": "unArrayDestroyLength", - "paramname": "pArrayDestroy", - "paramtype": "const SteamItemInstanceID_t *" - }, - { - "array_count": "unArrayDestroyLength", - "paramname": "punArrayDestroyQuantity", - "paramtype": "const uint32 *" - }, - { "paramname":"unArrayDestroyLength", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "TransferItemQuantity", - "methodname_flat": "SteamAPI_ISteamInventory_TransferItemQuantity", - "params": [ - { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, - { "paramname":"itemIdSource", "paramtype":"SteamItemInstanceID_t" }, - { "paramname":"unQuantity", "paramtype":"uint32" }, - { "paramname":"itemIdDest", "paramtype":"SteamItemInstanceID_t" } - ], - "returntype": "bool" - }, - { - "desc": "Deprecated method. Playtime accounting is performed on the Steam servers.", - "methodname": "SendItemDropHeartbeat", - "methodname_flat": "SteamAPI_ISteamInventory_SendItemDropHeartbeat", - "params": [], - "returntype": "void" - }, - { - "desc": "Playtime credit must be consumed and turned into item drops by your game.", - "methodname": "TriggerItemDrop", - "methodname_flat": "SteamAPI_ISteamInventory_TriggerItemDrop", - "params": [ - { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, - { "paramname":"dropListDefinition", "paramtype":"SteamItemDef_t" } - ], - "returntype": "bool" - }, - { - "methodname": "TradeItems", - "methodname_flat": "SteamAPI_ISteamInventory_TradeItems", - "params": [ - { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, - { "paramname":"steamIDTradePartner", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { - "array_count": "nArrayGiveLength", - "paramname": "pArrayGive", - "paramtype": "const SteamItemInstanceID_t *" - }, - { - "array_count": "nArrayGiveLength", - "paramname": "pArrayGiveQuantity", - "paramtype": "const uint32 *" - }, - { "paramname":"nArrayGiveLength", "paramtype":"uint32" }, - { - "array_count": "nArrayGetLength", - "paramname": "pArrayGet", - "paramtype": "const SteamItemInstanceID_t *" - }, - { - "array_count": "nArrayGetLength", - "paramname": "pArrayGetQuantity", - "paramtype": "const uint32 *" - }, - { "paramname":"nArrayGetLength", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "desc": "LoadItemDefinitions triggers the automatic load and refresh of item definitions.", - "methodname": "LoadItemDefinitions", - "methodname_flat": "SteamAPI_ISteamInventory_LoadItemDefinitions", - "params": [], - "returntype": "bool" - }, - { - "methodname": "GetItemDefinitionIDs", - "methodname_flat": "SteamAPI_ISteamInventory_GetItemDefinitionIDs", - "params": [ - { - "desc": "List of item definition IDs", - "out_array_count": "punItemDefIDsArraySize", - "paramname": "pItemDefIDs", - "paramtype": "SteamItemDef_t *" - }, - { - "desc": "Size of array is passed in and actual size used is returned in this param", - "paramname": "punItemDefIDsArraySize", - "paramtype": "uint32 *" - } - ], - "returntype": "bool" - }, - { - "methodname": "GetItemDefinitionProperty", - "methodname_flat": "SteamAPI_ISteamInventory_GetItemDefinitionProperty", - "params": [ - { "paramname":"iDefinition", "paramtype":"SteamItemDef_t" }, - { "paramname":"pchPropertyName", "paramtype":"const char *" }, - { - "out_string_count": "punValueBufferSizeOut", - "paramname": "pchValueBuffer", - "paramtype": "char *" - }, - { "paramname":"punValueBufferSizeOut", "paramtype":"uint32 *" } - ], - "returntype": "bool" - }, - { - "callresult": "SteamInventoryEligiblePromoItemDefIDs_t", - "methodname": "RequestEligiblePromoItemDefinitionsIDs", - "methodname_flat": "SteamAPI_ISteamInventory_RequestEligiblePromoItemDefinitionsIDs", - "params": [ - { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetEligiblePromoItemDefinitionIDs", - "methodname_flat": "SteamAPI_ISteamInventory_GetEligiblePromoItemDefinitionIDs", - "params": [ - { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { - "desc": "List of item definition IDs", - "out_array_count": "punItemDefIDsArraySize", - "paramname": "pItemDefIDs", - "paramtype": "SteamItemDef_t *" - }, - { - "desc": "Size of array is passed in and actual size used is returned in this param", - "paramname": "punItemDefIDsArraySize", - "paramtype": "uint32 *" - } - ], - "returntype": "bool" - }, - { - "callresult": "SteamInventoryStartPurchaseResult_t", - "methodname": "StartPurchase", - "methodname_flat": "SteamAPI_ISteamInventory_StartPurchase", - "params": [ - { - "array_count": "unArrayLength", - "paramname": "pArrayItemDefs", - "paramtype": "const SteamItemDef_t *" - }, - { - "array_count": "unArrayLength", - "paramname": "punArrayQuantity", - "paramtype": "const uint32 *" - }, - { "paramname":"unArrayLength", "paramtype":"uint32" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "SteamInventoryRequestPricesResult_t", - "methodname": "RequestPrices", - "methodname_flat": "SteamAPI_ISteamInventory_RequestPrices", - "params": [], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetNumItemsWithPrices", - "methodname_flat": "SteamAPI_ISteamInventory_GetNumItemsWithPrices", - "params": [], - "returntype": "uint32" - }, - { - "methodname": "GetItemsWithPrices", - "methodname_flat": "SteamAPI_ISteamInventory_GetItemsWithPrices", - "params": [ - { - "array_count": "unArrayLength", - "desc": "Items with prices", - "out_array_count": "pArrayItemDefs", - "paramname": "pArrayItemDefs", - "paramtype": "SteamItemDef_t *" - }, - { - "array_count": "unArrayLength", - "desc": "List of prices for the given item defs", - "out_array_count": "pPrices", - "paramname": "pCurrentPrices", - "paramtype": "uint64 *" - }, - { - "array_count": "unArrayLength", - "desc": "List of prices for the given item defs", - "out_array_count": "pPrices", - "paramname": "pBasePrices", - "paramtype": "uint64 *" - }, - { "paramname":"unArrayLength", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "GetItemPrice", - "methodname_flat": "SteamAPI_ISteamInventory_GetItemPrice", - "params": [ - { "paramname":"iDefinition", "paramtype":"SteamItemDef_t" }, - { "paramname":"pCurrentPrice", "paramtype":"uint64 *" }, - { "paramname":"pBasePrice", "paramtype":"uint64 *" } - ], - "returntype": "bool" - }, - { - "methodname": "StartUpdateProperties", - "methodname_flat": "SteamAPI_ISteamInventory_StartUpdateProperties", - "params": [], - "returntype": "SteamInventoryUpdateHandle_t" - }, - { - "methodname": "RemoveProperty", - "methodname_flat": "SteamAPI_ISteamInventory_RemoveProperty", - "params": [ - { "paramname":"handle", "paramtype":"SteamInventoryUpdateHandle_t" }, - { "paramname":"nItemID", "paramtype":"SteamItemInstanceID_t" }, - { "paramname":"pchPropertyName", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetProperty", - "methodname_flat": "SteamAPI_ISteamInventory_SetPropertyString", - "params": [ - { "paramname":"handle", "paramtype":"SteamInventoryUpdateHandle_t" }, - { "paramname":"nItemID", "paramtype":"SteamItemInstanceID_t" }, - { "paramname":"pchPropertyName", "paramtype":"const char *" }, - { "paramname":"pchPropertyValue", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetProperty", - "methodname_flat": "SteamAPI_ISteamInventory_SetPropertyBool", - "params": [ - { "paramname":"handle", "paramtype":"SteamInventoryUpdateHandle_t" }, - { "paramname":"nItemID", "paramtype":"SteamItemInstanceID_t" }, - { "paramname":"pchPropertyName", "paramtype":"const char *" }, - { "paramname":"bValue", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "SetProperty", - "methodname_flat": "SteamAPI_ISteamInventory_SetPropertyInt64", - "params": [ - { "paramname":"handle", "paramtype":"SteamInventoryUpdateHandle_t" }, - { "paramname":"nItemID", "paramtype":"SteamItemInstanceID_t" }, - { "paramname":"pchPropertyName", "paramtype":"const char *" }, - { "paramname":"nValue", "paramtype":"int64" } - ], - "returntype": "bool" - }, - { - "methodname": "SetProperty", - "methodname_flat": "SteamAPI_ISteamInventory_SetPropertyFloat", - "params": [ - { "paramname":"handle", "paramtype":"SteamInventoryUpdateHandle_t" }, - { "paramname":"nItemID", "paramtype":"SteamItemInstanceID_t" }, - { "paramname":"pchPropertyName", "paramtype":"const char *" }, - { "paramname":"flValue", "paramtype":"float" } - ], - "returntype": "bool" - }, - { - "methodname": "SubmitUpdateProperties", - "methodname_flat": "SteamAPI_ISteamInventory_SubmitUpdateProperties", - "params": [ - { "paramname":"handle", "paramtype":"SteamInventoryUpdateHandle_t" }, - { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" } - ], - "returntype": "bool" - }, - { - "desc": "Look up the given token and return a pseudo-Inventory item.", - "methodname": "InspectItem", - "methodname_flat": "SteamAPI_ISteamInventory_InspectItem", - "params": [ - { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, - { "paramname":"pchItemToken", "paramtype":"const char *" } - ], - "returntype": "bool" - } - ], - "version_string": "STEAMINVENTORY_INTERFACE_V003" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamVideo", - "name_flat": "SteamAPI_SteamVideo_v002" - } - ], - "classname": "ISteamVideo", - "fields": [], - "methods": [ - { - "methodname": "GetVideoURL", - "methodname_flat": "SteamAPI_ISteamVideo_GetVideoURL", - "params": [ - { "paramname":"unVideoAppID", "paramtype":"AppId_t" } - ], - "returntype": "void" - }, - { - "methodname": "IsBroadcasting", - "methodname_flat": "SteamAPI_ISteamVideo_IsBroadcasting", - "params": [ - { "paramname":"pnNumViewers", "paramtype":"int *" } - ], - "returntype": "bool" - }, - { - "callback": "GetOPFSettingsResult_t", - "methodname": "GetOPFSettings", - "methodname_flat": "SteamAPI_ISteamVideo_GetOPFSettings", - "params": [ - { "paramname":"unVideoAppID", "paramtype":"AppId_t" } - ], - "returntype": "void" - }, - { - "methodname": "GetOPFStringForApp", - "methodname_flat": "SteamAPI_ISteamVideo_GetOPFStringForApp", - "params": [ - { "paramname":"unVideoAppID", "paramtype":"AppId_t" }, - { "paramname":"pchBuffer", "paramtype":"char *" }, - { "paramname":"pnBufferSize", "paramtype":"int32 *" } - ], - "returntype": "bool" - } - ], - "version_string": "STEAMVIDEO_INTERFACE_V002" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamParentalSettings", - "name_flat": "SteamAPI_SteamParentalSettings_v001" - } - ], - "classname": "ISteamParentalSettings", - "fields": [], - "methods": [ - { - "methodname": "BIsParentalLockEnabled", - "methodname_flat": "SteamAPI_ISteamParentalSettings_BIsParentalLockEnabled", - "params": [], - "returntype": "bool" - }, - { - "methodname": "BIsParentalLockLocked", - "methodname_flat": "SteamAPI_ISteamParentalSettings_BIsParentalLockLocked", - "params": [], - "returntype": "bool" - }, - { - "methodname": "BIsAppBlocked", - "methodname_flat": "SteamAPI_ISteamParentalSettings_BIsAppBlocked", - "params": [ - { "paramname":"nAppID", "paramtype":"AppId_t" } - ], - "returntype": "bool" - }, - { - "methodname": "BIsAppInBlockList", - "methodname_flat": "SteamAPI_ISteamParentalSettings_BIsAppInBlockList", - "params": [ - { "paramname":"nAppID", "paramtype":"AppId_t" } - ], - "returntype": "bool" - }, - { - "methodname": "BIsFeatureBlocked", - "methodname_flat": "SteamAPI_ISteamParentalSettings_BIsFeatureBlocked", - "params": [ - { "paramname":"eFeature", "paramtype":"EParentalFeature" } - ], - "returntype": "bool" - }, - { - "methodname": "BIsFeatureInBlockList", - "methodname_flat": "SteamAPI_ISteamParentalSettings_BIsFeatureInBlockList", - "params": [ - { "paramname":"eFeature", "paramtype":"EParentalFeature" } - ], - "returntype": "bool" - } - ], - "version_string": "STEAMPARENTALSETTINGS_INTERFACE_VERSION001" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamRemotePlay", - "name_flat": "SteamAPI_SteamRemotePlay_v001" - } - ], - "classname": "ISteamRemotePlay", - "fields": [], - "methods": [ - { - "methodname": "GetSessionCount", - "methodname_flat": "SteamAPI_ISteamRemotePlay_GetSessionCount", - "params": [], - "returntype": "uint32" - }, - { - "methodname": "GetSessionID", - "methodname_flat": "SteamAPI_ISteamRemotePlay_GetSessionID", - "params": [ - { "paramname":"iSessionIndex", "paramtype":"int" } - ], - "returntype": "RemotePlaySessionID_t" - }, - { - "methodname": "GetSessionSteamID", - "methodname_flat": "SteamAPI_ISteamRemotePlay_GetSessionSteamID", - "params": [ - { "paramname":"unSessionID", "paramtype":"RemotePlaySessionID_t" } - ], - "returntype": "CSteamID", - "returntype_flat": "uint64_steamid" - }, - { - "methodname": "GetSessionClientName", - "methodname_flat": "SteamAPI_ISteamRemotePlay_GetSessionClientName", - "params": [ - { "paramname":"unSessionID", "paramtype":"RemotePlaySessionID_t" } - ], - "returntype": "const char *" - }, - { - "methodname": "GetSessionClientFormFactor", - "methodname_flat": "SteamAPI_ISteamRemotePlay_GetSessionClientFormFactor", - "params": [ - { "paramname":"unSessionID", "paramtype":"RemotePlaySessionID_t" } - ], - "returntype": "ESteamDeviceFormFactor" - }, - { - "methodname": "BGetSessionClientResolution", - "methodname_flat": "SteamAPI_ISteamRemotePlay_BGetSessionClientResolution", - "params": [ - { "paramname":"unSessionID", "paramtype":"RemotePlaySessionID_t" }, - { "paramname":"pnResolutionX", "paramtype":"int *" }, - { "paramname":"pnResolutionY", "paramtype":"int *" } - ], - "returntype": "bool" - }, - { - "methodname": "BSendRemotePlayTogetherInvite", - "methodname_flat": "SteamAPI_ISteamRemotePlay_BSendRemotePlayTogetherInvite", - "params": [ - { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "bool" - } - ], - "version_string": "STEAMREMOTEPLAY_INTERFACE_VERSION001" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamNetworkingMessages_SteamAPI", - "name_flat": "SteamAPI_SteamNetworkingMessages_SteamAPI_v002" - }, - { - "kind": "gameserver", - "name": "SteamGameServerNetworkingMessages_SteamAPI", - "name_flat": "SteamAPI_SteamGameServerNetworkingMessages_SteamAPI_v002" - } - ], - "classname": "ISteamNetworkingMessages", - "fields": [], - "methods": [ - { - "methodname": "SendMessageToUser", - "methodname_flat": "SteamAPI_ISteamNetworkingMessages_SendMessageToUser", - "params": [ - { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" }, - { "paramname":"pubData", "paramtype":"const void *" }, - { "paramname":"cubData", "paramtype":"uint32" }, - { "paramname":"nSendFlags", "paramtype":"int" }, - { "paramname":"nRemoteChannel", "paramtype":"int" } - ], - "returntype": "EResult" - }, - { - "methodname": "ReceiveMessagesOnChannel", - "methodname_flat": "SteamAPI_ISteamNetworkingMessages_ReceiveMessagesOnChannel", - "params": [ - { "paramname":"nLocalChannel", "paramtype":"int" }, - { "paramname":"ppOutMessages", "paramtype":"SteamNetworkingMessage_t **" }, - { "paramname":"nMaxMessages", "paramtype":"int" } - ], - "returntype": "int" - }, - { - "methodname": "AcceptSessionWithUser", - "methodname_flat": "SteamAPI_ISteamNetworkingMessages_AcceptSessionWithUser", - "params": [ - { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" } - ], - "returntype": "bool" - }, - { - "methodname": "CloseSessionWithUser", - "methodname_flat": "SteamAPI_ISteamNetworkingMessages_CloseSessionWithUser", - "params": [ - { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" } - ], - "returntype": "bool" - }, - { - "methodname": "CloseChannelWithUser", - "methodname_flat": "SteamAPI_ISteamNetworkingMessages_CloseChannelWithUser", - "params": [ - { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" }, - { "paramname":"nLocalChannel", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "methodname": "GetSessionConnectionInfo", - "methodname_flat": "SteamAPI_ISteamNetworkingMessages_GetSessionConnectionInfo", - "params": [ - { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" }, - { "paramname":"pConnectionInfo", "paramtype":"SteamNetConnectionInfo_t *" }, - { "paramname":"pQuickStatus", "paramtype":"SteamNetworkingQuickConnectionStatus *" } - ], - "returntype": "ESteamNetworkingConnectionState" - } - ], - "version_string": "SteamNetworkingMessages002" - }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamNetworkingSockets_SteamAPI", - "name_flat": "SteamAPI_SteamNetworkingSockets_SteamAPI_v009" - }, - { - "kind": "gameserver", - "name": "SteamGameServerNetworkingSockets_SteamAPI", - "name_flat": "SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v009" - } - ], - "classname": "ISteamNetworkingSockets", - "fields": [], - "methods": [ - { - "methodname": "CreateListenSocketIP", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreateListenSocketIP", - "params": [ - { "paramname":"localAddress", "paramtype":"const SteamNetworkingIPAddr &" }, - { "paramname":"nOptions", "paramtype":"int" }, - { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } - ], - "returntype": "HSteamListenSocket" - }, - { - "methodname": "ConnectByIPAddress", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ConnectByIPAddress", - "params": [ - { "paramname":"address", "paramtype":"const SteamNetworkingIPAddr &" }, - { "paramname":"nOptions", "paramtype":"int" }, - { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } - ], - "returntype": "HSteamNetConnection" - }, - { - "methodname": "CreateListenSocketP2P", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreateListenSocketP2P", - "params": [ - { "paramname":"nLocalVirtualPort", "paramtype":"int" }, - { "paramname":"nOptions", "paramtype":"int" }, - { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } - ], - "returntype": "HSteamListenSocket" - }, - { - "methodname": "ConnectP2P", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ConnectP2P", - "params": [ - { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" }, - { "paramname":"nRemoteVirtualPort", "paramtype":"int" }, - { "paramname":"nOptions", "paramtype":"int" }, - { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } - ], - "returntype": "HSteamNetConnection" - }, - { - "methodname": "AcceptConnection", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_AcceptConnection", - "params": [ - { "paramname":"hConn", "paramtype":"HSteamNetConnection" } - ], - "returntype": "EResult" - }, - { - "methodname": "CloseConnection", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CloseConnection", - "params": [ - { "paramname":"hPeer", "paramtype":"HSteamNetConnection" }, - { "paramname":"nReason", "paramtype":"int" }, - { "paramname":"pszDebug", "paramtype":"const char *" }, - { "paramname":"bEnableLinger", "paramtype":"bool" } - ], - "returntype": "bool" - }, - { - "methodname": "CloseListenSocket", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CloseListenSocket", - "params": [ - { "paramname":"hSocket", "paramtype":"HSteamListenSocket" } - ], - "returntype": "bool" - }, - { - "methodname": "SetConnectionUserData", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_SetConnectionUserData", - "params": [ - { "paramname":"hPeer", "paramtype":"HSteamNetConnection" }, - { "paramname":"nUserData", "paramtype":"int64" } - ], - "returntype": "bool" - }, - { - "methodname": "GetConnectionUserData", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetConnectionUserData", - "params": [ - { "paramname":"hPeer", "paramtype":"HSteamNetConnection" } - ], - "returntype": "int64" - }, - { - "methodname": "SetConnectionName", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_SetConnectionName", - "params": [ - { "paramname":"hPeer", "paramtype":"HSteamNetConnection" }, - { "paramname":"pszName", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "GetConnectionName", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetConnectionName", - "params": [ - { "paramname":"hPeer", "paramtype":"HSteamNetConnection" }, - { "paramname":"pszName", "paramtype":"char *" }, - { "paramname":"nMaxLen", "paramtype":"int" } - ], - "returntype": "bool" - }, - { - "methodname": "SendMessageToConnection", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_SendMessageToConnection", - "params": [ - { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, - { "paramname":"pData", "paramtype":"const void *" }, - { "paramname":"cbData", "paramtype":"uint32" }, - { "paramname":"nSendFlags", "paramtype":"int" }, - { "paramname":"pOutMessageNumber", "paramtype":"int64 *" } - ], - "returntype": "EResult" - }, - { - "methodname": "SendMessages", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_SendMessages", - "params": [ - { "paramname":"nMessages", "paramtype":"int" }, - { "paramname":"pMessages", "paramtype":"SteamNetworkingMessage_t *const *" }, - { "paramname":"pOutMessageNumberOrResult", "paramtype":"int64 *" } - ], - "returntype": "void" - }, - { - "methodname": "FlushMessagesOnConnection", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_FlushMessagesOnConnection", - "params": [ - { "paramname":"hConn", "paramtype":"HSteamNetConnection" } - ], - "returntype": "EResult" - }, - { - "methodname": "ReceiveMessagesOnConnection", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ReceiveMessagesOnConnection", - "params": [ - { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, - { "paramname":"ppOutMessages", "paramtype":"SteamNetworkingMessage_t **" }, - { "paramname":"nMaxMessages", "paramtype":"int" } - ], - "returntype": "int" - }, - { - "methodname": "GetConnectionInfo", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetConnectionInfo", - "params": [ - { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, - { "paramname":"pInfo", "paramtype":"SteamNetConnectionInfo_t *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetQuickConnectionStatus", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetQuickConnectionStatus", - "params": [ - { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, - { "paramname":"pStats", "paramtype":"SteamNetworkingQuickConnectionStatus *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetDetailedConnectionStatus", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetDetailedConnectionStatus", - "params": [ - { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, - { "paramname":"pszBuf", "paramtype":"char *" }, - { "paramname":"cbBuf", "paramtype":"int" } - ], - "returntype": "int" - }, - { - "methodname": "GetListenSocketAddress", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetListenSocketAddress", - "params": [ - { "paramname":"hSocket", "paramtype":"HSteamListenSocket" }, - { "paramname":"address", "paramtype":"SteamNetworkingIPAddr *" } - ], - "returntype": "bool" - }, - { - "methodname": "CreateSocketPair", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreateSocketPair", - "params": [ - { "paramname":"pOutConnection1", "paramtype":"HSteamNetConnection *" }, - { "paramname":"pOutConnection2", "paramtype":"HSteamNetConnection *" }, - { "paramname":"bUseNetworkLoopback", "paramtype":"bool" }, - { "paramname":"pIdentity1", "paramtype":"const SteamNetworkingIdentity *" }, - { "paramname":"pIdentity2", "paramtype":"const SteamNetworkingIdentity *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetIdentity", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetIdentity", - "params": [ - { "paramname":"pIdentity", "paramtype":"SteamNetworkingIdentity *" } - ], - "returntype": "bool" - }, - { - "methodname": "InitAuthentication", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_InitAuthentication", - "params": [], - "returntype": "ESteamNetworkingAvailability" - }, - { - "methodname": "GetAuthenticationStatus", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetAuthenticationStatus", - "params": [ - { "paramname":"pDetails", "paramtype":"SteamNetAuthenticationStatus_t *" } - ], - "returntype": "ESteamNetworkingAvailability" - }, - { - "methodname": "CreatePollGroup", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreatePollGroup", - "params": [], - "returntype": "HSteamNetPollGroup" - }, - { - "methodname": "DestroyPollGroup", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_DestroyPollGroup", - "params": [ - { "paramname":"hPollGroup", "paramtype":"HSteamNetPollGroup" } - ], - "returntype": "bool" - }, - { - "methodname": "SetConnectionPollGroup", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_SetConnectionPollGroup", - "params": [ - { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, - { "paramname":"hPollGroup", "paramtype":"HSteamNetPollGroup" } - ], - "returntype": "bool" - }, - { - "methodname": "ReceiveMessagesOnPollGroup", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ReceiveMessagesOnPollGroup", - "params": [ - { "paramname":"hPollGroup", "paramtype":"HSteamNetPollGroup" }, - { "paramname":"ppOutMessages", "paramtype":"SteamNetworkingMessage_t **" }, - { "paramname":"nMaxMessages", "paramtype":"int" } - ], - "returntype": "int" - }, - { - "methodname": "ReceivedRelayAuthTicket", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ReceivedRelayAuthTicket", - "params": [ - { "paramname":"pvTicket", "paramtype":"const void *" }, - { "paramname":"cbTicket", "paramtype":"int" }, - { "paramname":"pOutParsedTicket", "paramtype":"SteamDatagramRelayAuthTicket *" } - ], - "returntype": "bool" - }, - { - "methodname": "FindRelayAuthTicketForServer", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_FindRelayAuthTicketForServer", - "params": [ - { "paramname":"identityGameServer", "paramtype":"const SteamNetworkingIdentity &" }, - { "paramname":"nRemoteVirtualPort", "paramtype":"int" }, - { "paramname":"pOutParsedTicket", "paramtype":"SteamDatagramRelayAuthTicket *" } - ], - "returntype": "int" - }, - { - "methodname": "ConnectToHostedDedicatedServer", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ConnectToHostedDedicatedServer", - "params": [ - { "paramname":"identityTarget", "paramtype":"const SteamNetworkingIdentity &" }, - { "paramname":"nRemoteVirtualPort", "paramtype":"int" }, - { "paramname":"nOptions", "paramtype":"int" }, - { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } - ], - "returntype": "HSteamNetConnection" - }, - { - "methodname": "GetHostedDedicatedServerPort", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerPort", - "params": [], - "returntype": "uint16" - }, - { - "methodname": "GetHostedDedicatedServerPOPID", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerPOPID", - "params": [], - "returntype": "SteamNetworkingPOPID" - }, - { - "methodname": "GetHostedDedicatedServerAddress", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerAddress", - "params": [ - { "paramname":"pRouting", "paramtype":"SteamDatagramHostedAddress *" } - ], - "returntype": "EResult" - }, - { - "methodname": "CreateHostedDedicatedServerListenSocket", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreateHostedDedicatedServerListenSocket", - "params": [ - { "paramname":"nLocalVirtualPort", "paramtype":"int" }, - { "paramname":"nOptions", "paramtype":"int" }, - { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } - ], - "returntype": "HSteamListenSocket" - }, - { - "methodname": "GetGameCoordinatorServerLogin", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetGameCoordinatorServerLogin", - "params": [ - { "paramname":"pLoginInfo", "paramtype":"SteamDatagramGameCoordinatorServerLogin *" }, - { "paramname":"pcbSignedBlob", "paramtype":"int *" }, - { "paramname":"pBlob", "paramtype":"void *" } - ], - "returntype": "EResult" - }, - { - "methodname": "ConnectP2PCustomSignaling", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ConnectP2PCustomSignaling", - "params": [ - { "paramname":"pSignaling", "paramtype":"ISteamNetworkingConnectionSignaling *" }, - { "paramname":"pPeerIdentity", "paramtype":"const SteamNetworkingIdentity *" }, - { "paramname":"nRemoteVirtualPort", "paramtype":"int" }, - { "paramname":"nOptions", "paramtype":"int" }, - { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } - ], - "returntype": "HSteamNetConnection" - }, - { - "methodname": "ReceivedP2PCustomSignal", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ReceivedP2PCustomSignal", - "params": [ - { "paramname":"pMsg", "paramtype":"const void *" }, - { "paramname":"cbMsg", "paramtype":"int" }, - { "paramname":"pContext", "paramtype":"ISteamNetworkingSignalingRecvContext *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetCertificateRequest", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetCertificateRequest", - "params": [ - { "paramname":"pcbBlob", "paramtype":"int *" }, - { "paramname":"pBlob", "paramtype":"void *" }, - { "paramname":"errMsg", "paramtype":"SteamNetworkingErrMsg &" } - ], - "returntype": "bool" - }, - { - "methodname": "SetCertificate", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_SetCertificate", - "params": [ - { "paramname":"pCertificate", "paramtype":"const void *" }, - { "paramname":"cbCertificate", "paramtype":"int" }, - { "paramname":"errMsg", "paramtype":"SteamNetworkingErrMsg &" } - ], - "returntype": "bool" - }, - { - "methodname": "RunCallbacks", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_RunCallbacks", - "params": [], - "returntype": "void" - } - ], - "version_string": "SteamNetworkingSockets009" - }, - { - "accessors": [ - { - "kind": "global", - "name": "SteamNetworkingUtils_SteamAPI", - "name_flat": "SteamAPI_SteamNetworkingUtils_SteamAPI_v003" - } - ], - "classname": "ISteamNetworkingUtils", - "fields": [], - "methods": [ - { - "methodname": "AllocateMessage", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_AllocateMessage", - "params": [ - { "paramname":"cbAllocateBuffer", "paramtype":"int" } - ], - "returntype": "SteamNetworkingMessage_t *" - }, - { - "methodname": "InitRelayNetworkAccess", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_InitRelayNetworkAccess", - "params": [], - "returntype": "void" - }, - { - "methodname": "GetRelayNetworkStatus", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetRelayNetworkStatus", - "params": [ - { "paramname":"pDetails", "paramtype":"SteamRelayNetworkStatus_t *" } - ], - "returntype": "ESteamNetworkingAvailability" - }, - { - "methodname": "GetLocalPingLocation", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetLocalPingLocation", - "params": [ - { "paramname":"result", "paramtype":"SteamNetworkPingLocation_t &" } - ], - "returntype": "float" - }, - { - "methodname": "EstimatePingTimeBetweenTwoLocations", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_EstimatePingTimeBetweenTwoLocations", - "params": [ - { "paramname":"location1", "paramtype":"const SteamNetworkPingLocation_t &" }, - { "paramname":"location2", "paramtype":"const SteamNetworkPingLocation_t &" } - ], - "returntype": "int" - }, - { - "methodname": "EstimatePingTimeFromLocalHost", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_EstimatePingTimeFromLocalHost", - "params": [ - { "paramname":"remoteLocation", "paramtype":"const SteamNetworkPingLocation_t &" } - ], - "returntype": "int" - }, - { - "methodname": "ConvertPingLocationToString", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_ConvertPingLocationToString", - "params": [ - { "paramname":"location", "paramtype":"const SteamNetworkPingLocation_t &" }, - { "paramname":"pszBuf", "paramtype":"char *" }, - { "paramname":"cchBufSize", "paramtype":"int" } - ], - "returntype": "void" - }, - { - "methodname": "ParsePingLocationString", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_ParsePingLocationString", - "params": [ - { "paramname":"pszString", "paramtype":"const char *" }, - { "paramname":"result", "paramtype":"SteamNetworkPingLocation_t &" } - ], - "returntype": "bool" - }, - { - "methodname": "CheckPingDataUpToDate", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_CheckPingDataUpToDate", - "params": [ - { "paramname":"flMaxAgeSeconds", "paramtype":"float" } - ], - "returntype": "bool" - }, - { - "methodname": "GetPingToDataCenter", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetPingToDataCenter", - "params": [ - { "paramname":"popID", "paramtype":"SteamNetworkingPOPID" }, - { "paramname":"pViaRelayPoP", "paramtype":"SteamNetworkingPOPID *" } - ], - "returntype": "int" - }, - { - "methodname": "GetDirectPingToPOP", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetDirectPingToPOP", - "params": [ - { "paramname":"popID", "paramtype":"SteamNetworkingPOPID" } - ], - "returntype": "int" - }, - { - "methodname": "GetPOPCount", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetPOPCount", - "params": [], - "returntype": "int" - }, - { - "methodname": "GetPOPList", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetPOPList", - "params": [ - { "paramname":"list", "paramtype":"SteamNetworkingPOPID *" }, - { "paramname":"nListSz", "paramtype":"int" } - ], - "returntype": "int" - }, - { - "methodname": "GetLocalTimestamp", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetLocalTimestamp", - "params": [], - "returntype": "SteamNetworkingMicroseconds" - }, - { - "methodname": "SetDebugOutputFunction", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetDebugOutputFunction", - "params": [ - { "paramname":"eDetailLevel", "paramtype":"ESteamNetworkingSocketsDebugOutputType" }, - { "paramname":"pfnFunc", "paramtype":"FSteamNetworkingSocketsDebugOutput" } - ], - "returntype": "void" - }, - { - "methodname": "SetGlobalConfigValueInt32", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueInt32", - "params": [ - { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, - { "paramname":"val", "paramtype":"int32" } - ], - "returntype": "bool" - }, - { - "methodname": "SetGlobalConfigValueFloat", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueFloat", - "params": [ - { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, - { "paramname":"val", "paramtype":"float" } - ], - "returntype": "bool" - }, - { - "methodname": "SetGlobalConfigValueString", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueString", - "params": [ - { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, - { "paramname":"val", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetGlobalConfigValuePtr", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValuePtr", - "params": [ - { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, - { "paramname":"val", "paramtype":"void *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetConnectionConfigValueInt32", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueInt32", - "params": [ - { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, - { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, - { "paramname":"val", "paramtype":"int32" } - ], - "returntype": "bool" - }, - { - "methodname": "SetConnectionConfigValueFloat", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueFloat", - "params": [ - { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, - { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, - { "paramname":"val", "paramtype":"float" } - ], - "returntype": "bool" - }, - { - "methodname": "SetConnectionConfigValueString", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueString", - "params": [ - { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, - { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, - { "paramname":"val", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetGlobalCallback_SteamNetConnectionStatusChanged", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamNetConnectionStatusChanged", - "params": [ - { "paramname":"fnCallback", "paramtype":"FnSteamNetConnectionStatusChanged" } - ], - "returntype": "bool" - }, - { - "methodname": "SetGlobalCallback_SteamNetAuthenticationStatusChanged", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamNetAuthenticationStatusChanged", - "params": [ - { "paramname":"fnCallback", "paramtype":"FnSteamNetAuthenticationStatusChanged" } - ], - "returntype": "bool" - }, - { - "methodname": "SetGlobalCallback_SteamRelayNetworkStatusChanged", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamRelayNetworkStatusChanged", - "params": [ - { "paramname":"fnCallback", "paramtype":"FnSteamRelayNetworkStatusChanged" } - ], - "returntype": "bool" - }, - { - "methodname": "SetGlobalCallback_MessagesSessionRequest", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_MessagesSessionRequest", - "params": [ - { "paramname":"fnCallback", "paramtype":"FnSteamNetworkingMessagesSessionRequest" } - ], - "returntype": "bool" - }, - { - "methodname": "SetGlobalCallback_MessagesSessionFailed", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_MessagesSessionFailed", - "params": [ - { "paramname":"fnCallback", "paramtype":"FnSteamNetworkingMessagesSessionFailed" } - ], - "returntype": "bool" - }, - { - "methodname": "SetConfigValue", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetConfigValue", - "params": [ - { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, - { "paramname":"eScopeType", "paramtype":"ESteamNetworkingConfigScope" }, - { "paramname":"scopeObj", "paramtype":"intptr_t" }, - { "paramname":"eDataType", "paramtype":"ESteamNetworkingConfigDataType" }, - { "paramname":"pArg", "paramtype":"const void *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetConfigValueStruct", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetConfigValueStruct", - "params": [ - { "paramname":"opt", "paramtype":"const SteamNetworkingConfigValue_t &" }, - { "paramname":"eScopeType", "paramtype":"ESteamNetworkingConfigScope" }, - { "paramname":"scopeObj", "paramtype":"intptr_t" } - ], - "returntype": "bool" - }, - { - "methodname": "GetConfigValue", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetConfigValue", - "params": [ - { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, - { "paramname":"eScopeType", "paramtype":"ESteamNetworkingConfigScope" }, - { "paramname":"scopeObj", "paramtype":"intptr_t" }, - { "paramname":"pOutDataType", "paramtype":"ESteamNetworkingConfigDataType *" }, - { "paramname":"pResult", "paramtype":"void *" }, - { "paramname":"cbResult", "paramtype":"size_t *" } - ], - "returntype": "ESteamNetworkingGetConfigValueResult" - }, - { - "methodname": "GetConfigValueInfo", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetConfigValueInfo", - "params": [ - { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, - { "paramname":"pOutName", "paramtype":"const char **" }, - { "paramname":"pOutDataType", "paramtype":"ESteamNetworkingConfigDataType *" }, - { "paramname":"pOutScope", "paramtype":"ESteamNetworkingConfigScope *" }, - { "paramname":"pOutNextValue", "paramtype":"ESteamNetworkingConfigValue *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetFirstConfigValue", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetFirstConfigValue", - "params": [], - "returntype": "ESteamNetworkingConfigValue" - }, - { - "methodname": "SteamNetworkingIPAddr_ToString", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ToString", - "params": [ - { "paramname":"addr", "paramtype":"const SteamNetworkingIPAddr &" }, - { "paramname":"buf", "paramtype":"char *" }, - { "paramname":"cbBuf", "paramtype":"uint32" }, - { "paramname":"bWithPort", "paramtype":"bool" } - ], - "returntype": "void" - }, - { - "methodname": "SteamNetworkingIPAddr_ParseString", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ParseString", - "params": [ - { "paramname":"pAddr", "paramtype":"SteamNetworkingIPAddr *" }, - { "paramname":"pszStr", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "SteamNetworkingIdentity_ToString", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ToString", - "params": [ - { "paramname":"identity", "paramtype":"const SteamNetworkingIdentity &" }, - { "paramname":"buf", "paramtype":"char *" }, - { "paramname":"cbBuf", "paramtype":"uint32" } - ], - "returntype": "void" - }, - { - "methodname": "SteamNetworkingIdentity_ParseString", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ParseString", - "params": [ - { "paramname":"pIdentity", "paramtype":"SteamNetworkingIdentity *" }, - { "paramname":"pszStr", "paramtype":"const char *" } - ], - "returntype": "bool" - } - ], - "version_string": "SteamNetworkingUtils003" - }, - { - "accessors": [ - { - "kind": "gameserver", - "name": "SteamGameServer", - "name_flat": "SteamAPI_SteamGameServer_v013" - } - ], - "classname": "ISteamGameServer", - "fields": [], - "methods": [ - { - "methodname": "SetProduct", - "methodname_flat": "SteamAPI_ISteamGameServer_SetProduct", - "params": [ - { "paramname":"pszProduct", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "SetGameDescription", - "methodname_flat": "SteamAPI_ISteamGameServer_SetGameDescription", - "params": [ - { "paramname":"pszGameDescription", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "SetModDir", - "methodname_flat": "SteamAPI_ISteamGameServer_SetModDir", - "params": [ - { "paramname":"pszModDir", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "SetDedicatedServer", - "methodname_flat": "SteamAPI_ISteamGameServer_SetDedicatedServer", - "params": [ - { "paramname":"bDedicated", "paramtype":"bool" } - ], - "returntype": "void" - }, - { - "methodname": "LogOn", - "methodname_flat": "SteamAPI_ISteamGameServer_LogOn", - "params": [ - { "paramname":"pszToken", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "LogOnAnonymous", - "methodname_flat": "SteamAPI_ISteamGameServer_LogOnAnonymous", - "params": [], - "returntype": "void" - }, - { - "methodname": "LogOff", - "methodname_flat": "SteamAPI_ISteamGameServer_LogOff", - "params": [], - "returntype": "void" - }, - { - "methodname": "BLoggedOn", - "methodname_flat": "SteamAPI_ISteamGameServer_BLoggedOn", - "params": [], - "returntype": "bool" - }, - { - "methodname": "BSecure", - "methodname_flat": "SteamAPI_ISteamGameServer_BSecure", - "params": [], - "returntype": "bool" - }, - { - "methodname": "GetSteamID", - "methodname_flat": "SteamAPI_ISteamGameServer_GetSteamID", - "params": [], - "returntype": "CSteamID", - "returntype_flat": "uint64_steamid" - }, - { - "methodname": "WasRestartRequested", - "methodname_flat": "SteamAPI_ISteamGameServer_WasRestartRequested", - "params": [], - "returntype": "bool" - }, - { - "methodname": "SetMaxPlayerCount", - "methodname_flat": "SteamAPI_ISteamGameServer_SetMaxPlayerCount", - "params": [ - { "paramname":"cPlayersMax", "paramtype":"int" } - ], - "returntype": "void" - }, - { - "methodname": "SetBotPlayerCount", - "methodname_flat": "SteamAPI_ISteamGameServer_SetBotPlayerCount", - "params": [ - { "paramname":"cBotplayers", "paramtype":"int" } - ], - "returntype": "void" - }, - { - "methodname": "SetServerName", - "methodname_flat": "SteamAPI_ISteamGameServer_SetServerName", - "params": [ - { "paramname":"pszServerName", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "SetMapName", - "methodname_flat": "SteamAPI_ISteamGameServer_SetMapName", - "params": [ - { "paramname":"pszMapName", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "SetPasswordProtected", - "methodname_flat": "SteamAPI_ISteamGameServer_SetPasswordProtected", - "params": [ - { "paramname":"bPasswordProtected", "paramtype":"bool" } - ], - "returntype": "void" - }, - { - "methodname": "SetSpectatorPort", - "methodname_flat": "SteamAPI_ISteamGameServer_SetSpectatorPort", - "params": [ - { "paramname":"unSpectatorPort", "paramtype":"uint16" } - ], - "returntype": "void" - }, - { - "methodname": "SetSpectatorServerName", - "methodname_flat": "SteamAPI_ISteamGameServer_SetSpectatorServerName", - "params": [ - { "paramname":"pszSpectatorServerName", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "ClearAllKeyValues", - "methodname_flat": "SteamAPI_ISteamGameServer_ClearAllKeyValues", - "params": [], - "returntype": "void" - }, - { - "methodname": "SetKeyValue", - "methodname_flat": "SteamAPI_ISteamGameServer_SetKeyValue", - "params": [ - { "paramname":"pKey", "paramtype":"const char *" }, - { "paramname":"pValue", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "SetGameTags", - "methodname_flat": "SteamAPI_ISteamGameServer_SetGameTags", - "params": [ - { "paramname":"pchGameTags", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "SetGameData", - "methodname_flat": "SteamAPI_ISteamGameServer_SetGameData", - "params": [ - { "paramname":"pchGameData", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "SetRegion", - "methodname_flat": "SteamAPI_ISteamGameServer_SetRegion", - "params": [ - { "paramname":"pszRegion", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "SendUserConnectAndAuthenticate", - "methodname_flat": "SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate", - "params": [ - { "paramname":"unIPClient", "paramtype":"uint32" }, - { "paramname":"pvAuthBlob", "paramtype":"const void *" }, - { "paramname":"cubAuthBlobSize", "paramtype":"uint32" }, - { "paramname":"pSteamIDUser", "paramtype":"CSteamID *" } - ], - "returntype": "bool" - }, - { - "methodname": "CreateUnauthenticatedUserConnection", - "methodname_flat": "SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection", - "params": [], - "returntype": "CSteamID", - "returntype_flat": "uint64_steamid" - }, - { - "methodname": "SendUserDisconnect", - "methodname_flat": "SteamAPI_ISteamGameServer_SendUserDisconnect", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "void" - }, - { - "methodname": "BUpdateUserData", - "methodname_flat": "SteamAPI_ISteamGameServer_BUpdateUserData", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchPlayerName", "paramtype":"const char *" }, - { "paramname":"uScore", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "GetAuthSessionTicket", - "methodname_flat": "SteamAPI_ISteamGameServer_GetAuthSessionTicket", - "params": [ - { "paramname":"pTicket", "paramtype":"void *" }, - { "paramname":"cbMaxTicket", "paramtype":"int" }, - { "paramname":"pcbTicket", "paramtype":"uint32 *" } - ], - "returntype": "HAuthTicket" - }, - { - "methodname": "BeginAuthSession", - "methodname_flat": "SteamAPI_ISteamGameServer_BeginAuthSession", - "params": [ - { "paramname":"pAuthTicket", "paramtype":"const void *" }, - { "paramname":"cbAuthTicket", "paramtype":"int" }, - { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "EBeginAuthSessionResult" - }, - { - "methodname": "EndAuthSession", - "methodname_flat": "SteamAPI_ISteamGameServer_EndAuthSession", - "params": [ - { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "void" - }, - { - "methodname": "CancelAuthTicket", - "methodname_flat": "SteamAPI_ISteamGameServer_CancelAuthTicket", - "params": [ - { "paramname":"hAuthTicket", "paramtype":"HAuthTicket" } - ], - "returntype": "void" - }, - { - "methodname": "UserHasLicenseForApp", - "methodname_flat": "SteamAPI_ISteamGameServer_UserHasLicenseForApp", - "params": [ - { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"appID", "paramtype":"AppId_t" } - ], - "returntype": "EUserHasLicenseForAppResult" - }, - { - "methodname": "RequestUserGroupStatus", - "methodname_flat": "SteamAPI_ISteamGameServer_RequestUserGroupStatus", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"steamIDGroup", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "bool" - }, - { - "methodname": "GetGameplayStats", - "methodname_flat": "SteamAPI_ISteamGameServer_GetGameplayStats", - "params": [], - "returntype": "void" - }, - { - "callresult": "GSReputation_t", - "methodname": "GetServerReputation", - "methodname_flat": "SteamAPI_ISteamGameServer_GetServerReputation", - "params": [], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetPublicIP", - "methodname_flat": "SteamAPI_ISteamGameServer_GetPublicIP", - "params": [], - "returntype": "SteamIPAddress_t" - }, - { - "methodname": "HandleIncomingPacket", - "methodname_flat": "SteamAPI_ISteamGameServer_HandleIncomingPacket", - "params": [ - { "paramname":"pData", "paramtype":"const void *" }, - { "paramname":"cbData", "paramtype":"int" }, - { "paramname":"srcIP", "paramtype":"uint32" }, - { "paramname":"srcPort", "paramtype":"uint16" } - ], - "returntype": "bool" - }, - { - "methodname": "GetNextOutgoingPacket", - "methodname_flat": "SteamAPI_ISteamGameServer_GetNextOutgoingPacket", - "params": [ - { "paramname":"pOut", "paramtype":"void *" }, - { "paramname":"cbMaxOut", "paramtype":"int" }, - { "paramname":"pNetAdr", "paramtype":"uint32 *" }, - { "paramname":"pPort", "paramtype":"uint16 *" } - ], - "returntype": "int" - }, - { - "methodname": "EnableHeartbeats", - "methodname_flat": "SteamAPI_ISteamGameServer_EnableHeartbeats", - "params": [ - { "paramname":"bActive", "paramtype":"bool" } - ], - "returntype": "void" - }, - { - "methodname": "SetHeartbeatInterval", - "methodname_flat": "SteamAPI_ISteamGameServer_SetHeartbeatInterval", - "params": [ - { "paramname":"iHeartbeatInterval", "paramtype":"int" } - ], - "returntype": "void" - }, - { - "methodname": "ForceHeartbeat", - "methodname_flat": "SteamAPI_ISteamGameServer_ForceHeartbeat", - "params": [], - "returntype": "void" - }, - { - "callresult": "AssociateWithClanResult_t", - "methodname": "AssociateWithClan", - "methodname_flat": "SteamAPI_ISteamGameServer_AssociateWithClan", - "params": [ - { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "SteamAPICall_t" - }, - { - "callresult": "ComputeNewPlayerCompatibilityResult_t", - "methodname": "ComputeNewPlayerCompatibility", - "methodname_flat": "SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility", - "params": [ - { "paramname":"steamIDNewPlayer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "SteamAPICall_t" - } - ], - "version_string": "SteamGameServer013" - }, - { - "accessors": [ - { - "kind": "gameserver", - "name": "SteamGameServerStats", - "name_flat": "SteamAPI_SteamGameServerStats_v001" - } - ], - "classname": "ISteamGameServerStats", - "fields": [], - "methods": [ - { - "callresult": "GSStatsReceived_t", - "methodname": "RequestUserStats", - "methodname_flat": "SteamAPI_ISteamGameServerStats_RequestUserStats", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "SteamAPICall_t" - }, - { - "methodname": "GetUserStat", - "methodname_flat": "SteamAPI_ISteamGameServerStats_GetUserStatInt32", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"pData", "paramtype":"int32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetUserStat", - "methodname_flat": "SteamAPI_ISteamGameServerStats_GetUserStatFloat", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"pData", "paramtype":"float *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetUserAchievement", - "methodname_flat": "SteamAPI_ISteamGameServerStats_GetUserAchievement", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"pbAchieved", "paramtype":"bool *" } - ], - "returntype": "bool" - }, - { - "methodname": "SetUserStat", - "methodname_flat": "SteamAPI_ISteamGameServerStats_SetUserStatInt32", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"nData", "paramtype":"int32" } - ], - "returntype": "bool" - }, - { - "methodname": "SetUserStat", - "methodname_flat": "SteamAPI_ISteamGameServerStats_SetUserStatFloat", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"fData", "paramtype":"float" } - ], - "returntype": "bool" - }, - { - "methodname": "UpdateUserAvgRateStat", - "methodname_flat": "SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchName", "paramtype":"const char *" }, - { "paramname":"flCountThisSession", "paramtype":"float" }, - { "paramname":"dSessionLength", "paramtype":"double" } - ], - "returntype": "bool" - }, - { - "methodname": "SetUserAchievement", - "methodname_flat": "SteamAPI_ISteamGameServerStats_SetUserAchievement", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchName", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "ClearUserAchievement", - "methodname_flat": "SteamAPI_ISteamGameServerStats_ClearUserAchievement", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchName", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "callresult": "GSStatsStored_t", - "methodname": "StoreUserStats", - "methodname_flat": "SteamAPI_ISteamGameServerStats_StoreUserStats", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "SteamAPICall_t" - } - ], - "version_string": "SteamGameServerStats001" - } - ], - "structs": [ - { - "fields": [ - { "fieldname":"m_rgubIPv6", "fieldtype":"uint8 [16]" }, - { "fieldname":"m_eType", "fieldtype":"ESteamIPType" } - ], - "methods": [ - { - "methodname": "IsSet", - "methodname_flat": "SteamAPI_SteamIPAddress_t_IsSet", - "params": [], - "returntype": "bool" - } - ], - "struct": "SteamIPAddress_t" - }, - { - "fields": [ - { "fieldname":"m_gameID", "fieldtype":"CGameID" }, - { "fieldname":"m_unGameIP", "fieldtype":"uint32" }, - { "fieldname":"m_usGamePort", "fieldtype":"uint16" }, - { "fieldname":"m_usQueryPort", "fieldtype":"uint16" }, - { "fieldname":"m_steamIDLobby", "fieldtype":"CSteamID" } - ], - "struct": "FriendGameInfo_t" - }, - { - "fields": [ - { "fieldname":"m_szKey", "fieldtype":"char [256]" }, - { "fieldname":"m_szValue", "fieldtype":"char [256]" } - ], - "methods": [ - { - "methodname": "Construct", - "methodname_flat": "SteamAPI_MatchMakingKeyValuePair_t_Construct", - "params": [], - "returntype": "void" - } - ], - "struct": "MatchMakingKeyValuePair_t" - }, - { - "fields": [ - { - "fieldname": "m_usConnectionPort", - "fieldtype": "uint16", - "private": true - }, - { - "fieldname": "m_usQueryPort", - "fieldtype": "uint16", - "private": true - }, - { - "fieldname": "m_unIP", - "fieldtype": "uint32", - "private": true - } - ], - "methods": [ - { - "methodname": "Construct", - "methodname_flat": "SteamAPI_servernetadr_t_Construct", - "params": [], - "returntype": "void" - }, - { - "methodname": "Init", - "methodname_flat": "SteamAPI_servernetadr_t_Init", - "params": [ - { "paramname":"ip", "paramtype":"unsigned int" }, - { "paramname":"usQueryPort", "paramtype":"uint16" }, - { "paramname":"usConnectionPort", "paramtype":"uint16" } - ], - "returntype": "void" - }, - { - "methodname": "GetQueryPort", - "methodname_flat": "SteamAPI_servernetadr_t_GetQueryPort", - "params": [], - "returntype": "uint16" - }, - { - "methodname": "SetQueryPort", - "methodname_flat": "SteamAPI_servernetadr_t_SetQueryPort", - "params": [ - { "paramname":"usPort", "paramtype":"uint16" } - ], - "returntype": "void" - }, - { - "methodname": "GetConnectionPort", - "methodname_flat": "SteamAPI_servernetadr_t_GetConnectionPort", - "params": [], - "returntype": "uint16" - }, - { - "methodname": "SetConnectionPort", - "methodname_flat": "SteamAPI_servernetadr_t_SetConnectionPort", - "params": [ - { "paramname":"usPort", "paramtype":"uint16" } - ], - "returntype": "void" - }, - { - "methodname": "GetIP", - "methodname_flat": "SteamAPI_servernetadr_t_GetIP", - "params": [], - "returntype": "uint32" - }, - { - "methodname": "SetIP", - "methodname_flat": "SteamAPI_servernetadr_t_SetIP", - "params": [ - { "paramname":"unIP", "paramtype":"uint32" } - ], - "returntype": "void" - }, - { - "methodname": "GetConnectionAddressString", - "methodname_flat": "SteamAPI_servernetadr_t_GetConnectionAddressString", - "params": [], - "returntype": "const char *" - }, - { - "methodname": "GetQueryAddressString", - "methodname_flat": "SteamAPI_servernetadr_t_GetQueryAddressString", - "params": [], - "returntype": "const char *" - }, - { - "methodname": "operator<", - "methodname_flat": "SteamAPI_servernetadr_t_IsLessThan", - "params": [ - { "paramname":"netadr", "paramtype":"const servernetadr_t &" } - ], - "returntype": "bool" - }, - { - "methodname": "operator=", - "methodname_flat": "SteamAPI_servernetadr_t_Assign", - "params": [ - { "paramname":"that", "paramtype":"const servernetadr_t &" } - ], - "returntype": "void" - } - ], - "struct": "servernetadr_t" - }, - { - "fields": [ - { "fieldname":"m_NetAdr", "fieldtype":"servernetadr_t" }, - { "fieldname":"m_nPing", "fieldtype":"int" }, - { "fieldname":"m_bHadSuccessfulResponse", "fieldtype":"bool" }, - { "fieldname":"m_bDoNotRefresh", "fieldtype":"bool" }, - { "fieldname":"m_szGameDir", "fieldtype":"char [32]" }, - { "fieldname":"m_szMap", "fieldtype":"char [32]" }, - { "fieldname":"m_szGameDescription", "fieldtype":"char [64]" }, - { "fieldname":"m_nAppID", "fieldtype":"uint32" }, - { "fieldname":"m_nPlayers", "fieldtype":"int" }, - { "fieldname":"m_nMaxPlayers", "fieldtype":"int" }, - { "fieldname":"m_nBotPlayers", "fieldtype":"int" }, - { "fieldname":"m_bPassword", "fieldtype":"bool" }, - { "fieldname":"m_bSecure", "fieldtype":"bool" }, - { "fieldname":"m_ulTimeLastPlayed", "fieldtype":"uint32" }, - { "fieldname":"m_nServerVersion", "fieldtype":"int" }, - { - "fieldname": "m_szServerName", - "fieldtype": "char [64]", - "private": true - }, - { "fieldname":"m_szGameTags", "fieldtype":"char [128]" }, - { "fieldname":"m_steamID", "fieldtype":"CSteamID" } - ], - "methods": [ - { - "methodname": "Construct", - "methodname_flat": "SteamAPI_gameserveritem_t_Construct", - "params": [], - "returntype": "void" - }, - { - "methodname": "GetName", - "methodname_flat": "SteamAPI_gameserveritem_t_GetName", - "params": [], - "returntype": "const char *" - }, - { - "methodname": "SetName", - "methodname_flat": "SteamAPI_gameserveritem_t_SetName", - "params": [ - { "paramname":"pName", "paramtype":"const char *" } - ], - "returntype": "void" - } - ], - "struct": "gameserveritem_t" - }, - { - "fields": [ - { "fieldname":"m_eType", "fieldtype":"ESteamPartyBeaconLocationType" }, - { "fieldname":"m_ulLocationID", "fieldtype":"uint64" } - ], - "struct": "SteamPartyBeaconLocation_t" - }, - { - "fields": [ - { "fieldname":"m_ppStrings", "fieldtype":"const char **" }, - { "fieldname":"m_nNumStrings", "fieldtype":"int32" } - ], - "struct": "SteamParamStringArray_t" - }, - { - "fields": [ - { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" }, - { "fieldname":"m_nGlobalRank", "fieldtype":"int32" }, - { "fieldname":"m_nScore", "fieldtype":"int32" }, - { "fieldname":"m_cDetails", "fieldtype":"int32" }, - { "fieldname":"m_hUGC", "fieldtype":"UGCHandle_t" } - ], - "struct": "LeaderboardEntry_t" - }, - { - "fields": [ - { "fieldname":"m_bConnectionActive", "fieldtype":"uint8" }, - { "fieldname":"m_bConnecting", "fieldtype":"uint8" }, - { "fieldname":"m_eP2PSessionError", "fieldtype":"uint8" }, - { "fieldname":"m_bUsingRelay", "fieldtype":"uint8" }, - { "fieldname":"m_nBytesQueuedForSend", "fieldtype":"int32" }, - { "fieldname":"m_nPacketsQueuedForSend", "fieldtype":"int32" }, - { "fieldname":"m_nRemoteIP", "fieldtype":"uint32" }, - { "fieldname":"m_nRemotePort", "fieldtype":"uint16" } - ], - "struct": "P2PSessionState_t" - }, - { - "fields": [ - { "fieldname":"eMode", "fieldtype":"EInputSourceMode" }, - { "fieldname":"x", "fieldtype":"float" }, - { "fieldname":"y", "fieldtype":"float" }, - { "fieldname":"bActive", "fieldtype":"bool" } - ], - "struct": "InputAnalogActionData_t" - }, - { - "fields": [ - { "fieldname":"bState", "fieldtype":"bool" }, - { "fieldname":"bActive", "fieldtype":"bool" } - ], - "struct": "InputDigitalActionData_t" - }, - { - "fields": [ - { "fieldname":"rotQuatX", "fieldtype":"float" }, - { "fieldname":"rotQuatY", "fieldtype":"float" }, - { "fieldname":"rotQuatZ", "fieldtype":"float" }, - { "fieldname":"rotQuatW", "fieldtype":"float" }, - { "fieldname":"posAccelX", "fieldtype":"float" }, - { "fieldname":"posAccelY", "fieldtype":"float" }, - { "fieldname":"posAccelZ", "fieldtype":"float" }, - { "fieldname":"rotVelX", "fieldtype":"float" }, - { "fieldname":"rotVelY", "fieldtype":"float" }, - { "fieldname":"rotVelZ", "fieldtype":"float" } - ], - "struct": "InputMotionData_t" - }, - { - "fields": [ - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_eFileType", "fieldtype":"EWorkshopFileType" }, - { "fieldname":"m_nCreatorAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_nConsumerAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_rgchTitle", "fieldtype":"char [129]" }, - { "fieldname":"m_rgchDescription", "fieldtype":"char [8000]" }, - { "fieldname":"m_ulSteamIDOwner", "fieldtype":"uint64" }, - { "fieldname":"m_rtimeCreated", "fieldtype":"uint32" }, - { "fieldname":"m_rtimeUpdated", "fieldtype":"uint32" }, - { "fieldname":"m_rtimeAddedToUserList", "fieldtype":"uint32" }, - { "fieldname":"m_eVisibility", "fieldtype":"ERemoteStoragePublishedFileVisibility" }, - { "fieldname":"m_bBanned", "fieldtype":"bool" }, - { "fieldname":"m_bAcceptedForUse", "fieldtype":"bool" }, - { "fieldname":"m_bTagsTruncated", "fieldtype":"bool" }, - { "fieldname":"m_rgchTags", "fieldtype":"char [1025]" }, - { "fieldname":"m_hFile", "fieldtype":"UGCHandle_t" }, - { "fieldname":"m_hPreviewFile", "fieldtype":"UGCHandle_t" }, - { "fieldname":"m_pchFileName", "fieldtype":"char [260]" }, - { "fieldname":"m_nFileSize", "fieldtype":"int32" }, - { "fieldname":"m_nPreviewFileSize", "fieldtype":"int32" }, - { "fieldname":"m_rgchURL", "fieldtype":"char [256]" }, - { "fieldname":"m_unVotesUp", "fieldtype":"uint32" }, - { "fieldname":"m_unVotesDown", "fieldtype":"uint32" }, - { "fieldname":"m_flScore", "fieldtype":"float" }, - { "fieldname":"m_unNumChildren", "fieldtype":"uint32" } - ], - "struct": "SteamUGCDetails_t" - }, - { - "fields": [ - { "fieldname":"m_itemId", "fieldtype":"SteamItemInstanceID_t" }, - { "fieldname":"m_iDefinition", "fieldtype":"SteamItemDef_t" }, - { "fieldname":"m_unQuantity", "fieldtype":"uint16" }, - { "fieldname":"m_unFlags", "fieldtype":"uint16" } - ], - "struct": "SteamItemDetails_t" - }, - { - "consts": [ - { "constname":"k_cchMaxString", "consttype":"int", "constval":"48" } - ], - "fields": [ - { "fieldname":"m_ipv6", "fieldtype":"uint8 [16]" }, - { "fieldname":"m_port", "fieldtype":"uint16" } - ], - "methods": [ - { - "methodname": "Clear", - "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_Clear", - "params": [], - "returntype": "void" - }, - { - "methodname": "IsIPv6AllZeros", - "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_IsIPv6AllZeros", - "params": [], - "returntype": "bool" - }, - { - "methodname": "SetIPv6", - "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_SetIPv6", - "params": [ - { "paramname":"ipv6", "paramtype":"const uint8 *" }, - { "paramname":"nPort", "paramtype":"uint16" } - ], - "returntype": "void" - }, - { - "methodname": "SetIPv4", - "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_SetIPv4", - "params": [ - { "paramname":"nIP", "paramtype":"uint32" }, - { "paramname":"nPort", "paramtype":"uint16" } - ], - "returntype": "void" - }, - { - "methodname": "IsIPv4", - "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_IsIPv4", - "params": [], - "returntype": "bool" - }, - { - "methodname": "GetIPv4", - "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_GetIPv4", - "params": [], - "returntype": "uint32" - }, - { - "methodname": "SetIPv6LocalHost", - "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_SetIPv6LocalHost", - "params": [ - { "paramname":"nPort", "paramtype":"uint16" } - ], - "returntype": "void" - }, - { - "methodname": "IsLocalHost", - "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_IsLocalHost", - "params": [], - "returntype": "bool" - }, - { - "methodname": "ToString", - "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_ToString", - "params": [ - { "paramname":"buf", "paramtype":"char *" }, - { "paramname":"cbBuf", "paramtype":"uint32" }, - { "paramname":"bWithPort", "paramtype":"bool" } - ], - "returntype": "void" - }, - { - "methodname": "ParseString", - "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_ParseString", - "params": [ - { "paramname":"pszStr", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "operator==", - "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_IsEqualTo", - "params": [ - { "paramname":"x", "paramtype":"const SteamNetworkingIPAddr &" } - ], - "returntype": "bool" - } - ], - "struct": "SteamNetworkingIPAddr" - }, - { - "consts": [ - { "constname":"k_cchMaxString", "consttype":"int", "constval":"128" }, - { "constname":"k_cchMaxGenericString", "consttype":"int", "constval":"32" }, - { "constname":"k_cchMaxXboxPairwiseID", "consttype":"int", "constval":"33" }, - { "constname":"k_cbMaxGenericBytes", "consttype":"int", "constval":"32" } - ], - "fields": [ - { "fieldname":"m_eType", "fieldtype":"ESteamNetworkingIdentityType" }, - { "fieldname":"m_cbSize", "fieldtype":"int" }, - { "fieldname":"m_szUnknownRawString", "fieldtype":"char [128]" } - ], - "methods": [ - { - "methodname": "Clear", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_Clear", - "params": [], - "returntype": "void" - }, - { - "methodname": "IsInvalid", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_IsInvalid", - "params": [], - "returntype": "bool" - }, - { - "methodname": "SetSteamID", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetSteamID", - "params": [ - { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } - ], - "returntype": "void" - }, - { - "methodname": "GetSteamID", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetSteamID", - "params": [], - "returntype": "CSteamID", - "returntype_flat": "uint64_steamid" - }, - { - "methodname": "SetSteamID64", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetSteamID64", - "params": [ - { "paramname":"steamID", "paramtype":"uint64" } - ], - "returntype": "void" - }, - { - "methodname": "GetSteamID64", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetSteamID64", - "params": [], - "returntype": "uint64" - }, - { - "methodname": "SetXboxPairwiseID", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetXboxPairwiseID", - "params": [ - { "paramname":"pszString", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetXboxPairwiseID", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetXboxPairwiseID", - "params": [], - "returntype": "const char *" - }, - { - "methodname": "SetPSNID", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetPSNID", - "params": [ - { "paramname":"id", "paramtype":"uint64" } - ], - "returntype": "void" - }, - { - "methodname": "GetPSNID", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetPSNID", - "params": [], - "returntype": "uint64" - }, - { - "methodname": "SetStadiaID", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetStadiaID", - "params": [ - { "paramname":"id", "paramtype":"uint64" } - ], - "returntype": "void" - }, - { - "methodname": "GetStadiaID", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetStadiaID", - "params": [], - "returntype": "uint64" - }, - { - "methodname": "SetIPAddr", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetIPAddr", - "params": [ - { "paramname":"addr", "paramtype":"const SteamNetworkingIPAddr &" } - ], - "returntype": "void" - }, - { - "methodname": "GetIPAddr", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetIPAddr", - "params": [], - "returntype": "const SteamNetworkingIPAddr *" - }, - { - "methodname": "SetLocalHost", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetLocalHost", - "params": [], - "returntype": "void" - }, - { - "methodname": "IsLocalHost", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_IsLocalHost", - "params": [], - "returntype": "bool" - }, - { - "methodname": "SetGenericString", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetGenericString", - "params": [ - { "paramname":"pszString", "paramtype":"const char *" } - ], - "returntype": "bool" - }, - { - "methodname": "GetGenericString", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetGenericString", - "params": [], - "returntype": "const char *" - }, - { - "methodname": "SetGenericBytes", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetGenericBytes", - "params": [ - { "paramname":"data", "paramtype":"const void *" }, - { "paramname":"cbLen", "paramtype":"uint32" } - ], - "returntype": "bool" - }, - { - "methodname": "GetGenericBytes", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetGenericBytes", - "params": [ - { "paramname":"cbLen", "paramtype":"int &" } - ], - "returntype": "const uint8 *" - }, - { - "methodname": "operator==", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_IsEqualTo", - "params": [ - { "paramname":"x", "paramtype":"const SteamNetworkingIdentity &" } - ], - "returntype": "bool" - }, - { - "methodname": "ToString", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_ToString", - "params": [ - { "paramname":"buf", "paramtype":"char *" }, - { "paramname":"cbBuf", "paramtype":"uint32" } - ], - "returntype": "void" - }, - { - "methodname": "ParseString", - "methodname_flat": "SteamAPI_SteamNetworkingIdentity_ParseString", - "params": [ - { "paramname":"pszStr", "paramtype":"const char *" } - ], - "returntype": "bool" - } - ], - "struct": "SteamNetworkingIdentity" - }, - { - "fields": [ - { "fieldname":"m_identityRemote", "fieldtype":"SteamNetworkingIdentity" }, - { "fieldname":"m_nUserData", "fieldtype":"int64" }, - { "fieldname":"m_hListenSocket", "fieldtype":"HSteamListenSocket" }, - { "fieldname":"m_addrRemote", "fieldtype":"SteamNetworkingIPAddr" }, - { "fieldname":"m__pad1", "fieldtype":"uint16" }, - { "fieldname":"m_idPOPRemote", "fieldtype":"SteamNetworkingPOPID" }, - { "fieldname":"m_idPOPRelay", "fieldtype":"SteamNetworkingPOPID" }, - { "fieldname":"m_eState", "fieldtype":"ESteamNetworkingConnectionState" }, - { "fieldname":"m_eEndReason", "fieldtype":"int" }, - { "fieldname":"m_szEndDebug", "fieldtype":"char [128]" }, - { "fieldname":"m_szConnectionDescription", "fieldtype":"char [128]" }, - { "fieldname":"m_eTransportKind", "fieldtype":"ESteamNetTransportKind" }, - { "fieldname":"reserved", "fieldtype":"uint32 [63]" } - ], - "struct": "SteamNetConnectionInfo_t" - }, - { - "fields": [ - { "fieldname":"m_eState", "fieldtype":"ESteamNetworkingConnectionState" }, - { "fieldname":"m_nPing", "fieldtype":"int" }, - { "fieldname":"m_flConnectionQualityLocal", "fieldtype":"float" }, - { "fieldname":"m_flConnectionQualityRemote", "fieldtype":"float" }, - { "fieldname":"m_flOutPacketsPerSec", "fieldtype":"float" }, - { "fieldname":"m_flOutBytesPerSec", "fieldtype":"float" }, - { "fieldname":"m_flInPacketsPerSec", "fieldtype":"float" }, - { "fieldname":"m_flInBytesPerSec", "fieldtype":"float" }, - { "fieldname":"m_nSendRateBytesPerSecond", "fieldtype":"int" }, - { "fieldname":"m_cbPendingUnreliable", "fieldtype":"int" }, - { "fieldname":"m_cbPendingReliable", "fieldtype":"int" }, - { "fieldname":"m_cbSentUnackedReliable", "fieldtype":"int" }, - { "fieldname":"m_usecQueueTime", "fieldtype":"SteamNetworkingMicroseconds" }, - { "fieldname":"reserved", "fieldtype":"uint32 [16]" } - ], - "struct": "SteamNetworkingQuickConnectionStatus" - }, - { - "fields": [ - { "fieldname":"m_pData", "fieldtype":"void *" }, - { "fieldname":"m_cbSize", "fieldtype":"int" }, - { "fieldname":"m_conn", "fieldtype":"HSteamNetConnection" }, - { "fieldname":"m_identityPeer", "fieldtype":"SteamNetworkingIdentity" }, - { "fieldname":"m_nConnUserData", "fieldtype":"int64" }, - { "fieldname":"m_usecTimeReceived", "fieldtype":"SteamNetworkingMicroseconds" }, - { "fieldname":"m_nMessageNumber", "fieldtype":"int64" }, - { "fieldname":"m_pfnFreeData", "fieldtype":"void (*)(SteamNetworkingMessage_t *)" }, - { "fieldname":"m_pfnRelease", "fieldtype":"void (*)(SteamNetworkingMessage_t *)" }, - { "fieldname":"m_nChannel", "fieldtype":"int" }, - { "fieldname":"m_nFlags", "fieldtype":"int" }, - { "fieldname":"m_nUserData", "fieldtype":"int64" } - ], - "methods": [ - { - "methodname": "Release", - "methodname_flat": "SteamAPI_SteamNetworkingMessage_t_Release", - "params": [], - "returntype": "void" - } - ], - "struct": "SteamNetworkingMessage_t" - }, - { - "fields": [ - { "fieldname":"m_data", "fieldtype":"uint8 [512]" } - ], - "struct": "SteamNetworkPingLocation_t" - }, - { - "fields": [ - { "fieldname":"m_eValue", "fieldtype":"ESteamNetworkingConfigValue" }, - { "fieldname":"m_eDataType", "fieldtype":"ESteamNetworkingConfigDataType" }, - { "fieldname":"m_int64", "fieldtype":"int64_t" } - ], - "methods": [ - { - "methodname": "SetInt32", - "methodname_flat": "SteamAPI_SteamNetworkingConfigValue_t_SetInt32", - "params": [ - { "paramname":"eVal", "paramtype":"ESteamNetworkingConfigValue" }, - { "paramname":"data", "paramtype":"int32_t" } - ], - "returntype": "void" - }, - { - "methodname": "SetInt64", - "methodname_flat": "SteamAPI_SteamNetworkingConfigValue_t_SetInt64", - "params": [ - { "paramname":"eVal", "paramtype":"ESteamNetworkingConfigValue" }, - { "paramname":"data", "paramtype":"int64_t" } - ], - "returntype": "void" - }, - { - "methodname": "SetFloat", - "methodname_flat": "SteamAPI_SteamNetworkingConfigValue_t_SetFloat", - "params": [ - { "paramname":"eVal", "paramtype":"ESteamNetworkingConfigValue" }, - { "paramname":"data", "paramtype":"float" } - ], - "returntype": "void" - }, - { - "methodname": "SetPtr", - "methodname_flat": "SteamAPI_SteamNetworkingConfigValue_t_SetPtr", - "params": [ - { "paramname":"eVal", "paramtype":"ESteamNetworkingConfigValue" }, - { "paramname":"data", "paramtype":"void *" } - ], - "returntype": "void" - }, - { - "methodname": "SetString", - "methodname_flat": "SteamAPI_SteamNetworkingConfigValue_t_SetString", - "params": [ - { "paramname":"eVal", "paramtype":"ESteamNetworkingConfigValue" }, - { "paramname":"data", "paramtype":"const char *" } - ], - "returntype": "void" - } - ], - "struct": "SteamNetworkingConfigValue_t" - }, - { - "fields": [ - { - "fieldname": "buf", - "fieldtype": "char [8]", - "private": true - } - ], - "methods": [ - { - "methodname": "c_str", - "methodname_flat": "SteamAPI_SteamNetworkingPOPIDRender_c_str", - "params": [], - "returntype": "const char *" - } - ], - "struct": "SteamNetworkingPOPIDRender" - }, - { - "fields": [ - { - "fieldname": "buf", - "fieldtype": "char [128]", - "private": true - } - ], - "methods": [ - { - "methodname": "c_str", - "methodname_flat": "SteamAPI_SteamNetworkingIdentityRender_c_str", - "params": [], - "returntype": "const char *" - } - ], - "struct": "SteamNetworkingIdentityRender" - }, - { - "fields": [ - { - "fieldname": "buf", - "fieldtype": "char [48]", - "private": true - } - ], - "methods": [ - { - "methodname": "c_str", - "methodname_flat": "SteamAPI_SteamNetworkingIPAddrRender_c_str", - "params": [], - "returntype": "const char *" - } - ], - "struct": "SteamNetworkingIPAddrRender" - }, - { - "fields": [ - { "fieldname":"m_cbSize", "fieldtype":"int" }, - { "fieldname":"m_data", "fieldtype":"char [128]" } - ], - "methods": [ - { - "methodname": "Clear", - "methodname_flat": "SteamAPI_SteamDatagramHostedAddress_Clear", - "params": [], - "returntype": "void" - }, - { - "methodname": "GetPopID", - "methodname_flat": "SteamAPI_SteamDatagramHostedAddress_GetPopID", - "params": [], - "returntype": "SteamNetworkingPOPID" - }, - { - "methodname": "SetDevAddress", - "methodname_flat": "SteamAPI_SteamDatagramHostedAddress_SetDevAddress", - "params": [ - { "paramname":"nIP", "paramtype":"uint32" }, - { "paramname":"nPort", "paramtype":"uint16" }, - { "paramname":"popid", "paramtype":"SteamNetworkingPOPID" } - ], - "returntype": "void" - } - ], - "struct": "SteamDatagramHostedAddress" - }, - { - "fields": [ - { "fieldname":"m_identity", "fieldtype":"SteamNetworkingIdentity" }, - { "fieldname":"m_routing", "fieldtype":"SteamDatagramHostedAddress" }, - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_rtime", "fieldtype":"RTime32" }, - { "fieldname":"m_cbAppData", "fieldtype":"int" }, - { "fieldname":"m_appData", "fieldtype":"char [2048]" } - ], - "struct": "SteamDatagramGameCoordinatorServerLogin" - } - ], - "typedefs": [ - { "typedef":"uint8", "type":"unsigned char" }, - { "typedef":"int8", "type":"signed char" }, - { "typedef":"int16", "type":"short" }, - { "typedef":"uint16", "type":"unsigned short" }, - { "typedef":"int32", "type":"int" }, - { "typedef":"uint32", "type":"unsigned int" }, - { "typedef":"int64", "type":"long long" }, - { "typedef":"uint64", "type":"unsigned long long" }, - { "typedef":"lint64", "type":"long long" }, - { "typedef":"ulint64", "type":"unsigned long long" }, - { "typedef":"intp", "type":"long long" }, - { "typedef":"uintp", "type":"unsigned long long" }, - { "typedef":"Salt_t", "type":"unsigned char [8]" }, - { "typedef":"GID_t", "type":"unsigned long long" }, - { "typedef":"JobID_t", "type":"unsigned long long" }, - { "typedef":"TxnID_t", "type":"unsigned long long" }, - { "typedef":"PackageId_t", "type":"unsigned int" }, - { "typedef":"BundleId_t", "type":"unsigned int" }, - { "typedef":"AppId_t", "type":"unsigned int" }, - { "typedef":"AssetClassId_t", "type":"unsigned long long" }, - { "typedef":"PhysicalItemId_t", "type":"unsigned int" }, - { "typedef":"DepotId_t", "type":"unsigned int" }, - { "typedef":"RTime32", "type":"unsigned int" }, - { "typedef":"CellID_t", "type":"unsigned int" }, - { "typedef":"SteamAPICall_t", "type":"unsigned long long" }, - { "typedef":"AccountID_t", "type":"unsigned int" }, - { "typedef":"PartnerId_t", "type":"unsigned int" }, - { "typedef":"ManifestId_t", "type":"unsigned long long" }, - { "typedef":"SiteId_t", "type":"unsigned long long" }, - { "typedef":"PartyBeaconID_t", "type":"unsigned long long" }, - { "typedef":"HAuthTicket", "type":"unsigned int" }, - { "typedef":"PFNLegacyKeyRegistration", "type":"void (*)(const char *, const char *)" }, - { "typedef":"PFNLegacyKeyInstalled", "type":"bool (*)()" }, - { "typedef":"PFNPreMinidumpCallback", "type":"void (*)(void *)" }, - { "typedef":"BREAKPAD_HANDLE", "type":"void *" }, - { "typedef":"HSteamPipe", "type":"int" }, - { "typedef":"HSteamUser", "type":"int" }, - { "typedef":"FriendsGroupID_t", "type":"short" }, - { "typedef":"HServerListRequest", "type":"void *" }, - { "typedef":"HServerQuery", "type":"int" }, - { "typedef":"UGCHandle_t", "type":"unsigned long long" }, - { "typedef":"PublishedFileUpdateHandle_t", "type":"unsigned long long" }, - { "typedef":"PublishedFileId_t", "type":"unsigned long long" }, - { "typedef":"UGCFileWriteStreamHandle_t", "type":"unsigned long long" }, - { "typedef":"SteamLeaderboard_t", "type":"unsigned long long" }, - { "typedef":"SteamLeaderboardEntries_t", "type":"unsigned long long" }, - { "typedef":"SNetSocket_t", "type":"unsigned int" }, - { "typedef":"SNetListenSocket_t", "type":"unsigned int" }, - { "typedef":"ScreenshotHandle", "type":"unsigned int" }, - { "typedef":"HTTPRequestHandle", "type":"unsigned int" }, - { "typedef":"HTTPCookieContainerHandle", "type":"unsigned int" }, - { "typedef":"InputHandle_t", "type":"unsigned long long" }, - { "typedef":"InputActionSetHandle_t", "type":"unsigned long long" }, - { "typedef":"InputDigitalActionHandle_t", "type":"unsigned long long" }, - { "typedef":"InputAnalogActionHandle_t", "type":"unsigned long long" }, - { "typedef":"ControllerHandle_t", "type":"unsigned long long" }, - { "typedef":"ControllerActionSetHandle_t", "type":"unsigned long long" }, - { "typedef":"ControllerDigitalActionHandle_t", "type":"unsigned long long" }, - { "typedef":"ControllerAnalogActionHandle_t", "type":"unsigned long long" }, - { "typedef":"UGCQueryHandle_t", "type":"unsigned long long" }, - { "typedef":"UGCUpdateHandle_t", "type":"unsigned long long" }, - { "typedef":"HHTMLBrowser", "type":"unsigned int" }, - { "typedef":"SteamItemInstanceID_t", "type":"unsigned long long" }, - { "typedef":"SteamItemDef_t", "type":"int" }, - { "typedef":"SteamInventoryResult_t", "type":"int" }, - { "typedef":"SteamInventoryUpdateHandle_t", "type":"unsigned long long" }, - { "typedef":"RemotePlaySessionID_t", "type":"unsigned int" }, - { "typedef":"FnSteamNetConnectionStatusChanged", "type":"void (*)(SteamNetConnectionStatusChangedCallback_t *)" }, - { "typedef":"FnSteamNetAuthenticationStatusChanged", "type":"void (*)(SteamNetAuthenticationStatus_t *)" }, - { "typedef":"FnSteamRelayNetworkStatusChanged", "type":"void (*)(SteamRelayNetworkStatus_t *)" }, - { "typedef":"FnSteamNetworkingMessagesSessionRequest", "type":"void (*)(SteamNetworkingMessagesSessionRequest_t *)" }, - { "typedef":"FnSteamNetworkingMessagesSessionFailed", "type":"void (*)(SteamNetworkingMessagesSessionFailed_t *)" }, - { "typedef":"HSteamNetConnection", "type":"unsigned int" }, - { "typedef":"HSteamListenSocket", "type":"unsigned int" }, - { "typedef":"HSteamNetPollGroup", "type":"unsigned int" }, - { "typedef":"SteamNetworkingErrMsg", "type":"char [1024]" }, - { "typedef":"SteamNetworkingPOPID", "type":"unsigned int" }, - { "typedef":"SteamNetworkingMicroseconds", "type":"long long" }, - { "typedef":"FSteamNetworkingSocketsDebugOutput", "type":"void (*)(ESteamNetworkingSocketsDebugOutputType, const char *)" } - ] -} +{ + "callback_structs": [ + { + "callback_id": 101, + "fields": [], + "struct": "SteamServersConnected_t" + }, + { + "callback_id": 102, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_bStillRetrying", "fieldtype":"bool" } + ], + "struct": "SteamServerConnectFailure_t" + }, + { + "callback_id": 103, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "SteamServersDisconnected_t" + }, + { + "callback_id": 113, + "fields": [ + { "fieldname":"m_uAppID", "fieldtype":"uint32" }, + { "fieldname":"m_unGameServerIP", "fieldtype":"uint32" }, + { "fieldname":"m_usGameServerPort", "fieldtype":"uint16" }, + { "fieldname":"m_bSecure", "fieldtype":"uint16" }, + { "fieldname":"m_uReason", "fieldtype":"uint32" } + ], + "struct": "ClientGameServerDeny_t" + }, + { + "callback_id": 117, + "enums": [ + { + "enumname": "EFailureType", + "fqname": "IPCFailure_t::EFailureType", + "values": [ + { "name":"k_EFailureFlushedCallbackQueue", "value":"0" }, + { "name":"k_EFailurePipeFail", "value":"1" } + ] + } + ], + "fields": [ + { "fieldname":"m_eFailureType", "fieldtype":"uint8" } + ], + "struct": "IPCFailure_t" + }, + { + "callback_id": 125, + "fields": [], + "struct": "LicensesUpdated_t" + }, + { + "callback_id": 143, + "fields": [ + { "fieldname":"m_SteamID", "fieldtype":"CSteamID" }, + { "fieldname":"m_eAuthSessionResponse", "fieldtype":"EAuthSessionResponse" }, + { "fieldname":"m_OwnerSteamID", "fieldtype":"CSteamID" } + ], + "struct": "ValidateAuthTicketResponse_t" + }, + { + "callback_id": 152, + "fields": [ + { "fieldname":"m_unAppID", "fieldtype":"uint32" }, + { "fieldname":"m_ulOrderID", "fieldtype":"uint64" }, + { "fieldname":"m_bAuthorized", "fieldtype":"uint8" } + ], + "struct": "MicroTxnAuthorizationResponse_t" + }, + { + "callback_id": 154, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "EncryptedAppTicketResponse_t" + }, + { + "callback_id": 163, + "fields": [ + { "fieldname":"m_hAuthTicket", "fieldtype":"HAuthTicket" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "GetAuthSessionTicketResponse_t" + }, + { + "callback_id": 164, + "fields": [ + { "fieldname":"m_szURL", "fieldtype":"char [256]" } + ], + "struct": "GameWebCallback_t" + }, + { + "callback_id": 165, + "fields": [ + { "fieldname":"m_szURL", "fieldtype":"char [512]" } + ], + "struct": "StoreAuthURLResponse_t" + }, + { + "callback_id": 166, + "fields": [ + { "fieldname":"m_bAllowed", "fieldtype":"bool" }, + { "fieldname":"m_eNotAllowedReason", "fieldtype":"EMarketNotAllowedReasonFlags" }, + { "fieldname":"m_rtAllowedAtTime", "fieldtype":"RTime32" }, + { "fieldname":"m_cdaySteamGuardRequiredDays", "fieldtype":"int" }, + { "fieldname":"m_cdayNewDeviceCooldown", "fieldtype":"int" } + ], + "struct": "MarketEligibilityResponse_t" + }, + { + "callback_id": 167, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_appid", "fieldtype":"AppId_t" }, + { "fieldname":"m_bApplicable", "fieldtype":"bool" }, + { "fieldname":"m_csecsLast5h", "fieldtype":"int32" }, + { "fieldname":"m_progress", "fieldtype":"EDurationControlProgress" }, + { "fieldname":"m_notification", "fieldtype":"EDurationControlNotification" }, + { "fieldname":"m_csecsToday", "fieldtype":"int32" }, + { "fieldname":"m_csecsRemaining", "fieldtype":"int32" } + ], + "struct": "DurationControl_t" + }, + { + "callback_id": 304, + "fields": [ + { "fieldname":"m_ulSteamID", "fieldtype":"uint64" }, + { "fieldname":"m_nChangeFlags", "fieldtype":"int" } + ], + "struct": "PersonaStateChange_t" + }, + { + "callback_id": 331, + "fields": [ + { "fieldname":"m_bActive", "fieldtype":"uint8" } + ], + "struct": "GameOverlayActivated_t" + }, + { + "callback_id": 332, + "fields": [ + { "fieldname":"m_rgchServer", "fieldtype":"char [64]" }, + { "fieldname":"m_rgchPassword", "fieldtype":"char [64]" } + ], + "struct": "GameServerChangeRequested_t" + }, + { + "callback_id": 333, + "fields": [ + { "fieldname":"m_steamIDLobby", "fieldtype":"CSteamID" }, + { "fieldname":"m_steamIDFriend", "fieldtype":"CSteamID" } + ], + "struct": "GameLobbyJoinRequested_t" + }, + { + "callback_id": 334, + "fields": [ + { "fieldname":"m_steamID", "fieldtype":"CSteamID" }, + { "fieldname":"m_iImage", "fieldtype":"int" }, + { "fieldname":"m_iWide", "fieldtype":"int" }, + { "fieldname":"m_iTall", "fieldtype":"int" } + ], + "struct": "AvatarImageLoaded_t" + }, + { + "callback_id": 335, + "fields": [ + { "fieldname":"m_steamIDClan", "fieldtype":"CSteamID" }, + { "fieldname":"m_cOfficers", "fieldtype":"int" }, + { "fieldname":"m_bSuccess", "fieldtype":"uint8" } + ], + "struct": "ClanOfficerListResponse_t" + }, + { + "callback_id": 336, + "fields": [ + { "fieldname":"m_steamIDFriend", "fieldtype":"CSteamID" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + ], + "struct": "FriendRichPresenceUpdate_t" + }, + { + "callback_id": 337, + "fields": [ + { "fieldname":"m_steamIDFriend", "fieldtype":"CSteamID" }, + { "fieldname":"m_rgchConnect", "fieldtype":"char [256]" } + ], + "struct": "GameRichPresenceJoinRequested_t" + }, + { + "callback_id": 338, + "fields": [ + { "fieldname":"m_steamIDClanChat", "fieldtype":"CSteamID" }, + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" }, + { "fieldname":"m_iMessageID", "fieldtype":"int" } + ], + "struct": "GameConnectedClanChatMsg_t" + }, + { + "callback_id": 339, + "fields": [ + { "fieldname":"m_steamIDClanChat", "fieldtype":"CSteamID" }, + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } + ], + "struct": "GameConnectedChatJoin_t" + }, + { + "callback_id": 340, + "fields": [ + { "fieldname":"m_steamIDClanChat", "fieldtype":"CSteamID" }, + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" }, + { "fieldname":"m_bKicked", "fieldtype":"bool" }, + { "fieldname":"m_bDropped", "fieldtype":"bool" } + ], + "struct": "GameConnectedChatLeave_t" + }, + { + "callback_id": 341, + "fields": [ + { "fieldname":"m_bSuccess", "fieldtype":"bool" } + ], + "struct": "DownloadClanActivityCountsResult_t" + }, + { + "callback_id": 342, + "fields": [ + { "fieldname":"m_steamIDClanChat", "fieldtype":"CSteamID" }, + { "fieldname":"m_eChatRoomEnterResponse", "fieldtype":"EChatRoomEnterResponse" } + ], + "struct": "JoinClanChatRoomCompletionResult_t" + }, + { + "callback_id": 343, + "fields": [ + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" }, + { "fieldname":"m_iMessageID", "fieldtype":"int" } + ], + "struct": "GameConnectedFriendChatMsg_t" + }, + { + "callback_id": 344, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_steamID", "fieldtype":"CSteamID" }, + { "fieldname":"m_nCount", "fieldtype":"int" } + ], + "struct": "FriendsGetFollowerCount_t" + }, + { + "callback_id": 345, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_steamID", "fieldtype":"CSteamID" }, + { "fieldname":"m_bIsFollowing", "fieldtype":"bool" } + ], + "struct": "FriendsIsFollowing_t" + }, + { + "callback_id": 346, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_rgSteamID", "fieldtype":"CSteamID [50]" }, + { "fieldname":"m_nResultsReturned", "fieldtype":"int32" }, + { "fieldname":"m_nTotalResultCount", "fieldtype":"int32" } + ], + "struct": "FriendsEnumerateFollowingList_t" + }, + { + "callback_id": 347, + "fields": [ + { "fieldname":"m_bSuccess", "fieldtype":"bool" }, + { "fieldname":"m_bLocalSuccess", "fieldtype":"bool" }, + { "fieldname":"m_result", "fieldtype":"EResult" } + ], + "struct": "SetPersonaNameResponse_t" + }, + { + "callback_id": 348, + "fields": [], + "struct": "UnreadChatMessagesChanged_t" + }, + { + "callback_id": 349, + "fields": [ + { "fieldname":"rgchURI", "fieldtype":"char [1024]" } + ], + "struct": "OverlayBrowserProtocolNavigation_t" + }, + { + "callback_id": 701, + "fields": [], + "struct": "IPCountry_t" + }, + { + "callback_id": 702, + "fields": [ + { "fieldname":"m_nMinutesBatteryLeft", "fieldtype":"uint8" } + ], + "struct": "LowBatteryPower_t" + }, + { + "callback_id": 703, + "fields": [ + { "fieldname":"m_hAsyncCall", "fieldtype":"SteamAPICall_t" }, + { "fieldname":"m_iCallback", "fieldtype":"int" }, + { "fieldname":"m_cubParam", "fieldtype":"uint32" } + ], + "struct": "SteamAPICallCompleted_t" + }, + { + "callback_id": 704, + "fields": [], + "struct": "SteamShutdown_t" + }, + { + "callback_id": 705, + "fields": [ + { "fieldname":"m_eCheckFileSignature", "fieldtype":"ECheckFileSignature" } + ], + "struct": "CheckFileSignature_t" + }, + { + "callback_id": 714, + "fields": [ + { "fieldname":"m_bSubmitted", "fieldtype":"bool" }, + { "fieldname":"m_unSubmittedText", "fieldtype":"uint32" } + ], + "struct": "GamepadTextInputDismissed_t" + }, + { + "callback_id": 502, + "fields": [ + { "fieldname":"m_nIP", "fieldtype":"uint32" }, + { "fieldname":"m_nQueryPort", "fieldtype":"uint32" }, + { "fieldname":"m_nConnPort", "fieldtype":"uint32" }, + { "fieldname":"m_nAppID", "fieldtype":"uint32" }, + { "fieldname":"m_nFlags", "fieldtype":"uint32" }, + { "fieldname":"m_bAdd", "fieldtype":"bool" }, + { "fieldname":"m_unAccountId", "fieldtype":"AccountID_t" } + ], + "struct": "FavoritesListChanged_t" + }, + { + "callback_id": 503, + "fields": [ + { "fieldname":"m_ulSteamIDUser", "fieldtype":"uint64" }, + { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, + { "fieldname":"m_ulGameID", "fieldtype":"uint64" } + ], + "struct": "LobbyInvite_t" + }, + { + "callback_id": 504, + "fields": [ + { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, + { "fieldname":"m_rgfChatPermissions", "fieldtype":"uint32" }, + { "fieldname":"m_bLocked", "fieldtype":"bool" }, + { "fieldname":"m_EChatRoomEnterResponse", "fieldtype":"uint32" } + ], + "struct": "LobbyEnter_t" + }, + { + "callback_id": 505, + "fields": [ + { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, + { "fieldname":"m_ulSteamIDMember", "fieldtype":"uint64" }, + { "fieldname":"m_bSuccess", "fieldtype":"uint8" } + ], + "struct": "LobbyDataUpdate_t" + }, + { + "callback_id": 506, + "fields": [ + { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, + { "fieldname":"m_ulSteamIDUserChanged", "fieldtype":"uint64" }, + { "fieldname":"m_ulSteamIDMakingChange", "fieldtype":"uint64" }, + { "fieldname":"m_rgfChatMemberStateChange", "fieldtype":"uint32" } + ], + "struct": "LobbyChatUpdate_t" + }, + { + "callback_id": 507, + "fields": [ + { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, + { "fieldname":"m_ulSteamIDUser", "fieldtype":"uint64" }, + { "fieldname":"m_eChatEntryType", "fieldtype":"uint8" }, + { "fieldname":"m_iChatID", "fieldtype":"uint32" } + ], + "struct": "LobbyChatMsg_t" + }, + { + "callback_id": 509, + "fields": [ + { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, + { "fieldname":"m_ulSteamIDGameServer", "fieldtype":"uint64" }, + { "fieldname":"m_unIP", "fieldtype":"uint32" }, + { "fieldname":"m_usPort", "fieldtype":"uint16" } + ], + "struct": "LobbyGameCreated_t" + }, + { + "callback_id": 510, + "fields": [ + { "fieldname":"m_nLobbiesMatching", "fieldtype":"uint32" } + ], + "struct": "LobbyMatchList_t" + }, + { + "callback_id": 512, + "fields": [ + { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" }, + { "fieldname":"m_ulSteamIDAdmin", "fieldtype":"uint64" }, + { "fieldname":"m_bKickedDueToDisconnect", "fieldtype":"uint8" } + ], + "struct": "LobbyKicked_t" + }, + { + "callback_id": 513, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_ulSteamIDLobby", "fieldtype":"uint64" } + ], + "struct": "LobbyCreated_t" + }, + { + "callback_id": 515, + "fields": [ + { "fieldname":"m_bGameBootInviteExists", "fieldtype":"bool" }, + { "fieldname":"m_steamIDLobby", "fieldtype":"CSteamID" } + ], + "struct": "PSNGameBootInviteResult_t" + }, + { + "callback_id": 516, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "FavoritesListAccountsUpdated_t" + }, + { + "callback_id": 5201, + "fields": [ + { "fieldname":"m_ullSearchID", "fieldtype":"uint64" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_lobbyID", "fieldtype":"CSteamID" }, + { "fieldname":"m_steamIDEndedSearch", "fieldtype":"CSteamID" }, + { "fieldname":"m_nSecondsRemainingEstimate", "fieldtype":"int32" }, + { "fieldname":"m_cPlayersSearching", "fieldtype":"int32" } + ], + "struct": "SearchForGameProgressCallback_t" + }, + { + "callback_id": 5202, + "fields": [ + { "fieldname":"m_ullSearchID", "fieldtype":"uint64" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nCountPlayersInGame", "fieldtype":"int32" }, + { "fieldname":"m_nCountAcceptedGame", "fieldtype":"int32" }, + { "fieldname":"m_steamIDHost", "fieldtype":"CSteamID" }, + { "fieldname":"m_bFinalCallback", "fieldtype":"bool" } + ], + "struct": "SearchForGameResultCallback_t" + }, + { + "callback_id": 5211, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_ullSearchID", "fieldtype":"uint64" } + ], + "struct": "RequestPlayersForGameProgressCallback_t" + }, + { + "callback_id": 5212, + "enums": [ + { + "enumname": "PlayerAcceptState_t", + "fqname": "RequestPlayersForGameResultCallback_t::PlayerAcceptState_t", + "values": [ + { "name":"k_EStateUnknown", "value":"0" }, + { "name":"k_EStatePlayerAccepted", "value":"1" }, + { "name":"k_EStatePlayerDeclined", "value":"2" } + ] + } + ], + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_ullSearchID", "fieldtype":"uint64" }, + { "fieldname":"m_SteamIDPlayerFound", "fieldtype":"CSteamID" }, + { "fieldname":"m_SteamIDLobby", "fieldtype":"CSteamID" }, + { "fieldname":"m_ePlayerAcceptState", "fieldtype":"RequestPlayersForGameResultCallback_t::PlayerAcceptState_t" }, + { "fieldname":"m_nPlayerIndex", "fieldtype":"int32" }, + { "fieldname":"m_nTotalPlayersFound", "fieldtype":"int32" }, + { "fieldname":"m_nTotalPlayersAcceptedGame", "fieldtype":"int32" }, + { "fieldname":"m_nSuggestedTeamIndex", "fieldtype":"int32" }, + { "fieldname":"m_ullUniqueGameID", "fieldtype":"uint64" } + ], + "struct": "RequestPlayersForGameResultCallback_t" + }, + { + "callback_id": 5213, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_ullSearchID", "fieldtype":"uint64" }, + { "fieldname":"m_ullUniqueGameID", "fieldtype":"uint64" } + ], + "struct": "RequestPlayersForGameFinalResultCallback_t" + }, + { + "callback_id": 5214, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"ullUniqueGameID", "fieldtype":"uint64" }, + { "fieldname":"steamIDPlayer", "fieldtype":"CSteamID" } + ], + "struct": "SubmitPlayerResultResultCallback_t" + }, + { + "callback_id": 5215, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"ullUniqueGameID", "fieldtype":"uint64" } + ], + "struct": "EndGameResultCallback_t" + }, + { + "callback_id": 5301, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_ulBeaconID", "fieldtype":"PartyBeaconID_t" }, + { "fieldname":"m_SteamIDBeaconOwner", "fieldtype":"CSteamID" }, + { "fieldname":"m_rgchConnectString", "fieldtype":"char [256]" } + ], + "struct": "JoinPartyCallback_t" + }, + { + "callback_id": 5302, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_ulBeaconID", "fieldtype":"PartyBeaconID_t" } + ], + "struct": "CreateBeaconCallback_t" + }, + { + "callback_id": 5303, + "fields": [ + { "fieldname":"m_ulBeaconID", "fieldtype":"PartyBeaconID_t" }, + { "fieldname":"m_steamIDJoiner", "fieldtype":"CSteamID" } + ], + "struct": "ReservationNotificationCallback_t" + }, + { + "callback_id": 5304, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "ChangeNumOpenSlotsCallback_t" + }, + { + "callback_id": 5305, + "fields": [], + "struct": "AvailableBeaconLocationsUpdated_t" + }, + { + "callback_id": 5306, + "fields": [], + "struct": "ActiveBeaconsUpdated_t" + }, + { + "callback_id": 1301, + "fields": [ + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_unNumDownloads", "fieldtype":"int" } + ], + "struct": "RemoteStorageAppSyncedClient_t" + }, + { + "callback_id": 1302, + "fields": [ + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_unNumUploads", "fieldtype":"int" } + ], + "struct": "RemoteStorageAppSyncedServer_t" + }, + { + "callback_id": 1303, + "fields": [ + { "fieldname":"m_rgchCurrentFile", "fieldtype":"char [260]" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_uBytesTransferredThisChunk", "fieldtype":"uint32" }, + { "fieldname":"m_dAppPercentComplete", "fieldtype":"double" }, + { "fieldname":"m_bUploading", "fieldtype":"bool" } + ], + "struct": "RemoteStorageAppSyncProgress_t" + }, + { + "callback_id": 1305, + "fields": [ + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "RemoteStorageAppSyncStatusCheck_t" + }, + { + "callback_id": 1307, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_hFile", "fieldtype":"UGCHandle_t" }, + { "fieldname":"m_rgchFilename", "fieldtype":"char [260]" } + ], + "struct": "RemoteStorageFileShareResult_t" + }, + { + "callback_id": 1309, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype":"bool" } + ], + "struct": "RemoteStoragePublishFileResult_t" + }, + { + "callback_id": 1311, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } + ], + "struct": "RemoteStorageDeletePublishedFileResult_t" + }, + { + "callback_id": 1312, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nResultsReturned", "fieldtype":"int32" }, + { "fieldname":"m_nTotalResultCount", "fieldtype":"int32" }, + { "fieldname":"m_rgPublishedFileId", "fieldtype":"PublishedFileId_t [50]" } + ], + "struct": "RemoteStorageEnumerateUserPublishedFilesResult_t" + }, + { + "callback_id": 1313, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } + ], + "struct": "RemoteStorageSubscribePublishedFileResult_t" + }, + { + "callback_id": 1314, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nResultsReturned", "fieldtype":"int32" }, + { "fieldname":"m_nTotalResultCount", "fieldtype":"int32" }, + { "fieldname":"m_rgPublishedFileId", "fieldtype":"PublishedFileId_t [50]" }, + { "fieldname":"m_rgRTimeSubscribed", "fieldtype":"uint32 [50]" } + ], + "struct": "RemoteStorageEnumerateUserSubscribedFilesResult_t" + }, + { + "callback_id": 1315, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } + ], + "struct": "RemoteStorageUnsubscribePublishedFileResult_t" + }, + { + "callback_id": 1316, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype":"bool" } + ], + "struct": "RemoteStorageUpdatePublishedFileResult_t" + }, + { + "callback_id": 1317, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_hFile", "fieldtype":"UGCHandle_t" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_nSizeInBytes", "fieldtype":"int32" }, + { "fieldname":"m_pchFileName", "fieldtype":"char [260]" }, + { "fieldname":"m_ulSteamIDOwner", "fieldtype":"uint64" } + ], + "struct": "RemoteStorageDownloadUGCResult_t" + }, + { + "callback_id": 1318, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nCreatorAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_nConsumerAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_rgchTitle", "fieldtype":"char [129]" }, + { "fieldname":"m_rgchDescription", "fieldtype":"char [8000]" }, + { "fieldname":"m_hFile", "fieldtype":"UGCHandle_t" }, + { "fieldname":"m_hPreviewFile", "fieldtype":"UGCHandle_t" }, + { "fieldname":"m_ulSteamIDOwner", "fieldtype":"uint64" }, + { "fieldname":"m_rtimeCreated", "fieldtype":"uint32" }, + { "fieldname":"m_rtimeUpdated", "fieldtype":"uint32" }, + { "fieldname":"m_eVisibility", "fieldtype":"ERemoteStoragePublishedFileVisibility" }, + { "fieldname":"m_bBanned", "fieldtype":"bool" }, + { "fieldname":"m_rgchTags", "fieldtype":"char [1025]" }, + { "fieldname":"m_bTagsTruncated", "fieldtype":"bool" }, + { "fieldname":"m_pchFileName", "fieldtype":"char [260]" }, + { "fieldname":"m_nFileSize", "fieldtype":"int32" }, + { "fieldname":"m_nPreviewFileSize", "fieldtype":"int32" }, + { "fieldname":"m_rgchURL", "fieldtype":"char [256]" }, + { "fieldname":"m_eFileType", "fieldtype":"EWorkshopFileType" }, + { "fieldname":"m_bAcceptedForUse", "fieldtype":"bool" } + ], + "struct": "RemoteStorageGetPublishedFileDetailsResult_t" + }, + { + "callback_id": 1319, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nResultsReturned", "fieldtype":"int32" }, + { "fieldname":"m_nTotalResultCount", "fieldtype":"int32" }, + { "fieldname":"m_rgPublishedFileId", "fieldtype":"PublishedFileId_t [50]" }, + { "fieldname":"m_rgScore", "fieldtype":"float [50]" }, + { "fieldname":"m_nAppId", "fieldtype":"AppId_t" }, + { "fieldname":"m_unStartIndex", "fieldtype":"uint32" } + ], + "struct": "RemoteStorageEnumerateWorkshopFilesResult_t" + }, + { + "callback_id": 1320, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_unPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nVotesFor", "fieldtype":"int32" }, + { "fieldname":"m_nVotesAgainst", "fieldtype":"int32" }, + { "fieldname":"m_nReports", "fieldtype":"int32" }, + { "fieldname":"m_fScore", "fieldtype":"float" } + ], + "struct": "RemoteStorageGetPublishedItemVoteDetailsResult_t" + }, + { + "callback_id": 1321, + "fields": [ + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + ], + "struct": "RemoteStoragePublishedFileSubscribed_t" + }, + { + "callback_id": 1322, + "fields": [ + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + ], + "struct": "RemoteStoragePublishedFileUnsubscribed_t" + }, + { + "callback_id": 1323, + "fields": [ + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + ], + "struct": "RemoteStoragePublishedFileDeleted_t" + }, + { + "callback_id": 1324, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } + ], + "struct": "RemoteStorageUpdateUserPublishedItemVoteResult_t" + }, + { + "callback_id": 1325, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_eVote", "fieldtype":"EWorkshopVote" } + ], + "struct": "RemoteStorageUserVoteDetails_t" + }, + { + "callback_id": 1326, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nResultsReturned", "fieldtype":"int32" }, + { "fieldname":"m_nTotalResultCount", "fieldtype":"int32" }, + { "fieldname":"m_rgPublishedFileId", "fieldtype":"PublishedFileId_t [50]" } + ], + "struct": "RemoteStorageEnumerateUserSharedWorkshopFilesResult_t" + }, + { + "callback_id": 1327, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_eAction", "fieldtype":"EWorkshopFileAction" } + ], + "struct": "RemoteStorageSetUserPublishedFileActionResult_t" + }, + { + "callback_id": 1328, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_eAction", "fieldtype":"EWorkshopFileAction" }, + { "fieldname":"m_nResultsReturned", "fieldtype":"int32" }, + { "fieldname":"m_nTotalResultCount", "fieldtype":"int32" }, + { "fieldname":"m_rgPublishedFileId", "fieldtype":"PublishedFileId_t [50]" }, + { "fieldname":"m_rgRTimeUpdated", "fieldtype":"uint32 [50]" } + ], + "struct": "RemoteStorageEnumeratePublishedFilesByUserActionResult_t" + }, + { + "callback_id": 1329, + "fields": [ + { "fieldname":"m_dPercentFile", "fieldtype":"double" }, + { "fieldname":"m_bPreview", "fieldtype":"bool" } + ], + "struct": "RemoteStoragePublishFileProgress_t" + }, + { + "callback_id": 1330, + "fields": [ + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_ulUnused", "fieldtype":"uint64" } + ], + "struct": "RemoteStoragePublishedFileUpdated_t" + }, + { + "callback_id": 1331, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "RemoteStorageFileWriteAsyncComplete_t" + }, + { + "callback_id": 1332, + "fields": [ + { "fieldname":"m_hFileReadAsync", "fieldtype":"SteamAPICall_t" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nOffset", "fieldtype":"uint32" }, + { "fieldname":"m_cubRead", "fieldtype":"uint32" } + ], + "struct": "RemoteStorageFileReadAsyncComplete_t" + }, + { + "callback_id": 1101, + "fields": [ + { "fieldname":"m_nGameID", "fieldtype":"uint64" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } + ], + "struct": "UserStatsReceived_t" + }, + { + "callback_id": 1102, + "fields": [ + { "fieldname":"m_nGameID", "fieldtype":"uint64" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "UserStatsStored_t" + }, + { + "callback_id": 1103, + "fields": [ + { "fieldname":"m_nGameID", "fieldtype":"uint64" }, + { "fieldname":"m_bGroupAchievement", "fieldtype":"bool" }, + { "fieldname":"m_rgchAchievementName", "fieldtype":"char [128]" }, + { "fieldname":"m_nCurProgress", "fieldtype":"uint32" }, + { "fieldname":"m_nMaxProgress", "fieldtype":"uint32" } + ], + "struct": "UserAchievementStored_t" + }, + { + "callback_id": 1104, + "fields": [ + { "fieldname":"m_hSteamLeaderboard", "fieldtype":"SteamLeaderboard_t" }, + { "fieldname":"m_bLeaderboardFound", "fieldtype":"uint8" } + ], + "struct": "LeaderboardFindResult_t" + }, + { + "callback_id": 1105, + "fields": [ + { "fieldname":"m_hSteamLeaderboard", "fieldtype":"SteamLeaderboard_t" }, + { "fieldname":"m_hSteamLeaderboardEntries", "fieldtype":"SteamLeaderboardEntries_t" }, + { "fieldname":"m_cEntryCount", "fieldtype":"int" } + ], + "struct": "LeaderboardScoresDownloaded_t" + }, + { + "callback_id": 1106, + "fields": [ + { "fieldname":"m_bSuccess", "fieldtype":"uint8" }, + { "fieldname":"m_hSteamLeaderboard", "fieldtype":"SteamLeaderboard_t" }, + { "fieldname":"m_nScore", "fieldtype":"int32" }, + { "fieldname":"m_bScoreChanged", "fieldtype":"uint8" }, + { "fieldname":"m_nGlobalRankNew", "fieldtype":"int" }, + { "fieldname":"m_nGlobalRankPrevious", "fieldtype":"int" } + ], + "struct": "LeaderboardScoreUploaded_t" + }, + { + "callback_id": 1107, + "fields": [ + { "fieldname":"m_bSuccess", "fieldtype":"uint8" }, + { "fieldname":"m_cPlayers", "fieldtype":"int32" } + ], + "struct": "NumberOfCurrentPlayers_t" + }, + { + "callback_id": 1108, + "fields": [ + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } + ], + "struct": "UserStatsUnloaded_t" + }, + { + "callback_id": 1109, + "fields": [ + { "fieldname":"m_nGameID", "fieldtype":"CGameID" }, + { "fieldname":"m_rgchAchievementName", "fieldtype":"char [128]" }, + { "fieldname":"m_bAchieved", "fieldtype":"bool" }, + { "fieldname":"m_nIconHandle", "fieldtype":"int" } + ], + "struct": "UserAchievementIconFetched_t" + }, + { + "callback_id": 1110, + "fields": [ + { "fieldname":"m_nGameID", "fieldtype":"uint64" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "GlobalAchievementPercentagesReady_t" + }, + { + "callback_id": 1111, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_hSteamLeaderboard", "fieldtype":"SteamLeaderboard_t" } + ], + "struct": "LeaderboardUGCSet_t" + }, + { + "callback_id": 1112, + "fields": [ + { "fieldname":"m_nGameID", "fieldtype":"uint64" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_ulRequiredDiskSpace", "fieldtype":"uint64" } + ], + "struct": "PS3TrophiesInstalled_t" + }, + { + "callback_id": 1112, + "fields": [ + { "fieldname":"m_nGameID", "fieldtype":"uint64" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "GlobalStatsReceived_t" + }, + { + "callback_id": 1005, + "fields": [ + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + ], + "struct": "DlcInstalled_t" + }, + { + "callback_id": 1008, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"ERegisterActivationCodeResult" }, + { "fieldname":"m_unPackageRegistered", "fieldtype":"uint32" } + ], + "struct": "RegisterActivationCodeResponse_t" + }, + { + "callback_id": 1014, + "fields": [], + "struct": "NewUrlLaunchParameters_t" + }, + { + "callback_id": 1021, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nAppID", "fieldtype":"uint32" }, + { "fieldname":"m_cchKeyLength", "fieldtype":"uint32" }, + { "fieldname":"m_rgchKey", "fieldtype":"char [240]" } + ], + "struct": "AppProofOfPurchaseKeyResponse_t" + }, + { + "callback_id": 1023, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_ulFileSize", "fieldtype":"uint64" }, + { "fieldname":"m_FileSHA", "fieldtype":"uint8 [20]" }, + { "fieldname":"m_unFlags", "fieldtype":"uint32" } + ], + "struct": "FileDetailsResult_t" + }, + { + "callback_id": 1030, + "fields": [ + { "fieldname":"m_unAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_bIsOffline", "fieldtype":"bool" }, + { "fieldname":"m_unSecondsAllowed", "fieldtype":"uint32" }, + { "fieldname":"m_unSecondsPlayed", "fieldtype":"uint32" } + ], + "struct": "TimedTrialStatus_t" + }, + { + "callback_id": 1202, + "fields": [ + { "fieldname":"m_steamIDRemote", "fieldtype":"CSteamID" } + ], + "struct": "P2PSessionRequest_t" + }, + { + "callback_id": 1203, + "fields": [ + { "fieldname":"m_steamIDRemote", "fieldtype":"CSteamID" }, + { "fieldname":"m_eP2PSessionError", "fieldtype":"uint8" } + ], + "struct": "P2PSessionConnectFail_t" + }, + { + "callback_id": 1201, + "fields": [ + { "fieldname":"m_hSocket", "fieldtype":"SNetSocket_t" }, + { "fieldname":"m_hListenSocket", "fieldtype":"SNetListenSocket_t" }, + { "fieldname":"m_steamIDRemote", "fieldtype":"CSteamID" }, + { "fieldname":"m_eSNetSocketState", "fieldtype":"int" } + ], + "struct": "SocketStatusCallback_t" + }, + { + "callback_id": 2301, + "fields": [ + { "fieldname":"m_hLocal", "fieldtype":"ScreenshotHandle" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "ScreenshotReady_t" + }, + { + "callback_id": 2302, + "fields": [], + "struct": "ScreenshotRequested_t" + }, + { + "callback_id": 4001, + "fields": [], + "struct": "PlaybackStatusHasChanged_t" + }, + { + "callback_id": 4002, + "fields": [ + { "fieldname":"m_flNewVolume", "fieldtype":"float" } + ], + "struct": "VolumeHasChanged_t" + }, + { + "callback_id": 4101, + "fields": [], + "struct": "MusicPlayerRemoteWillActivate_t" + }, + { + "callback_id": 4102, + "fields": [], + "struct": "MusicPlayerRemoteWillDeactivate_t" + }, + { + "callback_id": 4103, + "fields": [], + "struct": "MusicPlayerRemoteToFront_t" + }, + { + "callback_id": 4104, + "fields": [], + "struct": "MusicPlayerWillQuit_t" + }, + { + "callback_id": 4105, + "fields": [], + "struct": "MusicPlayerWantsPlay_t" + }, + { + "callback_id": 4106, + "fields": [], + "struct": "MusicPlayerWantsPause_t" + }, + { + "callback_id": 4107, + "fields": [], + "struct": "MusicPlayerWantsPlayPrevious_t" + }, + { + "callback_id": 4108, + "fields": [], + "struct": "MusicPlayerWantsPlayNext_t" + }, + { + "callback_id": 4109, + "fields": [ + { "fieldname":"m_bShuffled", "fieldtype":"bool" } + ], + "struct": "MusicPlayerWantsShuffled_t" + }, + { + "callback_id": 4110, + "fields": [ + { "fieldname":"m_bLooped", "fieldtype":"bool" } + ], + "struct": "MusicPlayerWantsLooped_t" + }, + { + "callback_id": 4011, + "fields": [ + { "fieldname":"m_flNewVolume", "fieldtype":"float" } + ], + "struct": "MusicPlayerWantsVolume_t" + }, + { + "callback_id": 4012, + "fields": [ + { "fieldname":"nID", "fieldtype":"int" } + ], + "struct": "MusicPlayerSelectsQueueEntry_t" + }, + { + "callback_id": 4013, + "fields": [ + { "fieldname":"nID", "fieldtype":"int" } + ], + "struct": "MusicPlayerSelectsPlaylistEntry_t" + }, + { + "callback_id": 4114, + "fields": [ + { "fieldname":"m_nPlayingRepeatStatus", "fieldtype":"int" } + ], + "struct": "MusicPlayerWantsPlayingRepeatStatus_t" + }, + { + "callback_id": 2101, + "fields": [ + { "fieldname":"m_hRequest", "fieldtype":"HTTPRequestHandle" }, + { "fieldname":"m_ulContextValue", "fieldtype":"uint64" }, + { "fieldname":"m_bRequestSuccessful", "fieldtype":"bool" }, + { "fieldname":"m_eStatusCode", "fieldtype":"EHTTPStatusCode" }, + { "fieldname":"m_unBodySize", "fieldtype":"uint32" } + ], + "struct": "HTTPRequestCompleted_t" + }, + { + "callback_id": 2102, + "fields": [ + { "fieldname":"m_hRequest", "fieldtype":"HTTPRequestHandle" }, + { "fieldname":"m_ulContextValue", "fieldtype":"uint64" } + ], + "struct": "HTTPRequestHeadersReceived_t" + }, + { + "callback_id": 2103, + "fields": [ + { "fieldname":"m_hRequest", "fieldtype":"HTTPRequestHandle" }, + { "fieldname":"m_ulContextValue", "fieldtype":"uint64" }, + { "fieldname":"m_cOffset", "fieldtype":"uint32" }, + { "fieldname":"m_cBytesReceived", "fieldtype":"uint32" } + ], + "struct": "HTTPRequestDataReceived_t" + }, + { + "callback_id": 3401, + "fields": [ + { "fieldname":"m_handle", "fieldtype":"UGCQueryHandle_t" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_unNumResultsReturned", "fieldtype":"uint32" }, + { "fieldname":"m_unTotalMatchingResults", "fieldtype":"uint32" }, + { "fieldname":"m_bCachedData", "fieldtype":"bool" }, + { "fieldname":"m_rgchNextCursor", "fieldtype":"char [256]" } + ], + "struct": "SteamUGCQueryCompleted_t" + }, + { + "callback_id": 3402, + "fields": [ + { "fieldname":"m_details", "fieldtype":"SteamUGCDetails_t" }, + { "fieldname":"m_bCachedData", "fieldtype":"bool" } + ], + "struct": "SteamUGCRequestUGCDetailsResult_t" + }, + { + "callback_id": 3403, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype":"bool" } + ], + "struct": "CreateItemResult_t" + }, + { + "callback_id": 3404, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_bUserNeedsToAcceptWorkshopLegalAgreement", "fieldtype":"bool" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } + ], + "struct": "SubmitItemUpdateResult_t" + }, + { + "callback_id": 3405, + "fields": [ + { "fieldname":"m_unAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } + ], + "struct": "ItemInstalled_t" + }, + { + "callback_id": 3406, + "fields": [ + { "fieldname":"m_unAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "DownloadItemResult_t" + }, + { + "callback_id": 3407, + "fields": [ + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_bWasAddRequest", "fieldtype":"bool" } + ], + "struct": "UserFavoriteItemsListChanged_t" + }, + { + "callback_id": 3408, + "fields": [ + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_bVoteUp", "fieldtype":"bool" } + ], + "struct": "SetUserItemVoteResult_t" + }, + { + "callback_id": 3409, + "fields": [ + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_bVotedUp", "fieldtype":"bool" }, + { "fieldname":"m_bVotedDown", "fieldtype":"bool" }, + { "fieldname":"m_bVoteSkipped", "fieldtype":"bool" } + ], + "struct": "GetUserItemVoteResult_t" + }, + { + "callback_id": 3410, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "StartPlaytimeTrackingResult_t" + }, + { + "callback_id": 3411, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "StopPlaytimeTrackingResult_t" + }, + { + "callback_id": 3412, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nChildPublishedFileId", "fieldtype":"PublishedFileId_t" } + ], + "struct": "AddUGCDependencyResult_t" + }, + { + "callback_id": 3413, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nChildPublishedFileId", "fieldtype":"PublishedFileId_t" } + ], + "struct": "RemoveUGCDependencyResult_t" + }, + { + "callback_id": 3414, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + ], + "struct": "AddAppDependencyResult_t" + }, + { + "callback_id": 3415, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + ], + "struct": "RemoveAppDependencyResult_t" + }, + { + "callback_id": 3416, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_rgAppIDs", "fieldtype":"AppId_t [32]" }, + { "fieldname":"m_nNumAppDependencies", "fieldtype":"uint32" }, + { "fieldname":"m_nTotalNumAppDependencies", "fieldtype":"uint32" } + ], + "struct": "GetAppDependenciesResult_t" + }, + { + "callback_id": 3417, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } + ], + "struct": "DeleteItemResult_t" + }, + { + "callback_id": 3901, + "fields": [ + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + ], + "struct": "SteamAppInstalled_t" + }, + { + "callback_id": 3902, + "fields": [ + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + ], + "struct": "SteamAppUninstalled_t" + }, + { + "callback_id": 4501, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" } + ], + "struct": "HTML_BrowserReady_t" + }, + { + "callback_id": 4502, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pBGRA", "fieldtype":"const char *" }, + { "fieldname":"unWide", "fieldtype":"uint32" }, + { "fieldname":"unTall", "fieldtype":"uint32" }, + { "fieldname":"unUpdateX", "fieldtype":"uint32" }, + { "fieldname":"unUpdateY", "fieldtype":"uint32" }, + { "fieldname":"unUpdateWide", "fieldtype":"uint32" }, + { "fieldname":"unUpdateTall", "fieldtype":"uint32" }, + { "fieldname":"unScrollX", "fieldtype":"uint32" }, + { "fieldname":"unScrollY", "fieldtype":"uint32" }, + { "fieldname":"flPageScale", "fieldtype":"float" }, + { "fieldname":"unPageSerial", "fieldtype":"uint32" } + ], + "struct": "HTML_NeedsPaint_t" + }, + { + "callback_id": 4503, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchURL", "fieldtype":"const char *" }, + { "fieldname":"pchTarget", "fieldtype":"const char *" }, + { "fieldname":"pchPostData", "fieldtype":"const char *" }, + { "fieldname":"bIsRedirect", "fieldtype":"bool" } + ], + "struct": "HTML_StartRequest_t" + }, + { + "callback_id": 4504, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" } + ], + "struct": "HTML_CloseBrowser_t" + }, + { + "callback_id": 4505, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchURL", "fieldtype":"const char *" }, + { "fieldname":"pchPostData", "fieldtype":"const char *" }, + { "fieldname":"bIsRedirect", "fieldtype":"bool" }, + { "fieldname":"pchPageTitle", "fieldtype":"const char *" }, + { "fieldname":"bNewNavigation", "fieldtype":"bool" } + ], + "struct": "HTML_URLChanged_t" + }, + { + "callback_id": 4506, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchURL", "fieldtype":"const char *" }, + { "fieldname":"pchPageTitle", "fieldtype":"const char *" } + ], + "struct": "HTML_FinishedRequest_t" + }, + { + "callback_id": 4507, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchURL", "fieldtype":"const char *" } + ], + "struct": "HTML_OpenLinkInNewTab_t" + }, + { + "callback_id": 4508, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchTitle", "fieldtype":"const char *" } + ], + "struct": "HTML_ChangedTitle_t" + }, + { + "callback_id": 4509, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"unResults", "fieldtype":"uint32" }, + { "fieldname":"unCurrentMatch", "fieldtype":"uint32" } + ], + "struct": "HTML_SearchResults_t" + }, + { + "callback_id": 4510, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"bCanGoBack", "fieldtype":"bool" }, + { "fieldname":"bCanGoForward", "fieldtype":"bool" } + ], + "struct": "HTML_CanGoBackAndForward_t" + }, + { + "callback_id": 4511, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"unScrollMax", "fieldtype":"uint32" }, + { "fieldname":"unScrollCurrent", "fieldtype":"uint32" }, + { "fieldname":"flPageScale", "fieldtype":"float" }, + { "fieldname":"bVisible", "fieldtype":"bool" }, + { "fieldname":"unPageSize", "fieldtype":"uint32" } + ], + "struct": "HTML_HorizontalScroll_t" + }, + { + "callback_id": 4512, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"unScrollMax", "fieldtype":"uint32" }, + { "fieldname":"unScrollCurrent", "fieldtype":"uint32" }, + { "fieldname":"flPageScale", "fieldtype":"float" }, + { "fieldname":"bVisible", "fieldtype":"bool" }, + { "fieldname":"unPageSize", "fieldtype":"uint32" } + ], + "struct": "HTML_VerticalScroll_t" + }, + { + "callback_id": 4513, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"x", "fieldtype":"uint32" }, + { "fieldname":"y", "fieldtype":"uint32" }, + { "fieldname":"pchURL", "fieldtype":"const char *" }, + { "fieldname":"bInput", "fieldtype":"bool" }, + { "fieldname":"bLiveLink", "fieldtype":"bool" } + ], + "struct": "HTML_LinkAtPosition_t" + }, + { + "callback_id": 4514, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchMessage", "fieldtype":"const char *" } + ], + "struct": "HTML_JSAlert_t" + }, + { + "callback_id": 4515, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchMessage", "fieldtype":"const char *" } + ], + "struct": "HTML_JSConfirm_t" + }, + { + "callback_id": 4516, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchTitle", "fieldtype":"const char *" }, + { "fieldname":"pchInitialFile", "fieldtype":"const char *" } + ], + "struct": "HTML_FileOpenDialog_t" + }, + { + "callback_id": 4521, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchURL", "fieldtype":"const char *" }, + { "fieldname":"unX", "fieldtype":"uint32" }, + { "fieldname":"unY", "fieldtype":"uint32" }, + { "fieldname":"unWide", "fieldtype":"uint32" }, + { "fieldname":"unTall", "fieldtype":"uint32" }, + { "fieldname":"unNewWindow_BrowserHandle_IGNORE", "fieldtype":"HHTMLBrowser" } + ], + "struct": "HTML_NewWindow_t" + }, + { + "callback_id": 4522, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"eMouseCursor", "fieldtype":"uint32" } + ], + "struct": "HTML_SetCursor_t" + }, + { + "callback_id": 4523, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchMsg", "fieldtype":"const char *" } + ], + "struct": "HTML_StatusText_t" + }, + { + "callback_id": 4524, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchMsg", "fieldtype":"const char *" } + ], + "struct": "HTML_ShowToolTip_t" + }, + { + "callback_id": 4525, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"pchMsg", "fieldtype":"const char *" } + ], + "struct": "HTML_UpdateToolTip_t" + }, + { + "callback_id": 4526, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" } + ], + "struct": "HTML_HideToolTip_t" + }, + { + "callback_id": 4527, + "fields": [ + { "fieldname":"unBrowserHandle", "fieldtype":"HHTMLBrowser" }, + { "fieldname":"unOldBrowserHandle", "fieldtype":"HHTMLBrowser" } + ], + "struct": "HTML_BrowserRestarted_t" + }, + { + "callback_id": 4700, + "fields": [ + { "fieldname":"m_handle", "fieldtype":"SteamInventoryResult_t" }, + { "fieldname":"m_result", "fieldtype":"EResult" } + ], + "struct": "SteamInventoryResultReady_t" + }, + { + "callback_id": 4701, + "fields": [ + { "fieldname":"m_handle", "fieldtype":"SteamInventoryResult_t" } + ], + "struct": "SteamInventoryFullUpdate_t" + }, + { + "callback_id": 4702, + "fields": [], + "struct": "SteamInventoryDefinitionUpdate_t" + }, + { + "callback_id": 4703, + "fields": [ + { "fieldname":"m_result", "fieldtype":"EResult" }, + { "fieldname":"m_steamID", "fieldtype":"CSteamID" }, + { "fieldname":"m_numEligiblePromoItemDefs", "fieldtype":"int" }, + { "fieldname":"m_bCachedData", "fieldtype":"bool" } + ], + "struct": "SteamInventoryEligiblePromoItemDefIDs_t" + }, + { + "callback_id": 4704, + "fields": [ + { "fieldname":"m_result", "fieldtype":"EResult" }, + { "fieldname":"m_ulOrderID", "fieldtype":"uint64" }, + { "fieldname":"m_ulTransID", "fieldtype":"uint64" } + ], + "struct": "SteamInventoryStartPurchaseResult_t" + }, + { + "callback_id": 4705, + "fields": [ + { "fieldname":"m_result", "fieldtype":"EResult" }, + { "fieldname":"m_rgchCurrency", "fieldtype":"char [4]" } + ], + "struct": "SteamInventoryRequestPricesResult_t" + }, + { + "callback_id": 4611, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_unVideoAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_rgchURL", "fieldtype":"char [256]" } + ], + "struct": "GetVideoURLResult_t" + }, + { + "callback_id": 4624, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_unVideoAppID", "fieldtype":"AppId_t" } + ], + "struct": "GetOPFSettingsResult_t" + }, + { + "callback_id": 5001, + "fields": [], + "struct": "SteamParentalSettingsChanged_t" + }, + { + "callback_id": 5701, + "fields": [ + { "fieldname":"m_unSessionID", "fieldtype":"RemotePlaySessionID_t" } + ], + "struct": "SteamRemotePlaySessionConnected_t" + }, + { + "callback_id": 5702, + "fields": [ + { "fieldname":"m_unSessionID", "fieldtype":"RemotePlaySessionID_t" } + ], + "struct": "SteamRemotePlaySessionDisconnected_t" + }, + { + "callback_id": 1251, + "fields": [ + { "fieldname":"m_identityRemote", "fieldtype":"SteamNetworkingIdentity" } + ], + "struct": "SteamNetworkingMessagesSessionRequest_t" + }, + { + "callback_id": 1252, + "fields": [ + { "fieldname":"m_info", "fieldtype":"SteamNetConnectionInfo_t" } + ], + "struct": "SteamNetworkingMessagesSessionFailed_t" + }, + { + "callback_id": 1221, + "fields": [ + { "fieldname":"m_hConn", "fieldtype":"HSteamNetConnection" }, + { "fieldname":"m_info", "fieldtype":"SteamNetConnectionInfo_t" }, + { "fieldname":"m_eOldState", "fieldtype":"ESteamNetworkingConnectionState" } + ], + "struct": "SteamNetConnectionStatusChangedCallback_t" + }, + { + "callback_id": 1222, + "fields": [ + { "fieldname":"m_eAvail", "fieldtype":"ESteamNetworkingAvailability" }, + { "fieldname":"m_debugMsg", "fieldtype":"char [256]" } + ], + "struct": "SteamNetAuthenticationStatus_t" + }, + { + "callback_id": 1281, + "fields": [ + { "fieldname":"m_eAvail", "fieldtype":"ESteamNetworkingAvailability" }, + { "fieldname":"m_bPingMeasurementInProgress", "fieldtype":"int" }, + { "fieldname":"m_eAvailNetworkConfig", "fieldtype":"ESteamNetworkingAvailability" }, + { "fieldname":"m_eAvailAnyRelay", "fieldtype":"ESteamNetworkingAvailability" }, + { "fieldname":"m_debugMsg", "fieldtype":"char [256]" } + ], + "struct": "SteamRelayNetworkStatus_t" + }, + { + "callback_id": 201, + "fields": [ + { "fieldname":"m_SteamID", "fieldtype":"CSteamID" }, + { "fieldname":"m_OwnerSteamID", "fieldtype":"CSteamID" } + ], + "struct": "GSClientApprove_t" + }, + { + "callback_id": 202, + "fields": [ + { "fieldname":"m_SteamID", "fieldtype":"CSteamID" }, + { "fieldname":"m_eDenyReason", "fieldtype":"EDenyReason" }, + { "fieldname":"m_rgchOptionalText", "fieldtype":"char [128]" } + ], + "struct": "GSClientDeny_t" + }, + { + "callback_id": 203, + "fields": [ + { "fieldname":"m_SteamID", "fieldtype":"CSteamID" }, + { "fieldname":"m_eDenyReason", "fieldtype":"EDenyReason" } + ], + "struct": "GSClientKick_t" + }, + { + "callback_id": 206, + "fields": [ + { "fieldname":"m_SteamID", "fieldtype":"uint64" }, + { "fieldname":"m_pchAchievement", "fieldtype":"char [128]" }, + { "fieldname":"m_bUnlocked", "fieldtype":"bool" } + ], + "struct": "GSClientAchievementStatus_t" + }, + { + "callback_id": 115, + "fields": [ + { "fieldname":"m_bSecure", "fieldtype":"uint8" } + ], + "struct": "GSPolicyResponse_t" + }, + { + "callback_id": 207, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nRank", "fieldtype":"int32" }, + { "fieldname":"m_unTotalConnects", "fieldtype":"uint32" }, + { "fieldname":"m_unTotalMinutesPlayed", "fieldtype":"uint32" } + ], + "struct": "GSGameplayStats_t" + }, + { + "callback_id": 208, + "fields": [ + { "fieldname":"m_SteamIDUser", "fieldtype":"CSteamID" }, + { "fieldname":"m_SteamIDGroup", "fieldtype":"CSteamID" }, + { "fieldname":"m_bMember", "fieldtype":"bool" }, + { "fieldname":"m_bOfficer", "fieldtype":"bool" } + ], + "struct": "GSClientGroupStatus_t" + }, + { + "callback_id": 209, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_unReputationScore", "fieldtype":"uint32" }, + { "fieldname":"m_bBanned", "fieldtype":"bool" }, + { "fieldname":"m_unBannedIP", "fieldtype":"uint32" }, + { "fieldname":"m_usBannedPort", "fieldtype":"uint16" }, + { "fieldname":"m_ulBannedGameID", "fieldtype":"uint64" }, + { "fieldname":"m_unBanExpires", "fieldtype":"uint32" } + ], + "struct": "GSReputation_t" + }, + { + "callback_id": 210, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" } + ], + "struct": "AssociateWithClanResult_t" + }, + { + "callback_id": 211, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_cPlayersThatDontLikeCandidate", "fieldtype":"int" }, + { "fieldname":"m_cPlayersThatCandidateDoesntLike", "fieldtype":"int" }, + { "fieldname":"m_cClanPlayersThatDontLikeCandidate", "fieldtype":"int" }, + { "fieldname":"m_SteamIDCandidate", "fieldtype":"CSteamID" } + ], + "struct": "ComputeNewPlayerCompatibilityResult_t" + }, + { + "callback_id": 1800, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } + ], + "struct": "GSStatsReceived_t" + }, + { + "callback_id": 1801, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } + ], + "struct": "GSStatsStored_t" + }, + { + "callback_id": 1108, + "fields": [ + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } + ], + "struct": "GSStatsUnloaded_t" + } + ], + "consts": [ + { "constname":"k_cubSaltSize", "consttype":"int", "constval":"8" }, + { "constname":"k_GIDNil", "consttype":"GID_t", "constval":"0xffffffffffffffffull" }, + { "constname":"k_TxnIDNil", "consttype":"GID_t", "constval":"k_GIDNil" }, + { "constname":"k_TxnIDUnknown", "consttype":"GID_t", "constval":"0" }, + { "constname":"k_JobIDNil", "consttype":"JobID_t", "constval":"0xffffffffffffffffull" }, + { "constname":"k_uPackageIdInvalid", "consttype":"PackageId_t", "constval":"0xFFFFFFFF" }, + { "constname":"k_uBundleIdInvalid", "consttype":"BundleId_t", "constval":"0" }, + { "constname":"k_uAppIdInvalid", "consttype":"AppId_t", "constval":"0x0" }, + { "constname":"k_ulAssetClassIdInvalid", "consttype":"AssetClassId_t", "constval":"0x0" }, + { "constname":"k_uPhysicalItemIdInvalid", "consttype":"PhysicalItemId_t", "constval":"0x0" }, + { "constname":"k_uDepotIdInvalid", "consttype":"DepotId_t", "constval":"0x0" }, + { "constname":"k_uCellIDInvalid", "consttype":"CellID_t", "constval":"0xFFFFFFFF" }, + { "constname":"k_uAPICallInvalid", "consttype":"SteamAPICall_t", "constval":"0x0" }, + { "constname":"k_uPartnerIdInvalid", "consttype":"PartnerId_t", "constval":"0" }, + { "constname":"k_uManifestIdInvalid", "consttype":"ManifestId_t", "constval":"0" }, + { "constname":"k_ulSiteIdInvalid", "consttype":"SiteId_t", "constval":"0" }, + { "constname":"k_ulPartyBeaconIdInvalid", "consttype":"PartyBeaconID_t", "constval":"0" }, + { "constname":"k_HAuthTicketInvalid", "consttype":"HAuthTicket", "constval":"0" }, + { "constname":"k_unSteamAccountIDMask", "consttype":"unsigned int", "constval":"0xFFFFFFFF" }, + { "constname":"k_unSteamAccountInstanceMask", "consttype":"unsigned int", "constval":"0x000FFFFF" }, + { "constname":"k_unSteamUserDefaultInstance", "consttype":"unsigned int", "constval":"1" }, + { "constname":"k_cchGameExtraInfoMax", "consttype":"int", "constval":"64" }, + { "constname":"k_cchMaxFriendsGroupName", "consttype":"int", "constval":"64" }, + { "constname":"k_cFriendsGroupLimit", "consttype":"int", "constval":"100" }, + { "constname":"k_FriendsGroupID_Invalid", "consttype":"FriendsGroupID_t", "constval":"- 1" }, + { "constname":"k_cEnumerateFollowersMax", "consttype":"int", "constval":"50" }, + { "constname":"k_cubChatMetadataMax", "consttype":"uint32", "constval":"8192" }, + { "constname":"k_cbMaxGameServerGameDir", "consttype":"int", "constval":"32" }, + { "constname":"k_cbMaxGameServerMapName", "consttype":"int", "constval":"32" }, + { "constname":"k_cbMaxGameServerGameDescription", "consttype":"int", "constval":"64" }, + { "constname":"k_cbMaxGameServerName", "consttype":"int", "constval":"64" }, + { "constname":"k_cbMaxGameServerTags", "consttype":"int", "constval":"128" }, + { "constname":"k_cbMaxGameServerGameData", "consttype":"int", "constval":"2048" }, + { "constname":"HSERVERQUERY_INVALID", "consttype":"int", "constval":"0xffffffff" }, + { "constname":"k_unFavoriteFlagNone", "consttype":"uint32", "constval":"0x00" }, + { "constname":"k_unFavoriteFlagFavorite", "consttype":"uint32", "constval":"0x01" }, + { "constname":"k_unFavoriteFlagHistory", "consttype":"uint32", "constval":"0x02" }, + { "constname":"k_unMaxCloudFileChunkSize", "consttype":"uint32", "constval":"100 * 1024 * 1024" }, + { "constname":"k_PublishedFileIdInvalid", "consttype":"PublishedFileId_t", "constval":"0" }, + { "constname":"k_UGCHandleInvalid", "consttype":"UGCHandle_t", "constval":"0xffffffffffffffffull" }, + { "constname":"k_PublishedFileUpdateHandleInvalid", "consttype":"PublishedFileUpdateHandle_t", "constval":"0xffffffffffffffffull" }, + { "constname":"k_UGCFileStreamHandleInvalid", "consttype":"UGCFileWriteStreamHandle_t", "constval":"0xffffffffffffffffull" }, + { "constname":"k_cchPublishedDocumentTitleMax", "consttype":"uint32", "constval":"128 + 1" }, + { "constname":"k_cchPublishedDocumentDescriptionMax", "consttype":"uint32", "constval":"8000" }, + { "constname":"k_cchPublishedDocumentChangeDescriptionMax", "consttype":"uint32", "constval":"8000" }, + { "constname":"k_unEnumeratePublishedFilesMaxResults", "consttype":"uint32", "constval":"50" }, + { "constname":"k_cchTagListMax", "consttype":"uint32", "constval":"1024 + 1" }, + { "constname":"k_cchFilenameMax", "consttype":"uint32", "constval":"260" }, + { "constname":"k_cchPublishedFileURLMax", "consttype":"uint32", "constval":"256" }, + { "constname":"k_cubAppProofOfPurchaseKeyMax", "consttype":"int", "constval":"240" }, + { "constname":"k_nScreenshotMaxTaggedUsers", "consttype":"uint32", "constval":"32" }, + { "constname":"k_nScreenshotMaxTaggedPublishedFiles", "consttype":"uint32", "constval":"32" }, + { "constname":"k_cubUFSTagTypeMax", "consttype":"int", "constval":"255" }, + { "constname":"k_cubUFSTagValueMax", "consttype":"int", "constval":"255" }, + { "constname":"k_ScreenshotThumbWidth", "consttype":"int", "constval":"200" }, + { "constname":"k_UGCQueryHandleInvalid", "consttype":"UGCQueryHandle_t", "constval":"0xffffffffffffffffull" }, + { "constname":"k_UGCUpdateHandleInvalid", "consttype":"UGCUpdateHandle_t", "constval":"0xffffffffffffffffull" }, + { "constname":"kNumUGCResultsPerPage", "consttype":"uint32", "constval":"50" }, + { "constname":"k_cchDeveloperMetadataMax", "consttype":"uint32", "constval":"5000" }, + { "constname":"INVALID_HTMLBROWSER", "consttype":"uint32", "constval":"0" }, + { "constname":"k_SteamItemInstanceIDInvalid", "consttype":"SteamItemInstanceID_t", "constval":"( SteamItemInstanceID_t ) ~ 0" }, + { "constname":"k_SteamInventoryResultInvalid", "consttype":"SteamInventoryResult_t", "constval":"- 1" }, + { "constname":"k_SteamInventoryUpdateHandleInvalid", "consttype":"SteamInventoryUpdateHandle_t", "constval":"0xffffffffffffffffull" }, + { "constname":"k_HSteamNetConnection_Invalid", "consttype":"HSteamNetConnection", "constval":"0" }, + { "constname":"k_HSteamListenSocket_Invalid", "consttype":"HSteamListenSocket", "constval":"0" }, + { "constname":"k_HSteamNetPollGroup_Invalid", "consttype":"HSteamNetPollGroup", "constval":"0" }, + { "constname":"k_cchMaxSteamNetworkingErrMsg", "consttype":"int", "constval":"1024" }, + { "constname":"k_cchSteamNetworkingMaxConnectionCloseReason", "consttype":"int", "constval":"128" }, + { "constname":"k_cchSteamNetworkingMaxConnectionDescription", "consttype":"int", "constval":"128" }, + { "constname":"k_cbMaxSteamNetworkingSocketsMessageSizeSend", "consttype":"int", "constval":"512 * 1024" }, + { "constname":"k_nSteamNetworkingSend_Unreliable", "consttype":"int", "constval":"0" }, + { "constname":"k_nSteamNetworkingSend_NoNagle", "consttype":"int", "constval":"1" }, + { "constname":"k_nSteamNetworkingSend_UnreliableNoNagle", "consttype":"int", "constval":"k_nSteamNetworkingSend_Unreliable | k_nSteamNetworkingSend_NoNagle" }, + { "constname":"k_nSteamNetworkingSend_NoDelay", "consttype":"int", "constval":"4" }, + { "constname":"k_nSteamNetworkingSend_UnreliableNoDelay", "consttype":"int", "constval":"k_nSteamNetworkingSend_Unreliable | k_nSteamNetworkingSend_NoDelay | k_nSteamNetworkingSend_NoNagle" }, + { "constname":"k_nSteamNetworkingSend_Reliable", "consttype":"int", "constval":"8" }, + { "constname":"k_nSteamNetworkingSend_ReliableNoNagle", "consttype":"int", "constval":"k_nSteamNetworkingSend_Reliable | k_nSteamNetworkingSend_NoNagle" }, + { "constname":"k_nSteamNetworkingSend_UseCurrentThread", "consttype":"int", "constval":"16" }, + { "constname":"k_nSteamNetworkingSend_AutoRestartBrokenSession", "consttype":"int", "constval":"32" }, + { "constname":"k_cchMaxSteamNetworkingPingLocationString", "consttype":"int", "constval":"1024" }, + { "constname":"k_nSteamNetworkingPing_Failed", "consttype":"int", "constval":"- 1" }, + { "constname":"k_nSteamNetworkingPing_Unknown", "consttype":"int", "constval":"- 2" }, + { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Default", "consttype":"int", "constval":"- 1" }, + { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Disable", "consttype":"int", "constval":"0" }, + { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Relay", "consttype":"int", "constval":"1" }, + { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Private", "consttype":"int", "constval":"2" }, + { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Public", "consttype":"int", "constval":"4" }, + { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_All", "consttype":"int", "constval":"0x7fffffff" }, + { "constname":"k_SteamDatagramPOPID_dev", "consttype":"SteamNetworkingPOPID", "constval":"( ( uint32 ) 'd' << 16U ) | ( ( uint32 ) 'e' << 8U ) | ( uint32 ) 'v'" }, + { "constname":"k_cbSteamDatagramMaxSerializedTicket", "consttype":"uint32", "constval":"512" }, + { "constname":"k_cbMaxSteamDatagramGameCoordinatorServerLoginAppData", "consttype":"uint32", "constval":"2048" }, + { "constname":"k_cbMaxSteamDatagramGameCoordinatorServerLoginSerialized", "consttype":"uint32", "constval":"4096" } + ], + "enums": [ + { + "enumname": "ESteamIPType", + "values": [ + { "name":"k_ESteamIPTypeIPv4", "value":"0" }, + { "name":"k_ESteamIPTypeIPv6", "value":"1" } + ] + }, + { + "enumname": "EUniverse", + "values": [ + { "name":"k_EUniverseInvalid", "value":"0" }, + { "name":"k_EUniversePublic", "value":"1" }, + { "name":"k_EUniverseBeta", "value":"2" }, + { "name":"k_EUniverseInternal", "value":"3" }, + { "name":"k_EUniverseDev", "value":"4" }, + { "name":"k_EUniverseMax", "value":"5" } + ] + }, + { + "enumname": "EResult", + "values": [ + { "name":"k_EResultNone", "value":"0" }, + { "name":"k_EResultOK", "value":"1" }, + { "name":"k_EResultFail", "value":"2" }, + { "name":"k_EResultNoConnection", "value":"3" }, + { "name":"k_EResultInvalidPassword", "value":"5" }, + { "name":"k_EResultLoggedInElsewhere", "value":"6" }, + { "name":"k_EResultInvalidProtocolVer", "value":"7" }, + { "name":"k_EResultInvalidParam", "value":"8" }, + { "name":"k_EResultFileNotFound", "value":"9" }, + { "name":"k_EResultBusy", "value":"10" }, + { "name":"k_EResultInvalidState", "value":"11" }, + { "name":"k_EResultInvalidName", "value":"12" }, + { "name":"k_EResultInvalidEmail", "value":"13" }, + { "name":"k_EResultDuplicateName", "value":"14" }, + { "name":"k_EResultAccessDenied", "value":"15" }, + { "name":"k_EResultTimeout", "value":"16" }, + { "name":"k_EResultBanned", "value":"17" }, + { "name":"k_EResultAccountNotFound", "value":"18" }, + { "name":"k_EResultInvalidSteamID", "value":"19" }, + { "name":"k_EResultServiceUnavailable", "value":"20" }, + { "name":"k_EResultNotLoggedOn", "value":"21" }, + { "name":"k_EResultPending", "value":"22" }, + { "name":"k_EResultEncryptionFailure", "value":"23" }, + { "name":"k_EResultInsufficientPrivilege", "value":"24" }, + { "name":"k_EResultLimitExceeded", "value":"25" }, + { "name":"k_EResultRevoked", "value":"26" }, + { "name":"k_EResultExpired", "value":"27" }, + { "name":"k_EResultAlreadyRedeemed", "value":"28" }, + { "name":"k_EResultDuplicateRequest", "value":"29" }, + { "name":"k_EResultAlreadyOwned", "value":"30" }, + { "name":"k_EResultIPNotFound", "value":"31" }, + { "name":"k_EResultPersistFailed", "value":"32" }, + { "name":"k_EResultLockingFailed", "value":"33" }, + { "name":"k_EResultLogonSessionReplaced", "value":"34" }, + { "name":"k_EResultConnectFailed", "value":"35" }, + { "name":"k_EResultHandshakeFailed", "value":"36" }, + { "name":"k_EResultIOFailure", "value":"37" }, + { "name":"k_EResultRemoteDisconnect", "value":"38" }, + { "name":"k_EResultShoppingCartNotFound", "value":"39" }, + { "name":"k_EResultBlocked", "value":"40" }, + { "name":"k_EResultIgnored", "value":"41" }, + { "name":"k_EResultNoMatch", "value":"42" }, + { "name":"k_EResultAccountDisabled", "value":"43" }, + { "name":"k_EResultServiceReadOnly", "value":"44" }, + { "name":"k_EResultAccountNotFeatured", "value":"45" }, + { "name":"k_EResultAdministratorOK", "value":"46" }, + { "name":"k_EResultContentVersion", "value":"47" }, + { "name":"k_EResultTryAnotherCM", "value":"48" }, + { "name":"k_EResultPasswordRequiredToKickSession", "value":"49" }, + { "name":"k_EResultAlreadyLoggedInElsewhere", "value":"50" }, + { "name":"k_EResultSuspended", "value":"51" }, + { "name":"k_EResultCancelled", "value":"52" }, + { "name":"k_EResultDataCorruption", "value":"53" }, + { "name":"k_EResultDiskFull", "value":"54" }, + { "name":"k_EResultRemoteCallFailed", "value":"55" }, + { "name":"k_EResultPasswordUnset", "value":"56" }, + { "name":"k_EResultExternalAccountUnlinked", "value":"57" }, + { "name":"k_EResultPSNTicketInvalid", "value":"58" }, + { "name":"k_EResultExternalAccountAlreadyLinked", "value":"59" }, + { "name":"k_EResultRemoteFileConflict", "value":"60" }, + { "name":"k_EResultIllegalPassword", "value":"61" }, + { "name":"k_EResultSameAsPreviousValue", "value":"62" }, + { "name":"k_EResultAccountLogonDenied", "value":"63" }, + { "name":"k_EResultCannotUseOldPassword", "value":"64" }, + { "name":"k_EResultInvalidLoginAuthCode", "value":"65" }, + { "name":"k_EResultAccountLogonDeniedNoMail", "value":"66" }, + { "name":"k_EResultHardwareNotCapableOfIPT", "value":"67" }, + { "name":"k_EResultIPTInitError", "value":"68" }, + { "name":"k_EResultParentalControlRestricted", "value":"69" }, + { "name":"k_EResultFacebookQueryError", "value":"70" }, + { "name":"k_EResultExpiredLoginAuthCode", "value":"71" }, + { "name":"k_EResultIPLoginRestrictionFailed", "value":"72" }, + { "name":"k_EResultAccountLockedDown", "value":"73" }, + { "name":"k_EResultAccountLogonDeniedVerifiedEmailRequired", "value":"74" }, + { "name":"k_EResultNoMatchingURL", "value":"75" }, + { "name":"k_EResultBadResponse", "value":"76" }, + { "name":"k_EResultRequirePasswordReEntry", "value":"77" }, + { "name":"k_EResultValueOutOfRange", "value":"78" }, + { "name":"k_EResultUnexpectedError", "value":"79" }, + { "name":"k_EResultDisabled", "value":"80" }, + { "name":"k_EResultInvalidCEGSubmission", "value":"81" }, + { "name":"k_EResultRestrictedDevice", "value":"82" }, + { "name":"k_EResultRegionLocked", "value":"83" }, + { "name":"k_EResultRateLimitExceeded", "value":"84" }, + { "name":"k_EResultAccountLoginDeniedNeedTwoFactor", "value":"85" }, + { "name":"k_EResultItemDeleted", "value":"86" }, + { "name":"k_EResultAccountLoginDeniedThrottle", "value":"87" }, + { "name":"k_EResultTwoFactorCodeMismatch", "value":"88" }, + { "name":"k_EResultTwoFactorActivationCodeMismatch", "value":"89" }, + { "name":"k_EResultAccountAssociatedToMultiplePartners", "value":"90" }, + { "name":"k_EResultNotModified", "value":"91" }, + { "name":"k_EResultNoMobileDevice", "value":"92" }, + { "name":"k_EResultTimeNotSynced", "value":"93" }, + { "name":"k_EResultSmsCodeFailed", "value":"94" }, + { "name":"k_EResultAccountLimitExceeded", "value":"95" }, + { "name":"k_EResultAccountActivityLimitExceeded", "value":"96" }, + { "name":"k_EResultPhoneActivityLimitExceeded", "value":"97" }, + { "name":"k_EResultRefundToWallet", "value":"98" }, + { "name":"k_EResultEmailSendFailure", "value":"99" }, + { "name":"k_EResultNotSettled", "value":"100" }, + { "name":"k_EResultNeedCaptcha", "value":"101" }, + { "name":"k_EResultGSLTDenied", "value":"102" }, + { "name":"k_EResultGSOwnerDenied", "value":"103" }, + { "name":"k_EResultInvalidItemType", "value":"104" }, + { "name":"k_EResultIPBanned", "value":"105" }, + { "name":"k_EResultGSLTExpired", "value":"106" }, + { "name":"k_EResultInsufficientFunds", "value":"107" }, + { "name":"k_EResultTooManyPending", "value":"108" }, + { "name":"k_EResultNoSiteLicensesFound", "value":"109" }, + { "name":"k_EResultWGNetworkSendExceeded", "value":"110" }, + { "name":"k_EResultAccountNotFriends", "value":"111" }, + { "name":"k_EResultLimitedUserAccount", "value":"112" }, + { "name":"k_EResultCantRemoveItem", "value":"113" }, + { "name":"k_EResultAccountDeleted", "value":"114" }, + { "name":"k_EResultExistingUserCancelledLicense", "value":"115" }, + { "name":"k_EResultCommunityCooldown", "value":"116" }, + { "name":"k_EResultNoLauncherSpecified", "value":"117" }, + { "name":"k_EResultMustAgreeToSSA", "value":"118" }, + { "name":"k_EResultLauncherMigrated", "value":"119" } + ] + }, + { + "enumname": "EVoiceResult", + "values": [ + { "name":"k_EVoiceResultOK", "value":"0" }, + { "name":"k_EVoiceResultNotInitialized", "value":"1" }, + { "name":"k_EVoiceResultNotRecording", "value":"2" }, + { "name":"k_EVoiceResultNoData", "value":"3" }, + { "name":"k_EVoiceResultBufferTooSmall", "value":"4" }, + { "name":"k_EVoiceResultDataCorrupted", "value":"5" }, + { "name":"k_EVoiceResultRestricted", "value":"6" }, + { "name":"k_EVoiceResultUnsupportedCodec", "value":"7" }, + { "name":"k_EVoiceResultReceiverOutOfDate", "value":"8" }, + { "name":"k_EVoiceResultReceiverDidNotAnswer", "value":"9" } + ] + }, + { + "enumname": "EDenyReason", + "values": [ + { "name":"k_EDenyInvalid", "value":"0" }, + { "name":"k_EDenyInvalidVersion", "value":"1" }, + { "name":"k_EDenyGeneric", "value":"2" }, + { "name":"k_EDenyNotLoggedOn", "value":"3" }, + { "name":"k_EDenyNoLicense", "value":"4" }, + { "name":"k_EDenyCheater", "value":"5" }, + { "name":"k_EDenyLoggedInElseWhere", "value":"6" }, + { "name":"k_EDenyUnknownText", "value":"7" }, + { "name":"k_EDenyIncompatibleAnticheat", "value":"8" }, + { "name":"k_EDenyMemoryCorruption", "value":"9" }, + { "name":"k_EDenyIncompatibleSoftware", "value":"10" }, + { "name":"k_EDenySteamConnectionLost", "value":"11" }, + { "name":"k_EDenySteamConnectionError", "value":"12" }, + { "name":"k_EDenySteamResponseTimedOut", "value":"13" }, + { "name":"k_EDenySteamValidationStalled", "value":"14" }, + { "name":"k_EDenySteamOwnerLeftGuestUser", "value":"15" } + ] + }, + { + "enumname": "EBeginAuthSessionResult", + "values": [ + { "name":"k_EBeginAuthSessionResultOK", "value":"0" }, + { "name":"k_EBeginAuthSessionResultInvalidTicket", "value":"1" }, + { "name":"k_EBeginAuthSessionResultDuplicateRequest", "value":"2" }, + { "name":"k_EBeginAuthSessionResultInvalidVersion", "value":"3" }, + { "name":"k_EBeginAuthSessionResultGameMismatch", "value":"4" }, + { "name":"k_EBeginAuthSessionResultExpiredTicket", "value":"5" } + ] + }, + { + "enumname": "EAuthSessionResponse", + "values": [ + { "name":"k_EAuthSessionResponseOK", "value":"0" }, + { "name":"k_EAuthSessionResponseUserNotConnectedToSteam", "value":"1" }, + { "name":"k_EAuthSessionResponseNoLicenseOrExpired", "value":"2" }, + { "name":"k_EAuthSessionResponseVACBanned", "value":"3" }, + { "name":"k_EAuthSessionResponseLoggedInElseWhere", "value":"4" }, + { "name":"k_EAuthSessionResponseVACCheckTimedOut", "value":"5" }, + { "name":"k_EAuthSessionResponseAuthTicketCanceled", "value":"6" }, + { "name":"k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed", "value":"7" }, + { "name":"k_EAuthSessionResponseAuthTicketInvalid", "value":"8" }, + { "name":"k_EAuthSessionResponsePublisherIssuedBan", "value":"9" } + ] + }, + { + "enumname": "EUserHasLicenseForAppResult", + "values": [ + { "name":"k_EUserHasLicenseResultHasLicense", "value":"0" }, + { "name":"k_EUserHasLicenseResultDoesNotHaveLicense", "value":"1" }, + { "name":"k_EUserHasLicenseResultNoAuth", "value":"2" } + ] + }, + { + "enumname": "EAccountType", + "values": [ + { "name":"k_EAccountTypeInvalid", "value":"0" }, + { "name":"k_EAccountTypeIndividual", "value":"1" }, + { "name":"k_EAccountTypeMultiseat", "value":"2" }, + { "name":"k_EAccountTypeGameServer", "value":"3" }, + { "name":"k_EAccountTypeAnonGameServer", "value":"4" }, + { "name":"k_EAccountTypePending", "value":"5" }, + { "name":"k_EAccountTypeContentServer", "value":"6" }, + { "name":"k_EAccountTypeClan", "value":"7" }, + { "name":"k_EAccountTypeChat", "value":"8" }, + { "name":"k_EAccountTypeConsoleUser", "value":"9" }, + { "name":"k_EAccountTypeAnonUser", "value":"10" }, + { "name":"k_EAccountTypeMax", "value":"11" } + ] + }, + { + "enumname": "EAppReleaseState", + "values": [ + { "name":"k_EAppReleaseState_Unknown", "value":"0" }, + { "name":"k_EAppReleaseState_Unavailable", "value":"1" }, + { "name":"k_EAppReleaseState_Prerelease", "value":"2" }, + { "name":"k_EAppReleaseState_PreloadOnly", "value":"3" }, + { "name":"k_EAppReleaseState_Released", "value":"4" } + ] + }, + { + "enumname": "EAppOwnershipFlags", + "values": [ + { "name":"k_EAppOwnershipFlags_None", "value":"0" }, + { "name":"k_EAppOwnershipFlags_OwnsLicense", "value":"1" }, + { "name":"k_EAppOwnershipFlags_FreeLicense", "value":"2" }, + { "name":"k_EAppOwnershipFlags_RegionRestricted", "value":"4" }, + { "name":"k_EAppOwnershipFlags_LowViolence", "value":"8" }, + { "name":"k_EAppOwnershipFlags_InvalidPlatform", "value":"16" }, + { "name":"k_EAppOwnershipFlags_SharedLicense", "value":"32" }, + { "name":"k_EAppOwnershipFlags_FreeWeekend", "value":"64" }, + { "name":"k_EAppOwnershipFlags_RetailLicense", "value":"128" }, + { "name":"k_EAppOwnershipFlags_LicenseLocked", "value":"256" }, + { "name":"k_EAppOwnershipFlags_LicensePending", "value":"512" }, + { "name":"k_EAppOwnershipFlags_LicenseExpired", "value":"1024" }, + { "name":"k_EAppOwnershipFlags_LicensePermanent", "value":"2048" }, + { "name":"k_EAppOwnershipFlags_LicenseRecurring", "value":"4096" }, + { "name":"k_EAppOwnershipFlags_LicenseCanceled", "value":"8192" }, + { "name":"k_EAppOwnershipFlags_AutoGrant", "value":"16384" }, + { "name":"k_EAppOwnershipFlags_PendingGift", "value":"32768" }, + { "name":"k_EAppOwnershipFlags_RentalNotActivated", "value":"65536" }, + { "name":"k_EAppOwnershipFlags_Rental", "value":"131072" }, + { "name":"k_EAppOwnershipFlags_SiteLicense", "value":"262144" }, + { "name":"k_EAppOwnershipFlags_LegacyFreeSub", "value":"524288" }, + { "name":"k_EAppOwnershipFlags_InvalidOSType", "value":"1048576" }, + { "name":"k_EAppOwnershipFlags_TimedTrial", "value":"2097152" } + ] + }, + { + "enumname": "EAppType", + "values": [ + { "name":"k_EAppType_Invalid", "value":"0" }, + { "name":"k_EAppType_Game", "value":"1" }, + { "name":"k_EAppType_Application", "value":"2" }, + { "name":"k_EAppType_Tool", "value":"4" }, + { "name":"k_EAppType_Demo", "value":"8" }, + { "name":"k_EAppType_Media_DEPRECATED", "value":"16" }, + { "name":"k_EAppType_DLC", "value":"32" }, + { "name":"k_EAppType_Guide", "value":"64" }, + { "name":"k_EAppType_Driver", "value":"128" }, + { "name":"k_EAppType_Config", "value":"256" }, + { "name":"k_EAppType_Hardware", "value":"512" }, + { "name":"k_EAppType_Franchise", "value":"1024" }, + { "name":"k_EAppType_Video", "value":"2048" }, + { "name":"k_EAppType_Plugin", "value":"4096" }, + { "name":"k_EAppType_MusicAlbum", "value":"8192" }, + { "name":"k_EAppType_Series", "value":"16384" }, + { "name":"k_EAppType_Comic_UNUSED", "value":"32768" }, + { "name":"k_EAppType_Beta", "value":"65536" }, + { "name":"k_EAppType_Shortcut", "value":"1073741824" }, + { "name":"k_EAppType_DepotOnly_DEPRECATED", "value":"-2147483648" } + ] + }, + { + "enumname": "ESteamUserStatType", + "values": [ + { "name":"k_ESteamUserStatTypeINVALID", "value":"0" }, + { "name":"k_ESteamUserStatTypeINT", "value":"1" }, + { "name":"k_ESteamUserStatTypeFLOAT", "value":"2" }, + { "name":"k_ESteamUserStatTypeAVGRATE", "value":"3" }, + { "name":"k_ESteamUserStatTypeACHIEVEMENTS", "value":"4" }, + { "name":"k_ESteamUserStatTypeGROUPACHIEVEMENTS", "value":"5" }, + { "name":"k_ESteamUserStatTypeMAX", "value":"6" } + ] + }, + { + "enumname": "EChatEntryType", + "values": [ + { "name":"k_EChatEntryTypeInvalid", "value":"0" }, + { "name":"k_EChatEntryTypeChatMsg", "value":"1" }, + { "name":"k_EChatEntryTypeTyping", "value":"2" }, + { "name":"k_EChatEntryTypeInviteGame", "value":"3" }, + { "name":"k_EChatEntryTypeEmote", "value":"4" }, + { "name":"k_EChatEntryTypeLeftConversation", "value":"6" }, + { "name":"k_EChatEntryTypeEntered", "value":"7" }, + { "name":"k_EChatEntryTypeWasKicked", "value":"8" }, + { "name":"k_EChatEntryTypeWasBanned", "value":"9" }, + { "name":"k_EChatEntryTypeDisconnected", "value":"10" }, + { "name":"k_EChatEntryTypeHistoricalChat", "value":"11" }, + { "name":"k_EChatEntryTypeLinkBlocked", "value":"14" } + ] + }, + { + "enumname": "EChatRoomEnterResponse", + "values": [ + { "name":"k_EChatRoomEnterResponseSuccess", "value":"1" }, + { "name":"k_EChatRoomEnterResponseDoesntExist", "value":"2" }, + { "name":"k_EChatRoomEnterResponseNotAllowed", "value":"3" }, + { "name":"k_EChatRoomEnterResponseFull", "value":"4" }, + { "name":"k_EChatRoomEnterResponseError", "value":"5" }, + { "name":"k_EChatRoomEnterResponseBanned", "value":"6" }, + { "name":"k_EChatRoomEnterResponseLimited", "value":"7" }, + { "name":"k_EChatRoomEnterResponseClanDisabled", "value":"8" }, + { "name":"k_EChatRoomEnterResponseCommunityBan", "value":"9" }, + { "name":"k_EChatRoomEnterResponseMemberBlockedYou", "value":"10" }, + { "name":"k_EChatRoomEnterResponseYouBlockedMember", "value":"11" }, + { "name":"k_EChatRoomEnterResponseRatelimitExceeded", "value":"15" } + ] + }, + { + "enumname": "EChatSteamIDInstanceFlags", + "values": [ + { "name":"k_EChatAccountInstanceMask", "value":"4095" }, + { "name":"k_EChatInstanceFlagClan", "value":"524288" }, + { "name":"k_EChatInstanceFlagLobby", "value":"262144" }, + { "name":"k_EChatInstanceFlagMMSLobby", "value":"131072" } + ] + }, + { + "enumname": "EMarketingMessageFlags", + "values": [ + { "name":"k_EMarketingMessageFlagsNone", "value":"0" }, + { "name":"k_EMarketingMessageFlagsHighPriority", "value":"1" }, + { "name":"k_EMarketingMessageFlagsPlatformWindows", "value":"2" }, + { "name":"k_EMarketingMessageFlagsPlatformMac", "value":"4" }, + { "name":"k_EMarketingMessageFlagsPlatformLinux", "value":"8" }, + { "name":"k_EMarketingMessageFlagsPlatformRestrictions", "value":"14" } + ] + }, + { + "enumname": "ENotificationPosition", + "values": [ + { "name":"k_EPositionTopLeft", "value":"0" }, + { "name":"k_EPositionTopRight", "value":"1" }, + { "name":"k_EPositionBottomLeft", "value":"2" }, + { "name":"k_EPositionBottomRight", "value":"3" } + ] + }, + { + "enumname": "EBroadcastUploadResult", + "values": [ + { "name":"k_EBroadcastUploadResultNone", "value":"0" }, + { "name":"k_EBroadcastUploadResultOK", "value":"1" }, + { "name":"k_EBroadcastUploadResultInitFailed", "value":"2" }, + { "name":"k_EBroadcastUploadResultFrameFailed", "value":"3" }, + { "name":"k_EBroadcastUploadResultTimeout", "value":"4" }, + { "name":"k_EBroadcastUploadResultBandwidthExceeded", "value":"5" }, + { "name":"k_EBroadcastUploadResultLowFPS", "value":"6" }, + { "name":"k_EBroadcastUploadResultMissingKeyFrames", "value":"7" }, + { "name":"k_EBroadcastUploadResultNoConnection", "value":"8" }, + { "name":"k_EBroadcastUploadResultRelayFailed", "value":"9" }, + { "name":"k_EBroadcastUploadResultSettingsChanged", "value":"10" }, + { "name":"k_EBroadcastUploadResultMissingAudio", "value":"11" }, + { "name":"k_EBroadcastUploadResultTooFarBehind", "value":"12" }, + { "name":"k_EBroadcastUploadResultTranscodeBehind", "value":"13" }, + { "name":"k_EBroadcastUploadResultNotAllowedToPlay", "value":"14" }, + { "name":"k_EBroadcastUploadResultBusy", "value":"15" }, + { "name":"k_EBroadcastUploadResultBanned", "value":"16" }, + { "name":"k_EBroadcastUploadResultAlreadyActive", "value":"17" }, + { "name":"k_EBroadcastUploadResultForcedOff", "value":"18" }, + { "name":"k_EBroadcastUploadResultAudioBehind", "value":"19" }, + { "name":"k_EBroadcastUploadResultShutdown", "value":"20" }, + { "name":"k_EBroadcastUploadResultDisconnect", "value":"21" }, + { "name":"k_EBroadcastUploadResultVideoInitFailed", "value":"22" }, + { "name":"k_EBroadcastUploadResultAudioInitFailed", "value":"23" } + ] + }, + { + "enumname": "ELaunchOptionType", + "values": [ + { "name":"k_ELaunchOptionType_None", "value":"0" }, + { "name":"k_ELaunchOptionType_Default", "value":"1" }, + { "name":"k_ELaunchOptionType_SafeMode", "value":"2" }, + { "name":"k_ELaunchOptionType_Multiplayer", "value":"3" }, + { "name":"k_ELaunchOptionType_Config", "value":"4" }, + { "name":"k_ELaunchOptionType_OpenVR", "value":"5" }, + { "name":"k_ELaunchOptionType_Server", "value":"6" }, + { "name":"k_ELaunchOptionType_Editor", "value":"7" }, + { "name":"k_ELaunchOptionType_Manual", "value":"8" }, + { "name":"k_ELaunchOptionType_Benchmark", "value":"9" }, + { "name":"k_ELaunchOptionType_Option1", "value":"10" }, + { "name":"k_ELaunchOptionType_Option2", "value":"11" }, + { "name":"k_ELaunchOptionType_Option3", "value":"12" }, + { "name":"k_ELaunchOptionType_OculusVR", "value":"13" }, + { "name":"k_ELaunchOptionType_OpenVROverlay", "value":"14" }, + { "name":"k_ELaunchOptionType_OSVR", "value":"15" }, + { "name":"k_ELaunchOptionType_Dialog", "value":"1000" } + ] + }, + { + "enumname": "EVRHMDType", + "values": [ + { "name":"k_eEVRHMDType_None", "value":"-1" }, + { "name":"k_eEVRHMDType_Unknown", "value":"0" }, + { "name":"k_eEVRHMDType_HTC_Dev", "value":"1" }, + { "name":"k_eEVRHMDType_HTC_VivePre", "value":"2" }, + { "name":"k_eEVRHMDType_HTC_Vive", "value":"3" }, + { "name":"k_eEVRHMDType_HTC_VivePro", "value":"4" }, + { "name":"k_eEVRHMDType_HTC_ViveCosmos", "value":"5" }, + { "name":"k_eEVRHMDType_HTC_Unknown", "value":"20" }, + { "name":"k_eEVRHMDType_Oculus_DK1", "value":"21" }, + { "name":"k_eEVRHMDType_Oculus_DK2", "value":"22" }, + { "name":"k_eEVRHMDType_Oculus_Rift", "value":"23" }, + { "name":"k_eEVRHMDType_Oculus_RiftS", "value":"24" }, + { "name":"k_eEVRHMDType_Oculus_Quest", "value":"25" }, + { "name":"k_eEVRHMDType_Oculus_Unknown", "value":"40" }, + { "name":"k_eEVRHMDType_Acer_Unknown", "value":"50" }, + { "name":"k_eEVRHMDType_Acer_WindowsMR", "value":"51" }, + { "name":"k_eEVRHMDType_Dell_Unknown", "value":"60" }, + { "name":"k_eEVRHMDType_Dell_Visor", "value":"61" }, + { "name":"k_eEVRHMDType_Lenovo_Unknown", "value":"70" }, + { "name":"k_eEVRHMDType_Lenovo_Explorer", "value":"71" }, + { "name":"k_eEVRHMDType_HP_Unknown", "value":"80" }, + { "name":"k_eEVRHMDType_HP_WindowsMR", "value":"81" }, + { "name":"k_eEVRHMDType_HP_Reverb", "value":"82" }, + { "name":"k_eEVRHMDType_HP_ReverbG2", "value":"1463" }, + { "name":"k_eEVRHMDType_Samsung_Unknown", "value":"90" }, + { "name":"k_eEVRHMDType_Samsung_Odyssey", "value":"91" }, + { "name":"k_eEVRHMDType_Unannounced_Unknown", "value":"100" }, + { "name":"k_eEVRHMDType_Unannounced_WindowsMR", "value":"101" }, + { "name":"k_eEVRHMDType_vridge", "value":"110" }, + { "name":"k_eEVRHMDType_Huawei_Unknown", "value":"120" }, + { "name":"k_eEVRHMDType_Huawei_VR2", "value":"121" }, + { "name":"k_eEVRHMDType_Huawei_EndOfRange", "value":"129" }, + { "name":"k_eEVRHmdType_Valve_Unknown", "value":"130" }, + { "name":"k_eEVRHmdType_Valve_Index", "value":"131" } + ] + }, + { + "enumname": "EMarketNotAllowedReasonFlags", + "values": [ + { "name":"k_EMarketNotAllowedReason_None", "value":"0" }, + { "name":"k_EMarketNotAllowedReason_TemporaryFailure", "value":"1" }, + { "name":"k_EMarketNotAllowedReason_AccountDisabled", "value":"2" }, + { "name":"k_EMarketNotAllowedReason_AccountLockedDown", "value":"4" }, + { "name":"k_EMarketNotAllowedReason_AccountLimited", "value":"8" }, + { "name":"k_EMarketNotAllowedReason_TradeBanned", "value":"16" }, + { "name":"k_EMarketNotAllowedReason_AccountNotTrusted", "value":"32" }, + { "name":"k_EMarketNotAllowedReason_SteamGuardNotEnabled", "value":"64" }, + { "name":"k_EMarketNotAllowedReason_SteamGuardOnlyRecentlyEnabled", "value":"128" }, + { "name":"k_EMarketNotAllowedReason_RecentPasswordReset", "value":"256" }, + { "name":"k_EMarketNotAllowedReason_NewPaymentMethod", "value":"512" }, + { "name":"k_EMarketNotAllowedReason_InvalidCookie", "value":"1024" }, + { "name":"k_EMarketNotAllowedReason_UsingNewDevice", "value":"2048" }, + { "name":"k_EMarketNotAllowedReason_RecentSelfRefund", "value":"4096" }, + { "name":"k_EMarketNotAllowedReason_NewPaymentMethodCannotBeVerified", "value":"8192" }, + { "name":"k_EMarketNotAllowedReason_NoRecentPurchases", "value":"16384" }, + { "name":"k_EMarketNotAllowedReason_AcceptedWalletGift", "value":"32768" } + ] + }, + { + "enumname": "EDurationControlProgress", + "values": [ + { "name":"k_EDurationControlProgress_Full", "value":"0" }, + { "name":"k_EDurationControlProgress_Half", "value":"1" }, + { "name":"k_EDurationControlProgress_None", "value":"2" }, + { "name":"k_EDurationControl_ExitSoon_3h", "value":"3" }, + { "name":"k_EDurationControl_ExitSoon_5h", "value":"4" }, + { "name":"k_EDurationControl_ExitSoon_Night", "value":"5" } + ] + }, + { + "enumname": "EDurationControlNotification", + "values": [ + { "name":"k_EDurationControlNotification_None", "value":"0" }, + { "name":"k_EDurationControlNotification_1Hour", "value":"1" }, + { "name":"k_EDurationControlNotification_3Hours", "value":"2" }, + { "name":"k_EDurationControlNotification_HalfProgress", "value":"3" }, + { "name":"k_EDurationControlNotification_NoProgress", "value":"4" }, + { "name":"k_EDurationControlNotification_ExitSoon_3h", "value":"5" }, + { "name":"k_EDurationControlNotification_ExitSoon_5h", "value":"6" }, + { "name":"k_EDurationControlNotification_ExitSoon_Night", "value":"7" } + ] + }, + { + "enumname": "EDurationControlOnlineState", + "values": [ + { "name":"k_EDurationControlOnlineState_Invalid", "value":"0" }, + { "name":"k_EDurationControlOnlineState_Offline", "value":"1" }, + { "name":"k_EDurationControlOnlineState_Online", "value":"2" }, + { "name":"k_EDurationControlOnlineState_OnlineHighPri", "value":"3" } + ] + }, + { + "enumname": "EGameSearchErrorCode_t", + "values": [ + { "name":"k_EGameSearchErrorCode_OK", "value":"1" }, + { "name":"k_EGameSearchErrorCode_Failed_Search_Already_In_Progress", "value":"2" }, + { "name":"k_EGameSearchErrorCode_Failed_No_Search_In_Progress", "value":"3" }, + { "name":"k_EGameSearchErrorCode_Failed_Not_Lobby_Leader", "value":"4" }, + { "name":"k_EGameSearchErrorCode_Failed_No_Host_Available", "value":"5" }, + { "name":"k_EGameSearchErrorCode_Failed_Search_Params_Invalid", "value":"6" }, + { "name":"k_EGameSearchErrorCode_Failed_Offline", "value":"7" }, + { "name":"k_EGameSearchErrorCode_Failed_NotAuthorized", "value":"8" }, + { "name":"k_EGameSearchErrorCode_Failed_Unknown_Error", "value":"9" } + ] + }, + { + "enumname": "EPlayerResult_t", + "values": [ + { "name":"k_EPlayerResultFailedToConnect", "value":"1" }, + { "name":"k_EPlayerResultAbandoned", "value":"2" }, + { "name":"k_EPlayerResultKicked", "value":"3" }, + { "name":"k_EPlayerResultIncomplete", "value":"4" }, + { "name":"k_EPlayerResultCompleted", "value":"5" } + ] + }, + { + "enumname": "ESteamIPv6ConnectivityProtocol", + "values": [ + { "name":"k_ESteamIPv6ConnectivityProtocol_Invalid", "value":"0" }, + { "name":"k_ESteamIPv6ConnectivityProtocol_HTTP", "value":"1" }, + { "name":"k_ESteamIPv6ConnectivityProtocol_UDP", "value":"2" } + ] + }, + { + "enumname": "ESteamIPv6ConnectivityState", + "values": [ + { "name":"k_ESteamIPv6ConnectivityState_Unknown", "value":"0" }, + { "name":"k_ESteamIPv6ConnectivityState_Good", "value":"1" }, + { "name":"k_ESteamIPv6ConnectivityState_Bad", "value":"2" } + ] + }, + { + "enumname": "EFriendRelationship", + "values": [ + { "name":"k_EFriendRelationshipNone", "value":"0" }, + { "name":"k_EFriendRelationshipBlocked", "value":"1" }, + { "name":"k_EFriendRelationshipRequestRecipient", "value":"2" }, + { "name":"k_EFriendRelationshipFriend", "value":"3" }, + { "name":"k_EFriendRelationshipRequestInitiator", "value":"4" }, + { "name":"k_EFriendRelationshipIgnored", "value":"5" }, + { "name":"k_EFriendRelationshipIgnoredFriend", "value":"6" }, + { "name":"k_EFriendRelationshipSuggested_DEPRECATED", "value":"7" }, + { "name":"k_EFriendRelationshipMax", "value":"8" } + ] + }, + { + "enumname": "EPersonaState", + "values": [ + { "name":"k_EPersonaStateOffline", "value":"0" }, + { "name":"k_EPersonaStateOnline", "value":"1" }, + { "name":"k_EPersonaStateBusy", "value":"2" }, + { "name":"k_EPersonaStateAway", "value":"3" }, + { "name":"k_EPersonaStateSnooze", "value":"4" }, + { "name":"k_EPersonaStateLookingToTrade", "value":"5" }, + { "name":"k_EPersonaStateLookingToPlay", "value":"6" }, + { "name":"k_EPersonaStateInvisible", "value":"7" }, + { "name":"k_EPersonaStateMax", "value":"8" } + ] + }, + { + "enumname": "EFriendFlags", + "values": [ + { "name":"k_EFriendFlagNone", "value":"0" }, + { "name":"k_EFriendFlagBlocked", "value":"1" }, + { "name":"k_EFriendFlagFriendshipRequested", "value":"2" }, + { "name":"k_EFriendFlagImmediate", "value":"4" }, + { "name":"k_EFriendFlagClanMember", "value":"8" }, + { "name":"k_EFriendFlagOnGameServer", "value":"16" }, + { "name":"k_EFriendFlagRequestingFriendship", "value":"128" }, + { "name":"k_EFriendFlagRequestingInfo", "value":"256" }, + { "name":"k_EFriendFlagIgnored", "value":"512" }, + { "name":"k_EFriendFlagIgnoredFriend", "value":"1024" }, + { "name":"k_EFriendFlagChatMember", "value":"4096" }, + { "name":"k_EFriendFlagAll", "value":"65535" } + ] + }, + { + "enumname": "EUserRestriction", + "values": [ + { "name":"k_nUserRestrictionNone", "value":"0" }, + { "name":"k_nUserRestrictionUnknown", "value":"1" }, + { "name":"k_nUserRestrictionAnyChat", "value":"2" }, + { "name":"k_nUserRestrictionVoiceChat", "value":"4" }, + { "name":"k_nUserRestrictionGroupChat", "value":"8" }, + { "name":"k_nUserRestrictionRating", "value":"16" }, + { "name":"k_nUserRestrictionGameInvites", "value":"32" }, + { "name":"k_nUserRestrictionTrading", "value":"64" } + ] + }, + { + "enumname": "EOverlayToStoreFlag", + "values": [ + { "name":"k_EOverlayToStoreFlag_None", "value":"0" }, + { "name":"k_EOverlayToStoreFlag_AddToCart", "value":"1" }, + { "name":"k_EOverlayToStoreFlag_AddToCartAndShow", "value":"2" } + ] + }, + { + "enumname": "EActivateGameOverlayToWebPageMode", + "values": [ + { "name":"k_EActivateGameOverlayToWebPageMode_Default", "value":"0" }, + { "name":"k_EActivateGameOverlayToWebPageMode_Modal", "value":"1" } + ] + }, + { + "enumname": "EPersonaChange", + "values": [ + { "name":"k_EPersonaChangeName", "value":"1" }, + { "name":"k_EPersonaChangeStatus", "value":"2" }, + { "name":"k_EPersonaChangeComeOnline", "value":"4" }, + { "name":"k_EPersonaChangeGoneOffline", "value":"8" }, + { "name":"k_EPersonaChangeGamePlayed", "value":"16" }, + { "name":"k_EPersonaChangeGameServer", "value":"32" }, + { "name":"k_EPersonaChangeAvatar", "value":"64" }, + { "name":"k_EPersonaChangeJoinedSource", "value":"128" }, + { "name":"k_EPersonaChangeLeftSource", "value":"256" }, + { "name":"k_EPersonaChangeRelationshipChanged", "value":"512" }, + { "name":"k_EPersonaChangeNameFirstSet", "value":"1024" }, + { "name":"k_EPersonaChangeBroadcast", "value":"2048" }, + { "name":"k_EPersonaChangeNickname", "value":"4096" }, + { "name":"k_EPersonaChangeSteamLevel", "value":"8192" }, + { "name":"k_EPersonaChangeRichPresence", "value":"16384" } + ] + }, + { + "enumname": "ESteamAPICallFailure", + "values": [ + { "name":"k_ESteamAPICallFailureNone", "value":"-1" }, + { "name":"k_ESteamAPICallFailureSteamGone", "value":"0" }, + { "name":"k_ESteamAPICallFailureNetworkFailure", "value":"1" }, + { "name":"k_ESteamAPICallFailureInvalidHandle", "value":"2" }, + { "name":"k_ESteamAPICallFailureMismatchedCallback", "value":"3" } + ] + }, + { + "enumname": "EGamepadTextInputMode", + "values": [ + { "name":"k_EGamepadTextInputModeNormal", "value":"0" }, + { "name":"k_EGamepadTextInputModePassword", "value":"1" } + ] + }, + { + "enumname": "EGamepadTextInputLineMode", + "values": [ + { "name":"k_EGamepadTextInputLineModeSingleLine", "value":"0" }, + { "name":"k_EGamepadTextInputLineModeMultipleLines", "value":"1" } + ] + }, + { + "enumname": "ETextFilteringContext", + "values": [ + { "name":"k_ETextFilteringContextUnknown", "value":"0" }, + { "name":"k_ETextFilteringContextGameContent", "value":"1" }, + { "name":"k_ETextFilteringContextChat", "value":"2" }, + { "name":"k_ETextFilteringContextName", "value":"3" } + ] + }, + { + "enumname": "ECheckFileSignature", + "values": [ + { "name":"k_ECheckFileSignatureInvalidSignature", "value":"0" }, + { "name":"k_ECheckFileSignatureValidSignature", "value":"1" }, + { "name":"k_ECheckFileSignatureFileNotFound", "value":"2" }, + { "name":"k_ECheckFileSignatureNoSignaturesFoundForThisApp", "value":"3" }, + { "name":"k_ECheckFileSignatureNoSignaturesFoundForThisFile", "value":"4" } + ] + }, + { + "enumname": "EMatchMakingServerResponse", + "values": [ + { "name":"eServerResponded", "value":"0" }, + { "name":"eServerFailedToRespond", "value":"1" }, + { "name":"eNoServersListedOnMasterServer", "value":"2" } + ] + }, + { + "enumname": "ELobbyType", + "values": [ + { "name":"k_ELobbyTypePrivate", "value":"0" }, + { "name":"k_ELobbyTypeFriendsOnly", "value":"1" }, + { "name":"k_ELobbyTypePublic", "value":"2" }, + { "name":"k_ELobbyTypeInvisible", "value":"3" }, + { "name":"k_ELobbyTypePrivateUnique", "value":"4" } + ] + }, + { + "enumname": "ELobbyComparison", + "values": [ + { "name":"k_ELobbyComparisonEqualToOrLessThan", "value":"-2" }, + { "name":"k_ELobbyComparisonLessThan", "value":"-1" }, + { "name":"k_ELobbyComparisonEqual", "value":"0" }, + { "name":"k_ELobbyComparisonGreaterThan", "value":"1" }, + { "name":"k_ELobbyComparisonEqualToOrGreaterThan", "value":"2" }, + { "name":"k_ELobbyComparisonNotEqual", "value":"3" } + ] + }, + { + "enumname": "ELobbyDistanceFilter", + "values": [ + { "name":"k_ELobbyDistanceFilterClose", "value":"0" }, + { "name":"k_ELobbyDistanceFilterDefault", "value":"1" }, + { "name":"k_ELobbyDistanceFilterFar", "value":"2" }, + { "name":"k_ELobbyDistanceFilterWorldwide", "value":"3" } + ] + }, + { + "enumname": "EChatMemberStateChange", + "values": [ + { "name":"k_EChatMemberStateChangeEntered", "value":"1" }, + { "name":"k_EChatMemberStateChangeLeft", "value":"2" }, + { "name":"k_EChatMemberStateChangeDisconnected", "value":"4" }, + { "name":"k_EChatMemberStateChangeKicked", "value":"8" }, + { "name":"k_EChatMemberStateChangeBanned", "value":"16" } + ] + }, + { + "enumname": "ESteamPartyBeaconLocationType", + "values": [ + { "name":"k_ESteamPartyBeaconLocationType_Invalid", "value":"0" }, + { "name":"k_ESteamPartyBeaconLocationType_ChatGroup", "value":"1" }, + { "name":"k_ESteamPartyBeaconLocationType_Max", "value":"2" } + ] + }, + { + "enumname": "ESteamPartyBeaconLocationData", + "values": [ + { "name":"k_ESteamPartyBeaconLocationDataInvalid", "value":"0" }, + { "name":"k_ESteamPartyBeaconLocationDataName", "value":"1" }, + { "name":"k_ESteamPartyBeaconLocationDataIconURLSmall", "value":"2" }, + { "name":"k_ESteamPartyBeaconLocationDataIconURLMedium", "value":"3" }, + { "name":"k_ESteamPartyBeaconLocationDataIconURLLarge", "value":"4" } + ] + }, + { + "enumname": "ERemoteStoragePlatform", + "values": [ + { "name":"k_ERemoteStoragePlatformNone", "value":"0" }, + { "name":"k_ERemoteStoragePlatformWindows", "value":"1" }, + { "name":"k_ERemoteStoragePlatformOSX", "value":"2" }, + { "name":"k_ERemoteStoragePlatformPS3", "value":"4" }, + { "name":"k_ERemoteStoragePlatformLinux", "value":"8" }, + { "name":"k_ERemoteStoragePlatformSwitch", "value":"16" }, + { "name":"k_ERemoteStoragePlatformAndroid", "value":"32" }, + { "name":"k_ERemoteStoragePlatformIOS", "value":"64" }, + { "name":"k_ERemoteStoragePlatformAll", "value":"-1" } + ] + }, + { + "enumname": "ERemoteStoragePublishedFileVisibility", + "values": [ + { "name":"k_ERemoteStoragePublishedFileVisibilityPublic", "value":"0" }, + { "name":"k_ERemoteStoragePublishedFileVisibilityFriendsOnly", "value":"1" }, + { "name":"k_ERemoteStoragePublishedFileVisibilityPrivate", "value":"2" }, + { "name":"k_ERemoteStoragePublishedFileVisibilityUnlisted", "value":"3" } + ] + }, + { + "enumname": "EWorkshopFileType", + "values": [ + { "name":"k_EWorkshopFileTypeFirst", "value":"0" }, + { "name":"k_EWorkshopFileTypeCommunity", "value":"0" }, + { "name":"k_EWorkshopFileTypeMicrotransaction", "value":"1" }, + { "name":"k_EWorkshopFileTypeCollection", "value":"2" }, + { "name":"k_EWorkshopFileTypeArt", "value":"3" }, + { "name":"k_EWorkshopFileTypeVideo", "value":"4" }, + { "name":"k_EWorkshopFileTypeScreenshot", "value":"5" }, + { "name":"k_EWorkshopFileTypeGame", "value":"6" }, + { "name":"k_EWorkshopFileTypeSoftware", "value":"7" }, + { "name":"k_EWorkshopFileTypeConcept", "value":"8" }, + { "name":"k_EWorkshopFileTypeWebGuide", "value":"9" }, + { "name":"k_EWorkshopFileTypeIntegratedGuide", "value":"10" }, + { "name":"k_EWorkshopFileTypeMerch", "value":"11" }, + { "name":"k_EWorkshopFileTypeControllerBinding", "value":"12" }, + { "name":"k_EWorkshopFileTypeSteamworksAccessInvite", "value":"13" }, + { "name":"k_EWorkshopFileTypeSteamVideo", "value":"14" }, + { "name":"k_EWorkshopFileTypeGameManagedItem", "value":"15" }, + { "name":"k_EWorkshopFileTypeMax", "value":"16" } + ] + }, + { + "enumname": "EWorkshopVote", + "values": [ + { "name":"k_EWorkshopVoteUnvoted", "value":"0" }, + { "name":"k_EWorkshopVoteFor", "value":"1" }, + { "name":"k_EWorkshopVoteAgainst", "value":"2" }, + { "name":"k_EWorkshopVoteLater", "value":"3" } + ] + }, + { + "enumname": "EWorkshopFileAction", + "values": [ + { "name":"k_EWorkshopFileActionPlayed", "value":"0" }, + { "name":"k_EWorkshopFileActionCompleted", "value":"1" } + ] + }, + { + "enumname": "EWorkshopEnumerationType", + "values": [ + { "name":"k_EWorkshopEnumerationTypeRankedByVote", "value":"0" }, + { "name":"k_EWorkshopEnumerationTypeRecent", "value":"1" }, + { "name":"k_EWorkshopEnumerationTypeTrending", "value":"2" }, + { "name":"k_EWorkshopEnumerationTypeFavoritesOfFriends", "value":"3" }, + { "name":"k_EWorkshopEnumerationTypeVotedByFriends", "value":"4" }, + { "name":"k_EWorkshopEnumerationTypeContentByFriends", "value":"5" }, + { "name":"k_EWorkshopEnumerationTypeRecentFromFollowedUsers", "value":"6" } + ] + }, + { + "enumname": "EWorkshopVideoProvider", + "values": [ + { "name":"k_EWorkshopVideoProviderNone", "value":"0" }, + { "name":"k_EWorkshopVideoProviderYoutube", "value":"1" } + ] + }, + { + "enumname": "EUGCReadAction", + "values": [ + { "name":"k_EUGCRead_ContinueReadingUntilFinished", "value":"0" }, + { "name":"k_EUGCRead_ContinueReading", "value":"1" }, + { "name":"k_EUGCRead_Close", "value":"2" } + ] + }, + { + "enumname": "ELeaderboardDataRequest", + "values": [ + { "name":"k_ELeaderboardDataRequestGlobal", "value":"0" }, + { "name":"k_ELeaderboardDataRequestGlobalAroundUser", "value":"1" }, + { "name":"k_ELeaderboardDataRequestFriends", "value":"2" }, + { "name":"k_ELeaderboardDataRequestUsers", "value":"3" } + ] + }, + { + "enumname": "ELeaderboardSortMethod", + "values": [ + { "name":"k_ELeaderboardSortMethodNone", "value":"0" }, + { "name":"k_ELeaderboardSortMethodAscending", "value":"1" }, + { "name":"k_ELeaderboardSortMethodDescending", "value":"2" } + ] + }, + { + "enumname": "ELeaderboardDisplayType", + "values": [ + { "name":"k_ELeaderboardDisplayTypeNone", "value":"0" }, + { "name":"k_ELeaderboardDisplayTypeNumeric", "value":"1" }, + { "name":"k_ELeaderboardDisplayTypeTimeSeconds", "value":"2" }, + { "name":"k_ELeaderboardDisplayTypeTimeMilliSeconds", "value":"3" } + ] + }, + { + "enumname": "ELeaderboardUploadScoreMethod", + "values": [ + { "name":"k_ELeaderboardUploadScoreMethodNone", "value":"0" }, + { "name":"k_ELeaderboardUploadScoreMethodKeepBest", "value":"1" }, + { "name":"k_ELeaderboardUploadScoreMethodForceUpdate", "value":"2" } + ] + }, + { + "enumname": "ERegisterActivationCodeResult", + "values": [ + { "name":"k_ERegisterActivationCodeResultOK", "value":"0" }, + { "name":"k_ERegisterActivationCodeResultFail", "value":"1" }, + { "name":"k_ERegisterActivationCodeResultAlreadyRegistered", "value":"2" }, + { "name":"k_ERegisterActivationCodeResultTimeout", "value":"3" }, + { "name":"k_ERegisterActivationCodeAlreadyOwned", "value":"4" } + ] + }, + { + "enumname": "EP2PSessionError", + "values": [ + { "name":"k_EP2PSessionErrorNone", "value":"0" }, + { "name":"k_EP2PSessionErrorNoRightsToApp", "value":"2" }, + { "name":"k_EP2PSessionErrorTimeout", "value":"4" }, + { "name":"k_EP2PSessionErrorNotRunningApp_DELETED", "value":"1" }, + { "name":"k_EP2PSessionErrorDestinationNotLoggedIn_DELETED", "value":"3" }, + { "name":"k_EP2PSessionErrorMax", "value":"5" } + ] + }, + { + "enumname": "EP2PSend", + "values": [ + { "name":"k_EP2PSendUnreliable", "value":"0" }, + { "name":"k_EP2PSendUnreliableNoDelay", "value":"1" }, + { "name":"k_EP2PSendReliable", "value":"2" }, + { "name":"k_EP2PSendReliableWithBuffering", "value":"3" } + ] + }, + { + "enumname": "ESNetSocketState", + "values": [ + { "name":"k_ESNetSocketStateInvalid", "value":"0" }, + { "name":"k_ESNetSocketStateConnected", "value":"1" }, + { "name":"k_ESNetSocketStateInitiated", "value":"10" }, + { "name":"k_ESNetSocketStateLocalCandidatesFound", "value":"11" }, + { "name":"k_ESNetSocketStateReceivedRemoteCandidates", "value":"12" }, + { "name":"k_ESNetSocketStateChallengeHandshake", "value":"15" }, + { "name":"k_ESNetSocketStateDisconnecting", "value":"21" }, + { "name":"k_ESNetSocketStateLocalDisconnect", "value":"22" }, + { "name":"k_ESNetSocketStateTimeoutDuringConnect", "value":"23" }, + { "name":"k_ESNetSocketStateRemoteEndDisconnected", "value":"24" }, + { "name":"k_ESNetSocketStateConnectionBroken", "value":"25" } + ] + }, + { + "enumname": "ESNetSocketConnectionType", + "values": [ + { "name":"k_ESNetSocketConnectionTypeNotConnected", "value":"0" }, + { "name":"k_ESNetSocketConnectionTypeUDP", "value":"1" }, + { "name":"k_ESNetSocketConnectionTypeUDPRelay", "value":"2" } + ] + }, + { + "enumname": "EVRScreenshotType", + "values": [ + { "name":"k_EVRScreenshotType_None", "value":"0" }, + { "name":"k_EVRScreenshotType_Mono", "value":"1" }, + { "name":"k_EVRScreenshotType_Stereo", "value":"2" }, + { "name":"k_EVRScreenshotType_MonoCubemap", "value":"3" }, + { "name":"k_EVRScreenshotType_MonoPanorama", "value":"4" }, + { "name":"k_EVRScreenshotType_StereoPanorama", "value":"5" } + ] + }, + { + "enumname": "AudioPlayback_Status", + "values": [ + { "name":"AudioPlayback_Undefined", "value":"0" }, + { "name":"AudioPlayback_Playing", "value":"1" }, + { "name":"AudioPlayback_Paused", "value":"2" }, + { "name":"AudioPlayback_Idle", "value":"3" } + ] + }, + { + "enumname": "EHTTPMethod", + "values": [ + { "name":"k_EHTTPMethodInvalid", "value":"0" }, + { "name":"k_EHTTPMethodGET", "value":"1" }, + { "name":"k_EHTTPMethodHEAD", "value":"2" }, + { "name":"k_EHTTPMethodPOST", "value":"3" }, + { "name":"k_EHTTPMethodPUT", "value":"4" }, + { "name":"k_EHTTPMethodDELETE", "value":"5" }, + { "name":"k_EHTTPMethodOPTIONS", "value":"6" }, + { "name":"k_EHTTPMethodPATCH", "value":"7" } + ] + }, + { + "enumname": "EHTTPStatusCode", + "values": [ + { "name":"k_EHTTPStatusCodeInvalid", "value":"0" }, + { "name":"k_EHTTPStatusCode100Continue", "value":"100" }, + { "name":"k_EHTTPStatusCode101SwitchingProtocols", "value":"101" }, + { "name":"k_EHTTPStatusCode200OK", "value":"200" }, + { "name":"k_EHTTPStatusCode201Created", "value":"201" }, + { "name":"k_EHTTPStatusCode202Accepted", "value":"202" }, + { "name":"k_EHTTPStatusCode203NonAuthoritative", "value":"203" }, + { "name":"k_EHTTPStatusCode204NoContent", "value":"204" }, + { "name":"k_EHTTPStatusCode205ResetContent", "value":"205" }, + { "name":"k_EHTTPStatusCode206PartialContent", "value":"206" }, + { "name":"k_EHTTPStatusCode300MultipleChoices", "value":"300" }, + { "name":"k_EHTTPStatusCode301MovedPermanently", "value":"301" }, + { "name":"k_EHTTPStatusCode302Found", "value":"302" }, + { "name":"k_EHTTPStatusCode303SeeOther", "value":"303" }, + { "name":"k_EHTTPStatusCode304NotModified", "value":"304" }, + { "name":"k_EHTTPStatusCode305UseProxy", "value":"305" }, + { "name":"k_EHTTPStatusCode307TemporaryRedirect", "value":"307" }, + { "name":"k_EHTTPStatusCode400BadRequest", "value":"400" }, + { "name":"k_EHTTPStatusCode401Unauthorized", "value":"401" }, + { "name":"k_EHTTPStatusCode402PaymentRequired", "value":"402" }, + { "name":"k_EHTTPStatusCode403Forbidden", "value":"403" }, + { "name":"k_EHTTPStatusCode404NotFound", "value":"404" }, + { "name":"k_EHTTPStatusCode405MethodNotAllowed", "value":"405" }, + { "name":"k_EHTTPStatusCode406NotAcceptable", "value":"406" }, + { "name":"k_EHTTPStatusCode407ProxyAuthRequired", "value":"407" }, + { "name":"k_EHTTPStatusCode408RequestTimeout", "value":"408" }, + { "name":"k_EHTTPStatusCode409Conflict", "value":"409" }, + { "name":"k_EHTTPStatusCode410Gone", "value":"410" }, + { "name":"k_EHTTPStatusCode411LengthRequired", "value":"411" }, + { "name":"k_EHTTPStatusCode412PreconditionFailed", "value":"412" }, + { "name":"k_EHTTPStatusCode413RequestEntityTooLarge", "value":"413" }, + { "name":"k_EHTTPStatusCode414RequestURITooLong", "value":"414" }, + { "name":"k_EHTTPStatusCode415UnsupportedMediaType", "value":"415" }, + { "name":"k_EHTTPStatusCode416RequestedRangeNotSatisfiable", "value":"416" }, + { "name":"k_EHTTPStatusCode417ExpectationFailed", "value":"417" }, + { "name":"k_EHTTPStatusCode4xxUnknown", "value":"418" }, + { "name":"k_EHTTPStatusCode429TooManyRequests", "value":"429" }, + { "name":"k_EHTTPStatusCode444ConnectionClosed", "value":"444" }, + { "name":"k_EHTTPStatusCode500InternalServerError", "value":"500" }, + { "name":"k_EHTTPStatusCode501NotImplemented", "value":"501" }, + { "name":"k_EHTTPStatusCode502BadGateway", "value":"502" }, + { "name":"k_EHTTPStatusCode503ServiceUnavailable", "value":"503" }, + { "name":"k_EHTTPStatusCode504GatewayTimeout", "value":"504" }, + { "name":"k_EHTTPStatusCode505HTTPVersionNotSupported", "value":"505" }, + { "name":"k_EHTTPStatusCode5xxUnknown", "value":"599" } + ] + }, + { + "enumname": "EInputSourceMode", + "values": [ + { "name":"k_EInputSourceMode_None", "value":"0" }, + { "name":"k_EInputSourceMode_Dpad", "value":"1" }, + { "name":"k_EInputSourceMode_Buttons", "value":"2" }, + { "name":"k_EInputSourceMode_FourButtons", "value":"3" }, + { "name":"k_EInputSourceMode_AbsoluteMouse", "value":"4" }, + { "name":"k_EInputSourceMode_RelativeMouse", "value":"5" }, + { "name":"k_EInputSourceMode_JoystickMove", "value":"6" }, + { "name":"k_EInputSourceMode_JoystickMouse", "value":"7" }, + { "name":"k_EInputSourceMode_JoystickCamera", "value":"8" }, + { "name":"k_EInputSourceMode_ScrollWheel", "value":"9" }, + { "name":"k_EInputSourceMode_Trigger", "value":"10" }, + { "name":"k_EInputSourceMode_TouchMenu", "value":"11" }, + { "name":"k_EInputSourceMode_MouseJoystick", "value":"12" }, + { "name":"k_EInputSourceMode_MouseRegion", "value":"13" }, + { "name":"k_EInputSourceMode_RadialMenu", "value":"14" }, + { "name":"k_EInputSourceMode_SingleButton", "value":"15" }, + { "name":"k_EInputSourceMode_Switches", "value":"16" } + ] + }, + { + "enumname": "EInputActionOrigin", + "values": [ + { "name":"k_EInputActionOrigin_None", "value":"0" }, + { "name":"k_EInputActionOrigin_SteamController_A", "value":"1" }, + { "name":"k_EInputActionOrigin_SteamController_B", "value":"2" }, + { "name":"k_EInputActionOrigin_SteamController_X", "value":"3" }, + { "name":"k_EInputActionOrigin_SteamController_Y", "value":"4" }, + { "name":"k_EInputActionOrigin_SteamController_LeftBumper", "value":"5" }, + { "name":"k_EInputActionOrigin_SteamController_RightBumper", "value":"6" }, + { "name":"k_EInputActionOrigin_SteamController_LeftGrip", "value":"7" }, + { "name":"k_EInputActionOrigin_SteamController_RightGrip", "value":"8" }, + { "name":"k_EInputActionOrigin_SteamController_Start", "value":"9" }, + { "name":"k_EInputActionOrigin_SteamController_Back", "value":"10" }, + { "name":"k_EInputActionOrigin_SteamController_LeftPad_Touch", "value":"11" }, + { "name":"k_EInputActionOrigin_SteamController_LeftPad_Swipe", "value":"12" }, + { "name":"k_EInputActionOrigin_SteamController_LeftPad_Click", "value":"13" }, + { "name":"k_EInputActionOrigin_SteamController_LeftPad_DPadNorth", "value":"14" }, + { "name":"k_EInputActionOrigin_SteamController_LeftPad_DPadSouth", "value":"15" }, + { "name":"k_EInputActionOrigin_SteamController_LeftPad_DPadWest", "value":"16" }, + { "name":"k_EInputActionOrigin_SteamController_LeftPad_DPadEast", "value":"17" }, + { "name":"k_EInputActionOrigin_SteamController_RightPad_Touch", "value":"18" }, + { "name":"k_EInputActionOrigin_SteamController_RightPad_Swipe", "value":"19" }, + { "name":"k_EInputActionOrigin_SteamController_RightPad_Click", "value":"20" }, + { "name":"k_EInputActionOrigin_SteamController_RightPad_DPadNorth", "value":"21" }, + { "name":"k_EInputActionOrigin_SteamController_RightPad_DPadSouth", "value":"22" }, + { "name":"k_EInputActionOrigin_SteamController_RightPad_DPadWest", "value":"23" }, + { "name":"k_EInputActionOrigin_SteamController_RightPad_DPadEast", "value":"24" }, + { "name":"k_EInputActionOrigin_SteamController_LeftTrigger_Pull", "value":"25" }, + { "name":"k_EInputActionOrigin_SteamController_LeftTrigger_Click", "value":"26" }, + { "name":"k_EInputActionOrigin_SteamController_RightTrigger_Pull", "value":"27" }, + { "name":"k_EInputActionOrigin_SteamController_RightTrigger_Click", "value":"28" }, + { "name":"k_EInputActionOrigin_SteamController_LeftStick_Move", "value":"29" }, + { "name":"k_EInputActionOrigin_SteamController_LeftStick_Click", "value":"30" }, + { "name":"k_EInputActionOrigin_SteamController_LeftStick_DPadNorth", "value":"31" }, + { "name":"k_EInputActionOrigin_SteamController_LeftStick_DPadSouth", "value":"32" }, + { "name":"k_EInputActionOrigin_SteamController_LeftStick_DPadWest", "value":"33" }, + { "name":"k_EInputActionOrigin_SteamController_LeftStick_DPadEast", "value":"34" }, + { "name":"k_EInputActionOrigin_SteamController_Gyro_Move", "value":"35" }, + { "name":"k_EInputActionOrigin_SteamController_Gyro_Pitch", "value":"36" }, + { "name":"k_EInputActionOrigin_SteamController_Gyro_Yaw", "value":"37" }, + { "name":"k_EInputActionOrigin_SteamController_Gyro_Roll", "value":"38" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved0", "value":"39" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved1", "value":"40" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved2", "value":"41" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved3", "value":"42" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved4", "value":"43" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved5", "value":"44" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved6", "value":"45" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved7", "value":"46" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved8", "value":"47" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved9", "value":"48" }, + { "name":"k_EInputActionOrigin_SteamController_Reserved10", "value":"49" }, + { "name":"k_EInputActionOrigin_PS4_X", "value":"50" }, + { "name":"k_EInputActionOrigin_PS4_Circle", "value":"51" }, + { "name":"k_EInputActionOrigin_PS4_Triangle", "value":"52" }, + { "name":"k_EInputActionOrigin_PS4_Square", "value":"53" }, + { "name":"k_EInputActionOrigin_PS4_LeftBumper", "value":"54" }, + { "name":"k_EInputActionOrigin_PS4_RightBumper", "value":"55" }, + { "name":"k_EInputActionOrigin_PS4_Options", "value":"56" }, + { "name":"k_EInputActionOrigin_PS4_Share", "value":"57" }, + { "name":"k_EInputActionOrigin_PS4_LeftPad_Touch", "value":"58" }, + { "name":"k_EInputActionOrigin_PS4_LeftPad_Swipe", "value":"59" }, + { "name":"k_EInputActionOrigin_PS4_LeftPad_Click", "value":"60" }, + { "name":"k_EInputActionOrigin_PS4_LeftPad_DPadNorth", "value":"61" }, + { "name":"k_EInputActionOrigin_PS4_LeftPad_DPadSouth", "value":"62" }, + { "name":"k_EInputActionOrigin_PS4_LeftPad_DPadWest", "value":"63" }, + { "name":"k_EInputActionOrigin_PS4_LeftPad_DPadEast", "value":"64" }, + { "name":"k_EInputActionOrigin_PS4_RightPad_Touch", "value":"65" }, + { "name":"k_EInputActionOrigin_PS4_RightPad_Swipe", "value":"66" }, + { "name":"k_EInputActionOrigin_PS4_RightPad_Click", "value":"67" }, + { "name":"k_EInputActionOrigin_PS4_RightPad_DPadNorth", "value":"68" }, + { "name":"k_EInputActionOrigin_PS4_RightPad_DPadSouth", "value":"69" }, + { "name":"k_EInputActionOrigin_PS4_RightPad_DPadWest", "value":"70" }, + { "name":"k_EInputActionOrigin_PS4_RightPad_DPadEast", "value":"71" }, + { "name":"k_EInputActionOrigin_PS4_CenterPad_Touch", "value":"72" }, + { "name":"k_EInputActionOrigin_PS4_CenterPad_Swipe", "value":"73" }, + { "name":"k_EInputActionOrigin_PS4_CenterPad_Click", "value":"74" }, + { "name":"k_EInputActionOrigin_PS4_CenterPad_DPadNorth", "value":"75" }, + { "name":"k_EInputActionOrigin_PS4_CenterPad_DPadSouth", "value":"76" }, + { "name":"k_EInputActionOrigin_PS4_CenterPad_DPadWest", "value":"77" }, + { "name":"k_EInputActionOrigin_PS4_CenterPad_DPadEast", "value":"78" }, + { "name":"k_EInputActionOrigin_PS4_LeftTrigger_Pull", "value":"79" }, + { "name":"k_EInputActionOrigin_PS4_LeftTrigger_Click", "value":"80" }, + { "name":"k_EInputActionOrigin_PS4_RightTrigger_Pull", "value":"81" }, + { "name":"k_EInputActionOrigin_PS4_RightTrigger_Click", "value":"82" }, + { "name":"k_EInputActionOrigin_PS4_LeftStick_Move", "value":"83" }, + { "name":"k_EInputActionOrigin_PS4_LeftStick_Click", "value":"84" }, + { "name":"k_EInputActionOrigin_PS4_LeftStick_DPadNorth", "value":"85" }, + { "name":"k_EInputActionOrigin_PS4_LeftStick_DPadSouth", "value":"86" }, + { "name":"k_EInputActionOrigin_PS4_LeftStick_DPadWest", "value":"87" }, + { "name":"k_EInputActionOrigin_PS4_LeftStick_DPadEast", "value":"88" }, + { "name":"k_EInputActionOrigin_PS4_RightStick_Move", "value":"89" }, + { "name":"k_EInputActionOrigin_PS4_RightStick_Click", "value":"90" }, + { "name":"k_EInputActionOrigin_PS4_RightStick_DPadNorth", "value":"91" }, + { "name":"k_EInputActionOrigin_PS4_RightStick_DPadSouth", "value":"92" }, + { "name":"k_EInputActionOrigin_PS4_RightStick_DPadWest", "value":"93" }, + { "name":"k_EInputActionOrigin_PS4_RightStick_DPadEast", "value":"94" }, + { "name":"k_EInputActionOrigin_PS4_DPad_North", "value":"95" }, + { "name":"k_EInputActionOrigin_PS4_DPad_South", "value":"96" }, + { "name":"k_EInputActionOrigin_PS4_DPad_West", "value":"97" }, + { "name":"k_EInputActionOrigin_PS4_DPad_East", "value":"98" }, + { "name":"k_EInputActionOrigin_PS4_Gyro_Move", "value":"99" }, + { "name":"k_EInputActionOrigin_PS4_Gyro_Pitch", "value":"100" }, + { "name":"k_EInputActionOrigin_PS4_Gyro_Yaw", "value":"101" }, + { "name":"k_EInputActionOrigin_PS4_Gyro_Roll", "value":"102" }, + { "name":"k_EInputActionOrigin_PS4_DPad_Move", "value":"103" }, + { "name":"k_EInputActionOrigin_PS4_Reserved1", "value":"104" }, + { "name":"k_EInputActionOrigin_PS4_Reserved2", "value":"105" }, + { "name":"k_EInputActionOrigin_PS4_Reserved3", "value":"106" }, + { "name":"k_EInputActionOrigin_PS4_Reserved4", "value":"107" }, + { "name":"k_EInputActionOrigin_PS4_Reserved5", "value":"108" }, + { "name":"k_EInputActionOrigin_PS4_Reserved6", "value":"109" }, + { "name":"k_EInputActionOrigin_PS4_Reserved7", "value":"110" }, + { "name":"k_EInputActionOrigin_PS4_Reserved8", "value":"111" }, + { "name":"k_EInputActionOrigin_PS4_Reserved9", "value":"112" }, + { "name":"k_EInputActionOrigin_PS4_Reserved10", "value":"113" }, + { "name":"k_EInputActionOrigin_XBoxOne_A", "value":"114" }, + { "name":"k_EInputActionOrigin_XBoxOne_B", "value":"115" }, + { "name":"k_EInputActionOrigin_XBoxOne_X", "value":"116" }, + { "name":"k_EInputActionOrigin_XBoxOne_Y", "value":"117" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftBumper", "value":"118" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightBumper", "value":"119" }, + { "name":"k_EInputActionOrigin_XBoxOne_Menu", "value":"120" }, + { "name":"k_EInputActionOrigin_XBoxOne_View", "value":"121" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftTrigger_Pull", "value":"122" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftTrigger_Click", "value":"123" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightTrigger_Pull", "value":"124" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightTrigger_Click", "value":"125" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftStick_Move", "value":"126" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftStick_Click", "value":"127" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftStick_DPadNorth", "value":"128" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftStick_DPadSouth", "value":"129" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftStick_DPadWest", "value":"130" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftStick_DPadEast", "value":"131" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightStick_Move", "value":"132" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightStick_Click", "value":"133" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightStick_DPadNorth", "value":"134" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightStick_DPadSouth", "value":"135" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightStick_DPadWest", "value":"136" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightStick_DPadEast", "value":"137" }, + { "name":"k_EInputActionOrigin_XBoxOne_DPad_North", "value":"138" }, + { "name":"k_EInputActionOrigin_XBoxOne_DPad_South", "value":"139" }, + { "name":"k_EInputActionOrigin_XBoxOne_DPad_West", "value":"140" }, + { "name":"k_EInputActionOrigin_XBoxOne_DPad_East", "value":"141" }, + { "name":"k_EInputActionOrigin_XBoxOne_DPad_Move", "value":"142" }, + { "name":"k_EInputActionOrigin_XBoxOne_Reserved1", "value":"143" }, + { "name":"k_EInputActionOrigin_XBoxOne_Reserved2", "value":"144" }, + { "name":"k_EInputActionOrigin_XBoxOne_Reserved3", "value":"145" }, + { "name":"k_EInputActionOrigin_XBoxOne_Reserved4", "value":"146" }, + { "name":"k_EInputActionOrigin_XBoxOne_Reserved5", "value":"147" }, + { "name":"k_EInputActionOrigin_XBoxOne_Reserved6", "value":"148" }, + { "name":"k_EInputActionOrigin_XBoxOne_Reserved7", "value":"149" }, + { "name":"k_EInputActionOrigin_XBoxOne_Reserved8", "value":"150" }, + { "name":"k_EInputActionOrigin_XBoxOne_Reserved9", "value":"151" }, + { "name":"k_EInputActionOrigin_XBoxOne_Reserved10", "value":"152" }, + { "name":"k_EInputActionOrigin_XBox360_A", "value":"153" }, + { "name":"k_EInputActionOrigin_XBox360_B", "value":"154" }, + { "name":"k_EInputActionOrigin_XBox360_X", "value":"155" }, + { "name":"k_EInputActionOrigin_XBox360_Y", "value":"156" }, + { "name":"k_EInputActionOrigin_XBox360_LeftBumper", "value":"157" }, + { "name":"k_EInputActionOrigin_XBox360_RightBumper", "value":"158" }, + { "name":"k_EInputActionOrigin_XBox360_Start", "value":"159" }, + { "name":"k_EInputActionOrigin_XBox360_Back", "value":"160" }, + { "name":"k_EInputActionOrigin_XBox360_LeftTrigger_Pull", "value":"161" }, + { "name":"k_EInputActionOrigin_XBox360_LeftTrigger_Click", "value":"162" }, + { "name":"k_EInputActionOrigin_XBox360_RightTrigger_Pull", "value":"163" }, + { "name":"k_EInputActionOrigin_XBox360_RightTrigger_Click", "value":"164" }, + { "name":"k_EInputActionOrigin_XBox360_LeftStick_Move", "value":"165" }, + { "name":"k_EInputActionOrigin_XBox360_LeftStick_Click", "value":"166" }, + { "name":"k_EInputActionOrigin_XBox360_LeftStick_DPadNorth", "value":"167" }, + { "name":"k_EInputActionOrigin_XBox360_LeftStick_DPadSouth", "value":"168" }, + { "name":"k_EInputActionOrigin_XBox360_LeftStick_DPadWest", "value":"169" }, + { "name":"k_EInputActionOrigin_XBox360_LeftStick_DPadEast", "value":"170" }, + { "name":"k_EInputActionOrigin_XBox360_RightStick_Move", "value":"171" }, + { "name":"k_EInputActionOrigin_XBox360_RightStick_Click", "value":"172" }, + { "name":"k_EInputActionOrigin_XBox360_RightStick_DPadNorth", "value":"173" }, + { "name":"k_EInputActionOrigin_XBox360_RightStick_DPadSouth", "value":"174" }, + { "name":"k_EInputActionOrigin_XBox360_RightStick_DPadWest", "value":"175" }, + { "name":"k_EInputActionOrigin_XBox360_RightStick_DPadEast", "value":"176" }, + { "name":"k_EInputActionOrigin_XBox360_DPad_North", "value":"177" }, + { "name":"k_EInputActionOrigin_XBox360_DPad_South", "value":"178" }, + { "name":"k_EInputActionOrigin_XBox360_DPad_West", "value":"179" }, + { "name":"k_EInputActionOrigin_XBox360_DPad_East", "value":"180" }, + { "name":"k_EInputActionOrigin_XBox360_DPad_Move", "value":"181" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved1", "value":"182" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved2", "value":"183" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved3", "value":"184" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved4", "value":"185" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved5", "value":"186" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved6", "value":"187" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved7", "value":"188" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved8", "value":"189" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved9", "value":"190" }, + { "name":"k_EInputActionOrigin_XBox360_Reserved10", "value":"191" }, + { "name":"k_EInputActionOrigin_Switch_A", "value":"192" }, + { "name":"k_EInputActionOrigin_Switch_B", "value":"193" }, + { "name":"k_EInputActionOrigin_Switch_X", "value":"194" }, + { "name":"k_EInputActionOrigin_Switch_Y", "value":"195" }, + { "name":"k_EInputActionOrigin_Switch_LeftBumper", "value":"196" }, + { "name":"k_EInputActionOrigin_Switch_RightBumper", "value":"197" }, + { "name":"k_EInputActionOrigin_Switch_Plus", "value":"198" }, + { "name":"k_EInputActionOrigin_Switch_Minus", "value":"199" }, + { "name":"k_EInputActionOrigin_Switch_Capture", "value":"200" }, + { "name":"k_EInputActionOrigin_Switch_LeftTrigger_Pull", "value":"201" }, + { "name":"k_EInputActionOrigin_Switch_LeftTrigger_Click", "value":"202" }, + { "name":"k_EInputActionOrigin_Switch_RightTrigger_Pull", "value":"203" }, + { "name":"k_EInputActionOrigin_Switch_RightTrigger_Click", "value":"204" }, + { "name":"k_EInputActionOrigin_Switch_LeftStick_Move", "value":"205" }, + { "name":"k_EInputActionOrigin_Switch_LeftStick_Click", "value":"206" }, + { "name":"k_EInputActionOrigin_Switch_LeftStick_DPadNorth", "value":"207" }, + { "name":"k_EInputActionOrigin_Switch_LeftStick_DPadSouth", "value":"208" }, + { "name":"k_EInputActionOrigin_Switch_LeftStick_DPadWest", "value":"209" }, + { "name":"k_EInputActionOrigin_Switch_LeftStick_DPadEast", "value":"210" }, + { "name":"k_EInputActionOrigin_Switch_RightStick_Move", "value":"211" }, + { "name":"k_EInputActionOrigin_Switch_RightStick_Click", "value":"212" }, + { "name":"k_EInputActionOrigin_Switch_RightStick_DPadNorth", "value":"213" }, + { "name":"k_EInputActionOrigin_Switch_RightStick_DPadSouth", "value":"214" }, + { "name":"k_EInputActionOrigin_Switch_RightStick_DPadWest", "value":"215" }, + { "name":"k_EInputActionOrigin_Switch_RightStick_DPadEast", "value":"216" }, + { "name":"k_EInputActionOrigin_Switch_DPad_North", "value":"217" }, + { "name":"k_EInputActionOrigin_Switch_DPad_South", "value":"218" }, + { "name":"k_EInputActionOrigin_Switch_DPad_West", "value":"219" }, + { "name":"k_EInputActionOrigin_Switch_DPad_East", "value":"220" }, + { "name":"k_EInputActionOrigin_Switch_ProGyro_Move", "value":"221" }, + { "name":"k_EInputActionOrigin_Switch_ProGyro_Pitch", "value":"222" }, + { "name":"k_EInputActionOrigin_Switch_ProGyro_Yaw", "value":"223" }, + { "name":"k_EInputActionOrigin_Switch_ProGyro_Roll", "value":"224" }, + { "name":"k_EInputActionOrigin_Switch_DPad_Move", "value":"225" }, + { "name":"k_EInputActionOrigin_Switch_Reserved1", "value":"226" }, + { "name":"k_EInputActionOrigin_Switch_Reserved2", "value":"227" }, + { "name":"k_EInputActionOrigin_Switch_Reserved3", "value":"228" }, + { "name":"k_EInputActionOrigin_Switch_Reserved4", "value":"229" }, + { "name":"k_EInputActionOrigin_Switch_Reserved5", "value":"230" }, + { "name":"k_EInputActionOrigin_Switch_Reserved6", "value":"231" }, + { "name":"k_EInputActionOrigin_Switch_Reserved7", "value":"232" }, + { "name":"k_EInputActionOrigin_Switch_Reserved8", "value":"233" }, + { "name":"k_EInputActionOrigin_Switch_Reserved9", "value":"234" }, + { "name":"k_EInputActionOrigin_Switch_Reserved10", "value":"235" }, + { "name":"k_EInputActionOrigin_Switch_RightGyro_Move", "value":"236" }, + { "name":"k_EInputActionOrigin_Switch_RightGyro_Pitch", "value":"237" }, + { "name":"k_EInputActionOrigin_Switch_RightGyro_Yaw", "value":"238" }, + { "name":"k_EInputActionOrigin_Switch_RightGyro_Roll", "value":"239" }, + { "name":"k_EInputActionOrigin_Switch_LeftGyro_Move", "value":"240" }, + { "name":"k_EInputActionOrigin_Switch_LeftGyro_Pitch", "value":"241" }, + { "name":"k_EInputActionOrigin_Switch_LeftGyro_Yaw", "value":"242" }, + { "name":"k_EInputActionOrigin_Switch_LeftGyro_Roll", "value":"243" }, + { "name":"k_EInputActionOrigin_Switch_LeftGrip_Lower", "value":"244" }, + { "name":"k_EInputActionOrigin_Switch_LeftGrip_Upper", "value":"245" }, + { "name":"k_EInputActionOrigin_Switch_RightGrip_Lower", "value":"246" }, + { "name":"k_EInputActionOrigin_Switch_RightGrip_Upper", "value":"247" }, + { "name":"k_EInputActionOrigin_Switch_Reserved11", "value":"248" }, + { "name":"k_EInputActionOrigin_Switch_Reserved12", "value":"249" }, + { "name":"k_EInputActionOrigin_Switch_Reserved13", "value":"250" }, + { "name":"k_EInputActionOrigin_Switch_Reserved14", "value":"251" }, + { "name":"k_EInputActionOrigin_Switch_Reserved15", "value":"252" }, + { "name":"k_EInputActionOrigin_Switch_Reserved16", "value":"253" }, + { "name":"k_EInputActionOrigin_Switch_Reserved17", "value":"254" }, + { "name":"k_EInputActionOrigin_Switch_Reserved18", "value":"255" }, + { "name":"k_EInputActionOrigin_Switch_Reserved19", "value":"256" }, + { "name":"k_EInputActionOrigin_Switch_Reserved20", "value":"257" }, + { "name":"k_EInputActionOrigin_PS5_X", "value":"258" }, + { "name":"k_EInputActionOrigin_PS5_Circle", "value":"259" }, + { "name":"k_EInputActionOrigin_PS5_Triangle", "value":"260" }, + { "name":"k_EInputActionOrigin_PS5_Square", "value":"261" }, + { "name":"k_EInputActionOrigin_PS5_LeftBumper", "value":"262" }, + { "name":"k_EInputActionOrigin_PS5_RightBumper", "value":"263" }, + { "name":"k_EInputActionOrigin_PS5_Option", "value":"264" }, + { "name":"k_EInputActionOrigin_PS5_Create", "value":"265" }, + { "name":"k_EInputActionOrigin_PS5_Mute", "value":"266" }, + { "name":"k_EInputActionOrigin_PS5_LeftPad_Touch", "value":"267" }, + { "name":"k_EInputActionOrigin_PS5_LeftPad_Swipe", "value":"268" }, + { "name":"k_EInputActionOrigin_PS5_LeftPad_Click", "value":"269" }, + { "name":"k_EInputActionOrigin_PS5_LeftPad_DPadNorth", "value":"270" }, + { "name":"k_EInputActionOrigin_PS5_LeftPad_DPadSouth", "value":"271" }, + { "name":"k_EInputActionOrigin_PS5_LeftPad_DPadWest", "value":"272" }, + { "name":"k_EInputActionOrigin_PS5_LeftPad_DPadEast", "value":"273" }, + { "name":"k_EInputActionOrigin_PS5_RightPad_Touch", "value":"274" }, + { "name":"k_EInputActionOrigin_PS5_RightPad_Swipe", "value":"275" }, + { "name":"k_EInputActionOrigin_PS5_RightPad_Click", "value":"276" }, + { "name":"k_EInputActionOrigin_PS5_RightPad_DPadNorth", "value":"277" }, + { "name":"k_EInputActionOrigin_PS5_RightPad_DPadSouth", "value":"278" }, + { "name":"k_EInputActionOrigin_PS5_RightPad_DPadWest", "value":"279" }, + { "name":"k_EInputActionOrigin_PS5_RightPad_DPadEast", "value":"280" }, + { "name":"k_EInputActionOrigin_PS5_CenterPad_Touch", "value":"281" }, + { "name":"k_EInputActionOrigin_PS5_CenterPad_Swipe", "value":"282" }, + { "name":"k_EInputActionOrigin_PS5_CenterPad_Click", "value":"283" }, + { "name":"k_EInputActionOrigin_PS5_CenterPad_DPadNorth", "value":"284" }, + { "name":"k_EInputActionOrigin_PS5_CenterPad_DPadSouth", "value":"285" }, + { "name":"k_EInputActionOrigin_PS5_CenterPad_DPadWest", "value":"286" }, + { "name":"k_EInputActionOrigin_PS5_CenterPad_DPadEast", "value":"287" }, + { "name":"k_EInputActionOrigin_PS5_LeftTrigger_Pull", "value":"288" }, + { "name":"k_EInputActionOrigin_PS5_LeftTrigger_Click", "value":"289" }, + { "name":"k_EInputActionOrigin_PS5_RightTrigger_Pull", "value":"290" }, + { "name":"k_EInputActionOrigin_PS5_RightTrigger_Click", "value":"291" }, + { "name":"k_EInputActionOrigin_PS5_LeftStick_Move", "value":"292" }, + { "name":"k_EInputActionOrigin_PS5_LeftStick_Click", "value":"293" }, + { "name":"k_EInputActionOrigin_PS5_LeftStick_DPadNorth", "value":"294" }, + { "name":"k_EInputActionOrigin_PS5_LeftStick_DPadSouth", "value":"295" }, + { "name":"k_EInputActionOrigin_PS5_LeftStick_DPadWest", "value":"296" }, + { "name":"k_EInputActionOrigin_PS5_LeftStick_DPadEast", "value":"297" }, + { "name":"k_EInputActionOrigin_PS5_RightStick_Move", "value":"298" }, + { "name":"k_EInputActionOrigin_PS5_RightStick_Click", "value":"299" }, + { "name":"k_EInputActionOrigin_PS5_RightStick_DPadNorth", "value":"300" }, + { "name":"k_EInputActionOrigin_PS5_RightStick_DPadSouth", "value":"301" }, + { "name":"k_EInputActionOrigin_PS5_RightStick_DPadWest", "value":"302" }, + { "name":"k_EInputActionOrigin_PS5_RightStick_DPadEast", "value":"303" }, + { "name":"k_EInputActionOrigin_PS5_DPad_North", "value":"304" }, + { "name":"k_EInputActionOrigin_PS5_DPad_South", "value":"305" }, + { "name":"k_EInputActionOrigin_PS5_DPad_West", "value":"306" }, + { "name":"k_EInputActionOrigin_PS5_DPad_East", "value":"307" }, + { "name":"k_EInputActionOrigin_PS5_Gyro_Move", "value":"308" }, + { "name":"k_EInputActionOrigin_PS5_Gyro_Pitch", "value":"309" }, + { "name":"k_EInputActionOrigin_PS5_Gyro_Yaw", "value":"310" }, + { "name":"k_EInputActionOrigin_PS5_Gyro_Roll", "value":"311" }, + { "name":"k_EInputActionOrigin_PS5_DPad_Move", "value":"312" }, + { "name":"k_EInputActionOrigin_PS5_Reserved1", "value":"313" }, + { "name":"k_EInputActionOrigin_PS5_Reserved2", "value":"314" }, + { "name":"k_EInputActionOrigin_PS5_Reserved3", "value":"315" }, + { "name":"k_EInputActionOrigin_PS5_Reserved4", "value":"316" }, + { "name":"k_EInputActionOrigin_PS5_Reserved5", "value":"317" }, + { "name":"k_EInputActionOrigin_PS5_Reserved6", "value":"318" }, + { "name":"k_EInputActionOrigin_PS5_Reserved7", "value":"319" }, + { "name":"k_EInputActionOrigin_PS5_Reserved8", "value":"320" }, + { "name":"k_EInputActionOrigin_PS5_Reserved9", "value":"321" }, + { "name":"k_EInputActionOrigin_PS5_Reserved10", "value":"322" }, + { "name":"k_EInputActionOrigin_PS5_Reserved11", "value":"323" }, + { "name":"k_EInputActionOrigin_PS5_Reserved12", "value":"324" }, + { "name":"k_EInputActionOrigin_PS5_Reserved13", "value":"325" }, + { "name":"k_EInputActionOrigin_PS5_Reserved14", "value":"326" }, + { "name":"k_EInputActionOrigin_PS5_Reserved15", "value":"327" }, + { "name":"k_EInputActionOrigin_PS5_Reserved16", "value":"328" }, + { "name":"k_EInputActionOrigin_PS5_Reserved17", "value":"329" }, + { "name":"k_EInputActionOrigin_PS5_Reserved18", "value":"330" }, + { "name":"k_EInputActionOrigin_PS5_Reserved19", "value":"331" }, + { "name":"k_EInputActionOrigin_PS5_Reserved20", "value":"332" }, + { "name":"k_EInputActionOrigin_Count", "value":"333" }, + { "name":"k_EInputActionOrigin_MaximumPossibleValue", "value":"32767" } + ] + }, + { + "enumname": "EXboxOrigin", + "values": [ + { "name":"k_EXboxOrigin_A", "value":"0" }, + { "name":"k_EXboxOrigin_B", "value":"1" }, + { "name":"k_EXboxOrigin_X", "value":"2" }, + { "name":"k_EXboxOrigin_Y", "value":"3" }, + { "name":"k_EXboxOrigin_LeftBumper", "value":"4" }, + { "name":"k_EXboxOrigin_RightBumper", "value":"5" }, + { "name":"k_EXboxOrigin_Menu", "value":"6" }, + { "name":"k_EXboxOrigin_View", "value":"7" }, + { "name":"k_EXboxOrigin_LeftTrigger_Pull", "value":"8" }, + { "name":"k_EXboxOrigin_LeftTrigger_Click", "value":"9" }, + { "name":"k_EXboxOrigin_RightTrigger_Pull", "value":"10" }, + { "name":"k_EXboxOrigin_RightTrigger_Click", "value":"11" }, + { "name":"k_EXboxOrigin_LeftStick_Move", "value":"12" }, + { "name":"k_EXboxOrigin_LeftStick_Click", "value":"13" }, + { "name":"k_EXboxOrigin_LeftStick_DPadNorth", "value":"14" }, + { "name":"k_EXboxOrigin_LeftStick_DPadSouth", "value":"15" }, + { "name":"k_EXboxOrigin_LeftStick_DPadWest", "value":"16" }, + { "name":"k_EXboxOrigin_LeftStick_DPadEast", "value":"17" }, + { "name":"k_EXboxOrigin_RightStick_Move", "value":"18" }, + { "name":"k_EXboxOrigin_RightStick_Click", "value":"19" }, + { "name":"k_EXboxOrigin_RightStick_DPadNorth", "value":"20" }, + { "name":"k_EXboxOrigin_RightStick_DPadSouth", "value":"21" }, + { "name":"k_EXboxOrigin_RightStick_DPadWest", "value":"22" }, + { "name":"k_EXboxOrigin_RightStick_DPadEast", "value":"23" }, + { "name":"k_EXboxOrigin_DPad_North", "value":"24" }, + { "name":"k_EXboxOrigin_DPad_South", "value":"25" }, + { "name":"k_EXboxOrigin_DPad_West", "value":"26" }, + { "name":"k_EXboxOrigin_DPad_East", "value":"27" }, + { "name":"k_EXboxOrigin_Count", "value":"28" } + ] + }, + { + "enumname": "ESteamControllerPad", + "values": [ + { "name":"k_ESteamControllerPad_Left", "value":"0" }, + { "name":"k_ESteamControllerPad_Right", "value":"1" } + ] + }, + { + "enumname": "ESteamInputType", + "values": [ + { "name":"k_ESteamInputType_Unknown", "value":"0" }, + { "name":"k_ESteamInputType_SteamController", "value":"1" }, + { "name":"k_ESteamInputType_XBox360Controller", "value":"2" }, + { "name":"k_ESteamInputType_XBoxOneController", "value":"3" }, + { "name":"k_ESteamInputType_GenericGamepad", "value":"4" }, + { "name":"k_ESteamInputType_PS4Controller", "value":"5" }, + { "name":"k_ESteamInputType_AppleMFiController", "value":"6" }, + { "name":"k_ESteamInputType_AndroidController", "value":"7" }, + { "name":"k_ESteamInputType_SwitchJoyConPair", "value":"8" }, + { "name":"k_ESteamInputType_SwitchJoyConSingle", "value":"9" }, + { "name":"k_ESteamInputType_SwitchProController", "value":"10" }, + { "name":"k_ESteamInputType_MobileTouch", "value":"11" }, + { "name":"k_ESteamInputType_PS3Controller", "value":"12" }, + { "name":"k_ESteamInputType_PS5Controller", "value":"13" }, + { "name":"k_ESteamInputType_Count", "value":"14" }, + { "name":"k_ESteamInputType_MaximumPossibleValue", "value":"255" } + ] + }, + { + "enumname": "ESteamInputLEDFlag", + "values": [ + { "name":"k_ESteamInputLEDFlag_SetColor", "value":"0" }, + { "name":"k_ESteamInputLEDFlag_RestoreUserDefault", "value":"1" } + ] + }, + { + "enumname": "EControllerActionOrigin", + "values": [ + { "name":"k_EControllerActionOrigin_None", "value":"0" }, + { "name":"k_EControllerActionOrigin_A", "value":"1" }, + { "name":"k_EControllerActionOrigin_B", "value":"2" }, + { "name":"k_EControllerActionOrigin_X", "value":"3" }, + { "name":"k_EControllerActionOrigin_Y", "value":"4" }, + { "name":"k_EControllerActionOrigin_LeftBumper", "value":"5" }, + { "name":"k_EControllerActionOrigin_RightBumper", "value":"6" }, + { "name":"k_EControllerActionOrigin_LeftGrip", "value":"7" }, + { "name":"k_EControllerActionOrigin_RightGrip", "value":"8" }, + { "name":"k_EControllerActionOrigin_Start", "value":"9" }, + { "name":"k_EControllerActionOrigin_Back", "value":"10" }, + { "name":"k_EControllerActionOrigin_LeftPad_Touch", "value":"11" }, + { "name":"k_EControllerActionOrigin_LeftPad_Swipe", "value":"12" }, + { "name":"k_EControllerActionOrigin_LeftPad_Click", "value":"13" }, + { "name":"k_EControllerActionOrigin_LeftPad_DPadNorth", "value":"14" }, + { "name":"k_EControllerActionOrigin_LeftPad_DPadSouth", "value":"15" }, + { "name":"k_EControllerActionOrigin_LeftPad_DPadWest", "value":"16" }, + { "name":"k_EControllerActionOrigin_LeftPad_DPadEast", "value":"17" }, + { "name":"k_EControllerActionOrigin_RightPad_Touch", "value":"18" }, + { "name":"k_EControllerActionOrigin_RightPad_Swipe", "value":"19" }, + { "name":"k_EControllerActionOrigin_RightPad_Click", "value":"20" }, + { "name":"k_EControllerActionOrigin_RightPad_DPadNorth", "value":"21" }, + { "name":"k_EControllerActionOrigin_RightPad_DPadSouth", "value":"22" }, + { "name":"k_EControllerActionOrigin_RightPad_DPadWest", "value":"23" }, + { "name":"k_EControllerActionOrigin_RightPad_DPadEast", "value":"24" }, + { "name":"k_EControllerActionOrigin_LeftTrigger_Pull", "value":"25" }, + { "name":"k_EControllerActionOrigin_LeftTrigger_Click", "value":"26" }, + { "name":"k_EControllerActionOrigin_RightTrigger_Pull", "value":"27" }, + { "name":"k_EControllerActionOrigin_RightTrigger_Click", "value":"28" }, + { "name":"k_EControllerActionOrigin_LeftStick_Move", "value":"29" }, + { "name":"k_EControllerActionOrigin_LeftStick_Click", "value":"30" }, + { "name":"k_EControllerActionOrigin_LeftStick_DPadNorth", "value":"31" }, + { "name":"k_EControllerActionOrigin_LeftStick_DPadSouth", "value":"32" }, + { "name":"k_EControllerActionOrigin_LeftStick_DPadWest", "value":"33" }, + { "name":"k_EControllerActionOrigin_LeftStick_DPadEast", "value":"34" }, + { "name":"k_EControllerActionOrigin_Gyro_Move", "value":"35" }, + { "name":"k_EControllerActionOrigin_Gyro_Pitch", "value":"36" }, + { "name":"k_EControllerActionOrigin_Gyro_Yaw", "value":"37" }, + { "name":"k_EControllerActionOrigin_Gyro_Roll", "value":"38" }, + { "name":"k_EControllerActionOrigin_PS4_X", "value":"39" }, + { "name":"k_EControllerActionOrigin_PS4_Circle", "value":"40" }, + { "name":"k_EControllerActionOrigin_PS4_Triangle", "value":"41" }, + { "name":"k_EControllerActionOrigin_PS4_Square", "value":"42" }, + { "name":"k_EControllerActionOrigin_PS4_LeftBumper", "value":"43" }, + { "name":"k_EControllerActionOrigin_PS4_RightBumper", "value":"44" }, + { "name":"k_EControllerActionOrigin_PS4_Options", "value":"45" }, + { "name":"k_EControllerActionOrigin_PS4_Share", "value":"46" }, + { "name":"k_EControllerActionOrigin_PS4_LeftPad_Touch", "value":"47" }, + { "name":"k_EControllerActionOrigin_PS4_LeftPad_Swipe", "value":"48" }, + { "name":"k_EControllerActionOrigin_PS4_LeftPad_Click", "value":"49" }, + { "name":"k_EControllerActionOrigin_PS4_LeftPad_DPadNorth", "value":"50" }, + { "name":"k_EControllerActionOrigin_PS4_LeftPad_DPadSouth", "value":"51" }, + { "name":"k_EControllerActionOrigin_PS4_LeftPad_DPadWest", "value":"52" }, + { "name":"k_EControllerActionOrigin_PS4_LeftPad_DPadEast", "value":"53" }, + { "name":"k_EControllerActionOrigin_PS4_RightPad_Touch", "value":"54" }, + { "name":"k_EControllerActionOrigin_PS4_RightPad_Swipe", "value":"55" }, + { "name":"k_EControllerActionOrigin_PS4_RightPad_Click", "value":"56" }, + { "name":"k_EControllerActionOrigin_PS4_RightPad_DPadNorth", "value":"57" }, + { "name":"k_EControllerActionOrigin_PS4_RightPad_DPadSouth", "value":"58" }, + { "name":"k_EControllerActionOrigin_PS4_RightPad_DPadWest", "value":"59" }, + { "name":"k_EControllerActionOrigin_PS4_RightPad_DPadEast", "value":"60" }, + { "name":"k_EControllerActionOrigin_PS4_CenterPad_Touch", "value":"61" }, + { "name":"k_EControllerActionOrigin_PS4_CenterPad_Swipe", "value":"62" }, + { "name":"k_EControllerActionOrigin_PS4_CenterPad_Click", "value":"63" }, + { "name":"k_EControllerActionOrigin_PS4_CenterPad_DPadNorth", "value":"64" }, + { "name":"k_EControllerActionOrigin_PS4_CenterPad_DPadSouth", "value":"65" }, + { "name":"k_EControllerActionOrigin_PS4_CenterPad_DPadWest", "value":"66" }, + { "name":"k_EControllerActionOrigin_PS4_CenterPad_DPadEast", "value":"67" }, + { "name":"k_EControllerActionOrigin_PS4_LeftTrigger_Pull", "value":"68" }, + { "name":"k_EControllerActionOrigin_PS4_LeftTrigger_Click", "value":"69" }, + { "name":"k_EControllerActionOrigin_PS4_RightTrigger_Pull", "value":"70" }, + { "name":"k_EControllerActionOrigin_PS4_RightTrigger_Click", "value":"71" }, + { "name":"k_EControllerActionOrigin_PS4_LeftStick_Move", "value":"72" }, + { "name":"k_EControllerActionOrigin_PS4_LeftStick_Click", "value":"73" }, + { "name":"k_EControllerActionOrigin_PS4_LeftStick_DPadNorth", "value":"74" }, + { "name":"k_EControllerActionOrigin_PS4_LeftStick_DPadSouth", "value":"75" }, + { "name":"k_EControllerActionOrigin_PS4_LeftStick_DPadWest", "value":"76" }, + { "name":"k_EControllerActionOrigin_PS4_LeftStick_DPadEast", "value":"77" }, + { "name":"k_EControllerActionOrigin_PS4_RightStick_Move", "value":"78" }, + { "name":"k_EControllerActionOrigin_PS4_RightStick_Click", "value":"79" }, + { "name":"k_EControllerActionOrigin_PS4_RightStick_DPadNorth", "value":"80" }, + { "name":"k_EControllerActionOrigin_PS4_RightStick_DPadSouth", "value":"81" }, + { "name":"k_EControllerActionOrigin_PS4_RightStick_DPadWest", "value":"82" }, + { "name":"k_EControllerActionOrigin_PS4_RightStick_DPadEast", "value":"83" }, + { "name":"k_EControllerActionOrigin_PS4_DPad_North", "value":"84" }, + { "name":"k_EControllerActionOrigin_PS4_DPad_South", "value":"85" }, + { "name":"k_EControllerActionOrigin_PS4_DPad_West", "value":"86" }, + { "name":"k_EControllerActionOrigin_PS4_DPad_East", "value":"87" }, + { "name":"k_EControllerActionOrigin_PS4_Gyro_Move", "value":"88" }, + { "name":"k_EControllerActionOrigin_PS4_Gyro_Pitch", "value":"89" }, + { "name":"k_EControllerActionOrigin_PS4_Gyro_Yaw", "value":"90" }, + { "name":"k_EControllerActionOrigin_PS4_Gyro_Roll", "value":"91" }, + { "name":"k_EControllerActionOrigin_XBoxOne_A", "value":"92" }, + { "name":"k_EControllerActionOrigin_XBoxOne_B", "value":"93" }, + { "name":"k_EControllerActionOrigin_XBoxOne_X", "value":"94" }, + { "name":"k_EControllerActionOrigin_XBoxOne_Y", "value":"95" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftBumper", "value":"96" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightBumper", "value":"97" }, + { "name":"k_EControllerActionOrigin_XBoxOne_Menu", "value":"98" }, + { "name":"k_EControllerActionOrigin_XBoxOne_View", "value":"99" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftTrigger_Pull", "value":"100" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftTrigger_Click", "value":"101" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightTrigger_Pull", "value":"102" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightTrigger_Click", "value":"103" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftStick_Move", "value":"104" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftStick_Click", "value":"105" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftStick_DPadNorth", "value":"106" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftStick_DPadSouth", "value":"107" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftStick_DPadWest", "value":"108" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftStick_DPadEast", "value":"109" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightStick_Move", "value":"110" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightStick_Click", "value":"111" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightStick_DPadNorth", "value":"112" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightStick_DPadSouth", "value":"113" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightStick_DPadWest", "value":"114" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightStick_DPadEast", "value":"115" }, + { "name":"k_EControllerActionOrigin_XBoxOne_DPad_North", "value":"116" }, + { "name":"k_EControllerActionOrigin_XBoxOne_DPad_South", "value":"117" }, + { "name":"k_EControllerActionOrigin_XBoxOne_DPad_West", "value":"118" }, + { "name":"k_EControllerActionOrigin_XBoxOne_DPad_East", "value":"119" }, + { "name":"k_EControllerActionOrigin_XBox360_A", "value":"120" }, + { "name":"k_EControllerActionOrigin_XBox360_B", "value":"121" }, + { "name":"k_EControllerActionOrigin_XBox360_X", "value":"122" }, + { "name":"k_EControllerActionOrigin_XBox360_Y", "value":"123" }, + { "name":"k_EControllerActionOrigin_XBox360_LeftBumper", "value":"124" }, + { "name":"k_EControllerActionOrigin_XBox360_RightBumper", "value":"125" }, + { "name":"k_EControllerActionOrigin_XBox360_Start", "value":"126" }, + { "name":"k_EControllerActionOrigin_XBox360_Back", "value":"127" }, + { "name":"k_EControllerActionOrigin_XBox360_LeftTrigger_Pull", "value":"128" }, + { "name":"k_EControllerActionOrigin_XBox360_LeftTrigger_Click", "value":"129" }, + { "name":"k_EControllerActionOrigin_XBox360_RightTrigger_Pull", "value":"130" }, + { "name":"k_EControllerActionOrigin_XBox360_RightTrigger_Click", "value":"131" }, + { "name":"k_EControllerActionOrigin_XBox360_LeftStick_Move", "value":"132" }, + { "name":"k_EControllerActionOrigin_XBox360_LeftStick_Click", "value":"133" }, + { "name":"k_EControllerActionOrigin_XBox360_LeftStick_DPadNorth", "value":"134" }, + { "name":"k_EControllerActionOrigin_XBox360_LeftStick_DPadSouth", "value":"135" }, + { "name":"k_EControllerActionOrigin_XBox360_LeftStick_DPadWest", "value":"136" }, + { "name":"k_EControllerActionOrigin_XBox360_LeftStick_DPadEast", "value":"137" }, + { "name":"k_EControllerActionOrigin_XBox360_RightStick_Move", "value":"138" }, + { "name":"k_EControllerActionOrigin_XBox360_RightStick_Click", "value":"139" }, + { "name":"k_EControllerActionOrigin_XBox360_RightStick_DPadNorth", "value":"140" }, + { "name":"k_EControllerActionOrigin_XBox360_RightStick_DPadSouth", "value":"141" }, + { "name":"k_EControllerActionOrigin_XBox360_RightStick_DPadWest", "value":"142" }, + { "name":"k_EControllerActionOrigin_XBox360_RightStick_DPadEast", "value":"143" }, + { "name":"k_EControllerActionOrigin_XBox360_DPad_North", "value":"144" }, + { "name":"k_EControllerActionOrigin_XBox360_DPad_South", "value":"145" }, + { "name":"k_EControllerActionOrigin_XBox360_DPad_West", "value":"146" }, + { "name":"k_EControllerActionOrigin_XBox360_DPad_East", "value":"147" }, + { "name":"k_EControllerActionOrigin_SteamV2_A", "value":"148" }, + { "name":"k_EControllerActionOrigin_SteamV2_B", "value":"149" }, + { "name":"k_EControllerActionOrigin_SteamV2_X", "value":"150" }, + { "name":"k_EControllerActionOrigin_SteamV2_Y", "value":"151" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftBumper", "value":"152" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightBumper", "value":"153" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftGrip_Lower", "value":"154" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftGrip_Upper", "value":"155" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightGrip_Lower", "value":"156" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightGrip_Upper", "value":"157" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftBumper_Pressure", "value":"158" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightBumper_Pressure", "value":"159" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftGrip_Pressure", "value":"160" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightGrip_Pressure", "value":"161" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftGrip_Upper_Pressure", "value":"162" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightGrip_Upper_Pressure", "value":"163" }, + { "name":"k_EControllerActionOrigin_SteamV2_Start", "value":"164" }, + { "name":"k_EControllerActionOrigin_SteamV2_Back", "value":"165" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_Touch", "value":"166" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_Swipe", "value":"167" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_Click", "value":"168" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_Pressure", "value":"169" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_DPadNorth", "value":"170" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_DPadSouth", "value":"171" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_DPadWest", "value":"172" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftPad_DPadEast", "value":"173" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightPad_Touch", "value":"174" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightPad_Swipe", "value":"175" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightPad_Click", "value":"176" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightPad_Pressure", "value":"177" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightPad_DPadNorth", "value":"178" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightPad_DPadSouth", "value":"179" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightPad_DPadWest", "value":"180" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightPad_DPadEast", "value":"181" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftTrigger_Pull", "value":"182" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftTrigger_Click", "value":"183" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightTrigger_Pull", "value":"184" }, + { "name":"k_EControllerActionOrigin_SteamV2_RightTrigger_Click", "value":"185" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftStick_Move", "value":"186" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftStick_Click", "value":"187" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftStick_DPadNorth", "value":"188" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftStick_DPadSouth", "value":"189" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftStick_DPadWest", "value":"190" }, + { "name":"k_EControllerActionOrigin_SteamV2_LeftStick_DPadEast", "value":"191" }, + { "name":"k_EControllerActionOrigin_SteamV2_Gyro_Move", "value":"192" }, + { "name":"k_EControllerActionOrigin_SteamV2_Gyro_Pitch", "value":"193" }, + { "name":"k_EControllerActionOrigin_SteamV2_Gyro_Yaw", "value":"194" }, + { "name":"k_EControllerActionOrigin_SteamV2_Gyro_Roll", "value":"195" }, + { "name":"k_EControllerActionOrigin_Switch_A", "value":"196" }, + { "name":"k_EControllerActionOrigin_Switch_B", "value":"197" }, + { "name":"k_EControllerActionOrigin_Switch_X", "value":"198" }, + { "name":"k_EControllerActionOrigin_Switch_Y", "value":"199" }, + { "name":"k_EControllerActionOrigin_Switch_LeftBumper", "value":"200" }, + { "name":"k_EControllerActionOrigin_Switch_RightBumper", "value":"201" }, + { "name":"k_EControllerActionOrigin_Switch_Plus", "value":"202" }, + { "name":"k_EControllerActionOrigin_Switch_Minus", "value":"203" }, + { "name":"k_EControllerActionOrigin_Switch_Capture", "value":"204" }, + { "name":"k_EControllerActionOrigin_Switch_LeftTrigger_Pull", "value":"205" }, + { "name":"k_EControllerActionOrigin_Switch_LeftTrigger_Click", "value":"206" }, + { "name":"k_EControllerActionOrigin_Switch_RightTrigger_Pull", "value":"207" }, + { "name":"k_EControllerActionOrigin_Switch_RightTrigger_Click", "value":"208" }, + { "name":"k_EControllerActionOrigin_Switch_LeftStick_Move", "value":"209" }, + { "name":"k_EControllerActionOrigin_Switch_LeftStick_Click", "value":"210" }, + { "name":"k_EControllerActionOrigin_Switch_LeftStick_DPadNorth", "value":"211" }, + { "name":"k_EControllerActionOrigin_Switch_LeftStick_DPadSouth", "value":"212" }, + { "name":"k_EControllerActionOrigin_Switch_LeftStick_DPadWest", "value":"213" }, + { "name":"k_EControllerActionOrigin_Switch_LeftStick_DPadEast", "value":"214" }, + { "name":"k_EControllerActionOrigin_Switch_RightStick_Move", "value":"215" }, + { "name":"k_EControllerActionOrigin_Switch_RightStick_Click", "value":"216" }, + { "name":"k_EControllerActionOrigin_Switch_RightStick_DPadNorth", "value":"217" }, + { "name":"k_EControllerActionOrigin_Switch_RightStick_DPadSouth", "value":"218" }, + { "name":"k_EControllerActionOrigin_Switch_RightStick_DPadWest", "value":"219" }, + { "name":"k_EControllerActionOrigin_Switch_RightStick_DPadEast", "value":"220" }, + { "name":"k_EControllerActionOrigin_Switch_DPad_North", "value":"221" }, + { "name":"k_EControllerActionOrigin_Switch_DPad_South", "value":"222" }, + { "name":"k_EControllerActionOrigin_Switch_DPad_West", "value":"223" }, + { "name":"k_EControllerActionOrigin_Switch_DPad_East", "value":"224" }, + { "name":"k_EControllerActionOrigin_Switch_ProGyro_Move", "value":"225" }, + { "name":"k_EControllerActionOrigin_Switch_ProGyro_Pitch", "value":"226" }, + { "name":"k_EControllerActionOrigin_Switch_ProGyro_Yaw", "value":"227" }, + { "name":"k_EControllerActionOrigin_Switch_ProGyro_Roll", "value":"228" }, + { "name":"k_EControllerActionOrigin_Switch_RightGyro_Move", "value":"229" }, + { "name":"k_EControllerActionOrigin_Switch_RightGyro_Pitch", "value":"230" }, + { "name":"k_EControllerActionOrigin_Switch_RightGyro_Yaw", "value":"231" }, + { "name":"k_EControllerActionOrigin_Switch_RightGyro_Roll", "value":"232" }, + { "name":"k_EControllerActionOrigin_Switch_LeftGyro_Move", "value":"233" }, + { "name":"k_EControllerActionOrigin_Switch_LeftGyro_Pitch", "value":"234" }, + { "name":"k_EControllerActionOrigin_Switch_LeftGyro_Yaw", "value":"235" }, + { "name":"k_EControllerActionOrigin_Switch_LeftGyro_Roll", "value":"236" }, + { "name":"k_EControllerActionOrigin_Switch_LeftGrip_Lower", "value":"237" }, + { "name":"k_EControllerActionOrigin_Switch_LeftGrip_Upper", "value":"238" }, + { "name":"k_EControllerActionOrigin_Switch_RightGrip_Lower", "value":"239" }, + { "name":"k_EControllerActionOrigin_Switch_RightGrip_Upper", "value":"240" }, + { "name":"k_EControllerActionOrigin_PS4_DPad_Move", "value":"241" }, + { "name":"k_EControllerActionOrigin_XBoxOne_DPad_Move", "value":"242" }, + { "name":"k_EControllerActionOrigin_XBox360_DPad_Move", "value":"243" }, + { "name":"k_EControllerActionOrigin_Switch_DPad_Move", "value":"244" }, + { "name":"k_EControllerActionOrigin_PS5_X", "value":"245" }, + { "name":"k_EControllerActionOrigin_PS5_Circle", "value":"246" }, + { "name":"k_EControllerActionOrigin_PS5_Triangle", "value":"247" }, + { "name":"k_EControllerActionOrigin_PS5_Square", "value":"248" }, + { "name":"k_EControllerActionOrigin_PS5_LeftBumper", "value":"249" }, + { "name":"k_EControllerActionOrigin_PS5_RightBumper", "value":"250" }, + { "name":"k_EControllerActionOrigin_PS5_Option", "value":"251" }, + { "name":"k_EControllerActionOrigin_PS5_Create", "value":"252" }, + { "name":"k_EControllerActionOrigin_PS5_Mute", "value":"253" }, + { "name":"k_EControllerActionOrigin_PS5_LeftPad_Touch", "value":"254" }, + { "name":"k_EControllerActionOrigin_PS5_LeftPad_Swipe", "value":"255" }, + { "name":"k_EControllerActionOrigin_PS5_LeftPad_Click", "value":"256" }, + { "name":"k_EControllerActionOrigin_PS5_LeftPad_DPadNorth", "value":"257" }, + { "name":"k_EControllerActionOrigin_PS5_LeftPad_DPadSouth", "value":"258" }, + { "name":"k_EControllerActionOrigin_PS5_LeftPad_DPadWest", "value":"259" }, + { "name":"k_EControllerActionOrigin_PS5_LeftPad_DPadEast", "value":"260" }, + { "name":"k_EControllerActionOrigin_PS5_RightPad_Touch", "value":"261" }, + { "name":"k_EControllerActionOrigin_PS5_RightPad_Swipe", "value":"262" }, + { "name":"k_EControllerActionOrigin_PS5_RightPad_Click", "value":"263" }, + { "name":"k_EControllerActionOrigin_PS5_RightPad_DPadNorth", "value":"264" }, + { "name":"k_EControllerActionOrigin_PS5_RightPad_DPadSouth", "value":"265" }, + { "name":"k_EControllerActionOrigin_PS5_RightPad_DPadWest", "value":"266" }, + { "name":"k_EControllerActionOrigin_PS5_RightPad_DPadEast", "value":"267" }, + { "name":"k_EControllerActionOrigin_PS5_CenterPad_Touch", "value":"268" }, + { "name":"k_EControllerActionOrigin_PS5_CenterPad_Swipe", "value":"269" }, + { "name":"k_EControllerActionOrigin_PS5_CenterPad_Click", "value":"270" }, + { "name":"k_EControllerActionOrigin_PS5_CenterPad_DPadNorth", "value":"271" }, + { "name":"k_EControllerActionOrigin_PS5_CenterPad_DPadSouth", "value":"272" }, + { "name":"k_EControllerActionOrigin_PS5_CenterPad_DPadWest", "value":"273" }, + { "name":"k_EControllerActionOrigin_PS5_CenterPad_DPadEast", "value":"274" }, + { "name":"k_EControllerActionOrigin_PS5_LeftTrigger_Pull", "value":"275" }, + { "name":"k_EControllerActionOrigin_PS5_LeftTrigger_Click", "value":"276" }, + { "name":"k_EControllerActionOrigin_PS5_RightTrigger_Pull", "value":"277" }, + { "name":"k_EControllerActionOrigin_PS5_RightTrigger_Click", "value":"278" }, + { "name":"k_EControllerActionOrigin_PS5_LeftStick_Move", "value":"279" }, + { "name":"k_EControllerActionOrigin_PS5_LeftStick_Click", "value":"280" }, + { "name":"k_EControllerActionOrigin_PS5_LeftStick_DPadNorth", "value":"281" }, + { "name":"k_EControllerActionOrigin_PS5_LeftStick_DPadSouth", "value":"282" }, + { "name":"k_EControllerActionOrigin_PS5_LeftStick_DPadWest", "value":"283" }, + { "name":"k_EControllerActionOrigin_PS5_LeftStick_DPadEast", "value":"284" }, + { "name":"k_EControllerActionOrigin_PS5_RightStick_Move", "value":"285" }, + { "name":"k_EControllerActionOrigin_PS5_RightStick_Click", "value":"286" }, + { "name":"k_EControllerActionOrigin_PS5_RightStick_DPadNorth", "value":"287" }, + { "name":"k_EControllerActionOrigin_PS5_RightStick_DPadSouth", "value":"288" }, + { "name":"k_EControllerActionOrigin_PS5_RightStick_DPadWest", "value":"289" }, + { "name":"k_EControllerActionOrigin_PS5_RightStick_DPadEast", "value":"290" }, + { "name":"k_EControllerActionOrigin_PS5_DPad_Move", "value":"291" }, + { "name":"k_EControllerActionOrigin_PS5_DPad_North", "value":"292" }, + { "name":"k_EControllerActionOrigin_PS5_DPad_South", "value":"293" }, + { "name":"k_EControllerActionOrigin_PS5_DPad_West", "value":"294" }, + { "name":"k_EControllerActionOrigin_PS5_DPad_East", "value":"295" }, + { "name":"k_EControllerActionOrigin_PS5_Gyro_Move", "value":"296" }, + { "name":"k_EControllerActionOrigin_PS5_Gyro_Pitch", "value":"297" }, + { "name":"k_EControllerActionOrigin_PS5_Gyro_Yaw", "value":"298" }, + { "name":"k_EControllerActionOrigin_PS5_Gyro_Roll", "value":"299" }, + { "name":"k_EControllerActionOrigin_Count", "value":"300" }, + { "name":"k_EControllerActionOrigin_MaximumPossibleValue", "value":"32767" } + ] + }, + { + "enumname": "ESteamControllerLEDFlag", + "values": [ + { "name":"k_ESteamControllerLEDFlag_SetColor", "value":"0" }, + { "name":"k_ESteamControllerLEDFlag_RestoreUserDefault", "value":"1" } + ] + }, + { + "enumname": "EUGCMatchingUGCType", + "values": [ + { "name":"k_EUGCMatchingUGCType_Items", "value":"0" }, + { "name":"k_EUGCMatchingUGCType_Items_Mtx", "value":"1" }, + { "name":"k_EUGCMatchingUGCType_Items_ReadyToUse", "value":"2" }, + { "name":"k_EUGCMatchingUGCType_Collections", "value":"3" }, + { "name":"k_EUGCMatchingUGCType_Artwork", "value":"4" }, + { "name":"k_EUGCMatchingUGCType_Videos", "value":"5" }, + { "name":"k_EUGCMatchingUGCType_Screenshots", "value":"6" }, + { "name":"k_EUGCMatchingUGCType_AllGuides", "value":"7" }, + { "name":"k_EUGCMatchingUGCType_WebGuides", "value":"8" }, + { "name":"k_EUGCMatchingUGCType_IntegratedGuides", "value":"9" }, + { "name":"k_EUGCMatchingUGCType_UsableInGame", "value":"10" }, + { "name":"k_EUGCMatchingUGCType_ControllerBindings", "value":"11" }, + { "name":"k_EUGCMatchingUGCType_GameManagedItems", "value":"12" }, + { "name":"k_EUGCMatchingUGCType_All", "value":"-1" } + ] + }, + { + "enumname": "EUserUGCList", + "values": [ + { "name":"k_EUserUGCList_Published", "value":"0" }, + { "name":"k_EUserUGCList_VotedOn", "value":"1" }, + { "name":"k_EUserUGCList_VotedUp", "value":"2" }, + { "name":"k_EUserUGCList_VotedDown", "value":"3" }, + { "name":"k_EUserUGCList_WillVoteLater", "value":"4" }, + { "name":"k_EUserUGCList_Favorited", "value":"5" }, + { "name":"k_EUserUGCList_Subscribed", "value":"6" }, + { "name":"k_EUserUGCList_UsedOrPlayed", "value":"7" }, + { "name":"k_EUserUGCList_Followed", "value":"8" } + ] + }, + { + "enumname": "EUserUGCListSortOrder", + "values": [ + { "name":"k_EUserUGCListSortOrder_CreationOrderDesc", "value":"0" }, + { "name":"k_EUserUGCListSortOrder_CreationOrderAsc", "value":"1" }, + { "name":"k_EUserUGCListSortOrder_TitleAsc", "value":"2" }, + { "name":"k_EUserUGCListSortOrder_LastUpdatedDesc", "value":"3" }, + { "name":"k_EUserUGCListSortOrder_SubscriptionDateDesc", "value":"4" }, + { "name":"k_EUserUGCListSortOrder_VoteScoreDesc", "value":"5" }, + { "name":"k_EUserUGCListSortOrder_ForModeration", "value":"6" } + ] + }, + { + "enumname": "EUGCQuery", + "values": [ + { "name":"k_EUGCQuery_RankedByVote", "value":"0" }, + { "name":"k_EUGCQuery_RankedByPublicationDate", "value":"1" }, + { "name":"k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate", "value":"2" }, + { "name":"k_EUGCQuery_RankedByTrend", "value":"3" }, + { "name":"k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate", "value":"4" }, + { "name":"k_EUGCQuery_CreatedByFriendsRankedByPublicationDate", "value":"5" }, + { "name":"k_EUGCQuery_RankedByNumTimesReported", "value":"6" }, + { "name":"k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate", "value":"7" }, + { "name":"k_EUGCQuery_NotYetRated", "value":"8" }, + { "name":"k_EUGCQuery_RankedByTotalVotesAsc", "value":"9" }, + { "name":"k_EUGCQuery_RankedByVotesUp", "value":"10" }, + { "name":"k_EUGCQuery_RankedByTextSearch", "value":"11" }, + { "name":"k_EUGCQuery_RankedByTotalUniqueSubscriptions", "value":"12" }, + { "name":"k_EUGCQuery_RankedByPlaytimeTrend", "value":"13" }, + { "name":"k_EUGCQuery_RankedByTotalPlaytime", "value":"14" }, + { "name":"k_EUGCQuery_RankedByAveragePlaytimeTrend", "value":"15" }, + { "name":"k_EUGCQuery_RankedByLifetimeAveragePlaytime", "value":"16" }, + { "name":"k_EUGCQuery_RankedByPlaytimeSessionsTrend", "value":"17" }, + { "name":"k_EUGCQuery_RankedByLifetimePlaytimeSessions", "value":"18" } + ] + }, + { + "enumname": "EItemUpdateStatus", + "values": [ + { "name":"k_EItemUpdateStatusInvalid", "value":"0" }, + { "name":"k_EItemUpdateStatusPreparingConfig", "value":"1" }, + { "name":"k_EItemUpdateStatusPreparingContent", "value":"2" }, + { "name":"k_EItemUpdateStatusUploadingContent", "value":"3" }, + { "name":"k_EItemUpdateStatusUploadingPreviewFile", "value":"4" }, + { "name":"k_EItemUpdateStatusCommittingChanges", "value":"5" } + ] + }, + { + "enumname": "EItemState", + "values": [ + { "name":"k_EItemStateNone", "value":"0" }, + { "name":"k_EItemStateSubscribed", "value":"1" }, + { "name":"k_EItemStateLegacyItem", "value":"2" }, + { "name":"k_EItemStateInstalled", "value":"4" }, + { "name":"k_EItemStateNeedsUpdate", "value":"8" }, + { "name":"k_EItemStateDownloading", "value":"16" }, + { "name":"k_EItemStateDownloadPending", "value":"32" } + ] + }, + { + "enumname": "EItemStatistic", + "values": [ + { "name":"k_EItemStatistic_NumSubscriptions", "value":"0" }, + { "name":"k_EItemStatistic_NumFavorites", "value":"1" }, + { "name":"k_EItemStatistic_NumFollowers", "value":"2" }, + { "name":"k_EItemStatistic_NumUniqueSubscriptions", "value":"3" }, + { "name":"k_EItemStatistic_NumUniqueFavorites", "value":"4" }, + { "name":"k_EItemStatistic_NumUniqueFollowers", "value":"5" }, + { "name":"k_EItemStatistic_NumUniqueWebsiteViews", "value":"6" }, + { "name":"k_EItemStatistic_ReportScore", "value":"7" }, + { "name":"k_EItemStatistic_NumSecondsPlayed", "value":"8" }, + { "name":"k_EItemStatistic_NumPlaytimeSessions", "value":"9" }, + { "name":"k_EItemStatistic_NumComments", "value":"10" }, + { "name":"k_EItemStatistic_NumSecondsPlayedDuringTimePeriod", "value":"11" }, + { "name":"k_EItemStatistic_NumPlaytimeSessionsDuringTimePeriod", "value":"12" } + ] + }, + { + "enumname": "EItemPreviewType", + "values": [ + { "name":"k_EItemPreviewType_Image", "value":"0" }, + { "name":"k_EItemPreviewType_YouTubeVideo", "value":"1" }, + { "name":"k_EItemPreviewType_Sketchfab", "value":"2" }, + { "name":"k_EItemPreviewType_EnvironmentMap_HorizontalCross", "value":"3" }, + { "name":"k_EItemPreviewType_EnvironmentMap_LatLong", "value":"4" }, + { "name":"k_EItemPreviewType_ReservedMax", "value":"255" } + ] + }, + { + "enumname": "ESteamItemFlags", + "values": [ + { "name":"k_ESteamItemNoTrade", "value":"1" }, + { "name":"k_ESteamItemRemoved", "value":"256" }, + { "name":"k_ESteamItemConsumed", "value":"512" } + ] + }, + { + "enumname": "EParentalFeature", + "values": [ + { "name":"k_EFeatureInvalid", "value":"0" }, + { "name":"k_EFeatureStore", "value":"1" }, + { "name":"k_EFeatureCommunity", "value":"2" }, + { "name":"k_EFeatureProfile", "value":"3" }, + { "name":"k_EFeatureFriends", "value":"4" }, + { "name":"k_EFeatureNews", "value":"5" }, + { "name":"k_EFeatureTrading", "value":"6" }, + { "name":"k_EFeatureSettings", "value":"7" }, + { "name":"k_EFeatureConsole", "value":"8" }, + { "name":"k_EFeatureBrowser", "value":"9" }, + { "name":"k_EFeatureParentalSetup", "value":"10" }, + { "name":"k_EFeatureLibrary", "value":"11" }, + { "name":"k_EFeatureTest", "value":"12" }, + { "name":"k_EFeatureSiteLicense", "value":"13" }, + { "name":"k_EFeatureMax", "value":"14" } + ] + }, + { + "enumname": "ESteamDeviceFormFactor", + "values": [ + { "name":"k_ESteamDeviceFormFactorUnknown", "value":"0" }, + { "name":"k_ESteamDeviceFormFactorPhone", "value":"1" }, + { "name":"k_ESteamDeviceFormFactorTablet", "value":"2" }, + { "name":"k_ESteamDeviceFormFactorComputer", "value":"3" }, + { "name":"k_ESteamDeviceFormFactorTV", "value":"4" } + ] + }, + { + "enumname": "ESteamNetworkingAvailability", + "values": [ + { "name":"k_ESteamNetworkingAvailability_CannotTry", "value":"-102" }, + { "name":"k_ESteamNetworkingAvailability_Failed", "value":"-101" }, + { "name":"k_ESteamNetworkingAvailability_Previously", "value":"-100" }, + { "name":"k_ESteamNetworkingAvailability_Retrying", "value":"-10" }, + { "name":"k_ESteamNetworkingAvailability_NeverTried", "value":"1" }, + { "name":"k_ESteamNetworkingAvailability_Waiting", "value":"2" }, + { "name":"k_ESteamNetworkingAvailability_Attempting", "value":"3" }, + { "name":"k_ESteamNetworkingAvailability_Current", "value":"100" }, + { "name":"k_ESteamNetworkingAvailability_Unknown", "value":"0" }, + { "name":"k_ESteamNetworkingAvailability__Force32bit", "value":"2147483647" } + ] + }, + { + "enumname": "ESteamNetworkingIdentityType", + "values": [ + { "name":"k_ESteamNetworkingIdentityType_Invalid", "value":"0" }, + { "name":"k_ESteamNetworkingIdentityType_SteamID", "value":"16" }, + { "name":"k_ESteamNetworkingIdentityType_XboxPairwiseID", "value":"17" }, + { "name":"k_ESteamNetworkingIdentityType_SonyPSN", "value":"18" }, + { "name":"k_ESteamNetworkingIdentityType_GoogleStadia", "value":"19" }, + { "name":"k_ESteamNetworkingIdentityType_IPAddress", "value":"1" }, + { "name":"k_ESteamNetworkingIdentityType_GenericString", "value":"2" }, + { "name":"k_ESteamNetworkingIdentityType_GenericBytes", "value":"3" }, + { "name":"k_ESteamNetworkingIdentityType_UnknownType", "value":"4" }, + { "name":"k_ESteamNetworkingIdentityType__Force32bit", "value":"2147483647" } + ] + }, + { + "enumname": "ESteamNetworkingConnectionState", + "values": [ + { "name":"k_ESteamNetworkingConnectionState_None", "value":"0" }, + { "name":"k_ESteamNetworkingConnectionState_Connecting", "value":"1" }, + { "name":"k_ESteamNetworkingConnectionState_FindingRoute", "value":"2" }, + { "name":"k_ESteamNetworkingConnectionState_Connected", "value":"3" }, + { "name":"k_ESteamNetworkingConnectionState_ClosedByPeer", "value":"4" }, + { "name":"k_ESteamNetworkingConnectionState_ProblemDetectedLocally", "value":"5" }, + { "name":"k_ESteamNetworkingConnectionState_FinWait", "value":"-1" }, + { "name":"k_ESteamNetworkingConnectionState_Linger", "value":"-2" }, + { "name":"k_ESteamNetworkingConnectionState_Dead", "value":"-3" }, + { "name":"k_ESteamNetworkingConnectionState__Force32Bit", "value":"2147483647" } + ] + }, + { + "enumname": "ESteamNetConnectionEnd", + "values": [ + { "name":"k_ESteamNetConnectionEnd_Invalid", "value":"0" }, + { "name":"k_ESteamNetConnectionEnd_App_Min", "value":"1000" }, + { "name":"k_ESteamNetConnectionEnd_App_Generic", "value":"1000" }, + { "name":"k_ESteamNetConnectionEnd_App_Max", "value":"1999" }, + { "name":"k_ESteamNetConnectionEnd_AppException_Min", "value":"2000" }, + { "name":"k_ESteamNetConnectionEnd_AppException_Generic", "value":"2000" }, + { "name":"k_ESteamNetConnectionEnd_AppException_Max", "value":"2999" }, + { "name":"k_ESteamNetConnectionEnd_Local_Min", "value":"3000" }, + { "name":"k_ESteamNetConnectionEnd_Local_OfflineMode", "value":"3001" }, + { "name":"k_ESteamNetConnectionEnd_Local_ManyRelayConnectivity", "value":"3002" }, + { "name":"k_ESteamNetConnectionEnd_Local_HostedServerPrimaryRelay", "value":"3003" }, + { "name":"k_ESteamNetConnectionEnd_Local_NetworkConfig", "value":"3004" }, + { "name":"k_ESteamNetConnectionEnd_Local_Rights", "value":"3005" }, + { "name":"k_ESteamNetConnectionEnd_Local_P2P_ICE_NoPublicAddresses", "value":"3006" }, + { "name":"k_ESteamNetConnectionEnd_Local_Max", "value":"3999" }, + { "name":"k_ESteamNetConnectionEnd_Remote_Min", "value":"4000" }, + { "name":"k_ESteamNetConnectionEnd_Remote_Timeout", "value":"4001" }, + { "name":"k_ESteamNetConnectionEnd_Remote_BadCrypt", "value":"4002" }, + { "name":"k_ESteamNetConnectionEnd_Remote_BadCert", "value":"4003" }, + { "name":"k_ESteamNetConnectionEnd_Remote_NotLoggedIn", "value":"4004" }, + { "name":"k_ESteamNetConnectionEnd_Remote_NotRunningApp", "value":"4005" }, + { "name":"k_ESteamNetConnectionEnd_Remote_BadProtocolVersion", "value":"4006" }, + { "name":"k_ESteamNetConnectionEnd_Remote_P2P_ICE_NoPublicAddresses", "value":"4007" }, + { "name":"k_ESteamNetConnectionEnd_Remote_Max", "value":"4999" }, + { "name":"k_ESteamNetConnectionEnd_Misc_Min", "value":"5000" }, + { "name":"k_ESteamNetConnectionEnd_Misc_Generic", "value":"5001" }, + { "name":"k_ESteamNetConnectionEnd_Misc_InternalError", "value":"5002" }, + { "name":"k_ESteamNetConnectionEnd_Misc_Timeout", "value":"5003" }, + { "name":"k_ESteamNetConnectionEnd_Misc_RelayConnectivity", "value":"5004" }, + { "name":"k_ESteamNetConnectionEnd_Misc_SteamConnectivity", "value":"5005" }, + { "name":"k_ESteamNetConnectionEnd_Misc_NoRelaySessionsToClient", "value":"5006" }, + { "name":"k_ESteamNetConnectionEnd_Misc_P2P_Rendezvous", "value":"5008" }, + { "name":"k_ESteamNetConnectionEnd_Misc_P2P_NAT_Firewall", "value":"5009" }, + { "name":"k_ESteamNetConnectionEnd_Misc_PeerSentNoConnection", "value":"5010" }, + { "name":"k_ESteamNetConnectionEnd_Misc_Max", "value":"5999" }, + { "name":"k_ESteamNetConnectionEnd__Force32Bit", "value":"2147483647" } + ] + }, + { + "enumname": "ESteamNetTransportKind", + "values": [ + { "name":"k_ESteamNetTransport_Unknown", "value":"0" }, + { "name":"k_ESteamNetTransport_LoopbackBuffers", "value":"1" }, + { "name":"k_ESteamNetTransport_LocalHost", "value":"2" }, + { "name":"k_ESteamNetTransport_UDP", "value":"3" }, + { "name":"k_ESteamNetTransport_UDPProbablyLocal", "value":"4" }, + { "name":"k_ESteamNetTransport_TURN", "value":"5" }, + { "name":"k_ESteamNetTransport_SDRP2P", "value":"6" }, + { "name":"k_ESteamNetTransport_SDRHostedServer", "value":"7" }, + { "name":"k_ESteamNetTransport_Force32Bit", "value":"2147483647" } + ] + }, + { + "enumname": "ESteamNetworkingConfigScope", + "values": [ + { "name":"k_ESteamNetworkingConfig_Global", "value":"1" }, + { "name":"k_ESteamNetworkingConfig_SocketsInterface", "value":"2" }, + { "name":"k_ESteamNetworkingConfig_ListenSocket", "value":"3" }, + { "name":"k_ESteamNetworkingConfig_Connection", "value":"4" }, + { "name":"k_ESteamNetworkingConfigScope__Force32Bit", "value":"2147483647" } + ] + }, + { + "enumname": "ESteamNetworkingConfigDataType", + "values": [ + { "name":"k_ESteamNetworkingConfig_Int32", "value":"1" }, + { "name":"k_ESteamNetworkingConfig_Int64", "value":"2" }, + { "name":"k_ESteamNetworkingConfig_Float", "value":"3" }, + { "name":"k_ESteamNetworkingConfig_String", "value":"4" }, + { "name":"k_ESteamNetworkingConfig_Ptr", "value":"5" }, + { "name":"k_ESteamNetworkingConfigDataType__Force32Bit", "value":"2147483647" } + ] + }, + { + "enumname": "ESteamNetworkingConfigValue", + "values": [ + { "name":"k_ESteamNetworkingConfig_Invalid", "value":"0" }, + { "name":"k_ESteamNetworkingConfig_FakePacketLoss_Send", "value":"2" }, + { "name":"k_ESteamNetworkingConfig_FakePacketLoss_Recv", "value":"3" }, + { "name":"k_ESteamNetworkingConfig_FakePacketLag_Send", "value":"4" }, + { "name":"k_ESteamNetworkingConfig_FakePacketLag_Recv", "value":"5" }, + { "name":"k_ESteamNetworkingConfig_FakePacketReorder_Send", "value":"6" }, + { "name":"k_ESteamNetworkingConfig_FakePacketReorder_Recv", "value":"7" }, + { "name":"k_ESteamNetworkingConfig_FakePacketReorder_Time", "value":"8" }, + { "name":"k_ESteamNetworkingConfig_FakePacketDup_Send", "value":"26" }, + { "name":"k_ESteamNetworkingConfig_FakePacketDup_Recv", "value":"27" }, + { "name":"k_ESteamNetworkingConfig_FakePacketDup_TimeMax", "value":"28" }, + { "name":"k_ESteamNetworkingConfig_TimeoutInitial", "value":"24" }, + { "name":"k_ESteamNetworkingConfig_TimeoutConnected", "value":"25" }, + { "name":"k_ESteamNetworkingConfig_SendBufferSize", "value":"9" }, + { "name":"k_ESteamNetworkingConfig_SendRateMin", "value":"10" }, + { "name":"k_ESteamNetworkingConfig_SendRateMax", "value":"11" }, + { "name":"k_ESteamNetworkingConfig_NagleTime", "value":"12" }, + { "name":"k_ESteamNetworkingConfig_IP_AllowWithoutAuth", "value":"23" }, + { "name":"k_ESteamNetworkingConfig_MTU_PacketSize", "value":"32" }, + { "name":"k_ESteamNetworkingConfig_MTU_DataSize", "value":"33" }, + { "name":"k_ESteamNetworkingConfig_Unencrypted", "value":"34" }, + { "name":"k_ESteamNetworkingConfig_EnumerateDevVars", "value":"35" }, + { "name":"k_ESteamNetworkingConfig_SymmetricConnect", "value":"37" }, + { "name":"k_ESteamNetworkingConfig_LocalVirtualPort", "value":"38" }, + { "name":"k_ESteamNetworkingConfig_Callback_ConnectionStatusChanged", "value":"201" }, + { "name":"k_ESteamNetworkingConfig_Callback_AuthStatusChanged", "value":"202" }, + { "name":"k_ESteamNetworkingConfig_Callback_RelayNetworkStatusChanged", "value":"203" }, + { "name":"k_ESteamNetworkingConfig_Callback_MessagesSessionRequest", "value":"204" }, + { "name":"k_ESteamNetworkingConfig_Callback_MessagesSessionFailed", "value":"205" }, + { "name":"k_ESteamNetworkingConfig_Callback_CreateConnectionSignaling", "value":"206" }, + { "name":"k_ESteamNetworkingConfig_P2P_STUN_ServerList", "value":"103" }, + { "name":"k_ESteamNetworkingConfig_P2P_Transport_ICE_Enable", "value":"104" }, + { "name":"k_ESteamNetworkingConfig_P2P_Transport_ICE_Penalty", "value":"105" }, + { "name":"k_ESteamNetworkingConfig_P2P_Transport_SDR_Penalty", "value":"106" }, + { "name":"k_ESteamNetworkingConfig_SDRClient_ConsecutitivePingTimeoutsFailInitial", "value":"19" }, + { "name":"k_ESteamNetworkingConfig_SDRClient_ConsecutitivePingTimeoutsFail", "value":"20" }, + { "name":"k_ESteamNetworkingConfig_SDRClient_MinPingsBeforePingAccurate", "value":"21" }, + { "name":"k_ESteamNetworkingConfig_SDRClient_SingleSocket", "value":"22" }, + { "name":"k_ESteamNetworkingConfig_SDRClient_ForceRelayCluster", "value":"29" }, + { "name":"k_ESteamNetworkingConfig_SDRClient_DebugTicketAddress", "value":"30" }, + { "name":"k_ESteamNetworkingConfig_SDRClient_ForceProxyAddr", "value":"31" }, + { "name":"k_ESteamNetworkingConfig_SDRClient_FakeClusterPing", "value":"36" }, + { "name":"k_ESteamNetworkingConfig_LogLevel_AckRTT", "value":"13" }, + { "name":"k_ESteamNetworkingConfig_LogLevel_PacketDecode", "value":"14" }, + { "name":"k_ESteamNetworkingConfig_LogLevel_Message", "value":"15" }, + { "name":"k_ESteamNetworkingConfig_LogLevel_PacketGaps", "value":"16" }, + { "name":"k_ESteamNetworkingConfig_LogLevel_P2PRendezvous", "value":"17" }, + { "name":"k_ESteamNetworkingConfig_LogLevel_SDRRelayPings", "value":"18" }, + { "name":"k_ESteamNetworkingConfigValue__Force32Bit", "value":"2147483647" } + ] + }, + { + "enumname": "ESteamNetworkingGetConfigValueResult", + "values": [ + { "name":"k_ESteamNetworkingGetConfigValue_BadValue", "value":"-1" }, + { "name":"k_ESteamNetworkingGetConfigValue_BadScopeObj", "value":"-2" }, + { "name":"k_ESteamNetworkingGetConfigValue_BufferTooSmall", "value":"-3" }, + { "name":"k_ESteamNetworkingGetConfigValue_OK", "value":"1" }, + { "name":"k_ESteamNetworkingGetConfigValue_OKInherited", "value":"2" }, + { "name":"k_ESteamNetworkingGetConfigValueResult__Force32Bit", "value":"2147483647" } + ] + }, + { + "enumname": "ESteamNetworkingSocketsDebugOutputType", + "values": [ + { "name":"k_ESteamNetworkingSocketsDebugOutputType_None", "value":"0" }, + { "name":"k_ESteamNetworkingSocketsDebugOutputType_Bug", "value":"1" }, + { "name":"k_ESteamNetworkingSocketsDebugOutputType_Error", "value":"2" }, + { "name":"k_ESteamNetworkingSocketsDebugOutputType_Important", "value":"3" }, + { "name":"k_ESteamNetworkingSocketsDebugOutputType_Warning", "value":"4" }, + { "name":"k_ESteamNetworkingSocketsDebugOutputType_Msg", "value":"5" }, + { "name":"k_ESteamNetworkingSocketsDebugOutputType_Verbose", "value":"6" }, + { "name":"k_ESteamNetworkingSocketsDebugOutputType_Debug", "value":"7" }, + { "name":"k_ESteamNetworkingSocketsDebugOutputType_Everything", "value":"8" }, + { "name":"k_ESteamNetworkingSocketsDebugOutputType__Force32Bit", "value":"2147483647" } + ] + }, + { + "enumname": "EServerMode", + "values": [ + { "name":"eServerModeInvalid", "value":"0" }, + { "name":"eServerModeNoAuthentication", "value":"1" }, + { "name":"eServerModeAuthentication", "value":"2" }, + { "name":"eServerModeAuthenticationAndSecure", "value":"3" } + ] + } + ], + "interfaces": [ + { + "classname": "ISteamClient", + "fields": [], + "methods": [ + { + "methodname": "CreateSteamPipe", + "methodname_flat": "SteamAPI_ISteamClient_CreateSteamPipe", + "params": [], + "returntype": "HSteamPipe" + }, + { + "methodname": "BReleaseSteamPipe", + "methodname_flat": "SteamAPI_ISteamClient_BReleaseSteamPipe", + "params": [ + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" } + ], + "returntype": "bool" + }, + { + "methodname": "ConnectToGlobalUser", + "methodname_flat": "SteamAPI_ISteamClient_ConnectToGlobalUser", + "params": [ + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" } + ], + "returntype": "HSteamUser" + }, + { + "methodname": "CreateLocalUser", + "methodname_flat": "SteamAPI_ISteamClient_CreateLocalUser", + "params": [ + { "paramname":"phSteamPipe", "paramtype":"HSteamPipe *" }, + { "paramname":"eAccountType", "paramtype":"EAccountType" } + ], + "returntype": "HSteamUser" + }, + { + "methodname": "ReleaseUser", + "methodname_flat": "SteamAPI_ISteamClient_ReleaseUser", + "params": [ + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"hUser", "paramtype":"HSteamUser" } + ], + "returntype": "void" + }, + { + "methodname": "GetISteamUser", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamUser", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamUser *" + }, + { + "methodname": "GetISteamGameServer", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamGameServer", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamGameServer *" + }, + { + "methodname": "SetLocalIPBinding", + "methodname_flat": "SteamAPI_ISteamClient_SetLocalIPBinding", + "params": [ + { "paramname":"unIP", "paramtype":"const SteamIPAddress_t &" }, + { "paramname":"usPort", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "GetISteamFriends", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamFriends", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamFriends *" + }, + { + "methodname": "GetISteamUtils", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamUtils", + "params": [ + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamUtils *" + }, + { + "methodname": "GetISteamMatchmaking", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamMatchmaking", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamMatchmaking *" + }, + { + "methodname": "GetISteamMatchmakingServers", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamMatchmakingServers", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamMatchmakingServers *" + }, + { + "methodname": "GetISteamGenericInterface", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamGenericInterface", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "void *" + }, + { + "methodname": "GetISteamUserStats", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamUserStats", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamUserStats *" + }, + { + "methodname": "GetISteamGameServerStats", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamGameServerStats", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamGameServerStats *" + }, + { + "methodname": "GetISteamApps", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamApps", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamApps *" + }, + { + "methodname": "GetISteamNetworking", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamNetworking", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamNetworking *" + }, + { + "methodname": "GetISteamRemoteStorage", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamRemoteStorage", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamRemoteStorage *" + }, + { + "methodname": "GetISteamScreenshots", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamScreenshots", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamScreenshots *" + }, + { + "methodname": "GetISteamGameSearch", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamGameSearch", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamGameSearch *" + }, + { + "methodname": "GetIPCCallCount", + "methodname_flat": "SteamAPI_ISteamClient_GetIPCCallCount", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "SetWarningMessageHook", + "methodname_flat": "SteamAPI_ISteamClient_SetWarningMessageHook", + "params": [ + { "paramname":"pFunction", "paramtype":"SteamAPIWarningMessageHook_t" } + ], + "returntype": "void" + }, + { + "methodname": "BShutdownIfAllPipesClosed", + "methodname_flat": "SteamAPI_ISteamClient_BShutdownIfAllPipesClosed", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetISteamHTTP", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamHTTP", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamHTTP *" + }, + { + "methodname": "GetISteamController", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamController", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamController *" + }, + { + "methodname": "GetISteamUGC", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamUGC", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamUGC *" + }, + { + "methodname": "GetISteamAppList", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamAppList", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamAppList *" + }, + { + "methodname": "GetISteamMusic", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamMusic", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamMusic *" + }, + { + "methodname": "GetISteamMusicRemote", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamMusicRemote", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamMusicRemote *" + }, + { + "methodname": "GetISteamHTMLSurface", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamHTMLSurface", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamHTMLSurface *" + }, + { + "methodname": "GetISteamInventory", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamInventory", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamInventory *" + }, + { + "methodname": "GetISteamVideo", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamVideo", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamVideo *" + }, + { + "methodname": "GetISteamParentalSettings", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamParentalSettings", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamParentalSettings *" + }, + { + "methodname": "GetISteamInput", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamInput", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamInput *" + }, + { + "methodname": "GetISteamParties", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamParties", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamParties *" + }, + { + "methodname": "GetISteamRemotePlay", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamRemotePlay", + "params": [ + { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamRemotePlay *" + } + ] + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamUser", + "name_flat": "SteamAPI_SteamUser_v021" + } + ], + "classname": "ISteamUser", + "fields": [], + "methods": [ + { + "methodname": "GetHSteamUser", + "methodname_flat": "SteamAPI_ISteamUser_GetHSteamUser", + "params": [], + "returntype": "HSteamUser" + }, + { + "methodname": "BLoggedOn", + "methodname_flat": "SteamAPI_ISteamUser_BLoggedOn", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetSteamID", + "methodname_flat": "SteamAPI_ISteamUser_GetSteamID", + "params": [], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "InitiateGameConnection", + "methodname_flat": "SteamAPI_ISteamUser_InitiateGameConnection", + "params": [ + { "paramname":"pAuthBlob", "paramtype":"void *" }, + { "paramname":"cbMaxAuthBlob", "paramtype":"int" }, + { "paramname":"steamIDGameServer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"unIPServer", "paramtype":"uint32" }, + { "paramname":"usPortServer", "paramtype":"uint16" }, + { "paramname":"bSecure", "paramtype":"bool" } + ], + "returntype": "int" + }, + { + "methodname": "TerminateGameConnection", + "methodname_flat": "SteamAPI_ISteamUser_TerminateGameConnection", + "params": [ + { "paramname":"unIPServer", "paramtype":"uint32" }, + { "paramname":"usPortServer", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "TrackAppUsageEvent", + "methodname_flat": "SteamAPI_ISteamUser_TrackAppUsageEvent", + "params": [ + { "paramname":"gameID", "paramtype":"CGameID", "paramtype_flat":"uint64_gameid" }, + { "paramname":"eAppUsageEvent", "paramtype":"int" }, + { "paramname":"pchExtraInfo", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "GetUserDataFolder", + "methodname_flat": "SteamAPI_ISteamUser_GetUserDataFolder", + "params": [ + { "paramname":"pchBuffer", "paramtype":"char *" }, + { "paramname":"cubBuffer", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "StartVoiceRecording", + "methodname_flat": "SteamAPI_ISteamUser_StartVoiceRecording", + "params": [], + "returntype": "void" + }, + { + "methodname": "StopVoiceRecording", + "methodname_flat": "SteamAPI_ISteamUser_StopVoiceRecording", + "params": [], + "returntype": "void" + }, + { + "methodname": "GetAvailableVoice", + "methodname_flat": "SteamAPI_ISteamUser_GetAvailableVoice", + "params": [ + { "paramname":"pcbCompressed", "paramtype":"uint32 *" }, + { "paramname":"pcbUncompressed_Deprecated", "paramtype":"uint32 *" }, + { "paramname":"nUncompressedVoiceDesiredSampleRate_Deprecated", "paramtype":"uint32" } + ], + "returntype": "EVoiceResult" + }, + { + "methodname": "GetVoice", + "methodname_flat": "SteamAPI_ISteamUser_GetVoice", + "params": [ + { "paramname":"bWantCompressed", "paramtype":"bool" }, + { "paramname":"pDestBuffer", "paramtype":"void *" }, + { "paramname":"cbDestBufferSize", "paramtype":"uint32" }, + { "paramname":"nBytesWritten", "paramtype":"uint32 *" }, + { "paramname":"bWantUncompressed_Deprecated", "paramtype":"bool" }, + { "paramname":"pUncompressedDestBuffer_Deprecated", "paramtype":"void *" }, + { "paramname":"cbUncompressedDestBufferSize_Deprecated", "paramtype":"uint32" }, + { "paramname":"nUncompressBytesWritten_Deprecated", "paramtype":"uint32 *" }, + { "paramname":"nUncompressedVoiceDesiredSampleRate_Deprecated", "paramtype":"uint32" } + ], + "returntype": "EVoiceResult" + }, + { + "methodname": "DecompressVoice", + "methodname_flat": "SteamAPI_ISteamUser_DecompressVoice", + "params": [ + { "paramname":"pCompressed", "paramtype":"const void *" }, + { "paramname":"cbCompressed", "paramtype":"uint32" }, + { "paramname":"pDestBuffer", "paramtype":"void *" }, + { "paramname":"cbDestBufferSize", "paramtype":"uint32" }, + { "paramname":"nBytesWritten", "paramtype":"uint32 *" }, + { "paramname":"nDesiredSampleRate", "paramtype":"uint32" } + ], + "returntype": "EVoiceResult" + }, + { + "methodname": "GetVoiceOptimalSampleRate", + "methodname_flat": "SteamAPI_ISteamUser_GetVoiceOptimalSampleRate", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetAuthSessionTicket", + "methodname_flat": "SteamAPI_ISteamUser_GetAuthSessionTicket", + "params": [ + { "paramname":"pTicket", "paramtype":"void *" }, + { "paramname":"cbMaxTicket", "paramtype":"int" }, + { "paramname":"pcbTicket", "paramtype":"uint32 *" } + ], + "returntype": "HAuthTicket" + }, + { + "methodname": "BeginAuthSession", + "methodname_flat": "SteamAPI_ISteamUser_BeginAuthSession", + "params": [ + { "paramname":"pAuthTicket", "paramtype":"const void *" }, + { "paramname":"cbAuthTicket", "paramtype":"int" }, + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "EBeginAuthSessionResult" + }, + { + "methodname": "EndAuthSession", + "methodname_flat": "SteamAPI_ISteamUser_EndAuthSession", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "CancelAuthTicket", + "methodname_flat": "SteamAPI_ISteamUser_CancelAuthTicket", + "params": [ + { "paramname":"hAuthTicket", "paramtype":"HAuthTicket" } + ], + "returntype": "void" + }, + { + "methodname": "UserHasLicenseForApp", + "methodname_flat": "SteamAPI_ISteamUser_UserHasLicenseForApp", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"appID", "paramtype":"AppId_t" } + ], + "returntype": "EUserHasLicenseForAppResult" + }, + { + "methodname": "BIsBehindNAT", + "methodname_flat": "SteamAPI_ISteamUser_BIsBehindNAT", + "params": [], + "returntype": "bool" + }, + { + "methodname": "AdvertiseGame", + "methodname_flat": "SteamAPI_ISteamUser_AdvertiseGame", + "params": [ + { "paramname":"steamIDGameServer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"unIPServer", "paramtype":"uint32" }, + { "paramname":"usPortServer", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "callresult": "EncryptedAppTicketResponse_t", + "methodname": "RequestEncryptedAppTicket", + "methodname_flat": "SteamAPI_ISteamUser_RequestEncryptedAppTicket", + "params": [ + { "paramname":"pDataToInclude", "paramtype":"void *" }, + { "paramname":"cbDataToInclude", "paramtype":"int" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetEncryptedAppTicket", + "methodname_flat": "SteamAPI_ISteamUser_GetEncryptedAppTicket", + "params": [ + { "paramname":"pTicket", "paramtype":"void *" }, + { "paramname":"cbMaxTicket", "paramtype":"int" }, + { "paramname":"pcbTicket", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetGameBadgeLevel", + "methodname_flat": "SteamAPI_ISteamUser_GetGameBadgeLevel", + "params": [ + { "paramname":"nSeries", "paramtype":"int" }, + { "paramname":"bFoil", "paramtype":"bool" } + ], + "returntype": "int" + }, + { + "methodname": "GetPlayerSteamLevel", + "methodname_flat": "SteamAPI_ISteamUser_GetPlayerSteamLevel", + "params": [], + "returntype": "int" + }, + { + "callresult": "StoreAuthURLResponse_t", + "methodname": "RequestStoreAuthURL", + "methodname_flat": "SteamAPI_ISteamUser_RequestStoreAuthURL", + "params": [ + { "paramname":"pchRedirectURL", "paramtype":"const char *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "BIsPhoneVerified", + "methodname_flat": "SteamAPI_ISteamUser_BIsPhoneVerified", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsTwoFactorEnabled", + "methodname_flat": "SteamAPI_ISteamUser_BIsTwoFactorEnabled", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsPhoneIdentifying", + "methodname_flat": "SteamAPI_ISteamUser_BIsPhoneIdentifying", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsPhoneRequiringVerification", + "methodname_flat": "SteamAPI_ISteamUser_BIsPhoneRequiringVerification", + "params": [], + "returntype": "bool" + }, + { + "callresult": "MarketEligibilityResponse_t", + "methodname": "GetMarketEligibility", + "methodname_flat": "SteamAPI_ISteamUser_GetMarketEligibility", + "params": [], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "DurationControl_t", + "methodname": "GetDurationControl", + "methodname_flat": "SteamAPI_ISteamUser_GetDurationControl", + "params": [], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "BSetDurationControlOnlineState", + "methodname_flat": "SteamAPI_ISteamUser_BSetDurationControlOnlineState", + "params": [ + { "paramname":"eNewState", "paramtype":"EDurationControlOnlineState" } + ], + "returntype": "bool" + } + ], + "version_string": "SteamUser021" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamFriends", + "name_flat": "SteamAPI_SteamFriends_v017" + } + ], + "classname": "ISteamFriends", + "fields": [], + "methods": [ + { + "methodname": "GetPersonaName", + "methodname_flat": "SteamAPI_ISteamFriends_GetPersonaName", + "params": [], + "returntype": "const char *" + }, + { + "callresult": "SetPersonaNameResponse_t", + "methodname": "SetPersonaName", + "methodname_flat": "SteamAPI_ISteamFriends_SetPersonaName", + "params": [ + { "paramname":"pchPersonaName", "paramtype":"const char *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetPersonaState", + "methodname_flat": "SteamAPI_ISteamFriends_GetPersonaState", + "params": [], + "returntype": "EPersonaState" + }, + { + "methodname": "GetFriendCount", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendCount", + "params": [ + { "paramname":"iFriendFlags", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "GetFriendByIndex", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendByIndex", + "params": [ + { "paramname":"iFriend", "paramtype":"int" }, + { "paramname":"iFriendFlags", "paramtype":"int" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "GetFriendRelationship", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendRelationship", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "EFriendRelationship" + }, + { + "methodname": "GetFriendPersonaState", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendPersonaState", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "EPersonaState" + }, + { + "methodname": "GetFriendPersonaName", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendPersonaName", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetFriendGamePlayed", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendGamePlayed", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { + "out_struct": "", + "paramname": "pFriendGameInfo", + "paramtype": "FriendGameInfo_t *" + } + ], + "returntype": "bool" + }, + { + "methodname": "GetFriendPersonaNameHistory", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendPersonaNameHistory", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iPersonaName", "paramtype":"int" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetFriendSteamLevel", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendSteamLevel", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetPlayerNickname", + "methodname_flat": "SteamAPI_ISteamFriends_GetPlayerNickname", + "params": [ + { "paramname":"steamIDPlayer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetFriendsGroupCount", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendsGroupCount", + "params": [], + "returntype": "int" + }, + { + "methodname": "GetFriendsGroupIDByIndex", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex", + "params": [ + { "paramname":"iFG", "paramtype":"int" } + ], + "returntype": "FriendsGroupID_t" + }, + { + "methodname": "GetFriendsGroupName", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendsGroupName", + "params": [ + { "paramname":"friendsGroupID", "paramtype":"FriendsGroupID_t" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetFriendsGroupMembersCount", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendsGroupMembersCount", + "params": [ + { "paramname":"friendsGroupID", "paramtype":"FriendsGroupID_t" } + ], + "returntype": "int" + }, + { + "methodname": "GetFriendsGroupMembersList", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendsGroupMembersList", + "params": [ + { "paramname":"friendsGroupID", "paramtype":"FriendsGroupID_t" }, + { + "out_array_call": "nMembersCount,GetFriendsGroupMembersCount,friendsGroupID", + "paramname": "pOutSteamIDMembers", + "paramtype": "CSteamID *" + }, + { "paramname":"nMembersCount", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "HasFriend", + "methodname_flat": "SteamAPI_ISteamFriends_HasFriend", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iFriendFlags", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "GetClanCount", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanCount", + "params": [], + "returntype": "int" + }, + { + "methodname": "GetClanByIndex", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanByIndex", + "params": [ + { "paramname":"iClan", "paramtype":"int" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "GetClanName", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanName", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetClanTag", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanTag", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetClanActivityCounts", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanActivityCounts", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pnOnline", "paramtype":"int *" }, + { "paramname":"pnInGame", "paramtype":"int *" }, + { "paramname":"pnChatting", "paramtype":"int *" } + ], + "returntype": "bool" + }, + { + "callresult": "DownloadClanActivityCountsResult_t", + "methodname": "DownloadClanActivityCounts", + "methodname_flat": "SteamAPI_ISteamFriends_DownloadClanActivityCounts", + "params": [ + { + "array_count": "cClansToRequest", + "paramname": "psteamIDClans", + "paramtype": "CSteamID *" + }, + { "paramname":"cClansToRequest", "paramtype":"int" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetFriendCountFromSource", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendCountFromSource", + "params": [ + { "paramname":"steamIDSource", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetFriendFromSourceByIndex", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendFromSourceByIndex", + "params": [ + { "paramname":"steamIDSource", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iFriend", "paramtype":"int" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "IsUserInSource", + "methodname_flat": "SteamAPI_ISteamFriends_IsUserInSource", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"steamIDSource", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "SetInGameVoiceSpeaking", + "methodname_flat": "SteamAPI_ISteamFriends_SetInGameVoiceSpeaking", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"bSpeaking", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "ActivateGameOverlay", + "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlay", + "params": [ + { "paramname":"pchDialog", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "ActivateGameOverlayToUser", + "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlayToUser", + "params": [ + { "paramname":"pchDialog", "paramtype":"const char *" }, + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "ActivateGameOverlayToWebPage", + "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage", + "params": [ + { "paramname":"pchURL", "paramtype":"const char *" }, + { "paramname":"eMode", "paramtype":"EActivateGameOverlayToWebPageMode" } + ], + "returntype": "void" + }, + { + "methodname": "ActivateGameOverlayToStore", + "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlayToStore", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" }, + { "paramname":"eFlag", "paramtype":"EOverlayToStoreFlag" } + ], + "returntype": "void" + }, + { + "methodname": "SetPlayedWith", + "methodname_flat": "SteamAPI_ISteamFriends_SetPlayedWith", + "params": [ + { "paramname":"steamIDUserPlayedWith", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "ActivateGameOverlayInviteDialog", + "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "GetSmallFriendAvatar", + "methodname_flat": "SteamAPI_ISteamFriends_GetSmallFriendAvatar", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetMediumFriendAvatar", + "methodname_flat": "SteamAPI_ISteamFriends_GetMediumFriendAvatar", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetLargeFriendAvatar", + "methodname_flat": "SteamAPI_ISteamFriends_GetLargeFriendAvatar", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "RequestUserInformation", + "methodname_flat": "SteamAPI_ISteamFriends_RequestUserInformation", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"bRequireNameOnly", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "callresult": "ClanOfficerListResponse_t", + "methodname": "RequestClanOfficerList", + "methodname_flat": "SteamAPI_ISteamFriends_RequestClanOfficerList", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetClanOwner", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanOwner", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "GetClanOfficerCount", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanOfficerCount", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetClanOfficerByIndex", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanOfficerByIndex", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iOfficer", "paramtype":"int" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "GetUserRestrictions", + "methodname_flat": "SteamAPI_ISteamFriends_GetUserRestrictions", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "SetRichPresence", + "methodname_flat": "SteamAPI_ISteamFriends_SetRichPresence", + "params": [ + { "paramname":"pchKey", "paramtype":"const char *" }, + { "paramname":"pchValue", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "ClearRichPresence", + "methodname_flat": "SteamAPI_ISteamFriends_ClearRichPresence", + "params": [], + "returntype": "void" + }, + { + "methodname": "GetFriendRichPresence", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendRichPresence", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchKey", "paramtype":"const char *" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetFriendRichPresenceKeyCount", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetFriendRichPresenceKeyByIndex", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iKey", "paramtype":"int" } + ], + "returntype": "const char *" + }, + { + "methodname": "RequestFriendRichPresence", + "methodname_flat": "SteamAPI_ISteamFriends_RequestFriendRichPresence", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "InviteUserToGame", + "methodname_flat": "SteamAPI_ISteamFriends_InviteUserToGame", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchConnectString", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetCoplayFriendCount", + "methodname_flat": "SteamAPI_ISteamFriends_GetCoplayFriendCount", + "params": [], + "returntype": "int" + }, + { + "methodname": "GetCoplayFriend", + "methodname_flat": "SteamAPI_ISteamFriends_GetCoplayFriend", + "params": [ + { "paramname":"iCoplayFriend", "paramtype":"int" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "GetFriendCoplayTime", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendCoplayTime", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetFriendCoplayGame", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendCoplayGame", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "AppId_t" + }, + { + "callresult": "JoinClanChatRoomCompletionResult_t", + "methodname": "JoinClanChatRoom", + "methodname_flat": "SteamAPI_ISteamFriends_JoinClanChatRoom", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "LeaveClanChatRoom", + "methodname_flat": "SteamAPI_ISteamFriends_LeaveClanChatRoom", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "GetClanChatMemberCount", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanChatMemberCount", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetChatMemberByIndex", + "methodname_flat": "SteamAPI_ISteamFriends_GetChatMemberByIndex", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iUser", "paramtype":"int" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "SendClanChatMessage", + "methodname_flat": "SteamAPI_ISteamFriends_SendClanChatMessage", + "params": [ + { "paramname":"steamIDClanChat", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchText", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetClanChatMessage", + "methodname_flat": "SteamAPI_ISteamFriends_GetClanChatMessage", + "params": [ + { "paramname":"steamIDClanChat", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iMessage", "paramtype":"int" }, + { "paramname":"prgchText", "paramtype":"void *" }, + { "paramname":"cchTextMax", "paramtype":"int" }, + { "paramname":"peChatEntryType", "paramtype":"EChatEntryType *" }, + { + "out_struct": "", + "paramname": "psteamidChatter", + "paramtype": "CSteamID *" + } + ], + "returntype": "int" + }, + { + "methodname": "IsClanChatAdmin", + "methodname_flat": "SteamAPI_ISteamFriends_IsClanChatAdmin", + "params": [ + { "paramname":"steamIDClanChat", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "IsClanChatWindowOpenInSteam", + "methodname_flat": "SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam", + "params": [ + { "paramname":"steamIDClanChat", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "OpenClanChatWindowInSteam", + "methodname_flat": "SteamAPI_ISteamFriends_OpenClanChatWindowInSteam", + "params": [ + { "paramname":"steamIDClanChat", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "CloseClanChatWindowInSteam", + "methodname_flat": "SteamAPI_ISteamFriends_CloseClanChatWindowInSteam", + "params": [ + { "paramname":"steamIDClanChat", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "SetListenForFriendsMessages", + "methodname_flat": "SteamAPI_ISteamFriends_SetListenForFriendsMessages", + "params": [ + { "paramname":"bInterceptEnabled", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "ReplyToFriendMessage", + "methodname_flat": "SteamAPI_ISteamFriends_ReplyToFriendMessage", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchMsgToSend", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetFriendMessage", + "methodname_flat": "SteamAPI_ISteamFriends_GetFriendMessage", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iMessageID", "paramtype":"int" }, + { "paramname":"pvData", "paramtype":"void *" }, + { "paramname":"cubData", "paramtype":"int" }, + { "paramname":"peChatEntryType", "paramtype":"EChatEntryType *" } + ], + "returntype": "int" + }, + { + "callresult": "FriendsGetFollowerCount_t", + "methodname": "GetFollowerCount", + "methodname_flat": "SteamAPI_ISteamFriends_GetFollowerCount", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "FriendsIsFollowing_t", + "methodname": "IsFollowing", + "methodname_flat": "SteamAPI_ISteamFriends_IsFollowing", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "FriendsEnumerateFollowingList_t", + "methodname": "EnumerateFollowingList", + "methodname_flat": "SteamAPI_ISteamFriends_EnumerateFollowingList", + "params": [ + { "paramname":"unStartIndex", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "IsClanPublic", + "methodname_flat": "SteamAPI_ISteamFriends_IsClanPublic", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "IsClanOfficialGameGroup", + "methodname_flat": "SteamAPI_ISteamFriends_IsClanOfficialGameGroup", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "GetNumChatsWithUnreadPriorityMessages", + "methodname_flat": "SteamAPI_ISteamFriends_GetNumChatsWithUnreadPriorityMessages", + "params": [], + "returntype": "int" + }, + { + "methodname": "ActivateGameOverlayRemotePlayTogetherInviteDialog", + "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlayRemotePlayTogetherInviteDialog", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "RegisterProtocolInOverlayBrowser", + "methodname_flat": "SteamAPI_ISteamFriends_RegisterProtocolInOverlayBrowser", + "params": [ + { "paramname":"pchProtocol", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "ActivateGameOverlayInviteDialogConnectString", + "methodname_flat": "SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialogConnectString", + "params": [ + { "paramname":"pchConnectString", "paramtype":"const char *" } + ], + "returntype": "void" + } + ], + "version_string": "SteamFriends017" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamUtils", + "name_flat": "SteamAPI_SteamUtils_v010" + }, + { + "kind": "gameserver", + "name": "SteamGameServerUtils", + "name_flat": "SteamAPI_SteamGameServerUtils_v010" + } + ], + "classname": "ISteamUtils", + "fields": [], + "methods": [ + { + "methodname": "GetSecondsSinceAppActive", + "methodname_flat": "SteamAPI_ISteamUtils_GetSecondsSinceAppActive", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetSecondsSinceComputerActive", + "methodname_flat": "SteamAPI_ISteamUtils_GetSecondsSinceComputerActive", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetConnectedUniverse", + "methodname_flat": "SteamAPI_ISteamUtils_GetConnectedUniverse", + "params": [], + "returntype": "EUniverse" + }, + { + "methodname": "GetServerRealTime", + "methodname_flat": "SteamAPI_ISteamUtils_GetServerRealTime", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetIPCountry", + "methodname_flat": "SteamAPI_ISteamUtils_GetIPCountry", + "params": [], + "returntype": "const char *" + }, + { + "methodname": "GetImageSize", + "methodname_flat": "SteamAPI_ISteamUtils_GetImageSize", + "params": [ + { "paramname":"iImage", "paramtype":"int" }, + { "paramname":"pnWidth", "paramtype":"uint32 *" }, + { "paramname":"pnHeight", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetImageRGBA", + "methodname_flat": "SteamAPI_ISteamUtils_GetImageRGBA", + "params": [ + { "paramname":"iImage", "paramtype":"int" }, + { "paramname":"pubDest", "paramtype":"uint8 *" }, + { "paramname":"nDestBufferSize", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "GetCurrentBatteryPower", + "methodname_flat": "SteamAPI_ISteamUtils_GetCurrentBatteryPower", + "params": [], + "returntype": "uint8" + }, + { + "methodname": "GetAppID", + "methodname_flat": "SteamAPI_ISteamUtils_GetAppID", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "SetOverlayNotificationPosition", + "methodname_flat": "SteamAPI_ISteamUtils_SetOverlayNotificationPosition", + "params": [ + { "paramname":"eNotificationPosition", "paramtype":"ENotificationPosition" } + ], + "returntype": "void" + }, + { + "methodname": "IsAPICallCompleted", + "methodname_flat": "SteamAPI_ISteamUtils_IsAPICallCompleted", + "params": [ + { "paramname":"hSteamAPICall", "paramtype":"SteamAPICall_t" }, + { "paramname":"pbFailed", "paramtype":"bool *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetAPICallFailureReason", + "methodname_flat": "SteamAPI_ISteamUtils_GetAPICallFailureReason", + "params": [ + { "paramname":"hSteamAPICall", "paramtype":"SteamAPICall_t" } + ], + "returntype": "ESteamAPICallFailure" + }, + { + "methodname": "GetAPICallResult", + "methodname_flat": "SteamAPI_ISteamUtils_GetAPICallResult", + "params": [ + { "paramname":"hSteamAPICall", "paramtype":"SteamAPICall_t" }, + { "paramname":"pCallback", "paramtype":"void *" }, + { "paramname":"cubCallback", "paramtype":"int" }, + { "paramname":"iCallbackExpected", "paramtype":"int" }, + { "paramname":"pbFailed", "paramtype":"bool *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetIPCCallCount", + "methodname_flat": "SteamAPI_ISteamUtils_GetIPCCallCount", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "SetWarningMessageHook", + "methodname_flat": "SteamAPI_ISteamUtils_SetWarningMessageHook", + "params": [ + { "paramname":"pFunction", "paramtype":"SteamAPIWarningMessageHook_t" } + ], + "returntype": "void" + }, + { + "methodname": "IsOverlayEnabled", + "methodname_flat": "SteamAPI_ISteamUtils_IsOverlayEnabled", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BOverlayNeedsPresent", + "methodname_flat": "SteamAPI_ISteamUtils_BOverlayNeedsPresent", + "params": [], + "returntype": "bool" + }, + { + "callresult": "CheckFileSignature_t", + "methodname": "CheckFileSignature", + "methodname_flat": "SteamAPI_ISteamUtils_CheckFileSignature", + "params": [ + { "paramname":"szFileName", "paramtype":"const char *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "ShowGamepadTextInput", + "methodname_flat": "SteamAPI_ISteamUtils_ShowGamepadTextInput", + "params": [ + { "paramname":"eInputMode", "paramtype":"EGamepadTextInputMode" }, + { "paramname":"eLineInputMode", "paramtype":"EGamepadTextInputLineMode" }, + { "paramname":"pchDescription", "paramtype":"const char *" }, + { "paramname":"unCharMax", "paramtype":"uint32" }, + { "paramname":"pchExistingText", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetEnteredGamepadTextLength", + "methodname_flat": "SteamAPI_ISteamUtils_GetEnteredGamepadTextLength", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetEnteredGamepadTextInput", + "methodname_flat": "SteamAPI_ISteamUtils_GetEnteredGamepadTextInput", + "params": [ + { "paramname":"pchText", "paramtype":"char *" }, + { "paramname":"cchText", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetSteamUILanguage", + "methodname_flat": "SteamAPI_ISteamUtils_GetSteamUILanguage", + "params": [], + "returntype": "const char *" + }, + { + "methodname": "IsSteamRunningInVR", + "methodname_flat": "SteamAPI_ISteamUtils_IsSteamRunningInVR", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetOverlayNotificationInset", + "methodname_flat": "SteamAPI_ISteamUtils_SetOverlayNotificationInset", + "params": [ + { "paramname":"nHorizontalInset", "paramtype":"int" }, + { "paramname":"nVerticalInset", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "IsSteamInBigPictureMode", + "methodname_flat": "SteamAPI_ISteamUtils_IsSteamInBigPictureMode", + "params": [], + "returntype": "bool" + }, + { + "methodname": "StartVRDashboard", + "methodname_flat": "SteamAPI_ISteamUtils_StartVRDashboard", + "params": [], + "returntype": "void" + }, + { + "methodname": "IsVRHeadsetStreamingEnabled", + "methodname_flat": "SteamAPI_ISteamUtils_IsVRHeadsetStreamingEnabled", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetVRHeadsetStreamingEnabled", + "methodname_flat": "SteamAPI_ISteamUtils_SetVRHeadsetStreamingEnabled", + "params": [ + { "paramname":"bEnabled", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "IsSteamChinaLauncher", + "methodname_flat": "SteamAPI_ISteamUtils_IsSteamChinaLauncher", + "params": [], + "returntype": "bool" + }, + { + "methodname": "InitFilterText", + "methodname_flat": "SteamAPI_ISteamUtils_InitFilterText", + "params": [ + { "paramname":"unFilterOptions", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "FilterText", + "methodname_flat": "SteamAPI_ISteamUtils_FilterText", + "params": [ + { "paramname":"eContext", "paramtype":"ETextFilteringContext" }, + { "paramname":"sourceSteamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchInputMessage", "paramtype":"const char *" }, + { "paramname":"pchOutFilteredText", "paramtype":"char *" }, + { "paramname":"nByteSizeOutFilteredText", "paramtype":"uint32" } + ], + "returntype": "int" + }, + { + "methodname": "GetIPv6ConnectivityState", + "methodname_flat": "SteamAPI_ISteamUtils_GetIPv6ConnectivityState", + "params": [ + { "paramname":"eProtocol", "paramtype":"ESteamIPv6ConnectivityProtocol" } + ], + "returntype": "ESteamIPv6ConnectivityState" + } + ], + "version_string": "SteamUtils010" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamMatchmaking", + "name_flat": "SteamAPI_SteamMatchmaking_v009" + } + ], + "classname": "ISteamMatchmaking", + "fields": [], + "methods": [ + { + "methodname": "GetFavoriteGameCount", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetFavoriteGameCount", + "params": [], + "returntype": "int" + }, + { + "methodname": "GetFavoriteGame", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetFavoriteGame", + "params": [ + { "paramname":"iGame", "paramtype":"int" }, + { "paramname":"pnAppID", "paramtype":"AppId_t *" }, + { "paramname":"pnIP", "paramtype":"uint32 *" }, + { "paramname":"pnConnPort", "paramtype":"uint16 *" }, + { "paramname":"pnQueryPort", "paramtype":"uint16 *" }, + { "paramname":"punFlags", "paramtype":"uint32 *" }, + { "paramname":"pRTime32LastPlayedOnServer", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "AddFavoriteGame", + "methodname_flat": "SteamAPI_ISteamMatchmaking_AddFavoriteGame", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" }, + { "paramname":"nIP", "paramtype":"uint32" }, + { "paramname":"nConnPort", "paramtype":"uint16" }, + { "paramname":"nQueryPort", "paramtype":"uint16" }, + { "paramname":"unFlags", "paramtype":"uint32" }, + { "paramname":"rTime32LastPlayedOnServer", "paramtype":"uint32" } + ], + "returntype": "int" + }, + { + "methodname": "RemoveFavoriteGame", + "methodname_flat": "SteamAPI_ISteamMatchmaking_RemoveFavoriteGame", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" }, + { "paramname":"nIP", "paramtype":"uint32" }, + { "paramname":"nConnPort", "paramtype":"uint16" }, + { "paramname":"nQueryPort", "paramtype":"uint16" }, + { "paramname":"unFlags", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "callresult": "LobbyMatchList_t", + "methodname": "RequestLobbyList", + "methodname_flat": "SteamAPI_ISteamMatchmaking_RequestLobbyList", + "params": [], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "AddRequestLobbyListStringFilter", + "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter", + "params": [ + { "paramname":"pchKeyToMatch", "paramtype":"const char *" }, + { "paramname":"pchValueToMatch", "paramtype":"const char *" }, + { "paramname":"eComparisonType", "paramtype":"ELobbyComparison" } + ], + "returntype": "void" + }, + { + "methodname": "AddRequestLobbyListNumericalFilter", + "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter", + "params": [ + { "paramname":"pchKeyToMatch", "paramtype":"const char *" }, + { "paramname":"nValueToMatch", "paramtype":"int" }, + { "paramname":"eComparisonType", "paramtype":"ELobbyComparison" } + ], + "returntype": "void" + }, + { + "methodname": "AddRequestLobbyListNearValueFilter", + "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter", + "params": [ + { "paramname":"pchKeyToMatch", "paramtype":"const char *" }, + { "paramname":"nValueToBeCloseTo", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "AddRequestLobbyListFilterSlotsAvailable", + "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable", + "params": [ + { "paramname":"nSlotsAvailable", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "AddRequestLobbyListDistanceFilter", + "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter", + "params": [ + { "paramname":"eLobbyDistanceFilter", "paramtype":"ELobbyDistanceFilter" } + ], + "returntype": "void" + }, + { + "methodname": "AddRequestLobbyListResultCountFilter", + "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter", + "params": [ + { "paramname":"cMaxResults", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "AddRequestLobbyListCompatibleMembersFilter", + "methodname_flat": "SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "GetLobbyByIndex", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyByIndex", + "params": [ + { "paramname":"iLobby", "paramtype":"int" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "callresult": "LobbyCreated_t", + "methodname": "CreateLobby", + "methodname_flat": "SteamAPI_ISteamMatchmaking_CreateLobby", + "params": [ + { "paramname":"eLobbyType", "paramtype":"ELobbyType" }, + { "paramname":"cMaxMembers", "paramtype":"int" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "LobbyEnter_t", + "methodname": "JoinLobby", + "methodname_flat": "SteamAPI_ISteamMatchmaking_JoinLobby", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "LeaveLobby", + "methodname_flat": "SteamAPI_ISteamMatchmaking_LeaveLobby", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "InviteUserToLobby", + "methodname_flat": "SteamAPI_ISteamMatchmaking_InviteUserToLobby", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"steamIDInvitee", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "GetNumLobbyMembers", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetNumLobbyMembers", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetLobbyMemberByIndex", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iMember", "paramtype":"int" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "GetLobbyData", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyData", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchKey", "paramtype":"const char *" } + ], + "returntype": "const char *" + }, + { + "methodname": "SetLobbyData", + "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyData", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchKey", "paramtype":"const char *" }, + { "paramname":"pchValue", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetLobbyDataCount", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyDataCount", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "GetLobbyDataByIndex", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iLobbyData", "paramtype":"int" }, + { "paramname":"pchKey", "paramtype":"char *" }, + { "paramname":"cchKeyBufferSize", "paramtype":"int" }, + { "paramname":"pchValue", "paramtype":"char *" }, + { "paramname":"cchValueBufferSize", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "DeleteLobbyData", + "methodname_flat": "SteamAPI_ISteamMatchmaking_DeleteLobbyData", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchKey", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetLobbyMemberData", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyMemberData", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchKey", "paramtype":"const char *" } + ], + "returntype": "const char *" + }, + { + "methodname": "SetLobbyMemberData", + "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyMemberData", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchKey", "paramtype":"const char *" }, + { "paramname":"pchValue", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SendLobbyChatMsg", + "methodname_flat": "SteamAPI_ISteamMatchmaking_SendLobbyChatMsg", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pvMsgBody", "paramtype":"const void *" }, + { "paramname":"cubMsgBody", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "GetLobbyChatEntry", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyChatEntry", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"iChatID", "paramtype":"int" }, + { + "out_struct": "", + "paramname": "pSteamIDUser", + "paramtype": "CSteamID *" + }, + { "paramname":"pvData", "paramtype":"void *" }, + { "paramname":"cubData", "paramtype":"int" }, + { "paramname":"peChatEntryType", "paramtype":"EChatEntryType *" } + ], + "returntype": "int" + }, + { + "methodname": "RequestLobbyData", + "methodname_flat": "SteamAPI_ISteamMatchmaking_RequestLobbyData", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "SetLobbyGameServer", + "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyGameServer", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"unGameServerIP", "paramtype":"uint32" }, + { "paramname":"unGameServerPort", "paramtype":"uint16" }, + { "paramname":"steamIDGameServer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "GetLobbyGameServer", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyGameServer", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"punGameServerIP", "paramtype":"uint32 *" }, + { "paramname":"punGameServerPort", "paramtype":"uint16 *" }, + { + "out_struct": "", + "paramname": "psteamIDGameServer", + "paramtype": "CSteamID *" + } + ], + "returntype": "bool" + }, + { + "methodname": "SetLobbyMemberLimit", + "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"cMaxMembers", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "GetLobbyMemberLimit", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "int" + }, + { + "methodname": "SetLobbyType", + "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyType", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"eLobbyType", "paramtype":"ELobbyType" } + ], + "returntype": "bool" + }, + { + "methodname": "SetLobbyJoinable", + "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyJoinable", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"bLobbyJoinable", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "GetLobbyOwner", + "methodname_flat": "SteamAPI_ISteamMatchmaking_GetLobbyOwner", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "SetLobbyOwner", + "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLobbyOwner", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"steamIDNewOwner", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "SetLinkedLobby", + "methodname_flat": "SteamAPI_ISteamMatchmaking_SetLinkedLobby", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"steamIDLobbyDependent", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + } + ], + "version_string": "SteamMatchMaking009" + }, + { + "classname": "ISteamMatchmakingServerListResponse", + "fields": [], + "methods": [ + { + "methodname": "ServerResponded", + "methodname_flat": "SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded", + "params": [ + { "paramname":"hRequest", "paramtype":"HServerListRequest" }, + { "paramname":"iServer", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "ServerFailedToRespond", + "methodname_flat": "SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond", + "params": [ + { "paramname":"hRequest", "paramtype":"HServerListRequest" }, + { "paramname":"iServer", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "RefreshComplete", + "methodname_flat": "SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete", + "params": [ + { "paramname":"hRequest", "paramtype":"HServerListRequest" }, + { "paramname":"response", "paramtype":"EMatchMakingServerResponse" } + ], + "returntype": "void" + } + ] + }, + { + "classname": "ISteamMatchmakingPingResponse", + "fields": [], + "methods": [ + { + "methodname": "ServerResponded", + "methodname_flat": "SteamAPI_ISteamMatchmakingPingResponse_ServerResponded", + "params": [ + { "paramname":"server", "paramtype":"gameserveritem_t &" } + ], + "returntype": "void" + }, + { + "methodname": "ServerFailedToRespond", + "methodname_flat": "SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond", + "params": [], + "returntype": "void" + } + ] + }, + { + "classname": "ISteamMatchmakingPlayersResponse", + "fields": [], + "methods": [ + { + "methodname": "AddPlayerToList", + "methodname_flat": "SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"nScore", "paramtype":"int" }, + { "paramname":"flTimePlayed", "paramtype":"float" } + ], + "returntype": "void" + }, + { + "methodname": "PlayersFailedToRespond", + "methodname_flat": "SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond", + "params": [], + "returntype": "void" + }, + { + "methodname": "PlayersRefreshComplete", + "methodname_flat": "SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete", + "params": [], + "returntype": "void" + } + ] + }, + { + "classname": "ISteamMatchmakingRulesResponse", + "fields": [], + "methods": [ + { + "methodname": "RulesResponded", + "methodname_flat": "SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded", + "params": [ + { "paramname":"pchRule", "paramtype":"const char *" }, + { "paramname":"pchValue", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "RulesFailedToRespond", + "methodname_flat": "SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond", + "params": [], + "returntype": "void" + }, + { + "methodname": "RulesRefreshComplete", + "methodname_flat": "SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete", + "params": [], + "returntype": "void" + } + ] + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamMatchmakingServers", + "name_flat": "SteamAPI_SteamMatchmakingServers_v002" + } + ], + "classname": "ISteamMatchmakingServers", + "fields": [], + "methods": [ + { + "methodname": "RequestInternetServerList", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RequestInternetServerList", + "params": [ + { "paramname":"iApp", "paramtype":"AppId_t" }, + { + "array_count": "nFilters", + "paramname": "ppchFilters", + "paramtype": "MatchMakingKeyValuePair_t **" + }, + { "paramname":"nFilters", "paramtype":"uint32" }, + { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingServerListResponse *" } + ], + "returntype": "HServerListRequest" + }, + { + "methodname": "RequestLANServerList", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RequestLANServerList", + "params": [ + { "paramname":"iApp", "paramtype":"AppId_t" }, + { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingServerListResponse *" } + ], + "returntype": "HServerListRequest" + }, + { + "methodname": "RequestFriendsServerList", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList", + "params": [ + { "paramname":"iApp", "paramtype":"AppId_t" }, + { + "array_count": "nFilters", + "paramname": "ppchFilters", + "paramtype": "MatchMakingKeyValuePair_t **" + }, + { "paramname":"nFilters", "paramtype":"uint32" }, + { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingServerListResponse *" } + ], + "returntype": "HServerListRequest" + }, + { + "methodname": "RequestFavoritesServerList", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList", + "params": [ + { "paramname":"iApp", "paramtype":"AppId_t" }, + { + "array_count": "nFilters", + "paramname": "ppchFilters", + "paramtype": "MatchMakingKeyValuePair_t **" + }, + { "paramname":"nFilters", "paramtype":"uint32" }, + { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingServerListResponse *" } + ], + "returntype": "HServerListRequest" + }, + { + "methodname": "RequestHistoryServerList", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList", + "params": [ + { "paramname":"iApp", "paramtype":"AppId_t" }, + { + "array_count": "nFilters", + "paramname": "ppchFilters", + "paramtype": "MatchMakingKeyValuePair_t **" + }, + { "paramname":"nFilters", "paramtype":"uint32" }, + { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingServerListResponse *" } + ], + "returntype": "HServerListRequest" + }, + { + "methodname": "RequestSpectatorServerList", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList", + "params": [ + { "paramname":"iApp", "paramtype":"AppId_t" }, + { + "array_count": "nFilters", + "paramname": "ppchFilters", + "paramtype": "MatchMakingKeyValuePair_t **" + }, + { "paramname":"nFilters", "paramtype":"uint32" }, + { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingServerListResponse *" } + ], + "returntype": "HServerListRequest" + }, + { + "methodname": "ReleaseRequest", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_ReleaseRequest", + "params": [ + { "paramname":"hServerListRequest", "paramtype":"HServerListRequest" } + ], + "returntype": "void" + }, + { + "methodname": "GetServerDetails", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_GetServerDetails", + "params": [ + { "paramname":"hRequest", "paramtype":"HServerListRequest" }, + { "paramname":"iServer", "paramtype":"int" } + ], + "returntype": "gameserveritem_t *" + }, + { + "methodname": "CancelQuery", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_CancelQuery", + "params": [ + { "paramname":"hRequest", "paramtype":"HServerListRequest" } + ], + "returntype": "void" + }, + { + "methodname": "RefreshQuery", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RefreshQuery", + "params": [ + { "paramname":"hRequest", "paramtype":"HServerListRequest" } + ], + "returntype": "void" + }, + { + "methodname": "IsRefreshing", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_IsRefreshing", + "params": [ + { "paramname":"hRequest", "paramtype":"HServerListRequest" } + ], + "returntype": "bool" + }, + { + "methodname": "GetServerCount", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_GetServerCount", + "params": [ + { "paramname":"hRequest", "paramtype":"HServerListRequest" } + ], + "returntype": "int" + }, + { + "methodname": "RefreshServer", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_RefreshServer", + "params": [ + { "paramname":"hRequest", "paramtype":"HServerListRequest" }, + { "paramname":"iServer", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "PingServer", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_PingServer", + "params": [ + { "paramname":"unIP", "paramtype":"uint32" }, + { "paramname":"usPort", "paramtype":"uint16" }, + { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingPingResponse *" } + ], + "returntype": "HServerQuery" + }, + { + "methodname": "PlayerDetails", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_PlayerDetails", + "params": [ + { "paramname":"unIP", "paramtype":"uint32" }, + { "paramname":"usPort", "paramtype":"uint16" }, + { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingPlayersResponse *" } + ], + "returntype": "HServerQuery" + }, + { + "methodname": "ServerRules", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_ServerRules", + "params": [ + { "paramname":"unIP", "paramtype":"uint32" }, + { "paramname":"usPort", "paramtype":"uint16" }, + { "paramname":"pRequestServersResponse", "paramtype":"ISteamMatchmakingRulesResponse *" } + ], + "returntype": "HServerQuery" + }, + { + "methodname": "CancelServerQuery", + "methodname_flat": "SteamAPI_ISteamMatchmakingServers_CancelServerQuery", + "params": [ + { "paramname":"hServerQuery", "paramtype":"HServerQuery" } + ], + "returntype": "void" + } + ], + "version_string": "SteamMatchMakingServers002" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamGameSearch", + "name_flat": "SteamAPI_SteamGameSearch_v001" + } + ], + "classname": "ISteamGameSearch", + "fields": [], + "methods": [ + { + "methodname": "AddGameSearchParams", + "methodname_flat": "SteamAPI_ISteamGameSearch_AddGameSearchParams", + "params": [ + { "paramname":"pchKeyToFind", "paramtype":"const char *" }, + { "paramname":"pchValuesToFind", "paramtype":"const char *" } + ], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "SearchForGameWithLobby", + "methodname_flat": "SteamAPI_ISteamGameSearch_SearchForGameWithLobby", + "params": [ + { "paramname":"steamIDLobby", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"nPlayerMin", "paramtype":"int" }, + { "paramname":"nPlayerMax", "paramtype":"int" } + ], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "SearchForGameSolo", + "methodname_flat": "SteamAPI_ISteamGameSearch_SearchForGameSolo", + "params": [ + { "paramname":"nPlayerMin", "paramtype":"int" }, + { "paramname":"nPlayerMax", "paramtype":"int" } + ], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "AcceptGame", + "methodname_flat": "SteamAPI_ISteamGameSearch_AcceptGame", + "params": [], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "DeclineGame", + "methodname_flat": "SteamAPI_ISteamGameSearch_DeclineGame", + "params": [], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "RetrieveConnectionDetails", + "methodname_flat": "SteamAPI_ISteamGameSearch_RetrieveConnectionDetails", + "params": [ + { "paramname":"steamIDHost", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchConnectionDetails", "paramtype":"char *" }, + { "paramname":"cubConnectionDetails", "paramtype":"int" } + ], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "EndGameSearch", + "methodname_flat": "SteamAPI_ISteamGameSearch_EndGameSearch", + "params": [], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "SetGameHostParams", + "methodname_flat": "SteamAPI_ISteamGameSearch_SetGameHostParams", + "params": [ + { "paramname":"pchKey", "paramtype":"const char *" }, + { "paramname":"pchValue", "paramtype":"const char *" } + ], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "SetConnectionDetails", + "methodname_flat": "SteamAPI_ISteamGameSearch_SetConnectionDetails", + "params": [ + { "paramname":"pchConnectionDetails", "paramtype":"const char *" }, + { "paramname":"cubConnectionDetails", "paramtype":"int" } + ], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "RequestPlayersForGame", + "methodname_flat": "SteamAPI_ISteamGameSearch_RequestPlayersForGame", + "params": [ + { "paramname":"nPlayerMin", "paramtype":"int" }, + { "paramname":"nPlayerMax", "paramtype":"int" }, + { "paramname":"nMaxTeamSize", "paramtype":"int" } + ], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "HostConfirmGameStart", + "methodname_flat": "SteamAPI_ISteamGameSearch_HostConfirmGameStart", + "params": [ + { "paramname":"ullUniqueGameID", "paramtype":"uint64" } + ], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "CancelRequestPlayersForGame", + "methodname_flat": "SteamAPI_ISteamGameSearch_CancelRequestPlayersForGame", + "params": [], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "SubmitPlayerResult", + "methodname_flat": "SteamAPI_ISteamGameSearch_SubmitPlayerResult", + "params": [ + { "paramname":"ullUniqueGameID", "paramtype":"uint64" }, + { "paramname":"steamIDPlayer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"EPlayerResult", "paramtype":"EPlayerResult_t" } + ], + "returntype": "EGameSearchErrorCode_t" + }, + { + "methodname": "EndGame", + "methodname_flat": "SteamAPI_ISteamGameSearch_EndGame", + "params": [ + { "paramname":"ullUniqueGameID", "paramtype":"uint64" } + ], + "returntype": "EGameSearchErrorCode_t" + } + ], + "version_string": "SteamMatchGameSearch001" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamParties", + "name_flat": "SteamAPI_SteamParties_v002" + } + ], + "classname": "ISteamParties", + "fields": [], + "methods": [ + { + "methodname": "GetNumActiveBeacons", + "methodname_flat": "SteamAPI_ISteamParties_GetNumActiveBeacons", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetBeaconByIndex", + "methodname_flat": "SteamAPI_ISteamParties_GetBeaconByIndex", + "params": [ + { "paramname":"unIndex", "paramtype":"uint32" } + ], + "returntype": "PartyBeaconID_t" + }, + { + "methodname": "GetBeaconDetails", + "methodname_flat": "SteamAPI_ISteamParties_GetBeaconDetails", + "params": [ + { "paramname":"ulBeaconID", "paramtype":"PartyBeaconID_t" }, + { "paramname":"pSteamIDBeaconOwner", "paramtype":"CSteamID *" }, + { + "out_struct": "", + "paramname": "pLocation", + "paramtype": "SteamPartyBeaconLocation_t *" + }, + { + "out_string_count": "cchMetadata", + "paramname": "pchMetadata", + "paramtype": "char *" + }, + { "paramname":"cchMetadata", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "callresult": "JoinPartyCallback_t", + "methodname": "JoinParty", + "methodname_flat": "SteamAPI_ISteamParties_JoinParty", + "params": [ + { "paramname":"ulBeaconID", "paramtype":"PartyBeaconID_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetNumAvailableBeaconLocations", + "methodname_flat": "SteamAPI_ISteamParties_GetNumAvailableBeaconLocations", + "params": [ + { "paramname":"puNumLocations", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetAvailableBeaconLocations", + "methodname_flat": "SteamAPI_ISteamParties_GetAvailableBeaconLocations", + "params": [ + { "paramname":"pLocationList", "paramtype":"SteamPartyBeaconLocation_t *" }, + { "paramname":"uMaxNumLocations", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "callresult": "CreateBeaconCallback_t", + "methodname": "CreateBeacon", + "methodname_flat": "SteamAPI_ISteamParties_CreateBeacon", + "params": [ + { "paramname":"unOpenSlots", "paramtype":"uint32" }, + { "paramname":"pBeaconLocation", "paramtype":"SteamPartyBeaconLocation_t *" }, + { "paramname":"pchConnectString", "paramtype":"const char *" }, + { "paramname":"pchMetadata", "paramtype":"const char *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "OnReservationCompleted", + "methodname_flat": "SteamAPI_ISteamParties_OnReservationCompleted", + "params": [ + { "paramname":"ulBeacon", "paramtype":"PartyBeaconID_t" }, + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "CancelReservation", + "methodname_flat": "SteamAPI_ISteamParties_CancelReservation", + "params": [ + { "paramname":"ulBeacon", "paramtype":"PartyBeaconID_t" }, + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "callresult": "ChangeNumOpenSlotsCallback_t", + "methodname": "ChangeNumOpenSlots", + "methodname_flat": "SteamAPI_ISteamParties_ChangeNumOpenSlots", + "params": [ + { "paramname":"ulBeacon", "paramtype":"PartyBeaconID_t" }, + { "paramname":"unOpenSlots", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "DestroyBeacon", + "methodname_flat": "SteamAPI_ISteamParties_DestroyBeacon", + "params": [ + { "paramname":"ulBeacon", "paramtype":"PartyBeaconID_t" } + ], + "returntype": "bool" + }, + { + "methodname": "GetBeaconLocationData", + "methodname_flat": "SteamAPI_ISteamParties_GetBeaconLocationData", + "params": [ + { "paramname":"BeaconLocation", "paramtype":"SteamPartyBeaconLocation_t" }, + { "paramname":"eData", "paramtype":"ESteamPartyBeaconLocationData" }, + { + "out_string_count": "cchDataStringOut", + "paramname": "pchDataStringOut", + "paramtype": "char *" + }, + { "paramname":"cchDataStringOut", "paramtype":"int" } + ], + "returntype": "bool" + } + ], + "version_string": "SteamParties002" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamRemoteStorage", + "name_flat": "SteamAPI_SteamRemoteStorage_v014" + } + ], + "classname": "ISteamRemoteStorage", + "fields": [], + "methods": [ + { + "methodname": "FileWrite", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileWrite", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" }, + { "paramname":"pvData", "paramtype":"const void *" }, + { "paramname":"cubData", "paramtype":"int32" } + ], + "returntype": "bool" + }, + { + "methodname": "FileRead", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileRead", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" }, + { "paramname":"pvData", "paramtype":"void *" }, + { "paramname":"cubDataToRead", "paramtype":"int32" } + ], + "returntype": "int32" + }, + { + "callresult": "RemoteStorageFileWriteAsyncComplete_t", + "methodname": "FileWriteAsync", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileWriteAsync", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" }, + { "paramname":"pvData", "paramtype":"const void *" }, + { "paramname":"cubData", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageFileReadAsyncComplete_t", + "methodname": "FileReadAsync", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileReadAsync", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" }, + { "paramname":"nOffset", "paramtype":"uint32" }, + { "paramname":"cubToRead", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "FileReadAsyncComplete", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete", + "params": [ + { "paramname":"hReadCall", "paramtype":"SteamAPICall_t" }, + { "paramname":"pvBuffer", "paramtype":"void *" }, + { "paramname":"cubToRead", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "FileForget", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileForget", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "FileDelete", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileDelete", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "callresult": "RemoteStorageFileShareResult_t", + "methodname": "FileShare", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileShare", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "SetSyncPlatforms", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_SetSyncPlatforms", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" }, + { "paramname":"eRemoteStoragePlatform", "paramtype":"ERemoteStoragePlatform" } + ], + "returntype": "bool" + }, + { + "methodname": "FileWriteStreamOpen", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "UGCFileWriteStreamHandle_t" + }, + { + "methodname": "FileWriteStreamWriteChunk", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk", + "params": [ + { "paramname":"writeHandle", "paramtype":"UGCFileWriteStreamHandle_t" }, + { "paramname":"pvData", "paramtype":"const void *" }, + { "paramname":"cubData", "paramtype":"int32" } + ], + "returntype": "bool" + }, + { + "methodname": "FileWriteStreamClose", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileWriteStreamClose", + "params": [ + { "paramname":"writeHandle", "paramtype":"UGCFileWriteStreamHandle_t" } + ], + "returntype": "bool" + }, + { + "methodname": "FileWriteStreamCancel", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel", + "params": [ + { "paramname":"writeHandle", "paramtype":"UGCFileWriteStreamHandle_t" } + ], + "returntype": "bool" + }, + { + "methodname": "FileExists", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FileExists", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "FilePersisted", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_FilePersisted", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetFileSize", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetFileSize", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "int32" + }, + { + "methodname": "GetFileTimestamp", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetFileTimestamp", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "int64" + }, + { + "methodname": "GetSyncPlatforms", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetSyncPlatforms", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "ERemoteStoragePlatform" + }, + { + "methodname": "GetFileCount", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetFileCount", + "params": [], + "returntype": "int32" + }, + { + "methodname": "GetFileNameAndSize", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetFileNameAndSize", + "params": [ + { "paramname":"iFile", "paramtype":"int" }, + { "paramname":"pnFileSizeInBytes", "paramtype":"int32 *" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetQuota", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetQuota", + "params": [ + { "paramname":"pnTotalBytes", "paramtype":"uint64 *" }, + { "paramname":"puAvailableBytes", "paramtype":"uint64 *" } + ], + "returntype": "bool" + }, + { + "methodname": "IsCloudEnabledForAccount", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount", + "params": [], + "returntype": "bool" + }, + { + "methodname": "IsCloudEnabledForApp", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetCloudEnabledForApp", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp", + "params": [ + { "paramname":"bEnabled", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "callresult": "RemoteStorageDownloadUGCResult_t", + "methodname": "UGCDownload", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UGCDownload", + "params": [ + { "paramname":"hContent", "paramtype":"UGCHandle_t" }, + { "paramname":"unPriority", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetUGCDownloadProgress", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress", + "params": [ + { "paramname":"hContent", "paramtype":"UGCHandle_t" }, + { "paramname":"pnBytesDownloaded", "paramtype":"int32 *" }, + { "paramname":"pnBytesExpected", "paramtype":"int32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetUGCDetails", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetUGCDetails", + "params": [ + { "paramname":"hContent", "paramtype":"UGCHandle_t" }, + { "paramname":"pnAppID", "paramtype":"AppId_t *" }, + { + "out_string": "", + "paramname": "ppchName", + "paramtype": "char **" + }, + { "paramname":"pnFileSizeInBytes", "paramtype":"int32 *" }, + { + "out_struct": "", + "paramname": "pSteamIDOwner", + "paramtype": "CSteamID *" + } + ], + "returntype": "bool" + }, + { + "methodname": "UGCRead", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UGCRead", + "params": [ + { "paramname":"hContent", "paramtype":"UGCHandle_t" }, + { "paramname":"pvData", "paramtype":"void *" }, + { "paramname":"cubDataToRead", "paramtype":"int32" }, + { "paramname":"cOffset", "paramtype":"uint32" }, + { "paramname":"eAction", "paramtype":"EUGCReadAction" } + ], + "returntype": "int32" + }, + { + "methodname": "GetCachedUGCCount", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetCachedUGCCount", + "params": [], + "returntype": "int32" + }, + { + "methodname": "GetCachedUGCHandle", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle", + "params": [ + { "paramname":"iCachedContent", "paramtype":"int32" } + ], + "returntype": "UGCHandle_t" + }, + { + "callresult": "RemoteStoragePublishFileProgress_t", + "methodname": "PublishWorkshopFile", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_PublishWorkshopFile", + "params": [ + { "paramname":"pchFile", "paramtype":"const char *" }, + { "paramname":"pchPreviewFile", "paramtype":"const char *" }, + { "paramname":"nConsumerAppId", "paramtype":"AppId_t" }, + { "paramname":"pchTitle", "paramtype":"const char *" }, + { "paramname":"pchDescription", "paramtype":"const char *" }, + { "paramname":"eVisibility", "paramtype":"ERemoteStoragePublishedFileVisibility" }, + { "paramname":"pTags", "paramtype":"SteamParamStringArray_t *" }, + { "paramname":"eWorkshopFileType", "paramtype":"EWorkshopFileType" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "CreatePublishedFileUpdateRequest", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest", + "params": [ + { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" } + ], + "returntype": "PublishedFileUpdateHandle_t" + }, + { + "methodname": "UpdatePublishedFileFile", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile", + "params": [ + { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, + { "paramname":"pchFile", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdatePublishedFilePreviewFile", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile", + "params": [ + { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, + { "paramname":"pchPreviewFile", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdatePublishedFileTitle", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle", + "params": [ + { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, + { "paramname":"pchTitle", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdatePublishedFileDescription", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription", + "params": [ + { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, + { "paramname":"pchDescription", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdatePublishedFileVisibility", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility", + "params": [ + { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, + { "paramname":"eVisibility", "paramtype":"ERemoteStoragePublishedFileVisibility" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdatePublishedFileTags", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags", + "params": [ + { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, + { "paramname":"pTags", "paramtype":"SteamParamStringArray_t *" } + ], + "returntype": "bool" + }, + { + "callresult": "RemoteStorageUpdatePublishedFileResult_t", + "methodname": "CommitPublishedFileUpdate", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate", + "params": [ + { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageGetPublishedFileDetailsResult_t", + "methodname": "GetPublishedFileDetails", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails", + "params": [ + { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" }, + { "paramname":"unMaxSecondsOld", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageDeletePublishedFileResult_t", + "methodname": "DeletePublishedFile", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_DeletePublishedFile", + "params": [ + { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageEnumerateUserPublishedFilesResult_t", + "methodname": "EnumerateUserPublishedFiles", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles", + "params": [ + { "paramname":"unStartIndex", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageSubscribePublishedFileResult_t", + "methodname": "SubscribePublishedFile", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_SubscribePublishedFile", + "params": [ + { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageEnumerateUserSubscribedFilesResult_t", + "methodname": "EnumerateUserSubscribedFiles", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles", + "params": [ + { "paramname":"unStartIndex", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageUnsubscribePublishedFileResult_t", + "methodname": "UnsubscribePublishedFile", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile", + "params": [ + { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "UpdatePublishedFileSetChangeDescription", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription", + "params": [ + { "paramname":"updateHandle", "paramtype":"PublishedFileUpdateHandle_t" }, + { "paramname":"pchChangeDescription", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "callresult": "RemoteStorageGetPublishedItemVoteDetailsResult_t", + "methodname": "GetPublishedItemVoteDetails", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails", + "params": [ + { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageUpdateUserPublishedItemVoteResult_t", + "methodname": "UpdateUserPublishedItemVote", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote", + "params": [ + { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" }, + { "paramname":"bVoteUp", "paramtype":"bool" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageGetPublishedItemVoteDetailsResult_t", + "methodname": "GetUserPublishedItemVoteDetails", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails", + "params": [ + { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageEnumerateUserPublishedFilesResult_t", + "methodname": "EnumerateUserSharedWorkshopFiles", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles", + "params": [ + { "paramname":"steamId", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"unStartIndex", "paramtype":"uint32" }, + { "paramname":"pRequiredTags", "paramtype":"SteamParamStringArray_t *" }, + { "paramname":"pExcludedTags", "paramtype":"SteamParamStringArray_t *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStoragePublishFileProgress_t", + "methodname": "PublishVideo", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_PublishVideo", + "params": [ + { "paramname":"eVideoProvider", "paramtype":"EWorkshopVideoProvider" }, + { "paramname":"pchVideoAccount", "paramtype":"const char *" }, + { "paramname":"pchVideoIdentifier", "paramtype":"const char *" }, + { "paramname":"pchPreviewFile", "paramtype":"const char *" }, + { "paramname":"nConsumerAppId", "paramtype":"AppId_t" }, + { "paramname":"pchTitle", "paramtype":"const char *" }, + { "paramname":"pchDescription", "paramtype":"const char *" }, + { "paramname":"eVisibility", "paramtype":"ERemoteStoragePublishedFileVisibility" }, + { "paramname":"pTags", "paramtype":"SteamParamStringArray_t *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageSetUserPublishedFileActionResult_t", + "methodname": "SetUserPublishedFileAction", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction", + "params": [ + { "paramname":"unPublishedFileId", "paramtype":"PublishedFileId_t" }, + { "paramname":"eAction", "paramtype":"EWorkshopFileAction" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageEnumeratePublishedFilesByUserActionResult_t", + "methodname": "EnumeratePublishedFilesByUserAction", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction", + "params": [ + { "paramname":"eAction", "paramtype":"EWorkshopFileAction" }, + { "paramname":"unStartIndex", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageEnumerateWorkshopFilesResult_t", + "methodname": "EnumeratePublishedWorkshopFiles", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles", + "params": [ + { "paramname":"eEnumerationType", "paramtype":"EWorkshopEnumerationType" }, + { "paramname":"unStartIndex", "paramtype":"uint32" }, + { "paramname":"unCount", "paramtype":"uint32" }, + { "paramname":"unDays", "paramtype":"uint32" }, + { "paramname":"pTags", "paramtype":"SteamParamStringArray_t *" }, + { "paramname":"pUserTags", "paramtype":"SteamParamStringArray_t *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageDownloadUGCResult_t", + "methodname": "UGCDownloadToLocation", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation", + "params": [ + { "paramname":"hContent", "paramtype":"UGCHandle_t" }, + { "paramname":"pchLocation", "paramtype":"const char *" }, + { "paramname":"unPriority", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + } + ], + "version_string": "STEAMREMOTESTORAGE_INTERFACE_VERSION014" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamUserStats", + "name_flat": "SteamAPI_SteamUserStats_v012" + } + ], + "classname": "ISteamUserStats", + "fields": [], + "methods": [ + { + "callback": "UserStatsReceived_t", + "methodname": "RequestCurrentStats", + "methodname_flat": "SteamAPI_ISteamUserStats_RequestCurrentStats", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetStat", + "methodname_flat": "SteamAPI_ISteamUserStats_GetStatInt32", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pData", "paramtype":"int32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetStat", + "methodname_flat": "SteamAPI_ISteamUserStats_GetStatFloat", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pData", "paramtype":"float *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetStat", + "methodname_flat": "SteamAPI_ISteamUserStats_SetStatInt32", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"nData", "paramtype":"int32" } + ], + "returntype": "bool" + }, + { + "methodname": "SetStat", + "methodname_flat": "SteamAPI_ISteamUserStats_SetStatFloat", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"fData", "paramtype":"float" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateAvgRateStat", + "methodname_flat": "SteamAPI_ISteamUserStats_UpdateAvgRateStat", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"flCountThisSession", "paramtype":"float" }, + { "paramname":"dSessionLength", "paramtype":"double" } + ], + "returntype": "bool" + }, + { + "methodname": "GetAchievement", + "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievement", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pbAchieved", "paramtype":"bool *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetAchievement", + "methodname_flat": "SteamAPI_ISteamUserStats_SetAchievement", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "ClearAchievement", + "methodname_flat": "SteamAPI_ISteamUserStats_ClearAchievement", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetAchievementAndUnlockTime", + "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pbAchieved", "paramtype":"bool *" }, + { "paramname":"punUnlockTime", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "StoreStats", + "methodname_flat": "SteamAPI_ISteamUserStats_StoreStats", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetAchievementIcon", + "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementIcon", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" } + ], + "returntype": "int" + }, + { + "methodname": "GetAchievementDisplayAttribute", + "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pchKey", "paramtype":"const char *" } + ], + "returntype": "const char *" + }, + { + "methodname": "IndicateAchievementProgress", + "methodname_flat": "SteamAPI_ISteamUserStats_IndicateAchievementProgress", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"nCurProgress", "paramtype":"uint32" }, + { "paramname":"nMaxProgress", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetNumAchievements", + "methodname_flat": "SteamAPI_ISteamUserStats_GetNumAchievements", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetAchievementName", + "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementName", + "params": [ + { "paramname":"iAchievement", "paramtype":"uint32" } + ], + "returntype": "const char *" + }, + { + "callresult": "UserStatsReceived_t", + "methodname": "RequestUserStats", + "methodname_flat": "SteamAPI_ISteamUserStats_RequestUserStats", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetUserStat", + "methodname_flat": "SteamAPI_ISteamUserStats_GetUserStatInt32", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pData", "paramtype":"int32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetUserStat", + "methodname_flat": "SteamAPI_ISteamUserStats_GetUserStatFloat", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pData", "paramtype":"float *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetUserAchievement", + "methodname_flat": "SteamAPI_ISteamUserStats_GetUserAchievement", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pbAchieved", "paramtype":"bool *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetUserAchievementAndUnlockTime", + "methodname_flat": "SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pbAchieved", "paramtype":"bool *" }, + { "paramname":"punUnlockTime", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "ResetAllStats", + "methodname_flat": "SteamAPI_ISteamUserStats_ResetAllStats", + "params": [ + { "paramname":"bAchievementsToo", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "callresult": "LeaderboardFindResult_t", + "methodname": "FindOrCreateLeaderboard", + "methodname_flat": "SteamAPI_ISteamUserStats_FindOrCreateLeaderboard", + "params": [ + { "paramname":"pchLeaderboardName", "paramtype":"const char *" }, + { "paramname":"eLeaderboardSortMethod", "paramtype":"ELeaderboardSortMethod" }, + { "paramname":"eLeaderboardDisplayType", "paramtype":"ELeaderboardDisplayType" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "LeaderboardFindResult_t", + "methodname": "FindLeaderboard", + "methodname_flat": "SteamAPI_ISteamUserStats_FindLeaderboard", + "params": [ + { "paramname":"pchLeaderboardName", "paramtype":"const char *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetLeaderboardName", + "methodname_flat": "SteamAPI_ISteamUserStats_GetLeaderboardName", + "params": [ + { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetLeaderboardEntryCount", + "methodname_flat": "SteamAPI_ISteamUserStats_GetLeaderboardEntryCount", + "params": [ + { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" } + ], + "returntype": "int" + }, + { + "methodname": "GetLeaderboardSortMethod", + "methodname_flat": "SteamAPI_ISteamUserStats_GetLeaderboardSortMethod", + "params": [ + { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" } + ], + "returntype": "ELeaderboardSortMethod" + }, + { + "methodname": "GetLeaderboardDisplayType", + "methodname_flat": "SteamAPI_ISteamUserStats_GetLeaderboardDisplayType", + "params": [ + { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" } + ], + "returntype": "ELeaderboardDisplayType" + }, + { + "callresult": "LeaderboardScoresDownloaded_t", + "methodname": "DownloadLeaderboardEntries", + "methodname_flat": "SteamAPI_ISteamUserStats_DownloadLeaderboardEntries", + "params": [ + { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" }, + { "paramname":"eLeaderboardDataRequest", "paramtype":"ELeaderboardDataRequest" }, + { "paramname":"nRangeStart", "paramtype":"int" }, + { "paramname":"nRangeEnd", "paramtype":"int" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "LeaderboardScoresDownloaded_t", + "desc": "Downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers", + "methodname": "DownloadLeaderboardEntriesForUsers", + "methodname_flat": "SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers", + "params": [ + { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" }, + { + "array_count": "cUsers", + "desc": "Array of users to retrieve", + "paramname": "prgUsers", + "paramtype": "CSteamID *" + }, + { "paramname":"cUsers", "paramtype":"int" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetDownloadedLeaderboardEntry", + "methodname_flat": "SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry", + "params": [ + { "paramname":"hSteamLeaderboardEntries", "paramtype":"SteamLeaderboardEntries_t" }, + { "paramname":"index", "paramtype":"int" }, + { "paramname":"pLeaderboardEntry", "paramtype":"LeaderboardEntry_t *" }, + { "paramname":"pDetails", "paramtype":"int32 *" }, + { "paramname":"cDetailsMax", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "callresult": "LeaderboardScoreUploaded_t", + "methodname": "UploadLeaderboardScore", + "methodname_flat": "SteamAPI_ISteamUserStats_UploadLeaderboardScore", + "params": [ + { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" }, + { "paramname":"eLeaderboardUploadScoreMethod", "paramtype":"ELeaderboardUploadScoreMethod" }, + { "paramname":"nScore", "paramtype":"int32" }, + { "paramname":"pScoreDetails", "paramtype":"const int32 *" }, + { "paramname":"cScoreDetailsCount", "paramtype":"int" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "LeaderboardUGCSet_t", + "methodname": "AttachLeaderboardUGC", + "methodname_flat": "SteamAPI_ISteamUserStats_AttachLeaderboardUGC", + "params": [ + { "paramname":"hSteamLeaderboard", "paramtype":"SteamLeaderboard_t" }, + { "paramname":"hUGC", "paramtype":"UGCHandle_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "NumberOfCurrentPlayers_t", + "methodname": "GetNumberOfCurrentPlayers", + "methodname_flat": "SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers", + "params": [], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "GlobalAchievementPercentagesReady_t", + "methodname": "RequestGlobalAchievementPercentages", + "methodname_flat": "SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages", + "params": [], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetMostAchievedAchievementInfo", + "methodname_flat": "SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo", + "params": [ + { "paramname":"pchName", "paramtype":"char *" }, + { "paramname":"unNameBufLen", "paramtype":"uint32" }, + { "paramname":"pflPercent", "paramtype":"float *" }, + { "paramname":"pbAchieved", "paramtype":"bool *" } + ], + "returntype": "int" + }, + { + "methodname": "GetNextMostAchievedAchievementInfo", + "methodname_flat": "SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo", + "params": [ + { "paramname":"iIteratorPrevious", "paramtype":"int" }, + { "paramname":"pchName", "paramtype":"char *" }, + { "paramname":"unNameBufLen", "paramtype":"uint32" }, + { "paramname":"pflPercent", "paramtype":"float *" }, + { "paramname":"pbAchieved", "paramtype":"bool *" } + ], + "returntype": "int" + }, + { + "methodname": "GetAchievementAchievedPercent", + "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementAchievedPercent", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pflPercent", "paramtype":"float *" } + ], + "returntype": "bool" + }, + { + "callresult": "GlobalStatsReceived_t", + "methodname": "RequestGlobalStats", + "methodname_flat": "SteamAPI_ISteamUserStats_RequestGlobalStats", + "params": [ + { "paramname":"nHistoryDays", "paramtype":"int" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetGlobalStat", + "methodname_flat": "SteamAPI_ISteamUserStats_GetGlobalStatInt64", + "params": [ + { "paramname":"pchStatName", "paramtype":"const char *" }, + { "paramname":"pData", "paramtype":"int64 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetGlobalStat", + "methodname_flat": "SteamAPI_ISteamUserStats_GetGlobalStatDouble", + "params": [ + { "paramname":"pchStatName", "paramtype":"const char *" }, + { "paramname":"pData", "paramtype":"double *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetGlobalStatHistory", + "methodname_flat": "SteamAPI_ISteamUserStats_GetGlobalStatHistoryInt64", + "params": [ + { "paramname":"pchStatName", "paramtype":"const char *" }, + { + "array_count": "cubData", + "paramname": "pData", + "paramtype": "int64 *" + }, + { "paramname":"cubData", "paramtype":"uint32" } + ], + "returntype": "int32" + }, + { + "methodname": "GetGlobalStatHistory", + "methodname_flat": "SteamAPI_ISteamUserStats_GetGlobalStatHistoryDouble", + "params": [ + { "paramname":"pchStatName", "paramtype":"const char *" }, + { + "array_count": "cubData", + "paramname": "pData", + "paramtype": "double *" + }, + { "paramname":"cubData", "paramtype":"uint32" } + ], + "returntype": "int32" + }, + { + "methodname": "GetAchievementProgressLimits", + "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementProgressLimitsInt32", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pnMinProgress", "paramtype":"int32 *" }, + { "paramname":"pnMaxProgress", "paramtype":"int32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetAchievementProgressLimits", + "methodname_flat": "SteamAPI_ISteamUserStats_GetAchievementProgressLimitsFloat", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pfMinProgress", "paramtype":"float *" }, + { "paramname":"pfMaxProgress", "paramtype":"float *" } + ], + "returntype": "bool" + } + ], + "version_string": "STEAMUSERSTATS_INTERFACE_VERSION012" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamApps", + "name_flat": "SteamAPI_SteamApps_v008" + }, + { + "kind": "gameserver", + "name": "SteamGameServerApps", + "name_flat": "SteamAPI_SteamGameServerApps_v008" + } + ], + "classname": "ISteamApps", + "fields": [], + "methods": [ + { + "methodname": "BIsSubscribed", + "methodname_flat": "SteamAPI_ISteamApps_BIsSubscribed", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsLowViolence", + "methodname_flat": "SteamAPI_ISteamApps_BIsLowViolence", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsCybercafe", + "methodname_flat": "SteamAPI_ISteamApps_BIsCybercafe", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsVACBanned", + "methodname_flat": "SteamAPI_ISteamApps_BIsVACBanned", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetCurrentGameLanguage", + "methodname_flat": "SteamAPI_ISteamApps_GetCurrentGameLanguage", + "params": [], + "returntype": "const char *" + }, + { + "methodname": "GetAvailableGameLanguages", + "methodname_flat": "SteamAPI_ISteamApps_GetAvailableGameLanguages", + "params": [], + "returntype": "const char *" + }, + { + "methodname": "BIsSubscribedApp", + "methodname_flat": "SteamAPI_ISteamApps_BIsSubscribedApp", + "params": [ + { "paramname":"appID", "paramtype":"AppId_t" } + ], + "returntype": "bool" + }, + { + "methodname": "BIsDlcInstalled", + "methodname_flat": "SteamAPI_ISteamApps_BIsDlcInstalled", + "params": [ + { "paramname":"appID", "paramtype":"AppId_t" } + ], + "returntype": "bool" + }, + { + "methodname": "GetEarliestPurchaseUnixTime", + "methodname_flat": "SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "uint32" + }, + { + "methodname": "BIsSubscribedFromFreeWeekend", + "methodname_flat": "SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetDLCCount", + "methodname_flat": "SteamAPI_ISteamApps_GetDLCCount", + "params": [], + "returntype": "int" + }, + { + "methodname": "BGetDLCDataByIndex", + "methodname_flat": "SteamAPI_ISteamApps_BGetDLCDataByIndex", + "params": [ + { "paramname":"iDLC", "paramtype":"int" }, + { "paramname":"pAppID", "paramtype":"AppId_t *" }, + { "paramname":"pbAvailable", "paramtype":"bool *" }, + { "paramname":"pchName", "paramtype":"char *" }, + { "paramname":"cchNameBufferSize", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "InstallDLC", + "methodname_flat": "SteamAPI_ISteamApps_InstallDLC", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "void" + }, + { + "methodname": "UninstallDLC", + "methodname_flat": "SteamAPI_ISteamApps_UninstallDLC", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "void" + }, + { + "methodname": "RequestAppProofOfPurchaseKey", + "methodname_flat": "SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "void" + }, + { + "methodname": "GetCurrentBetaName", + "methodname_flat": "SteamAPI_ISteamApps_GetCurrentBetaName", + "params": [ + { "paramname":"pchName", "paramtype":"char *" }, + { "paramname":"cchNameBufferSize", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "MarkContentCorrupt", + "methodname_flat": "SteamAPI_ISteamApps_MarkContentCorrupt", + "params": [ + { "paramname":"bMissingFilesOnly", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "GetInstalledDepots", + "methodname_flat": "SteamAPI_ISteamApps_GetInstalledDepots", + "params": [ + { "paramname":"appID", "paramtype":"AppId_t" }, + { "paramname":"pvecDepots", "paramtype":"DepotId_t *" }, + { "paramname":"cMaxDepots", "paramtype":"uint32" } + ], + "returntype": "uint32" + }, + { + "methodname": "GetAppInstallDir", + "methodname_flat": "SteamAPI_ISteamApps_GetAppInstallDir", + "params": [ + { "paramname":"appID", "paramtype":"AppId_t" }, + { "paramname":"pchFolder", "paramtype":"char *" }, + { "paramname":"cchFolderBufferSize", "paramtype":"uint32" } + ], + "returntype": "uint32" + }, + { + "methodname": "BIsAppInstalled", + "methodname_flat": "SteamAPI_ISteamApps_BIsAppInstalled", + "params": [ + { "paramname":"appID", "paramtype":"AppId_t" } + ], + "returntype": "bool" + }, + { + "methodname": "GetAppOwner", + "methodname_flat": "SteamAPI_ISteamApps_GetAppOwner", + "params": [], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "GetLaunchQueryParam", + "methodname_flat": "SteamAPI_ISteamApps_GetLaunchQueryParam", + "params": [ + { "paramname":"pchKey", "paramtype":"const char *" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetDlcDownloadProgress", + "methodname_flat": "SteamAPI_ISteamApps_GetDlcDownloadProgress", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" }, + { "paramname":"punBytesDownloaded", "paramtype":"uint64 *" }, + { "paramname":"punBytesTotal", "paramtype":"uint64 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetAppBuildId", + "methodname_flat": "SteamAPI_ISteamApps_GetAppBuildId", + "params": [], + "returntype": "int" + }, + { + "methodname": "RequestAllProofOfPurchaseKeys", + "methodname_flat": "SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys", + "params": [], + "returntype": "void" + }, + { + "callresult": "FileDetailsResult_t", + "methodname": "GetFileDetails", + "methodname_flat": "SteamAPI_ISteamApps_GetFileDetails", + "params": [ + { "paramname":"pszFileName", "paramtype":"const char *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetLaunchCommandLine", + "methodname_flat": "SteamAPI_ISteamApps_GetLaunchCommandLine", + "params": [ + { "paramname":"pszCommandLine", "paramtype":"char *" }, + { "paramname":"cubCommandLine", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "BIsSubscribedFromFamilySharing", + "methodname_flat": "SteamAPI_ISteamApps_BIsSubscribedFromFamilySharing", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsTimedTrial", + "methodname_flat": "SteamAPI_ISteamApps_BIsTimedTrial", + "params": [ + { "paramname":"punSecondsAllowed", "paramtype":"uint32 *" }, + { "paramname":"punSecondsPlayed", "paramtype":"uint32 *" } + ], + "returntype": "bool" + } + ], + "version_string": "STEAMAPPS_INTERFACE_VERSION008" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamNetworking", + "name_flat": "SteamAPI_SteamNetworking_v006" + }, + { + "kind": "gameserver", + "name": "SteamGameServerNetworking", + "name_flat": "SteamAPI_SteamGameServerNetworking_v006" + } + ], + "classname": "ISteamNetworking", + "fields": [], + "methods": [ + { + "methodname": "SendP2PPacket", + "methodname_flat": "SteamAPI_ISteamNetworking_SendP2PPacket", + "params": [ + { "paramname":"steamIDRemote", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pubData", "paramtype":"const void *" }, + { "paramname":"cubData", "paramtype":"uint32" }, + { "paramname":"eP2PSendType", "paramtype":"EP2PSend" }, + { "paramname":"nChannel", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "IsP2PPacketAvailable", + "methodname_flat": "SteamAPI_ISteamNetworking_IsP2PPacketAvailable", + "params": [ + { "paramname":"pcubMsgSize", "paramtype":"uint32 *" }, + { "paramname":"nChannel", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "ReadP2PPacket", + "methodname_flat": "SteamAPI_ISteamNetworking_ReadP2PPacket", + "params": [ + { "paramname":"pubDest", "paramtype":"void *" }, + { "paramname":"cubDest", "paramtype":"uint32" }, + { "paramname":"pcubMsgSize", "paramtype":"uint32 *" }, + { "paramname":"psteamIDRemote", "paramtype":"CSteamID *" }, + { "paramname":"nChannel", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "AcceptP2PSessionWithUser", + "methodname_flat": "SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser", + "params": [ + { "paramname":"steamIDRemote", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "CloseP2PSessionWithUser", + "methodname_flat": "SteamAPI_ISteamNetworking_CloseP2PSessionWithUser", + "params": [ + { "paramname":"steamIDRemote", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "CloseP2PChannelWithUser", + "methodname_flat": "SteamAPI_ISteamNetworking_CloseP2PChannelWithUser", + "params": [ + { "paramname":"steamIDRemote", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"nChannel", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "GetP2PSessionState", + "methodname_flat": "SteamAPI_ISteamNetworking_GetP2PSessionState", + "params": [ + { "paramname":"steamIDRemote", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pConnectionState", "paramtype":"P2PSessionState_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "AllowP2PPacketRelay", + "methodname_flat": "SteamAPI_ISteamNetworking_AllowP2PPacketRelay", + "params": [ + { "paramname":"bAllow", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "CreateListenSocket", + "methodname_flat": "SteamAPI_ISteamNetworking_CreateListenSocket", + "params": [ + { "paramname":"nVirtualP2PPort", "paramtype":"int" }, + { "paramname":"nIP", "paramtype":"SteamIPAddress_t" }, + { "paramname":"nPort", "paramtype":"uint16" }, + { "paramname":"bAllowUseOfPacketRelay", "paramtype":"bool" } + ], + "returntype": "SNetListenSocket_t" + }, + { + "methodname": "CreateP2PConnectionSocket", + "methodname_flat": "SteamAPI_ISteamNetworking_CreateP2PConnectionSocket", + "params": [ + { "paramname":"steamIDTarget", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"nVirtualPort", "paramtype":"int" }, + { "paramname":"nTimeoutSec", "paramtype":"int" }, + { "paramname":"bAllowUseOfPacketRelay", "paramtype":"bool" } + ], + "returntype": "SNetSocket_t" + }, + { + "methodname": "CreateConnectionSocket", + "methodname_flat": "SteamAPI_ISteamNetworking_CreateConnectionSocket", + "params": [ + { "paramname":"nIP", "paramtype":"SteamIPAddress_t" }, + { "paramname":"nPort", "paramtype":"uint16" }, + { "paramname":"nTimeoutSec", "paramtype":"int" } + ], + "returntype": "SNetSocket_t" + }, + { + "methodname": "DestroySocket", + "methodname_flat": "SteamAPI_ISteamNetworking_DestroySocket", + "params": [ + { "paramname":"hSocket", "paramtype":"SNetSocket_t" }, + { "paramname":"bNotifyRemoteEnd", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "DestroyListenSocket", + "methodname_flat": "SteamAPI_ISteamNetworking_DestroyListenSocket", + "params": [ + { "paramname":"hSocket", "paramtype":"SNetListenSocket_t" }, + { "paramname":"bNotifyRemoteEnd", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SendDataOnSocket", + "methodname_flat": "SteamAPI_ISteamNetworking_SendDataOnSocket", + "params": [ + { "paramname":"hSocket", "paramtype":"SNetSocket_t" }, + { "paramname":"pubData", "paramtype":"void *" }, + { "paramname":"cubData", "paramtype":"uint32" }, + { "paramname":"bReliable", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "IsDataAvailableOnSocket", + "methodname_flat": "SteamAPI_ISteamNetworking_IsDataAvailableOnSocket", + "params": [ + { "paramname":"hSocket", "paramtype":"SNetSocket_t" }, + { "paramname":"pcubMsgSize", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "RetrieveDataFromSocket", + "methodname_flat": "SteamAPI_ISteamNetworking_RetrieveDataFromSocket", + "params": [ + { "paramname":"hSocket", "paramtype":"SNetSocket_t" }, + { "paramname":"pubDest", "paramtype":"void *" }, + { "paramname":"cubDest", "paramtype":"uint32" }, + { "paramname":"pcubMsgSize", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "IsDataAvailable", + "methodname_flat": "SteamAPI_ISteamNetworking_IsDataAvailable", + "params": [ + { "paramname":"hListenSocket", "paramtype":"SNetListenSocket_t" }, + { "paramname":"pcubMsgSize", "paramtype":"uint32 *" }, + { "paramname":"phSocket", "paramtype":"SNetSocket_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "RetrieveData", + "methodname_flat": "SteamAPI_ISteamNetworking_RetrieveData", + "params": [ + { "paramname":"hListenSocket", "paramtype":"SNetListenSocket_t" }, + { "paramname":"pubDest", "paramtype":"void *" }, + { "paramname":"cubDest", "paramtype":"uint32" }, + { "paramname":"pcubMsgSize", "paramtype":"uint32 *" }, + { "paramname":"phSocket", "paramtype":"SNetSocket_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetSocketInfo", + "methodname_flat": "SteamAPI_ISteamNetworking_GetSocketInfo", + "params": [ + { "paramname":"hSocket", "paramtype":"SNetSocket_t" }, + { "paramname":"pSteamIDRemote", "paramtype":"CSteamID *" }, + { "paramname":"peSocketStatus", "paramtype":"int *" }, + { "paramname":"punIPRemote", "paramtype":"SteamIPAddress_t *" }, + { "paramname":"punPortRemote", "paramtype":"uint16 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetListenSocketInfo", + "methodname_flat": "SteamAPI_ISteamNetworking_GetListenSocketInfo", + "params": [ + { "paramname":"hListenSocket", "paramtype":"SNetListenSocket_t" }, + { "paramname":"pnIP", "paramtype":"SteamIPAddress_t *" }, + { "paramname":"pnPort", "paramtype":"uint16 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetSocketConnectionType", + "methodname_flat": "SteamAPI_ISteamNetworking_GetSocketConnectionType", + "params": [ + { "paramname":"hSocket", "paramtype":"SNetSocket_t" } + ], + "returntype": "ESNetSocketConnectionType" + }, + { + "methodname": "GetMaxPacketSize", + "methodname_flat": "SteamAPI_ISteamNetworking_GetMaxPacketSize", + "params": [ + { "paramname":"hSocket", "paramtype":"SNetSocket_t" } + ], + "returntype": "int" + } + ], + "version_string": "SteamNetworking006" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamScreenshots", + "name_flat": "SteamAPI_SteamScreenshots_v003" + } + ], + "classname": "ISteamScreenshots", + "fields": [], + "methods": [ + { + "methodname": "WriteScreenshot", + "methodname_flat": "SteamAPI_ISteamScreenshots_WriteScreenshot", + "params": [ + { "paramname":"pubRGB", "paramtype":"void *" }, + { "paramname":"cubRGB", "paramtype":"uint32" }, + { "paramname":"nWidth", "paramtype":"int" }, + { "paramname":"nHeight", "paramtype":"int" } + ], + "returntype": "ScreenshotHandle" + }, + { + "methodname": "AddScreenshotToLibrary", + "methodname_flat": "SteamAPI_ISteamScreenshots_AddScreenshotToLibrary", + "params": [ + { "paramname":"pchFilename", "paramtype":"const char *" }, + { "paramname":"pchThumbnailFilename", "paramtype":"const char *" }, + { "paramname":"nWidth", "paramtype":"int" }, + { "paramname":"nHeight", "paramtype":"int" } + ], + "returntype": "ScreenshotHandle" + }, + { + "methodname": "TriggerScreenshot", + "methodname_flat": "SteamAPI_ISteamScreenshots_TriggerScreenshot", + "params": [], + "returntype": "void" + }, + { + "methodname": "HookScreenshots", + "methodname_flat": "SteamAPI_ISteamScreenshots_HookScreenshots", + "params": [ + { "paramname":"bHook", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "SetLocation", + "methodname_flat": "SteamAPI_ISteamScreenshots_SetLocation", + "params": [ + { "paramname":"hScreenshot", "paramtype":"ScreenshotHandle" }, + { "paramname":"pchLocation", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "TagUser", + "methodname_flat": "SteamAPI_ISteamScreenshots_TagUser", + "params": [ + { "paramname":"hScreenshot", "paramtype":"ScreenshotHandle" }, + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "TagPublishedFile", + "methodname_flat": "SteamAPI_ISteamScreenshots_TagPublishedFile", + "params": [ + { "paramname":"hScreenshot", "paramtype":"ScreenshotHandle" }, + { "paramname":"unPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "bool" + }, + { + "methodname": "IsScreenshotsHooked", + "methodname_flat": "SteamAPI_ISteamScreenshots_IsScreenshotsHooked", + "params": [], + "returntype": "bool" + }, + { + "methodname": "AddVRScreenshotToLibrary", + "methodname_flat": "SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary", + "params": [ + { "paramname":"eType", "paramtype":"EVRScreenshotType" }, + { "paramname":"pchFilename", "paramtype":"const char *" }, + { "paramname":"pchVRFilename", "paramtype":"const char *" } + ], + "returntype": "ScreenshotHandle" + } + ], + "version_string": "STEAMSCREENSHOTS_INTERFACE_VERSION003" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamMusic", + "name_flat": "SteamAPI_SteamMusic_v001" + } + ], + "classname": "ISteamMusic", + "fields": [], + "methods": [ + { + "methodname": "BIsEnabled", + "methodname_flat": "SteamAPI_ISteamMusic_BIsEnabled", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsPlaying", + "methodname_flat": "SteamAPI_ISteamMusic_BIsPlaying", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetPlaybackStatus", + "methodname_flat": "SteamAPI_ISteamMusic_GetPlaybackStatus", + "params": [], + "returntype": "AudioPlayback_Status" + }, + { + "methodname": "Play", + "methodname_flat": "SteamAPI_ISteamMusic_Play", + "params": [], + "returntype": "void" + }, + { + "methodname": "Pause", + "methodname_flat": "SteamAPI_ISteamMusic_Pause", + "params": [], + "returntype": "void" + }, + { + "methodname": "PlayPrevious", + "methodname_flat": "SteamAPI_ISteamMusic_PlayPrevious", + "params": [], + "returntype": "void" + }, + { + "methodname": "PlayNext", + "methodname_flat": "SteamAPI_ISteamMusic_PlayNext", + "params": [], + "returntype": "void" + }, + { + "methodname": "SetVolume", + "methodname_flat": "SteamAPI_ISteamMusic_SetVolume", + "params": [ + { "paramname":"flVolume", "paramtype":"float" } + ], + "returntype": "void" + }, + { + "methodname": "GetVolume", + "methodname_flat": "SteamAPI_ISteamMusic_GetVolume", + "params": [], + "returntype": "float" + } + ], + "version_string": "STEAMMUSIC_INTERFACE_VERSION001" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamMusicRemote", + "name_flat": "SteamAPI_SteamMusicRemote_v001" + } + ], + "classname": "ISteamMusicRemote", + "fields": [], + "methods": [ + { + "methodname": "RegisterSteamMusicRemote", + "methodname_flat": "SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote", + "params": [ + { "paramname":"pchName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "DeregisterSteamMusicRemote", + "methodname_flat": "SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsCurrentMusicRemote", + "methodname_flat": "SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BActivationSuccess", + "methodname_flat": "SteamAPI_ISteamMusicRemote_BActivationSuccess", + "params": [ + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetDisplayName", + "methodname_flat": "SteamAPI_ISteamMusicRemote_SetDisplayName", + "params": [ + { "paramname":"pchDisplayName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetPNGIcon_64x64", + "methodname_flat": "SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64", + "params": [ + { "paramname":"pvBuffer", "paramtype":"void *" }, + { "paramname":"cbBufferLength", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "EnablePlayPrevious", + "methodname_flat": "SteamAPI_ISteamMusicRemote_EnablePlayPrevious", + "params": [ + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "EnablePlayNext", + "methodname_flat": "SteamAPI_ISteamMusicRemote_EnablePlayNext", + "params": [ + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "EnableShuffled", + "methodname_flat": "SteamAPI_ISteamMusicRemote_EnableShuffled", + "params": [ + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "EnableLooped", + "methodname_flat": "SteamAPI_ISteamMusicRemote_EnableLooped", + "params": [ + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "EnableQueue", + "methodname_flat": "SteamAPI_ISteamMusicRemote_EnableQueue", + "params": [ + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "EnablePlaylists", + "methodname_flat": "SteamAPI_ISteamMusicRemote_EnablePlaylists", + "params": [ + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdatePlaybackStatus", + "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus", + "params": [ + { "paramname":"nStatus", "paramtype":"AudioPlayback_Status" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateShuffled", + "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdateShuffled", + "params": [ + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateLooped", + "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdateLooped", + "params": [ + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateVolume", + "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdateVolume", + "params": [ + { "paramname":"flValue", "paramtype":"float" } + ], + "returntype": "bool" + }, + { + "methodname": "CurrentEntryWillChange", + "methodname_flat": "SteamAPI_ISteamMusicRemote_CurrentEntryWillChange", + "params": [], + "returntype": "bool" + }, + { + "methodname": "CurrentEntryIsAvailable", + "methodname_flat": "SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable", + "params": [ + { "paramname":"bAvailable", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateCurrentEntryText", + "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText", + "params": [ + { "paramname":"pchText", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateCurrentEntryElapsedSeconds", + "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds", + "params": [ + { "paramname":"nValue", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateCurrentEntryCoverArt", + "methodname_flat": "SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt", + "params": [ + { "paramname":"pvBuffer", "paramtype":"void *" }, + { "paramname":"cbBufferLength", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "CurrentEntryDidChange", + "methodname_flat": "SteamAPI_ISteamMusicRemote_CurrentEntryDidChange", + "params": [], + "returntype": "bool" + }, + { + "methodname": "QueueWillChange", + "methodname_flat": "SteamAPI_ISteamMusicRemote_QueueWillChange", + "params": [], + "returntype": "bool" + }, + { + "methodname": "ResetQueueEntries", + "methodname_flat": "SteamAPI_ISteamMusicRemote_ResetQueueEntries", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetQueueEntry", + "methodname_flat": "SteamAPI_ISteamMusicRemote_SetQueueEntry", + "params": [ + { "paramname":"nID", "paramtype":"int" }, + { "paramname":"nPosition", "paramtype":"int" }, + { "paramname":"pchEntryText", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetCurrentQueueEntry", + "methodname_flat": "SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry", + "params": [ + { "paramname":"nID", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "QueueDidChange", + "methodname_flat": "SteamAPI_ISteamMusicRemote_QueueDidChange", + "params": [], + "returntype": "bool" + }, + { + "methodname": "PlaylistWillChange", + "methodname_flat": "SteamAPI_ISteamMusicRemote_PlaylistWillChange", + "params": [], + "returntype": "bool" + }, + { + "methodname": "ResetPlaylistEntries", + "methodname_flat": "SteamAPI_ISteamMusicRemote_ResetPlaylistEntries", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetPlaylistEntry", + "methodname_flat": "SteamAPI_ISteamMusicRemote_SetPlaylistEntry", + "params": [ + { "paramname":"nID", "paramtype":"int" }, + { "paramname":"nPosition", "paramtype":"int" }, + { "paramname":"pchEntryText", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetCurrentPlaylistEntry", + "methodname_flat": "SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry", + "params": [ + { "paramname":"nID", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "PlaylistDidChange", + "methodname_flat": "SteamAPI_ISteamMusicRemote_PlaylistDidChange", + "params": [], + "returntype": "bool" + } + ], + "version_string": "STEAMMUSICREMOTE_INTERFACE_VERSION001" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamHTTP", + "name_flat": "SteamAPI_SteamHTTP_v003" + }, + { + "kind": "gameserver", + "name": "SteamGameServerHTTP", + "name_flat": "SteamAPI_SteamGameServerHTTP_v003" + } + ], + "classname": "ISteamHTTP", + "fields": [], + "methods": [ + { + "methodname": "CreateHTTPRequest", + "methodname_flat": "SteamAPI_ISteamHTTP_CreateHTTPRequest", + "params": [ + { "paramname":"eHTTPRequestMethod", "paramtype":"EHTTPMethod" }, + { "paramname":"pchAbsoluteURL", "paramtype":"const char *" } + ], + "returntype": "HTTPRequestHandle" + }, + { + "methodname": "SetHTTPRequestContextValue", + "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestContextValue", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"ulContextValue", "paramtype":"uint64" } + ], + "returntype": "bool" + }, + { + "methodname": "SetHTTPRequestNetworkActivityTimeout", + "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"unTimeoutSeconds", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "SetHTTPRequestHeaderValue", + "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pchHeaderName", "paramtype":"const char *" }, + { "paramname":"pchHeaderValue", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetHTTPRequestGetOrPostParameter", + "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pchParamName", "paramtype":"const char *" }, + { "paramname":"pchParamValue", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SendHTTPRequest", + "methodname_flat": "SteamAPI_ISteamHTTP_SendHTTPRequest", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pCallHandle", "paramtype":"SteamAPICall_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "SendHTTPRequestAndStreamResponse", + "methodname_flat": "SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pCallHandle", "paramtype":"SteamAPICall_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "DeferHTTPRequest", + "methodname_flat": "SteamAPI_ISteamHTTP_DeferHTTPRequest", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" } + ], + "returntype": "bool" + }, + { + "methodname": "PrioritizeHTTPRequest", + "methodname_flat": "SteamAPI_ISteamHTTP_PrioritizeHTTPRequest", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" } + ], + "returntype": "bool" + }, + { + "methodname": "GetHTTPResponseHeaderSize", + "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pchHeaderName", "paramtype":"const char *" }, + { "paramname":"unResponseHeaderSize", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetHTTPResponseHeaderValue", + "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pchHeaderName", "paramtype":"const char *" }, + { "paramname":"pHeaderValueBuffer", "paramtype":"uint8 *" }, + { "paramname":"unBufferSize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetHTTPResponseBodySize", + "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPResponseBodySize", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"unBodySize", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetHTTPResponseBodyData", + "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPResponseBodyData", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pBodyDataBuffer", "paramtype":"uint8 *" }, + { "paramname":"unBufferSize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetHTTPStreamingResponseBodyData", + "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"cOffset", "paramtype":"uint32" }, + { "paramname":"pBodyDataBuffer", "paramtype":"uint8 *" }, + { "paramname":"unBufferSize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "ReleaseHTTPRequest", + "methodname_flat": "SteamAPI_ISteamHTTP_ReleaseHTTPRequest", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" } + ], + "returntype": "bool" + }, + { + "methodname": "GetHTTPDownloadProgressPct", + "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pflPercentOut", "paramtype":"float *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetHTTPRequestRawPostBody", + "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pchContentType", "paramtype":"const char *" }, + { "paramname":"pubBody", "paramtype":"uint8 *" }, + { "paramname":"unBodyLen", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "CreateCookieContainer", + "methodname_flat": "SteamAPI_ISteamHTTP_CreateCookieContainer", + "params": [ + { "paramname":"bAllowResponsesToModify", "paramtype":"bool" } + ], + "returntype": "HTTPCookieContainerHandle" + }, + { + "methodname": "ReleaseCookieContainer", + "methodname_flat": "SteamAPI_ISteamHTTP_ReleaseCookieContainer", + "params": [ + { "paramname":"hCookieContainer", "paramtype":"HTTPCookieContainerHandle" } + ], + "returntype": "bool" + }, + { + "methodname": "SetCookie", + "methodname_flat": "SteamAPI_ISteamHTTP_SetCookie", + "params": [ + { "paramname":"hCookieContainer", "paramtype":"HTTPCookieContainerHandle" }, + { "paramname":"pchHost", "paramtype":"const char *" }, + { "paramname":"pchUrl", "paramtype":"const char *" }, + { "paramname":"pchCookie", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetHTTPRequestCookieContainer", + "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"hCookieContainer", "paramtype":"HTTPCookieContainerHandle" } + ], + "returntype": "bool" + }, + { + "methodname": "SetHTTPRequestUserAgentInfo", + "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pchUserAgentInfo", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetHTTPRequestRequiresVerifiedCertificate", + "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"bRequireVerifiedCertificate", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetHTTPRequestAbsoluteTimeoutMS", + "methodname_flat": "SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"unMilliseconds", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetHTTPRequestWasTimedOut", + "methodname_flat": "SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut", + "params": [ + { "paramname":"hRequest", "paramtype":"HTTPRequestHandle" }, + { "paramname":"pbWasTimedOut", "paramtype":"bool *" } + ], + "returntype": "bool" + } + ], + "version_string": "STEAMHTTP_INTERFACE_VERSION003" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamInput", + "name_flat": "SteamAPI_SteamInput_v002" + } + ], + "classname": "ISteamInput", + "fields": [], + "methods": [ + { + "methodname": "Init", + "methodname_flat": "SteamAPI_ISteamInput_Init", + "params": [], + "returntype": "bool" + }, + { + "methodname": "Shutdown", + "methodname_flat": "SteamAPI_ISteamInput_Shutdown", + "params": [], + "returntype": "bool" + }, + { + "methodname": "RunFrame", + "methodname_flat": "SteamAPI_ISteamInput_RunFrame", + "params": [], + "returntype": "void" + }, + { + "methodname": "GetConnectedControllers", + "methodname_flat": "SteamAPI_ISteamInput_GetConnectedControllers", + "params": [ + { + "desc": "Receives list of connected controllers", + "out_array_count": "STEAM_INPUT_MAX_COUNT", + "paramname": "handlesOut", + "paramtype": "InputHandle_t *" + } + ], + "returntype": "int" + }, + { + "methodname": "GetActionSetHandle", + "methodname_flat": "SteamAPI_ISteamInput_GetActionSetHandle", + "params": [ + { "paramname":"pszActionSetName", "paramtype":"const char *" } + ], + "returntype": "InputActionSetHandle_t" + }, + { + "methodname": "ActivateActionSet", + "methodname_flat": "SteamAPI_ISteamInput_ActivateActionSet", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"actionSetHandle", "paramtype":"InputActionSetHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "GetCurrentActionSet", + "methodname_flat": "SteamAPI_ISteamInput_GetCurrentActionSet", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" } + ], + "returntype": "InputActionSetHandle_t" + }, + { + "methodname": "ActivateActionSetLayer", + "methodname_flat": "SteamAPI_ISteamInput_ActivateActionSetLayer", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"actionSetLayerHandle", "paramtype":"InputActionSetHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "DeactivateActionSetLayer", + "methodname_flat": "SteamAPI_ISteamInput_DeactivateActionSetLayer", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"actionSetLayerHandle", "paramtype":"InputActionSetHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "DeactivateAllActionSetLayers", + "methodname_flat": "SteamAPI_ISteamInput_DeactivateAllActionSetLayers", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "GetActiveActionSetLayers", + "methodname_flat": "SteamAPI_ISteamInput_GetActiveActionSetLayers", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { + "desc": "Receives list of active layers", + "out_array_count": "STEAM_INPUT_MAX_ACTIVE_LAYERS", + "paramname": "handlesOut", + "paramtype": "InputActionSetHandle_t *" + } + ], + "returntype": "int" + }, + { + "methodname": "GetDigitalActionHandle", + "methodname_flat": "SteamAPI_ISteamInput_GetDigitalActionHandle", + "params": [ + { "paramname":"pszActionName", "paramtype":"const char *" } + ], + "returntype": "InputDigitalActionHandle_t" + }, + { + "methodname": "GetDigitalActionData", + "methodname_flat": "SteamAPI_ISteamInput_GetDigitalActionData", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"digitalActionHandle", "paramtype":"InputDigitalActionHandle_t" } + ], + "returntype": "InputDigitalActionData_t" + }, + { + "methodname": "GetDigitalActionOrigins", + "methodname_flat": "SteamAPI_ISteamInput_GetDigitalActionOrigins", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"actionSetHandle", "paramtype":"InputActionSetHandle_t" }, + { "paramname":"digitalActionHandle", "paramtype":"InputDigitalActionHandle_t" }, + { + "desc": "Receives list of action origins", + "out_array_count": "STEAM_INPUT_MAX_ORIGINS", + "paramname": "originsOut", + "paramtype": "EInputActionOrigin *" + } + ], + "returntype": "int" + }, + { + "methodname": "GetAnalogActionHandle", + "methodname_flat": "SteamAPI_ISteamInput_GetAnalogActionHandle", + "params": [ + { "paramname":"pszActionName", "paramtype":"const char *" } + ], + "returntype": "InputAnalogActionHandle_t" + }, + { + "methodname": "GetAnalogActionData", + "methodname_flat": "SteamAPI_ISteamInput_GetAnalogActionData", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"analogActionHandle", "paramtype":"InputAnalogActionHandle_t" } + ], + "returntype": "InputAnalogActionData_t" + }, + { + "methodname": "GetAnalogActionOrigins", + "methodname_flat": "SteamAPI_ISteamInput_GetAnalogActionOrigins", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"actionSetHandle", "paramtype":"InputActionSetHandle_t" }, + { "paramname":"analogActionHandle", "paramtype":"InputAnalogActionHandle_t" }, + { + "desc": "Receives list of action origins", + "out_array_count": "STEAM_INPUT_MAX_ORIGINS", + "paramname": "originsOut", + "paramtype": "EInputActionOrigin *" + } + ], + "returntype": "int" + }, + { + "methodname": "GetGlyphForActionOrigin", + "methodname_flat": "SteamAPI_ISteamInput_GetGlyphForActionOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EInputActionOrigin" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetStringForActionOrigin", + "methodname_flat": "SteamAPI_ISteamInput_GetStringForActionOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EInputActionOrigin" } + ], + "returntype": "const char *" + }, + { + "methodname": "StopAnalogActionMomentum", + "methodname_flat": "SteamAPI_ISteamInput_StopAnalogActionMomentum", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"eAction", "paramtype":"InputAnalogActionHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "GetMotionData", + "methodname_flat": "SteamAPI_ISteamInput_GetMotionData", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" } + ], + "returntype": "InputMotionData_t" + }, + { + "methodname": "TriggerVibration", + "methodname_flat": "SteamAPI_ISteamInput_TriggerVibration", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"usLeftSpeed", "paramtype":"unsigned short" }, + { "paramname":"usRightSpeed", "paramtype":"unsigned short" } + ], + "returntype": "void" + }, + { + "methodname": "SetLEDColor", + "methodname_flat": "SteamAPI_ISteamInput_SetLEDColor", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"nColorR", "paramtype":"uint8" }, + { "paramname":"nColorG", "paramtype":"uint8" }, + { "paramname":"nColorB", "paramtype":"uint8" }, + { "paramname":"nFlags", "paramtype":"unsigned int" } + ], + "returntype": "void" + }, + { + "methodname": "TriggerHapticPulse", + "methodname_flat": "SteamAPI_ISteamInput_TriggerHapticPulse", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"eTargetPad", "paramtype":"ESteamControllerPad" }, + { "paramname":"usDurationMicroSec", "paramtype":"unsigned short" } + ], + "returntype": "void" + }, + { + "methodname": "TriggerRepeatedHapticPulse", + "methodname_flat": "SteamAPI_ISteamInput_TriggerRepeatedHapticPulse", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"eTargetPad", "paramtype":"ESteamControllerPad" }, + { "paramname":"usDurationMicroSec", "paramtype":"unsigned short" }, + { "paramname":"usOffMicroSec", "paramtype":"unsigned short" }, + { "paramname":"unRepeat", "paramtype":"unsigned short" }, + { "paramname":"nFlags", "paramtype":"unsigned int" } + ], + "returntype": "void" + }, + { + "methodname": "ShowBindingPanel", + "methodname_flat": "SteamAPI_ISteamInput_ShowBindingPanel", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" } + ], + "returntype": "bool" + }, + { + "methodname": "GetInputTypeForHandle", + "methodname_flat": "SteamAPI_ISteamInput_GetInputTypeForHandle", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" } + ], + "returntype": "ESteamInputType" + }, + { + "methodname": "GetControllerForGamepadIndex", + "methodname_flat": "SteamAPI_ISteamInput_GetControllerForGamepadIndex", + "params": [ + { "paramname":"nIndex", "paramtype":"int" } + ], + "returntype": "InputHandle_t" + }, + { + "methodname": "GetGamepadIndexForController", + "methodname_flat": "SteamAPI_ISteamInput_GetGamepadIndexForController", + "params": [ + { "paramname":"ulinputHandle", "paramtype":"InputHandle_t" } + ], + "returntype": "int" + }, + { + "methodname": "GetStringForXboxOrigin", + "methodname_flat": "SteamAPI_ISteamInput_GetStringForXboxOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EXboxOrigin" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetGlyphForXboxOrigin", + "methodname_flat": "SteamAPI_ISteamInput_GetGlyphForXboxOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EXboxOrigin" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetActionOriginFromXboxOrigin", + "methodname_flat": "SteamAPI_ISteamInput_GetActionOriginFromXboxOrigin", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"eOrigin", "paramtype":"EXboxOrigin" } + ], + "returntype": "EInputActionOrigin" + }, + { + "methodname": "TranslateActionOrigin", + "methodname_flat": "SteamAPI_ISteamInput_TranslateActionOrigin", + "params": [ + { "paramname":"eDestinationInputType", "paramtype":"ESteamInputType" }, + { "paramname":"eSourceOrigin", "paramtype":"EInputActionOrigin" } + ], + "returntype": "EInputActionOrigin" + }, + { + "methodname": "GetDeviceBindingRevision", + "methodname_flat": "SteamAPI_ISteamInput_GetDeviceBindingRevision", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"pMajor", "paramtype":"int *" }, + { "paramname":"pMinor", "paramtype":"int *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetRemotePlaySessionID", + "methodname_flat": "SteamAPI_ISteamInput_GetRemotePlaySessionID", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" } + ], + "returntype": "uint32" + } + ], + "version_string": "SteamInput002" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamController", + "name_flat": "SteamAPI_SteamController_v008" + } + ], + "classname": "ISteamController", + "fields": [], + "methods": [ + { + "methodname": "Init", + "methodname_flat": "SteamAPI_ISteamController_Init", + "params": [], + "returntype": "bool" + }, + { + "methodname": "Shutdown", + "methodname_flat": "SteamAPI_ISteamController_Shutdown", + "params": [], + "returntype": "bool" + }, + { + "methodname": "RunFrame", + "methodname_flat": "SteamAPI_ISteamController_RunFrame", + "params": [], + "returntype": "void" + }, + { + "methodname": "GetConnectedControllers", + "methodname_flat": "SteamAPI_ISteamController_GetConnectedControllers", + "params": [ + { + "desc": "Receives list of connected controllers", + "out_array_count": "STEAM_CONTROLLER_MAX_COUNT", + "paramname": "handlesOut", + "paramtype": "ControllerHandle_t *" + } + ], + "returntype": "int" + }, + { + "methodname": "GetActionSetHandle", + "methodname_flat": "SteamAPI_ISteamController_GetActionSetHandle", + "params": [ + { "paramname":"pszActionSetName", "paramtype":"const char *" } + ], + "returntype": "ControllerActionSetHandle_t" + }, + { + "methodname": "ActivateActionSet", + "methodname_flat": "SteamAPI_ISteamController_ActivateActionSet", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"actionSetHandle", "paramtype":"ControllerActionSetHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "GetCurrentActionSet", + "methodname_flat": "SteamAPI_ISteamController_GetCurrentActionSet", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" } + ], + "returntype": "ControllerActionSetHandle_t" + }, + { + "methodname": "ActivateActionSetLayer", + "methodname_flat": "SteamAPI_ISteamController_ActivateActionSetLayer", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"actionSetLayerHandle", "paramtype":"ControllerActionSetHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "DeactivateActionSetLayer", + "methodname_flat": "SteamAPI_ISteamController_DeactivateActionSetLayer", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"actionSetLayerHandle", "paramtype":"ControllerActionSetHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "DeactivateAllActionSetLayers", + "methodname_flat": "SteamAPI_ISteamController_DeactivateAllActionSetLayers", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "GetActiveActionSetLayers", + "methodname_flat": "SteamAPI_ISteamController_GetActiveActionSetLayers", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { + "desc": "Receives list of active layers", + "out_array_count": "STEAM_CONTROLLER_MAX_ACTIVE_LAYERS", + "paramname": "handlesOut", + "paramtype": "ControllerActionSetHandle_t *" + } + ], + "returntype": "int" + }, + { + "methodname": "GetDigitalActionHandle", + "methodname_flat": "SteamAPI_ISteamController_GetDigitalActionHandle", + "params": [ + { "paramname":"pszActionName", "paramtype":"const char *" } + ], + "returntype": "ControllerDigitalActionHandle_t" + }, + { + "methodname": "GetDigitalActionData", + "methodname_flat": "SteamAPI_ISteamController_GetDigitalActionData", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"digitalActionHandle", "paramtype":"ControllerDigitalActionHandle_t" } + ], + "returntype": "InputDigitalActionData_t" + }, + { + "methodname": "GetDigitalActionOrigins", + "methodname_flat": "SteamAPI_ISteamController_GetDigitalActionOrigins", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"actionSetHandle", "paramtype":"ControllerActionSetHandle_t" }, + { "paramname":"digitalActionHandle", "paramtype":"ControllerDigitalActionHandle_t" }, + { + "desc": "Receives list of aciton origins", + "out_array_count": "STEAM_CONTROLLER_MAX_ORIGINS", + "paramname": "originsOut", + "paramtype": "EControllerActionOrigin *" + } + ], + "returntype": "int" + }, + { + "methodname": "GetAnalogActionHandle", + "methodname_flat": "SteamAPI_ISteamController_GetAnalogActionHandle", + "params": [ + { "paramname":"pszActionName", "paramtype":"const char *" } + ], + "returntype": "ControllerAnalogActionHandle_t" + }, + { + "methodname": "GetAnalogActionData", + "methodname_flat": "SteamAPI_ISteamController_GetAnalogActionData", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"analogActionHandle", "paramtype":"ControllerAnalogActionHandle_t" } + ], + "returntype": "InputAnalogActionData_t" + }, + { + "methodname": "GetAnalogActionOrigins", + "methodname_flat": "SteamAPI_ISteamController_GetAnalogActionOrigins", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"actionSetHandle", "paramtype":"ControllerActionSetHandle_t" }, + { "paramname":"analogActionHandle", "paramtype":"ControllerAnalogActionHandle_t" }, + { + "desc": "Receives list of action origins", + "out_array_count": "STEAM_CONTROLLER_MAX_ORIGINS", + "paramname": "originsOut", + "paramtype": "EControllerActionOrigin *" + } + ], + "returntype": "int" + }, + { + "methodname": "GetGlyphForActionOrigin", + "methodname_flat": "SteamAPI_ISteamController_GetGlyphForActionOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EControllerActionOrigin" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetStringForActionOrigin", + "methodname_flat": "SteamAPI_ISteamController_GetStringForActionOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EControllerActionOrigin" } + ], + "returntype": "const char *" + }, + { + "methodname": "StopAnalogActionMomentum", + "methodname_flat": "SteamAPI_ISteamController_StopAnalogActionMomentum", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"eAction", "paramtype":"ControllerAnalogActionHandle_t" } + ], + "returntype": "void" + }, + { + "methodname": "GetMotionData", + "methodname_flat": "SteamAPI_ISteamController_GetMotionData", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" } + ], + "returntype": "InputMotionData_t" + }, + { + "methodname": "TriggerHapticPulse", + "methodname_flat": "SteamAPI_ISteamController_TriggerHapticPulse", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"eTargetPad", "paramtype":"ESteamControllerPad" }, + { "paramname":"usDurationMicroSec", "paramtype":"unsigned short" } + ], + "returntype": "void" + }, + { + "methodname": "TriggerRepeatedHapticPulse", + "methodname_flat": "SteamAPI_ISteamController_TriggerRepeatedHapticPulse", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"eTargetPad", "paramtype":"ESteamControllerPad" }, + { "paramname":"usDurationMicroSec", "paramtype":"unsigned short" }, + { "paramname":"usOffMicroSec", "paramtype":"unsigned short" }, + { "paramname":"unRepeat", "paramtype":"unsigned short" }, + { "paramname":"nFlags", "paramtype":"unsigned int" } + ], + "returntype": "void" + }, + { + "methodname": "TriggerVibration", + "methodname_flat": "SteamAPI_ISteamController_TriggerVibration", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"usLeftSpeed", "paramtype":"unsigned short" }, + { "paramname":"usRightSpeed", "paramtype":"unsigned short" } + ], + "returntype": "void" + }, + { + "methodname": "SetLEDColor", + "methodname_flat": "SteamAPI_ISteamController_SetLEDColor", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"nColorR", "paramtype":"uint8" }, + { "paramname":"nColorG", "paramtype":"uint8" }, + { "paramname":"nColorB", "paramtype":"uint8" }, + { "paramname":"nFlags", "paramtype":"unsigned int" } + ], + "returntype": "void" + }, + { + "methodname": "ShowBindingPanel", + "methodname_flat": "SteamAPI_ISteamController_ShowBindingPanel", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" } + ], + "returntype": "bool" + }, + { + "methodname": "GetInputTypeForHandle", + "methodname_flat": "SteamAPI_ISteamController_GetInputTypeForHandle", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" } + ], + "returntype": "ESteamInputType" + }, + { + "methodname": "GetControllerForGamepadIndex", + "methodname_flat": "SteamAPI_ISteamController_GetControllerForGamepadIndex", + "params": [ + { "paramname":"nIndex", "paramtype":"int" } + ], + "returntype": "ControllerHandle_t" + }, + { + "methodname": "GetGamepadIndexForController", + "methodname_flat": "SteamAPI_ISteamController_GetGamepadIndexForController", + "params": [ + { "paramname":"ulControllerHandle", "paramtype":"ControllerHandle_t" } + ], + "returntype": "int" + }, + { + "methodname": "GetStringForXboxOrigin", + "methodname_flat": "SteamAPI_ISteamController_GetStringForXboxOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EXboxOrigin" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetGlyphForXboxOrigin", + "methodname_flat": "SteamAPI_ISteamController_GetGlyphForXboxOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EXboxOrigin" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetActionOriginFromXboxOrigin", + "methodname_flat": "SteamAPI_ISteamController_GetActionOriginFromXboxOrigin", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"eOrigin", "paramtype":"EXboxOrigin" } + ], + "returntype": "EControllerActionOrigin" + }, + { + "methodname": "TranslateActionOrigin", + "methodname_flat": "SteamAPI_ISteamController_TranslateActionOrigin", + "params": [ + { "paramname":"eDestinationInputType", "paramtype":"ESteamInputType" }, + { "paramname":"eSourceOrigin", "paramtype":"EControllerActionOrigin" } + ], + "returntype": "EControllerActionOrigin" + }, + { + "methodname": "GetControllerBindingRevision", + "methodname_flat": "SteamAPI_ISteamController_GetControllerBindingRevision", + "params": [ + { "paramname":"controllerHandle", "paramtype":"ControllerHandle_t" }, + { "paramname":"pMajor", "paramtype":"int *" }, + { "paramname":"pMinor", "paramtype":"int *" } + ], + "returntype": "bool" + } + ], + "version_string": "SteamController008" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamUGC", + "name_flat": "SteamAPI_SteamUGC_v015" + }, + { + "kind": "gameserver", + "name": "SteamGameServerUGC", + "name_flat": "SteamAPI_SteamGameServerUGC_v015" + } + ], + "classname": "ISteamUGC", + "fields": [], + "methods": [ + { + "methodname": "CreateQueryUserUGCRequest", + "methodname_flat": "SteamAPI_ISteamUGC_CreateQueryUserUGCRequest", + "params": [ + { "paramname":"unAccountID", "paramtype":"AccountID_t" }, + { "paramname":"eListType", "paramtype":"EUserUGCList" }, + { "paramname":"eMatchingUGCType", "paramtype":"EUGCMatchingUGCType" }, + { "paramname":"eSortOrder", "paramtype":"EUserUGCListSortOrder" }, + { "paramname":"nCreatorAppID", "paramtype":"AppId_t" }, + { "paramname":"nConsumerAppID", "paramtype":"AppId_t" }, + { "paramname":"unPage", "paramtype":"uint32" } + ], + "returntype": "UGCQueryHandle_t" + }, + { + "methodname": "CreateQueryAllUGCRequest", + "methodname_flat": "SteamAPI_ISteamUGC_CreateQueryAllUGCRequestPage", + "params": [ + { "paramname":"eQueryType", "paramtype":"EUGCQuery" }, + { "paramname":"eMatchingeMatchingUGCTypeFileType", "paramtype":"EUGCMatchingUGCType" }, + { "paramname":"nCreatorAppID", "paramtype":"AppId_t" }, + { "paramname":"nConsumerAppID", "paramtype":"AppId_t" }, + { "paramname":"unPage", "paramtype":"uint32" } + ], + "returntype": "UGCQueryHandle_t" + }, + { + "methodname": "CreateQueryAllUGCRequest", + "methodname_flat": "SteamAPI_ISteamUGC_CreateQueryAllUGCRequestCursor", + "params": [ + { "paramname":"eQueryType", "paramtype":"EUGCQuery" }, + { "paramname":"eMatchingeMatchingUGCTypeFileType", "paramtype":"EUGCMatchingUGCType" }, + { "paramname":"nCreatorAppID", "paramtype":"AppId_t" }, + { "paramname":"nConsumerAppID", "paramtype":"AppId_t" }, + { "paramname":"pchCursor", "paramtype":"const char *" } + ], + "returntype": "UGCQueryHandle_t" + }, + { + "methodname": "CreateQueryUGCDetailsRequest", + "methodname_flat": "SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest", + "params": [ + { "paramname":"pvecPublishedFileID", "paramtype":"PublishedFileId_t *" }, + { "paramname":"unNumPublishedFileIDs", "paramtype":"uint32" } + ], + "returntype": "UGCQueryHandle_t" + }, + { + "callresult": "SteamUGCQueryCompleted_t", + "methodname": "SendQueryUGCRequest", + "methodname_flat": "SteamAPI_ISteamUGC_SendQueryUGCRequest", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetQueryUGCResult", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCResult", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"pDetails", "paramtype":"SteamUGCDetails_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQueryUGCNumTags", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCNumTags", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" } + ], + "returntype": "uint32" + }, + { + "methodname": "GetQueryUGCTag", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCTag", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"indexTag", "paramtype":"uint32" }, + { + "out_string_count": "cchValueSize", + "paramname": "pchValue", + "paramtype": "char *" + }, + { "paramname":"cchValueSize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQueryUGCTagDisplayName", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCTagDisplayName", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"indexTag", "paramtype":"uint32" }, + { + "out_string_count": "cchValueSize", + "paramname": "pchValue", + "paramtype": "char *" + }, + { "paramname":"cchValueSize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQueryUGCPreviewURL", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCPreviewURL", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { + "out_string_count": "cchURLSize", + "paramname": "pchURL", + "paramtype": "char *" + }, + { "paramname":"cchURLSize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQueryUGCMetadata", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCMetadata", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { + "out_string_count": "cchMetadatasize", + "paramname": "pchMetadata", + "paramtype": "char *" + }, + { "paramname":"cchMetadatasize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQueryUGCChildren", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCChildren", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"pvecPublishedFileID", "paramtype":"PublishedFileId_t *" }, + { "paramname":"cMaxEntries", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQueryUGCStatistic", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCStatistic", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"eStatType", "paramtype":"EItemStatistic" }, + { "paramname":"pStatValue", "paramtype":"uint64 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQueryUGCNumAdditionalPreviews", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" } + ], + "returntype": "uint32" + }, + { + "methodname": "GetQueryUGCAdditionalPreview", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"previewIndex", "paramtype":"uint32" }, + { + "out_string_count": "cchURLSize", + "paramname": "pchURLOrVideoID", + "paramtype": "char *" + }, + { "paramname":"cchURLSize", "paramtype":"uint32" }, + { + "out_string_count": "cchURLSize", + "paramname": "pchOriginalFileName", + "paramtype": "char *" + }, + { "paramname":"cchOriginalFileNameSize", "paramtype":"uint32" }, + { "paramname":"pPreviewType", "paramtype":"EItemPreviewType *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQueryUGCNumKeyValueTags", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" } + ], + "returntype": "uint32" + }, + { + "methodname": "GetQueryUGCKeyValueTag", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"keyValueTagIndex", "paramtype":"uint32" }, + { + "out_string_count": "cchKeySize", + "paramname": "pchKey", + "paramtype": "char *" + }, + { "paramname":"cchKeySize", "paramtype":"uint32" }, + { + "out_string_count": "cchValueSize", + "paramname": "pchValue", + "paramtype": "char *" + }, + { "paramname":"cchValueSize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQueryUGCKeyValueTag", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryFirstUGCKeyValueTag", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"pchKey", "paramtype":"const char *" }, + { + "out_string_count": "cchValueSize", + "paramname": "pchValue", + "paramtype": "char *" + }, + { "paramname":"cchValueSize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "ReleaseQueryUGCRequest", + "methodname_flat": "SteamAPI_ISteamUGC_ReleaseQueryUGCRequest", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" } + ], + "returntype": "bool" + }, + { + "methodname": "AddRequiredTag", + "methodname_flat": "SteamAPI_ISteamUGC_AddRequiredTag", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"pTagName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "AddRequiredTagGroup", + "methodname_flat": "SteamAPI_ISteamUGC_AddRequiredTagGroup", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"pTagGroups", "paramtype":"const SteamParamStringArray_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "AddExcludedTag", + "methodname_flat": "SteamAPI_ISteamUGC_AddExcludedTag", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"pTagName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetReturnOnlyIDs", + "methodname_flat": "SteamAPI_ISteamUGC_SetReturnOnlyIDs", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"bReturnOnlyIDs", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetReturnKeyValueTags", + "methodname_flat": "SteamAPI_ISteamUGC_SetReturnKeyValueTags", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"bReturnKeyValueTags", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetReturnLongDescription", + "methodname_flat": "SteamAPI_ISteamUGC_SetReturnLongDescription", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"bReturnLongDescription", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetReturnMetadata", + "methodname_flat": "SteamAPI_ISteamUGC_SetReturnMetadata", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"bReturnMetadata", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetReturnChildren", + "methodname_flat": "SteamAPI_ISteamUGC_SetReturnChildren", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"bReturnChildren", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetReturnAdditionalPreviews", + "methodname_flat": "SteamAPI_ISteamUGC_SetReturnAdditionalPreviews", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"bReturnAdditionalPreviews", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetReturnTotalOnly", + "methodname_flat": "SteamAPI_ISteamUGC_SetReturnTotalOnly", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"bReturnTotalOnly", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetReturnPlaytimeStats", + "methodname_flat": "SteamAPI_ISteamUGC_SetReturnPlaytimeStats", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"unDays", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "SetLanguage", + "methodname_flat": "SteamAPI_ISteamUGC_SetLanguage", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"pchLanguage", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetAllowCachedResponse", + "methodname_flat": "SteamAPI_ISteamUGC_SetAllowCachedResponse", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"unMaxAgeSeconds", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "SetCloudFileNameFilter", + "methodname_flat": "SteamAPI_ISteamUGC_SetCloudFileNameFilter", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"pMatchCloudFileName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetMatchAnyTag", + "methodname_flat": "SteamAPI_ISteamUGC_SetMatchAnyTag", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"bMatchAnyTag", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetSearchText", + "methodname_flat": "SteamAPI_ISteamUGC_SetSearchText", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"pSearchText", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetRankedByTrendDays", + "methodname_flat": "SteamAPI_ISteamUGC_SetRankedByTrendDays", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"unDays", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "AddRequiredKeyValueTag", + "methodname_flat": "SteamAPI_ISteamUGC_AddRequiredKeyValueTag", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"pKey", "paramtype":"const char *" }, + { "paramname":"pValue", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "callresult": "SteamUGCRequestUGCDetailsResult_t", + "methodname": "RequestUGCDetails", + "methodname_flat": "SteamAPI_ISteamUGC_RequestUGCDetails", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, + { "paramname":"unMaxAgeSeconds", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "CreateItemResult_t", + "methodname": "CreateItem", + "methodname_flat": "SteamAPI_ISteamUGC_CreateItem", + "params": [ + { "paramname":"nConsumerAppId", "paramtype":"AppId_t" }, + { "paramname":"eFileType", "paramtype":"EWorkshopFileType" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "StartItemUpdate", + "methodname_flat": "SteamAPI_ISteamUGC_StartItemUpdate", + "params": [ + { "paramname":"nConsumerAppId", "paramtype":"AppId_t" }, + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "UGCUpdateHandle_t" + }, + { + "methodname": "SetItemTitle", + "methodname_flat": "SteamAPI_ISteamUGC_SetItemTitle", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pchTitle", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetItemDescription", + "methodname_flat": "SteamAPI_ISteamUGC_SetItemDescription", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pchDescription", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetItemUpdateLanguage", + "methodname_flat": "SteamAPI_ISteamUGC_SetItemUpdateLanguage", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pchLanguage", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetItemMetadata", + "methodname_flat": "SteamAPI_ISteamUGC_SetItemMetadata", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pchMetaData", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetItemVisibility", + "methodname_flat": "SteamAPI_ISteamUGC_SetItemVisibility", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"eVisibility", "paramtype":"ERemoteStoragePublishedFileVisibility" } + ], + "returntype": "bool" + }, + { + "methodname": "SetItemTags", + "methodname_flat": "SteamAPI_ISteamUGC_SetItemTags", + "params": [ + { "paramname":"updateHandle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pTags", "paramtype":"const SteamParamStringArray_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetItemContent", + "methodname_flat": "SteamAPI_ISteamUGC_SetItemContent", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pszContentFolder", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetItemPreview", + "methodname_flat": "SteamAPI_ISteamUGC_SetItemPreview", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pszPreviewFile", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetAllowLegacyUpload", + "methodname_flat": "SteamAPI_ISteamUGC_SetAllowLegacyUpload", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"bAllowLegacyUpload", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "RemoveAllItemKeyValueTags", + "methodname_flat": "SteamAPI_ISteamUGC_RemoveAllItemKeyValueTags", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" } + ], + "returntype": "bool" + }, + { + "methodname": "RemoveItemKeyValueTags", + "methodname_flat": "SteamAPI_ISteamUGC_RemoveItemKeyValueTags", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pchKey", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "AddItemKeyValueTag", + "methodname_flat": "SteamAPI_ISteamUGC_AddItemKeyValueTag", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pchKey", "paramtype":"const char *" }, + { "paramname":"pchValue", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "AddItemPreviewFile", + "methodname_flat": "SteamAPI_ISteamUGC_AddItemPreviewFile", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pszPreviewFile", "paramtype":"const char *" }, + { "paramname":"type", "paramtype":"EItemPreviewType" } + ], + "returntype": "bool" + }, + { + "methodname": "AddItemPreviewVideo", + "methodname_flat": "SteamAPI_ISteamUGC_AddItemPreviewVideo", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pszVideoID", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateItemPreviewFile", + "methodname_flat": "SteamAPI_ISteamUGC_UpdateItemPreviewFile", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"pszPreviewFile", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateItemPreviewVideo", + "methodname_flat": "SteamAPI_ISteamUGC_UpdateItemPreviewVideo", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"pszVideoID", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "RemoveItemPreview", + "methodname_flat": "SteamAPI_ISteamUGC_RemoveItemPreview", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"index", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "callresult": "SubmitItemUpdateResult_t", + "methodname": "SubmitItemUpdate", + "methodname_flat": "SteamAPI_ISteamUGC_SubmitItemUpdate", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pchChangeNote", "paramtype":"const char *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetItemUpdateProgress", + "methodname_flat": "SteamAPI_ISteamUGC_GetItemUpdateProgress", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"punBytesProcessed", "paramtype":"uint64 *" }, + { "paramname":"punBytesTotal", "paramtype":"uint64 *" } + ], + "returntype": "EItemUpdateStatus" + }, + { + "callresult": "SetUserItemVoteResult_t", + "methodname": "SetUserItemVote", + "methodname_flat": "SteamAPI_ISteamUGC_SetUserItemVote", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, + { "paramname":"bVoteUp", "paramtype":"bool" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "GetUserItemVoteResult_t", + "methodname": "GetUserItemVote", + "methodname_flat": "SteamAPI_ISteamUGC_GetUserItemVote", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "UserFavoriteItemsListChanged_t", + "methodname": "AddItemToFavorites", + "methodname_flat": "SteamAPI_ISteamUGC_AddItemToFavorites", + "params": [ + { "paramname":"nAppId", "paramtype":"AppId_t" }, + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "UserFavoriteItemsListChanged_t", + "methodname": "RemoveItemFromFavorites", + "methodname_flat": "SteamAPI_ISteamUGC_RemoveItemFromFavorites", + "params": [ + { "paramname":"nAppId", "paramtype":"AppId_t" }, + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageSubscribePublishedFileResult_t", + "methodname": "SubscribeItem", + "methodname_flat": "SteamAPI_ISteamUGC_SubscribeItem", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoteStorageUnsubscribePublishedFileResult_t", + "methodname": "UnsubscribeItem", + "methodname_flat": "SteamAPI_ISteamUGC_UnsubscribeItem", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetNumSubscribedItems", + "methodname_flat": "SteamAPI_ISteamUGC_GetNumSubscribedItems", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetSubscribedItems", + "methodname_flat": "SteamAPI_ISteamUGC_GetSubscribedItems", + "params": [ + { "paramname":"pvecPublishedFileID", "paramtype":"PublishedFileId_t *" }, + { "paramname":"cMaxEntries", "paramtype":"uint32" } + ], + "returntype": "uint32" + }, + { + "methodname": "GetItemState", + "methodname_flat": "SteamAPI_ISteamUGC_GetItemState", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "uint32" + }, + { + "methodname": "GetItemInstallInfo", + "methodname_flat": "SteamAPI_ISteamUGC_GetItemInstallInfo", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, + { "paramname":"punSizeOnDisk", "paramtype":"uint64 *" }, + { + "out_string_count": "cchFolderSize", + "paramname": "pchFolder", + "paramtype": "char *" + }, + { "paramname":"cchFolderSize", "paramtype":"uint32" }, + { "paramname":"punTimeStamp", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetItemDownloadInfo", + "methodname_flat": "SteamAPI_ISteamUGC_GetItemDownloadInfo", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, + { "paramname":"punBytesDownloaded", "paramtype":"uint64 *" }, + { "paramname":"punBytesTotal", "paramtype":"uint64 *" } + ], + "returntype": "bool" + }, + { + "methodname": "DownloadItem", + "methodname_flat": "SteamAPI_ISteamUGC_DownloadItem", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, + { "paramname":"bHighPriority", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "BInitWorkshopForGameServer", + "methodname_flat": "SteamAPI_ISteamUGC_BInitWorkshopForGameServer", + "params": [ + { "paramname":"unWorkshopDepotID", "paramtype":"DepotId_t" }, + { "paramname":"pszFolder", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SuspendDownloads", + "methodname_flat": "SteamAPI_ISteamUGC_SuspendDownloads", + "params": [ + { "paramname":"bSuspend", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "callresult": "StartPlaytimeTrackingResult_t", + "methodname": "StartPlaytimeTracking", + "methodname_flat": "SteamAPI_ISteamUGC_StartPlaytimeTracking", + "params": [ + { "paramname":"pvecPublishedFileID", "paramtype":"PublishedFileId_t *" }, + { "paramname":"unNumPublishedFileIDs", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "StopPlaytimeTrackingResult_t", + "methodname": "StopPlaytimeTracking", + "methodname_flat": "SteamAPI_ISteamUGC_StopPlaytimeTracking", + "params": [ + { "paramname":"pvecPublishedFileID", "paramtype":"PublishedFileId_t *" }, + { "paramname":"unNumPublishedFileIDs", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "StopPlaytimeTrackingResult_t", + "methodname": "StopPlaytimeTrackingForAllItems", + "methodname_flat": "SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems", + "params": [], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "AddUGCDependencyResult_t", + "methodname": "AddDependency", + "methodname_flat": "SteamAPI_ISteamUGC_AddDependency", + "params": [ + { "paramname":"nParentPublishedFileID", "paramtype":"PublishedFileId_t" }, + { "paramname":"nChildPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoveUGCDependencyResult_t", + "methodname": "RemoveDependency", + "methodname_flat": "SteamAPI_ISteamUGC_RemoveDependency", + "params": [ + { "paramname":"nParentPublishedFileID", "paramtype":"PublishedFileId_t" }, + { "paramname":"nChildPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "AddAppDependencyResult_t", + "methodname": "AddAppDependency", + "methodname_flat": "SteamAPI_ISteamUGC_AddAppDependency", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "RemoveAppDependencyResult_t", + "methodname": "RemoveAppDependency", + "methodname_flat": "SteamAPI_ISteamUGC_RemoveAppDependency", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" }, + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "GetAppDependenciesResult_t", + "methodname": "GetAppDependencies", + "methodname_flat": "SteamAPI_ISteamUGC_GetAppDependencies", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "DeleteItemResult_t", + "methodname": "DeleteItem", + "methodname_flat": "SteamAPI_ISteamUGC_DeleteItem", + "params": [ + { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } + ], + "returntype": "SteamAPICall_t" + } + ], + "version_string": "STEAMUGC_INTERFACE_VERSION015" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamAppList", + "name_flat": "SteamAPI_SteamAppList_v001" + } + ], + "classname": "ISteamAppList", + "fields": [], + "methods": [ + { + "methodname": "GetNumInstalledApps", + "methodname_flat": "SteamAPI_ISteamAppList_GetNumInstalledApps", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetInstalledApps", + "methodname_flat": "SteamAPI_ISteamAppList_GetInstalledApps", + "params": [ + { "paramname":"pvecAppID", "paramtype":"AppId_t *" }, + { "paramname":"unMaxAppIDs", "paramtype":"uint32" } + ], + "returntype": "uint32" + }, + { + "methodname": "GetAppName", + "methodname_flat": "SteamAPI_ISteamAppList_GetAppName", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" }, + { + "out_string": "", + "paramname": "pchName", + "paramtype": "char *" + }, + { "paramname":"cchNameMax", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "GetAppInstallDir", + "methodname_flat": "SteamAPI_ISteamAppList_GetAppInstallDir", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" }, + { "paramname":"pchDirectory", "paramtype":"char *" }, + { "paramname":"cchNameMax", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "GetAppBuildId", + "methodname_flat": "SteamAPI_ISteamAppList_GetAppBuildId", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "int" + } + ], + "version_string": "STEAMAPPLIST_INTERFACE_VERSION001" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamHTMLSurface", + "name_flat": "SteamAPI_SteamHTMLSurface_v005" + } + ], + "classname": "ISteamHTMLSurface", + "enums": [ + { + "enumname": "EHTMLMouseButton", + "fqname": "ISteamHTMLSurface::EHTMLMouseButton", + "values": [ + { "name":"eHTMLMouseButton_Left", "value":"0" }, + { "name":"eHTMLMouseButton_Right", "value":"1" }, + { "name":"eHTMLMouseButton_Middle", "value":"2" } + ] + }, + { + "enumname": "EMouseCursor", + "fqname": "ISteamHTMLSurface::EMouseCursor", + "values": [ + { "name":"dc_user", "value":"0" }, + { "name":"dc_none", "value":"1" }, + { "name":"dc_arrow", "value":"2" }, + { "name":"dc_ibeam", "value":"3" }, + { "name":"dc_hourglass", "value":"4" }, + { "name":"dc_waitarrow", "value":"5" }, + { "name":"dc_crosshair", "value":"6" }, + { "name":"dc_up", "value":"7" }, + { "name":"dc_sizenw", "value":"8" }, + { "name":"dc_sizese", "value":"9" }, + { "name":"dc_sizene", "value":"10" }, + { "name":"dc_sizesw", "value":"11" }, + { "name":"dc_sizew", "value":"12" }, + { "name":"dc_sizee", "value":"13" }, + { "name":"dc_sizen", "value":"14" }, + { "name":"dc_sizes", "value":"15" }, + { "name":"dc_sizewe", "value":"16" }, + { "name":"dc_sizens", "value":"17" }, + { "name":"dc_sizeall", "value":"18" }, + { "name":"dc_no", "value":"19" }, + { "name":"dc_hand", "value":"20" }, + { "name":"dc_blank", "value":"21" }, + { "name":"dc_middle_pan", "value":"22" }, + { "name":"dc_north_pan", "value":"23" }, + { "name":"dc_north_east_pan", "value":"24" }, + { "name":"dc_east_pan", "value":"25" }, + { "name":"dc_south_east_pan", "value":"26" }, + { "name":"dc_south_pan", "value":"27" }, + { "name":"dc_south_west_pan", "value":"28" }, + { "name":"dc_west_pan", "value":"29" }, + { "name":"dc_north_west_pan", "value":"30" }, + { "name":"dc_alias", "value":"31" }, + { "name":"dc_cell", "value":"32" }, + { "name":"dc_colresize", "value":"33" }, + { "name":"dc_copycur", "value":"34" }, + { "name":"dc_verticaltext", "value":"35" }, + { "name":"dc_rowresize", "value":"36" }, + { "name":"dc_zoomin", "value":"37" }, + { "name":"dc_zoomout", "value":"38" }, + { "name":"dc_help", "value":"39" }, + { "name":"dc_custom", "value":"40" }, + { "name":"dc_last", "value":"41" } + ] + }, + { + "enumname": "EHTMLKeyModifiers", + "fqname": "ISteamHTMLSurface::EHTMLKeyModifiers", + "values": [ + { "name":"k_eHTMLKeyModifier_None", "value":"0" }, + { "name":"k_eHTMLKeyModifier_AltDown", "value":"1" }, + { "name":"k_eHTMLKeyModifier_CtrlDown", "value":"2" }, + { "name":"k_eHTMLKeyModifier_ShiftDown", "value":"4" } + ] + } + ], + "fields": [], + "methods": [ + { + "methodname": "Init", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_Init", + "params": [], + "returntype": "bool" + }, + { + "methodname": "Shutdown", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_Shutdown", + "params": [], + "returntype": "bool" + }, + { + "callresult": "HTML_BrowserReady_t", + "methodname": "CreateBrowser", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_CreateBrowser", + "params": [ + { "paramname":"pchUserAgent", "paramtype":"const char *" }, + { "paramname":"pchUserCSS", "paramtype":"const char *" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "RemoveBrowser", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_RemoveBrowser", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "LoadURL", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_LoadURL", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"pchURL", "paramtype":"const char *" }, + { "paramname":"pchPostData", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetSize", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetSize", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"unWidth", "paramtype":"uint32" }, + { "paramname":"unHeight", "paramtype":"uint32" } + ], + "returntype": "void" + }, + { + "methodname": "StopLoad", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_StopLoad", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "Reload", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_Reload", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "GoBack", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_GoBack", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "GoForward", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_GoForward", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "AddHeader", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_AddHeader", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"pchKey", "paramtype":"const char *" }, + { "paramname":"pchValue", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "ExecuteJavascript", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_ExecuteJavascript", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"pchScript", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "MouseUp", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_MouseUp", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"eMouseButton", "paramtype":"ISteamHTMLSurface::EHTMLMouseButton" } + ], + "returntype": "void" + }, + { + "methodname": "MouseDown", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_MouseDown", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"eMouseButton", "paramtype":"ISteamHTMLSurface::EHTMLMouseButton" } + ], + "returntype": "void" + }, + { + "methodname": "MouseDoubleClick", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_MouseDoubleClick", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"eMouseButton", "paramtype":"ISteamHTMLSurface::EHTMLMouseButton" } + ], + "returntype": "void" + }, + { + "methodname": "MouseMove", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_MouseMove", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"x", "paramtype":"int" }, + { "paramname":"y", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "MouseWheel", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_MouseWheel", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"nDelta", "paramtype":"int32" } + ], + "returntype": "void" + }, + { + "methodname": "KeyDown", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_KeyDown", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"nNativeKeyCode", "paramtype":"uint32" }, + { "paramname":"eHTMLKeyModifiers", "paramtype":"ISteamHTMLSurface::EHTMLKeyModifiers" }, + { "paramname":"bIsSystemKey", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "KeyUp", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_KeyUp", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"nNativeKeyCode", "paramtype":"uint32" }, + { "paramname":"eHTMLKeyModifiers", "paramtype":"ISteamHTMLSurface::EHTMLKeyModifiers" } + ], + "returntype": "void" + }, + { + "methodname": "KeyChar", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_KeyChar", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"cUnicodeChar", "paramtype":"uint32" }, + { "paramname":"eHTMLKeyModifiers", "paramtype":"ISteamHTMLSurface::EHTMLKeyModifiers" } + ], + "returntype": "void" + }, + { + "methodname": "SetHorizontalScroll", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetHorizontalScroll", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"nAbsolutePixelScroll", "paramtype":"uint32" } + ], + "returntype": "void" + }, + { + "methodname": "SetVerticalScroll", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetVerticalScroll", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"nAbsolutePixelScroll", "paramtype":"uint32" } + ], + "returntype": "void" + }, + { + "methodname": "SetKeyFocus", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetKeyFocus", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"bHasKeyFocus", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "ViewSource", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_ViewSource", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "CopyToClipboard", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_CopyToClipboard", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "PasteFromClipboard", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_PasteFromClipboard", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "Find", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_Find", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"pchSearchStr", "paramtype":"const char *" }, + { "paramname":"bCurrentlyInFind", "paramtype":"bool" }, + { "paramname":"bReverse", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "StopFind", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_StopFind", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "GetLinkAtPosition", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_GetLinkAtPosition", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"x", "paramtype":"int" }, + { "paramname":"y", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "SetCookie", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetCookie", + "params": [ + { "paramname":"pchHostname", "paramtype":"const char *" }, + { "paramname":"pchKey", "paramtype":"const char *" }, + { "paramname":"pchValue", "paramtype":"const char *" }, + { "paramname":"pchPath", "paramtype":"const char *" }, + { "paramname":"nExpires", "paramtype":"RTime32" }, + { "paramname":"bSecure", "paramtype":"bool" }, + { "paramname":"bHTTPOnly", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "SetPageScaleFactor", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetPageScaleFactor", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"flZoom", "paramtype":"float" }, + { "paramname":"nPointX", "paramtype":"int" }, + { "paramname":"nPointY", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "SetBackgroundMode", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetBackgroundMode", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"bBackgroundMode", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "SetDPIScalingFactor", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_SetDPIScalingFactor", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"flDPIScaling", "paramtype":"float" } + ], + "returntype": "void" + }, + { + "methodname": "OpenDeveloperTools", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_OpenDeveloperTools", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" } + ], + "returntype": "void" + }, + { + "methodname": "AllowStartRequest", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_AllowStartRequest", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"bAllowed", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "JSDialogResponse", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_JSDialogResponse", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"bResult", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "ignore": null, + "methodname": "FileLoadDialogResponse", + "methodname_flat": "SteamAPI_ISteamHTMLSurface_FileLoadDialogResponse", + "params": [ + { "paramname":"unBrowserHandle", "paramtype":"HHTMLBrowser" }, + { "paramname":"pchSelectedFiles", "paramtype":"const char **" } + ], + "returntype": "void" + } + ], + "version_string": "STEAMHTMLSURFACE_INTERFACE_VERSION_005" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamInventory", + "name_flat": "SteamAPI_SteamInventory_v003" + }, + { + "kind": "gameserver", + "name": "SteamGameServerInventory", + "name_flat": "SteamAPI_SteamGameServerInventory_v003" + } + ], + "classname": "ISteamInventory", + "fields": [], + "methods": [ + { + "desc": "Find out the status of an asynchronous inventory result handle.", + "methodname": "GetResultStatus", + "methodname_flat": "SteamAPI_ISteamInventory_GetResultStatus", + "params": [ + { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" } + ], + "returntype": "EResult" + }, + { + "desc": "Copies the contents of a result set into a flat array. The specific contents of the result set depend on which query which was used.", + "methodname": "GetResultItems", + "methodname_flat": "SteamAPI_ISteamInventory_GetResultItems", + "params": [ + { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" }, + { + "desc": "Output array", + "out_array_count": "punOutItemsArraySize", + "paramname": "pOutItemsArray", + "paramtype": "SteamItemDetails_t *" + }, + { "paramname":"punOutItemsArraySize", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetResultItemProperty", + "methodname_flat": "SteamAPI_ISteamInventory_GetResultItemProperty", + "params": [ + { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" }, + { "paramname":"unItemIndex", "paramtype":"uint32" }, + { "paramname":"pchPropertyName", "paramtype":"const char *" }, + { + "out_string_count": "punValueBufferSizeOut", + "paramname": "pchValueBuffer", + "paramtype": "char *" + }, + { "paramname":"punValueBufferSizeOut", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "desc": "Returns the server time at which the result was generated. Compare against the value of IClientUtils::GetServerRealTime() to determine age.", + "methodname": "GetResultTimestamp", + "methodname_flat": "SteamAPI_ISteamInventory_GetResultTimestamp", + "params": [ + { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" } + ], + "returntype": "uint32" + }, + { + "desc": "Returns true if the result belongs to the target steam ID or false if the result does not. This is important when using DeserializeResult to verify that a remote player is not pretending to have a different users inventory.", + "methodname": "CheckResultSteamID", + "methodname_flat": "SteamAPI_ISteamInventory_CheckResultSteamID", + "params": [ + { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" }, + { "paramname":"steamIDExpected", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "desc": "Destroys a result handle and frees all associated memory.", + "methodname": "DestroyResult", + "methodname_flat": "SteamAPI_ISteamInventory_DestroyResult", + "params": [ + { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" } + ], + "returntype": "void" + }, + { + "desc": "Captures the entire state of the current users Steam inventory.", + "methodname": "GetAllItems", + "methodname_flat": "SteamAPI_ISteamInventory_GetAllItems", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" } + ], + "returntype": "bool" + }, + { + "desc": "Captures the state of a subset of the current users Steam inventory identified by an array of item instance IDs.", + "methodname": "GetItemsByID", + "methodname_flat": "SteamAPI_ISteamInventory_GetItemsByID", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { + "array_count": "unCountInstanceIDs", + "paramname": "pInstanceIDs", + "paramtype": "const SteamItemInstanceID_t *" + }, + { "paramname":"unCountInstanceIDs", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "SerializeResult", + "methodname_flat": "SteamAPI_ISteamInventory_SerializeResult", + "params": [ + { "paramname":"resultHandle", "paramtype":"SteamInventoryResult_t" }, + { + "out_buffer_count": "punOutBufferSize", + "paramname": "pOutBuffer", + "paramtype": "void *" + }, + { "paramname":"punOutBufferSize", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "DeserializeResult", + "methodname_flat": "SteamAPI_ISteamInventory_DeserializeResult", + "params": [ + { "paramname":"pOutResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { + "buffer_count": "punOutBufferSize", + "paramname": "pBuffer", + "paramtype": "const void *" + }, + { "paramname":"unBufferSize", "paramtype":"uint32" }, + { "paramname":"bRESERVED_MUST_BE_FALSE", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "GenerateItems", + "methodname_flat": "SteamAPI_ISteamInventory_GenerateItems", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { + "array_count": "unArrayLength", + "paramname": "pArrayItemDefs", + "paramtype": "const SteamItemDef_t *" + }, + { + "array_count": "unArrayLength", + "paramname": "punArrayQuantity", + "paramtype": "const uint32 *" + }, + { "paramname":"unArrayLength", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "desc": "GrantPromoItems() checks the list of promotional items for which the user may be eligible and grants the items (one time only).", + "methodname": "GrantPromoItems", + "methodname_flat": "SteamAPI_ISteamInventory_GrantPromoItems", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "AddPromoItem", + "methodname_flat": "SteamAPI_ISteamInventory_AddPromoItem", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { "paramname":"itemDef", "paramtype":"SteamItemDef_t" } + ], + "returntype": "bool" + }, + { + "methodname": "AddPromoItems", + "methodname_flat": "SteamAPI_ISteamInventory_AddPromoItems", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { + "array_count": "unArrayLength", + "paramname": "pArrayItemDefs", + "paramtype": "const SteamItemDef_t *" + }, + { "paramname":"unArrayLength", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "desc": "ConsumeItem() removes items from the inventory permanently.", + "methodname": "ConsumeItem", + "methodname_flat": "SteamAPI_ISteamInventory_ConsumeItem", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { "paramname":"itemConsume", "paramtype":"SteamItemInstanceID_t" }, + { "paramname":"unQuantity", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "ExchangeItems", + "methodname_flat": "SteamAPI_ISteamInventory_ExchangeItems", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { + "array_count": "unArrayGenerateLength", + "paramname": "pArrayGenerate", + "paramtype": "const SteamItemDef_t *" + }, + { + "array_count": "unArrayGenerateLength", + "paramname": "punArrayGenerateQuantity", + "paramtype": "const uint32 *" + }, + { "paramname":"unArrayGenerateLength", "paramtype":"uint32" }, + { + "array_count": "unArrayDestroyLength", + "paramname": "pArrayDestroy", + "paramtype": "const SteamItemInstanceID_t *" + }, + { + "array_count": "unArrayDestroyLength", + "paramname": "punArrayDestroyQuantity", + "paramtype": "const uint32 *" + }, + { "paramname":"unArrayDestroyLength", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "TransferItemQuantity", + "methodname_flat": "SteamAPI_ISteamInventory_TransferItemQuantity", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { "paramname":"itemIdSource", "paramtype":"SteamItemInstanceID_t" }, + { "paramname":"unQuantity", "paramtype":"uint32" }, + { "paramname":"itemIdDest", "paramtype":"SteamItemInstanceID_t" } + ], + "returntype": "bool" + }, + { + "desc": "Deprecated method. Playtime accounting is performed on the Steam servers.", + "methodname": "SendItemDropHeartbeat", + "methodname_flat": "SteamAPI_ISteamInventory_SendItemDropHeartbeat", + "params": [], + "returntype": "void" + }, + { + "desc": "Playtime credit must be consumed and turned into item drops by your game.", + "methodname": "TriggerItemDrop", + "methodname_flat": "SteamAPI_ISteamInventory_TriggerItemDrop", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { "paramname":"dropListDefinition", "paramtype":"SteamItemDef_t" } + ], + "returntype": "bool" + }, + { + "methodname": "TradeItems", + "methodname_flat": "SteamAPI_ISteamInventory_TradeItems", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { "paramname":"steamIDTradePartner", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { + "array_count": "nArrayGiveLength", + "paramname": "pArrayGive", + "paramtype": "const SteamItemInstanceID_t *" + }, + { + "array_count": "nArrayGiveLength", + "paramname": "pArrayGiveQuantity", + "paramtype": "const uint32 *" + }, + { "paramname":"nArrayGiveLength", "paramtype":"uint32" }, + { + "array_count": "nArrayGetLength", + "paramname": "pArrayGet", + "paramtype": "const SteamItemInstanceID_t *" + }, + { + "array_count": "nArrayGetLength", + "paramname": "pArrayGetQuantity", + "paramtype": "const uint32 *" + }, + { "paramname":"nArrayGetLength", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "desc": "LoadItemDefinitions triggers the automatic load and refresh of item definitions.", + "methodname": "LoadItemDefinitions", + "methodname_flat": "SteamAPI_ISteamInventory_LoadItemDefinitions", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetItemDefinitionIDs", + "methodname_flat": "SteamAPI_ISteamInventory_GetItemDefinitionIDs", + "params": [ + { + "desc": "List of item definition IDs", + "out_array_count": "punItemDefIDsArraySize", + "paramname": "pItemDefIDs", + "paramtype": "SteamItemDef_t *" + }, + { + "desc": "Size of array is passed in and actual size used is returned in this param", + "paramname": "punItemDefIDsArraySize", + "paramtype": "uint32 *" + } + ], + "returntype": "bool" + }, + { + "methodname": "GetItemDefinitionProperty", + "methodname_flat": "SteamAPI_ISteamInventory_GetItemDefinitionProperty", + "params": [ + { "paramname":"iDefinition", "paramtype":"SteamItemDef_t" }, + { "paramname":"pchPropertyName", "paramtype":"const char *" }, + { + "out_string_count": "punValueBufferSizeOut", + "paramname": "pchValueBuffer", + "paramtype": "char *" + }, + { "paramname":"punValueBufferSizeOut", "paramtype":"uint32 *" } + ], + "returntype": "bool" + }, + { + "callresult": "SteamInventoryEligiblePromoItemDefIDs_t", + "methodname": "RequestEligiblePromoItemDefinitionsIDs", + "methodname_flat": "SteamAPI_ISteamInventory_RequestEligiblePromoItemDefinitionsIDs", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetEligiblePromoItemDefinitionIDs", + "methodname_flat": "SteamAPI_ISteamInventory_GetEligiblePromoItemDefinitionIDs", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { + "desc": "List of item definition IDs", + "out_array_count": "punItemDefIDsArraySize", + "paramname": "pItemDefIDs", + "paramtype": "SteamItemDef_t *" + }, + { + "desc": "Size of array is passed in and actual size used is returned in this param", + "paramname": "punItemDefIDsArraySize", + "paramtype": "uint32 *" + } + ], + "returntype": "bool" + }, + { + "callresult": "SteamInventoryStartPurchaseResult_t", + "methodname": "StartPurchase", + "methodname_flat": "SteamAPI_ISteamInventory_StartPurchase", + "params": [ + { + "array_count": "unArrayLength", + "paramname": "pArrayItemDefs", + "paramtype": "const SteamItemDef_t *" + }, + { + "array_count": "unArrayLength", + "paramname": "punArrayQuantity", + "paramtype": "const uint32 *" + }, + { "paramname":"unArrayLength", "paramtype":"uint32" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "SteamInventoryRequestPricesResult_t", + "methodname": "RequestPrices", + "methodname_flat": "SteamAPI_ISteamInventory_RequestPrices", + "params": [], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetNumItemsWithPrices", + "methodname_flat": "SteamAPI_ISteamInventory_GetNumItemsWithPrices", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetItemsWithPrices", + "methodname_flat": "SteamAPI_ISteamInventory_GetItemsWithPrices", + "params": [ + { + "array_count": "unArrayLength", + "desc": "Items with prices", + "out_array_count": "pArrayItemDefs", + "paramname": "pArrayItemDefs", + "paramtype": "SteamItemDef_t *" + }, + { + "array_count": "unArrayLength", + "desc": "List of prices for the given item defs", + "out_array_count": "pPrices", + "paramname": "pCurrentPrices", + "paramtype": "uint64 *" + }, + { + "array_count": "unArrayLength", + "desc": "List of prices for the given item defs", + "out_array_count": "pPrices", + "paramname": "pBasePrices", + "paramtype": "uint64 *" + }, + { "paramname":"unArrayLength", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetItemPrice", + "methodname_flat": "SteamAPI_ISteamInventory_GetItemPrice", + "params": [ + { "paramname":"iDefinition", "paramtype":"SteamItemDef_t" }, + { "paramname":"pCurrentPrice", "paramtype":"uint64 *" }, + { "paramname":"pBasePrice", "paramtype":"uint64 *" } + ], + "returntype": "bool" + }, + { + "methodname": "StartUpdateProperties", + "methodname_flat": "SteamAPI_ISteamInventory_StartUpdateProperties", + "params": [], + "returntype": "SteamInventoryUpdateHandle_t" + }, + { + "methodname": "RemoveProperty", + "methodname_flat": "SteamAPI_ISteamInventory_RemoveProperty", + "params": [ + { "paramname":"handle", "paramtype":"SteamInventoryUpdateHandle_t" }, + { "paramname":"nItemID", "paramtype":"SteamItemInstanceID_t" }, + { "paramname":"pchPropertyName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetProperty", + "methodname_flat": "SteamAPI_ISteamInventory_SetPropertyString", + "params": [ + { "paramname":"handle", "paramtype":"SteamInventoryUpdateHandle_t" }, + { "paramname":"nItemID", "paramtype":"SteamItemInstanceID_t" }, + { "paramname":"pchPropertyName", "paramtype":"const char *" }, + { "paramname":"pchPropertyValue", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetProperty", + "methodname_flat": "SteamAPI_ISteamInventory_SetPropertyBool", + "params": [ + { "paramname":"handle", "paramtype":"SteamInventoryUpdateHandle_t" }, + { "paramname":"nItemID", "paramtype":"SteamItemInstanceID_t" }, + { "paramname":"pchPropertyName", "paramtype":"const char *" }, + { "paramname":"bValue", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "SetProperty", + "methodname_flat": "SteamAPI_ISteamInventory_SetPropertyInt64", + "params": [ + { "paramname":"handle", "paramtype":"SteamInventoryUpdateHandle_t" }, + { "paramname":"nItemID", "paramtype":"SteamItemInstanceID_t" }, + { "paramname":"pchPropertyName", "paramtype":"const char *" }, + { "paramname":"nValue", "paramtype":"int64" } + ], + "returntype": "bool" + }, + { + "methodname": "SetProperty", + "methodname_flat": "SteamAPI_ISteamInventory_SetPropertyFloat", + "params": [ + { "paramname":"handle", "paramtype":"SteamInventoryUpdateHandle_t" }, + { "paramname":"nItemID", "paramtype":"SteamItemInstanceID_t" }, + { "paramname":"pchPropertyName", "paramtype":"const char *" }, + { "paramname":"flValue", "paramtype":"float" } + ], + "returntype": "bool" + }, + { + "methodname": "SubmitUpdateProperties", + "methodname_flat": "SteamAPI_ISteamInventory_SubmitUpdateProperties", + "params": [ + { "paramname":"handle", "paramtype":"SteamInventoryUpdateHandle_t" }, + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" } + ], + "returntype": "bool" + }, + { + "desc": "Look up the given token and return a pseudo-Inventory item.", + "methodname": "InspectItem", + "methodname_flat": "SteamAPI_ISteamInventory_InspectItem", + "params": [ + { "paramname":"pResultHandle", "paramtype":"SteamInventoryResult_t *" }, + { "paramname":"pchItemToken", "paramtype":"const char *" } + ], + "returntype": "bool" + } + ], + "version_string": "STEAMINVENTORY_INTERFACE_V003" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamVideo", + "name_flat": "SteamAPI_SteamVideo_v002" + } + ], + "classname": "ISteamVideo", + "fields": [], + "methods": [ + { + "methodname": "GetVideoURL", + "methodname_flat": "SteamAPI_ISteamVideo_GetVideoURL", + "params": [ + { "paramname":"unVideoAppID", "paramtype":"AppId_t" } + ], + "returntype": "void" + }, + { + "methodname": "IsBroadcasting", + "methodname_flat": "SteamAPI_ISteamVideo_IsBroadcasting", + "params": [ + { "paramname":"pnNumViewers", "paramtype":"int *" } + ], + "returntype": "bool" + }, + { + "callback": "GetOPFSettingsResult_t", + "methodname": "GetOPFSettings", + "methodname_flat": "SteamAPI_ISteamVideo_GetOPFSettings", + "params": [ + { "paramname":"unVideoAppID", "paramtype":"AppId_t" } + ], + "returntype": "void" + }, + { + "methodname": "GetOPFStringForApp", + "methodname_flat": "SteamAPI_ISteamVideo_GetOPFStringForApp", + "params": [ + { "paramname":"unVideoAppID", "paramtype":"AppId_t" }, + { "paramname":"pchBuffer", "paramtype":"char *" }, + { "paramname":"pnBufferSize", "paramtype":"int32 *" } + ], + "returntype": "bool" + } + ], + "version_string": "STEAMVIDEO_INTERFACE_V002" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamParentalSettings", + "name_flat": "SteamAPI_SteamParentalSettings_v001" + } + ], + "classname": "ISteamParentalSettings", + "fields": [], + "methods": [ + { + "methodname": "BIsParentalLockEnabled", + "methodname_flat": "SteamAPI_ISteamParentalSettings_BIsParentalLockEnabled", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsParentalLockLocked", + "methodname_flat": "SteamAPI_ISteamParentalSettings_BIsParentalLockLocked", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BIsAppBlocked", + "methodname_flat": "SteamAPI_ISteamParentalSettings_BIsAppBlocked", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "bool" + }, + { + "methodname": "BIsAppInBlockList", + "methodname_flat": "SteamAPI_ISteamParentalSettings_BIsAppInBlockList", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "bool" + }, + { + "methodname": "BIsFeatureBlocked", + "methodname_flat": "SteamAPI_ISteamParentalSettings_BIsFeatureBlocked", + "params": [ + { "paramname":"eFeature", "paramtype":"EParentalFeature" } + ], + "returntype": "bool" + }, + { + "methodname": "BIsFeatureInBlockList", + "methodname_flat": "SteamAPI_ISteamParentalSettings_BIsFeatureInBlockList", + "params": [ + { "paramname":"eFeature", "paramtype":"EParentalFeature" } + ], + "returntype": "bool" + } + ], + "version_string": "STEAMPARENTALSETTINGS_INTERFACE_VERSION001" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamRemotePlay", + "name_flat": "SteamAPI_SteamRemotePlay_v001" + } + ], + "classname": "ISteamRemotePlay", + "fields": [], + "methods": [ + { + "methodname": "GetSessionCount", + "methodname_flat": "SteamAPI_ISteamRemotePlay_GetSessionCount", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "GetSessionID", + "methodname_flat": "SteamAPI_ISteamRemotePlay_GetSessionID", + "params": [ + { "paramname":"iSessionIndex", "paramtype":"int" } + ], + "returntype": "RemotePlaySessionID_t" + }, + { + "methodname": "GetSessionSteamID", + "methodname_flat": "SteamAPI_ISteamRemotePlay_GetSessionSteamID", + "params": [ + { "paramname":"unSessionID", "paramtype":"RemotePlaySessionID_t" } + ], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "GetSessionClientName", + "methodname_flat": "SteamAPI_ISteamRemotePlay_GetSessionClientName", + "params": [ + { "paramname":"unSessionID", "paramtype":"RemotePlaySessionID_t" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetSessionClientFormFactor", + "methodname_flat": "SteamAPI_ISteamRemotePlay_GetSessionClientFormFactor", + "params": [ + { "paramname":"unSessionID", "paramtype":"RemotePlaySessionID_t" } + ], + "returntype": "ESteamDeviceFormFactor" + }, + { + "methodname": "BGetSessionClientResolution", + "methodname_flat": "SteamAPI_ISteamRemotePlay_BGetSessionClientResolution", + "params": [ + { "paramname":"unSessionID", "paramtype":"RemotePlaySessionID_t" }, + { "paramname":"pnResolutionX", "paramtype":"int *" }, + { "paramname":"pnResolutionY", "paramtype":"int *" } + ], + "returntype": "bool" + }, + { + "methodname": "BSendRemotePlayTogetherInvite", + "methodname_flat": "SteamAPI_ISteamRemotePlay_BSendRemotePlayTogetherInvite", + "params": [ + { "paramname":"steamIDFriend", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + } + ], + "version_string": "STEAMREMOTEPLAY_INTERFACE_VERSION001" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamNetworkingMessages_SteamAPI", + "name_flat": "SteamAPI_SteamNetworkingMessages_SteamAPI_v002" + }, + { + "kind": "gameserver", + "name": "SteamGameServerNetworkingMessages_SteamAPI", + "name_flat": "SteamAPI_SteamGameServerNetworkingMessages_SteamAPI_v002" + } + ], + "classname": "ISteamNetworkingMessages", + "fields": [], + "methods": [ + { + "methodname": "SendMessageToUser", + "methodname_flat": "SteamAPI_ISteamNetworkingMessages_SendMessageToUser", + "params": [ + { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" }, + { "paramname":"pubData", "paramtype":"const void *" }, + { "paramname":"cubData", "paramtype":"uint32" }, + { "paramname":"nSendFlags", "paramtype":"int" }, + { "paramname":"nRemoteChannel", "paramtype":"int" } + ], + "returntype": "EResult" + }, + { + "methodname": "ReceiveMessagesOnChannel", + "methodname_flat": "SteamAPI_ISteamNetworkingMessages_ReceiveMessagesOnChannel", + "params": [ + { "paramname":"nLocalChannel", "paramtype":"int" }, + { "paramname":"ppOutMessages", "paramtype":"SteamNetworkingMessage_t **" }, + { "paramname":"nMaxMessages", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "AcceptSessionWithUser", + "methodname_flat": "SteamAPI_ISteamNetworkingMessages_AcceptSessionWithUser", + "params": [ + { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" } + ], + "returntype": "bool" + }, + { + "methodname": "CloseSessionWithUser", + "methodname_flat": "SteamAPI_ISteamNetworkingMessages_CloseSessionWithUser", + "params": [ + { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" } + ], + "returntype": "bool" + }, + { + "methodname": "CloseChannelWithUser", + "methodname_flat": "SteamAPI_ISteamNetworkingMessages_CloseChannelWithUser", + "params": [ + { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" }, + { "paramname":"nLocalChannel", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "GetSessionConnectionInfo", + "methodname_flat": "SteamAPI_ISteamNetworkingMessages_GetSessionConnectionInfo", + "params": [ + { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" }, + { "paramname":"pConnectionInfo", "paramtype":"SteamNetConnectionInfo_t *" }, + { "paramname":"pQuickStatus", "paramtype":"SteamNetworkingQuickConnectionStatus *" } + ], + "returntype": "ESteamNetworkingConnectionState" + } + ], + "version_string": "SteamNetworkingMessages002" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamNetworkingSockets_SteamAPI", + "name_flat": "SteamAPI_SteamNetworkingSockets_SteamAPI_v009" + }, + { + "kind": "gameserver", + "name": "SteamGameServerNetworkingSockets_SteamAPI", + "name_flat": "SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v009" + } + ], + "classname": "ISteamNetworkingSockets", + "fields": [], + "methods": [ + { + "methodname": "CreateListenSocketIP", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreateListenSocketIP", + "params": [ + { "paramname":"localAddress", "paramtype":"const SteamNetworkingIPAddr &" }, + { "paramname":"nOptions", "paramtype":"int" }, + { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } + ], + "returntype": "HSteamListenSocket" + }, + { + "methodname": "ConnectByIPAddress", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ConnectByIPAddress", + "params": [ + { "paramname":"address", "paramtype":"const SteamNetworkingIPAddr &" }, + { "paramname":"nOptions", "paramtype":"int" }, + { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } + ], + "returntype": "HSteamNetConnection" + }, + { + "methodname": "CreateListenSocketP2P", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreateListenSocketP2P", + "params": [ + { "paramname":"nLocalVirtualPort", "paramtype":"int" }, + { "paramname":"nOptions", "paramtype":"int" }, + { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } + ], + "returntype": "HSteamListenSocket" + }, + { + "methodname": "ConnectP2P", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ConnectP2P", + "params": [ + { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" }, + { "paramname":"nRemoteVirtualPort", "paramtype":"int" }, + { "paramname":"nOptions", "paramtype":"int" }, + { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } + ], + "returntype": "HSteamNetConnection" + }, + { + "methodname": "AcceptConnection", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_AcceptConnection", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" } + ], + "returntype": "EResult" + }, + { + "methodname": "CloseConnection", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CloseConnection", + "params": [ + { "paramname":"hPeer", "paramtype":"HSteamNetConnection" }, + { "paramname":"nReason", "paramtype":"int" }, + { "paramname":"pszDebug", "paramtype":"const char *" }, + { "paramname":"bEnableLinger", "paramtype":"bool" } + ], + "returntype": "bool" + }, + { + "methodname": "CloseListenSocket", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CloseListenSocket", + "params": [ + { "paramname":"hSocket", "paramtype":"HSteamListenSocket" } + ], + "returntype": "bool" + }, + { + "methodname": "SetConnectionUserData", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_SetConnectionUserData", + "params": [ + { "paramname":"hPeer", "paramtype":"HSteamNetConnection" }, + { "paramname":"nUserData", "paramtype":"int64" } + ], + "returntype": "bool" + }, + { + "methodname": "GetConnectionUserData", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetConnectionUserData", + "params": [ + { "paramname":"hPeer", "paramtype":"HSteamNetConnection" } + ], + "returntype": "int64" + }, + { + "methodname": "SetConnectionName", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_SetConnectionName", + "params": [ + { "paramname":"hPeer", "paramtype":"HSteamNetConnection" }, + { "paramname":"pszName", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "GetConnectionName", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetConnectionName", + "params": [ + { "paramname":"hPeer", "paramtype":"HSteamNetConnection" }, + { "paramname":"pszName", "paramtype":"char *" }, + { "paramname":"nMaxLen", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "SendMessageToConnection", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_SendMessageToConnection", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"pData", "paramtype":"const void *" }, + { "paramname":"cbData", "paramtype":"uint32" }, + { "paramname":"nSendFlags", "paramtype":"int" }, + { "paramname":"pOutMessageNumber", "paramtype":"int64 *" } + ], + "returntype": "EResult" + }, + { + "methodname": "SendMessages", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_SendMessages", + "params": [ + { "paramname":"nMessages", "paramtype":"int" }, + { "paramname":"pMessages", "paramtype":"SteamNetworkingMessage_t *const *" }, + { "paramname":"pOutMessageNumberOrResult", "paramtype":"int64 *" } + ], + "returntype": "void" + }, + { + "methodname": "FlushMessagesOnConnection", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_FlushMessagesOnConnection", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" } + ], + "returntype": "EResult" + }, + { + "methodname": "ReceiveMessagesOnConnection", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ReceiveMessagesOnConnection", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"ppOutMessages", "paramtype":"SteamNetworkingMessage_t **" }, + { "paramname":"nMaxMessages", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "GetConnectionInfo", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetConnectionInfo", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"pInfo", "paramtype":"SteamNetConnectionInfo_t *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetQuickConnectionStatus", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetQuickConnectionStatus", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"pStats", "paramtype":"SteamNetworkingQuickConnectionStatus *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetDetailedConnectionStatus", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetDetailedConnectionStatus", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"pszBuf", "paramtype":"char *" }, + { "paramname":"cbBuf", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "GetListenSocketAddress", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetListenSocketAddress", + "params": [ + { "paramname":"hSocket", "paramtype":"HSteamListenSocket" }, + { "paramname":"address", "paramtype":"SteamNetworkingIPAddr *" } + ], + "returntype": "bool" + }, + { + "methodname": "CreateSocketPair", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreateSocketPair", + "params": [ + { "paramname":"pOutConnection1", "paramtype":"HSteamNetConnection *" }, + { "paramname":"pOutConnection2", "paramtype":"HSteamNetConnection *" }, + { "paramname":"bUseNetworkLoopback", "paramtype":"bool" }, + { "paramname":"pIdentity1", "paramtype":"const SteamNetworkingIdentity *" }, + { "paramname":"pIdentity2", "paramtype":"const SteamNetworkingIdentity *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetIdentity", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetIdentity", + "params": [ + { "paramname":"pIdentity", "paramtype":"SteamNetworkingIdentity *" } + ], + "returntype": "bool" + }, + { + "methodname": "InitAuthentication", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_InitAuthentication", + "params": [], + "returntype": "ESteamNetworkingAvailability" + }, + { + "methodname": "GetAuthenticationStatus", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetAuthenticationStatus", + "params": [ + { "paramname":"pDetails", "paramtype":"SteamNetAuthenticationStatus_t *" } + ], + "returntype": "ESteamNetworkingAvailability" + }, + { + "methodname": "CreatePollGroup", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreatePollGroup", + "params": [], + "returntype": "HSteamNetPollGroup" + }, + { + "methodname": "DestroyPollGroup", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_DestroyPollGroup", + "params": [ + { "paramname":"hPollGroup", "paramtype":"HSteamNetPollGroup" } + ], + "returntype": "bool" + }, + { + "methodname": "SetConnectionPollGroup", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_SetConnectionPollGroup", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"hPollGroup", "paramtype":"HSteamNetPollGroup" } + ], + "returntype": "bool" + }, + { + "methodname": "ReceiveMessagesOnPollGroup", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ReceiveMessagesOnPollGroup", + "params": [ + { "paramname":"hPollGroup", "paramtype":"HSteamNetPollGroup" }, + { "paramname":"ppOutMessages", "paramtype":"SteamNetworkingMessage_t **" }, + { "paramname":"nMaxMessages", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "ReceivedRelayAuthTicket", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ReceivedRelayAuthTicket", + "params": [ + { "paramname":"pvTicket", "paramtype":"const void *" }, + { "paramname":"cbTicket", "paramtype":"int" }, + { "paramname":"pOutParsedTicket", "paramtype":"SteamDatagramRelayAuthTicket *" } + ], + "returntype": "bool" + }, + { + "methodname": "FindRelayAuthTicketForServer", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_FindRelayAuthTicketForServer", + "params": [ + { "paramname":"identityGameServer", "paramtype":"const SteamNetworkingIdentity &" }, + { "paramname":"nRemoteVirtualPort", "paramtype":"int" }, + { "paramname":"pOutParsedTicket", "paramtype":"SteamDatagramRelayAuthTicket *" } + ], + "returntype": "int" + }, + { + "methodname": "ConnectToHostedDedicatedServer", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ConnectToHostedDedicatedServer", + "params": [ + { "paramname":"identityTarget", "paramtype":"const SteamNetworkingIdentity &" }, + { "paramname":"nRemoteVirtualPort", "paramtype":"int" }, + { "paramname":"nOptions", "paramtype":"int" }, + { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } + ], + "returntype": "HSteamNetConnection" + }, + { + "methodname": "GetHostedDedicatedServerPort", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerPort", + "params": [], + "returntype": "uint16" + }, + { + "methodname": "GetHostedDedicatedServerPOPID", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerPOPID", + "params": [], + "returntype": "SteamNetworkingPOPID" + }, + { + "methodname": "GetHostedDedicatedServerAddress", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerAddress", + "params": [ + { "paramname":"pRouting", "paramtype":"SteamDatagramHostedAddress *" } + ], + "returntype": "EResult" + }, + { + "methodname": "CreateHostedDedicatedServerListenSocket", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreateHostedDedicatedServerListenSocket", + "params": [ + { "paramname":"nLocalVirtualPort", "paramtype":"int" }, + { "paramname":"nOptions", "paramtype":"int" }, + { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } + ], + "returntype": "HSteamListenSocket" + }, + { + "methodname": "GetGameCoordinatorServerLogin", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetGameCoordinatorServerLogin", + "params": [ + { "paramname":"pLoginInfo", "paramtype":"SteamDatagramGameCoordinatorServerLogin *" }, + { "paramname":"pcbSignedBlob", "paramtype":"int *" }, + { "paramname":"pBlob", "paramtype":"void *" } + ], + "returntype": "EResult" + }, + { + "methodname": "ConnectP2PCustomSignaling", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ConnectP2PCustomSignaling", + "params": [ + { "paramname":"pSignaling", "paramtype":"ISteamNetworkingConnectionSignaling *" }, + { "paramname":"pPeerIdentity", "paramtype":"const SteamNetworkingIdentity *" }, + { "paramname":"nRemoteVirtualPort", "paramtype":"int" }, + { "paramname":"nOptions", "paramtype":"int" }, + { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } + ], + "returntype": "HSteamNetConnection" + }, + { + "methodname": "ReceivedP2PCustomSignal", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ReceivedP2PCustomSignal", + "params": [ + { "paramname":"pMsg", "paramtype":"const void *" }, + { "paramname":"cbMsg", "paramtype":"int" }, + { "paramname":"pContext", "paramtype":"ISteamNetworkingSignalingRecvContext *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetCertificateRequest", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetCertificateRequest", + "params": [ + { "paramname":"pcbBlob", "paramtype":"int *" }, + { "paramname":"pBlob", "paramtype":"void *" }, + { "paramname":"errMsg", "paramtype":"SteamNetworkingErrMsg &" } + ], + "returntype": "bool" + }, + { + "methodname": "SetCertificate", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_SetCertificate", + "params": [ + { "paramname":"pCertificate", "paramtype":"const void *" }, + { "paramname":"cbCertificate", "paramtype":"int" }, + { "paramname":"errMsg", "paramtype":"SteamNetworkingErrMsg &" } + ], + "returntype": "bool" + }, + { + "methodname": "RunCallbacks", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_RunCallbacks", + "params": [], + "returntype": "void" + } + ], + "version_string": "SteamNetworkingSockets009" + }, + { + "accessors": [ + { + "kind": "global", + "name": "SteamNetworkingUtils_SteamAPI", + "name_flat": "SteamAPI_SteamNetworkingUtils_SteamAPI_v003" + } + ], + "classname": "ISteamNetworkingUtils", + "fields": [], + "methods": [ + { + "methodname": "AllocateMessage", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_AllocateMessage", + "params": [ + { "paramname":"cbAllocateBuffer", "paramtype":"int" } + ], + "returntype": "SteamNetworkingMessage_t *" + }, + { + "methodname": "InitRelayNetworkAccess", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_InitRelayNetworkAccess", + "params": [], + "returntype": "void" + }, + { + "methodname": "GetRelayNetworkStatus", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetRelayNetworkStatus", + "params": [ + { "paramname":"pDetails", "paramtype":"SteamRelayNetworkStatus_t *" } + ], + "returntype": "ESteamNetworkingAvailability" + }, + { + "methodname": "GetLocalPingLocation", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetLocalPingLocation", + "params": [ + { "paramname":"result", "paramtype":"SteamNetworkPingLocation_t &" } + ], + "returntype": "float" + }, + { + "methodname": "EstimatePingTimeBetweenTwoLocations", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_EstimatePingTimeBetweenTwoLocations", + "params": [ + { "paramname":"location1", "paramtype":"const SteamNetworkPingLocation_t &" }, + { "paramname":"location2", "paramtype":"const SteamNetworkPingLocation_t &" } + ], + "returntype": "int" + }, + { + "methodname": "EstimatePingTimeFromLocalHost", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_EstimatePingTimeFromLocalHost", + "params": [ + { "paramname":"remoteLocation", "paramtype":"const SteamNetworkPingLocation_t &" } + ], + "returntype": "int" + }, + { + "methodname": "ConvertPingLocationToString", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_ConvertPingLocationToString", + "params": [ + { "paramname":"location", "paramtype":"const SteamNetworkPingLocation_t &" }, + { "paramname":"pszBuf", "paramtype":"char *" }, + { "paramname":"cchBufSize", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "ParsePingLocationString", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_ParsePingLocationString", + "params": [ + { "paramname":"pszString", "paramtype":"const char *" }, + { "paramname":"result", "paramtype":"SteamNetworkPingLocation_t &" } + ], + "returntype": "bool" + }, + { + "methodname": "CheckPingDataUpToDate", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_CheckPingDataUpToDate", + "params": [ + { "paramname":"flMaxAgeSeconds", "paramtype":"float" } + ], + "returntype": "bool" + }, + { + "methodname": "GetPingToDataCenter", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetPingToDataCenter", + "params": [ + { "paramname":"popID", "paramtype":"SteamNetworkingPOPID" }, + { "paramname":"pViaRelayPoP", "paramtype":"SteamNetworkingPOPID *" } + ], + "returntype": "int" + }, + { + "methodname": "GetDirectPingToPOP", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetDirectPingToPOP", + "params": [ + { "paramname":"popID", "paramtype":"SteamNetworkingPOPID" } + ], + "returntype": "int" + }, + { + "methodname": "GetPOPCount", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetPOPCount", + "params": [], + "returntype": "int" + }, + { + "methodname": "GetPOPList", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetPOPList", + "params": [ + { "paramname":"list", "paramtype":"SteamNetworkingPOPID *" }, + { "paramname":"nListSz", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "GetLocalTimestamp", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetLocalTimestamp", + "params": [], + "returntype": "SteamNetworkingMicroseconds" + }, + { + "methodname": "SetDebugOutputFunction", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetDebugOutputFunction", + "params": [ + { "paramname":"eDetailLevel", "paramtype":"ESteamNetworkingSocketsDebugOutputType" }, + { "paramname":"pfnFunc", "paramtype":"FSteamNetworkingSocketsDebugOutput" } + ], + "returntype": "void" + }, + { + "methodname": "SetGlobalConfigValueInt32", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueInt32", + "params": [ + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"val", "paramtype":"int32" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGlobalConfigValueFloat", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueFloat", + "params": [ + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"val", "paramtype":"float" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGlobalConfigValueString", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueString", + "params": [ + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"val", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGlobalConfigValuePtr", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValuePtr", + "params": [ + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"val", "paramtype":"void *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetConnectionConfigValueInt32", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueInt32", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"val", "paramtype":"int32" } + ], + "returntype": "bool" + }, + { + "methodname": "SetConnectionConfigValueFloat", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueFloat", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"val", "paramtype":"float" } + ], + "returntype": "bool" + }, + { + "methodname": "SetConnectionConfigValueString", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueString", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"val", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGlobalCallback_SteamNetConnectionStatusChanged", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamNetConnectionStatusChanged", + "params": [ + { "paramname":"fnCallback", "paramtype":"FnSteamNetConnectionStatusChanged" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGlobalCallback_SteamNetAuthenticationStatusChanged", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamNetAuthenticationStatusChanged", + "params": [ + { "paramname":"fnCallback", "paramtype":"FnSteamNetAuthenticationStatusChanged" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGlobalCallback_SteamRelayNetworkStatusChanged", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamRelayNetworkStatusChanged", + "params": [ + { "paramname":"fnCallback", "paramtype":"FnSteamRelayNetworkStatusChanged" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGlobalCallback_MessagesSessionRequest", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_MessagesSessionRequest", + "params": [ + { "paramname":"fnCallback", "paramtype":"FnSteamNetworkingMessagesSessionRequest" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGlobalCallback_MessagesSessionFailed", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_MessagesSessionFailed", + "params": [ + { "paramname":"fnCallback", "paramtype":"FnSteamNetworkingMessagesSessionFailed" } + ], + "returntype": "bool" + }, + { + "methodname": "SetConfigValue", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetConfigValue", + "params": [ + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"eScopeType", "paramtype":"ESteamNetworkingConfigScope" }, + { "paramname":"scopeObj", "paramtype":"intptr_t" }, + { "paramname":"eDataType", "paramtype":"ESteamNetworkingConfigDataType" }, + { "paramname":"pArg", "paramtype":"const void *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetConfigValueStruct", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetConfigValueStruct", + "params": [ + { "paramname":"opt", "paramtype":"const SteamNetworkingConfigValue_t &" }, + { "paramname":"eScopeType", "paramtype":"ESteamNetworkingConfigScope" }, + { "paramname":"scopeObj", "paramtype":"intptr_t" } + ], + "returntype": "bool" + }, + { + "methodname": "GetConfigValue", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetConfigValue", + "params": [ + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"eScopeType", "paramtype":"ESteamNetworkingConfigScope" }, + { "paramname":"scopeObj", "paramtype":"intptr_t" }, + { "paramname":"pOutDataType", "paramtype":"ESteamNetworkingConfigDataType *" }, + { "paramname":"pResult", "paramtype":"void *" }, + { "paramname":"cbResult", "paramtype":"size_t *" } + ], + "returntype": "ESteamNetworkingGetConfigValueResult" + }, + { + "methodname": "GetConfigValueInfo", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetConfigValueInfo", + "params": [ + { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"pOutName", "paramtype":"const char **" }, + { "paramname":"pOutDataType", "paramtype":"ESteamNetworkingConfigDataType *" }, + { "paramname":"pOutScope", "paramtype":"ESteamNetworkingConfigScope *" }, + { "paramname":"pOutNextValue", "paramtype":"ESteamNetworkingConfigValue *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetFirstConfigValue", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetFirstConfigValue", + "params": [], + "returntype": "ESteamNetworkingConfigValue" + }, + { + "methodname": "SteamNetworkingIPAddr_ToString", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ToString", + "params": [ + { "paramname":"addr", "paramtype":"const SteamNetworkingIPAddr &" }, + { "paramname":"buf", "paramtype":"char *" }, + { "paramname":"cbBuf", "paramtype":"uint32" }, + { "paramname":"bWithPort", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "SteamNetworkingIPAddr_ParseString", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ParseString", + "params": [ + { "paramname":"pAddr", "paramtype":"SteamNetworkingIPAddr *" }, + { "paramname":"pszStr", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "SteamNetworkingIdentity_ToString", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ToString", + "params": [ + { "paramname":"identity", "paramtype":"const SteamNetworkingIdentity &" }, + { "paramname":"buf", "paramtype":"char *" }, + { "paramname":"cbBuf", "paramtype":"uint32" } + ], + "returntype": "void" + }, + { + "methodname": "SteamNetworkingIdentity_ParseString", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ParseString", + "params": [ + { "paramname":"pIdentity", "paramtype":"SteamNetworkingIdentity *" }, + { "paramname":"pszStr", "paramtype":"const char *" } + ], + "returntype": "bool" + } + ], + "version_string": "SteamNetworkingUtils003" + }, + { + "accessors": [ + { + "kind": "gameserver", + "name": "SteamGameServer", + "name_flat": "SteamAPI_SteamGameServer_v013" + } + ], + "classname": "ISteamGameServer", + "fields": [], + "methods": [ + { + "methodname": "SetProduct", + "methodname_flat": "SteamAPI_ISteamGameServer_SetProduct", + "params": [ + { "paramname":"pszProduct", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetGameDescription", + "methodname_flat": "SteamAPI_ISteamGameServer_SetGameDescription", + "params": [ + { "paramname":"pszGameDescription", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetModDir", + "methodname_flat": "SteamAPI_ISteamGameServer_SetModDir", + "params": [ + { "paramname":"pszModDir", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetDedicatedServer", + "methodname_flat": "SteamAPI_ISteamGameServer_SetDedicatedServer", + "params": [ + { "paramname":"bDedicated", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "LogOn", + "methodname_flat": "SteamAPI_ISteamGameServer_LogOn", + "params": [ + { "paramname":"pszToken", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "LogOnAnonymous", + "methodname_flat": "SteamAPI_ISteamGameServer_LogOnAnonymous", + "params": [], + "returntype": "void" + }, + { + "methodname": "LogOff", + "methodname_flat": "SteamAPI_ISteamGameServer_LogOff", + "params": [], + "returntype": "void" + }, + { + "methodname": "BLoggedOn", + "methodname_flat": "SteamAPI_ISteamGameServer_BLoggedOn", + "params": [], + "returntype": "bool" + }, + { + "methodname": "BSecure", + "methodname_flat": "SteamAPI_ISteamGameServer_BSecure", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetSteamID", + "methodname_flat": "SteamAPI_ISteamGameServer_GetSteamID", + "params": [], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "WasRestartRequested", + "methodname_flat": "SteamAPI_ISteamGameServer_WasRestartRequested", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetMaxPlayerCount", + "methodname_flat": "SteamAPI_ISteamGameServer_SetMaxPlayerCount", + "params": [ + { "paramname":"cPlayersMax", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "SetBotPlayerCount", + "methodname_flat": "SteamAPI_ISteamGameServer_SetBotPlayerCount", + "params": [ + { "paramname":"cBotplayers", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "SetServerName", + "methodname_flat": "SteamAPI_ISteamGameServer_SetServerName", + "params": [ + { "paramname":"pszServerName", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetMapName", + "methodname_flat": "SteamAPI_ISteamGameServer_SetMapName", + "params": [ + { "paramname":"pszMapName", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetPasswordProtected", + "methodname_flat": "SteamAPI_ISteamGameServer_SetPasswordProtected", + "params": [ + { "paramname":"bPasswordProtected", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "SetSpectatorPort", + "methodname_flat": "SteamAPI_ISteamGameServer_SetSpectatorPort", + "params": [ + { "paramname":"unSpectatorPort", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "SetSpectatorServerName", + "methodname_flat": "SteamAPI_ISteamGameServer_SetSpectatorServerName", + "params": [ + { "paramname":"pszSpectatorServerName", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "ClearAllKeyValues", + "methodname_flat": "SteamAPI_ISteamGameServer_ClearAllKeyValues", + "params": [], + "returntype": "void" + }, + { + "methodname": "SetKeyValue", + "methodname_flat": "SteamAPI_ISteamGameServer_SetKeyValue", + "params": [ + { "paramname":"pKey", "paramtype":"const char *" }, + { "paramname":"pValue", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetGameTags", + "methodname_flat": "SteamAPI_ISteamGameServer_SetGameTags", + "params": [ + { "paramname":"pchGameTags", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetGameData", + "methodname_flat": "SteamAPI_ISteamGameServer_SetGameData", + "params": [ + { "paramname":"pchGameData", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetRegion", + "methodname_flat": "SteamAPI_ISteamGameServer_SetRegion", + "params": [ + { "paramname":"pszRegion", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SendUserConnectAndAuthenticate", + "methodname_flat": "SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate", + "params": [ + { "paramname":"unIPClient", "paramtype":"uint32" }, + { "paramname":"pvAuthBlob", "paramtype":"const void *" }, + { "paramname":"cubAuthBlobSize", "paramtype":"uint32" }, + { "paramname":"pSteamIDUser", "paramtype":"CSteamID *" } + ], + "returntype": "bool" + }, + { + "methodname": "CreateUnauthenticatedUserConnection", + "methodname_flat": "SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection", + "params": [], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "SendUserDisconnect", + "methodname_flat": "SteamAPI_ISteamGameServer_SendUserDisconnect", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "BUpdateUserData", + "methodname_flat": "SteamAPI_ISteamGameServer_BUpdateUserData", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchPlayerName", "paramtype":"const char *" }, + { "paramname":"uScore", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetAuthSessionTicket", + "methodname_flat": "SteamAPI_ISteamGameServer_GetAuthSessionTicket", + "params": [ + { "paramname":"pTicket", "paramtype":"void *" }, + { "paramname":"cbMaxTicket", "paramtype":"int" }, + { "paramname":"pcbTicket", "paramtype":"uint32 *" } + ], + "returntype": "HAuthTicket" + }, + { + "methodname": "BeginAuthSession", + "methodname_flat": "SteamAPI_ISteamGameServer_BeginAuthSession", + "params": [ + { "paramname":"pAuthTicket", "paramtype":"const void *" }, + { "paramname":"cbAuthTicket", "paramtype":"int" }, + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "EBeginAuthSessionResult" + }, + { + "methodname": "EndAuthSession", + "methodname_flat": "SteamAPI_ISteamGameServer_EndAuthSession", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "CancelAuthTicket", + "methodname_flat": "SteamAPI_ISteamGameServer_CancelAuthTicket", + "params": [ + { "paramname":"hAuthTicket", "paramtype":"HAuthTicket" } + ], + "returntype": "void" + }, + { + "methodname": "UserHasLicenseForApp", + "methodname_flat": "SteamAPI_ISteamGameServer_UserHasLicenseForApp", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"appID", "paramtype":"AppId_t" } + ], + "returntype": "EUserHasLicenseForAppResult" + }, + { + "methodname": "RequestUserGroupStatus", + "methodname_flat": "SteamAPI_ISteamGameServer_RequestUserGroupStatus", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"steamIDGroup", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "bool" + }, + { + "methodname": "GetGameplayStats", + "methodname_flat": "SteamAPI_ISteamGameServer_GetGameplayStats", + "params": [], + "returntype": "void" + }, + { + "callresult": "GSReputation_t", + "methodname": "GetServerReputation", + "methodname_flat": "SteamAPI_ISteamGameServer_GetServerReputation", + "params": [], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetPublicIP", + "methodname_flat": "SteamAPI_ISteamGameServer_GetPublicIP", + "params": [], + "returntype": "SteamIPAddress_t" + }, + { + "methodname": "HandleIncomingPacket", + "methodname_flat": "SteamAPI_ISteamGameServer_HandleIncomingPacket", + "params": [ + { "paramname":"pData", "paramtype":"const void *" }, + { "paramname":"cbData", "paramtype":"int" }, + { "paramname":"srcIP", "paramtype":"uint32" }, + { "paramname":"srcPort", "paramtype":"uint16" } + ], + "returntype": "bool" + }, + { + "methodname": "GetNextOutgoingPacket", + "methodname_flat": "SteamAPI_ISteamGameServer_GetNextOutgoingPacket", + "params": [ + { "paramname":"pOut", "paramtype":"void *" }, + { "paramname":"cbMaxOut", "paramtype":"int" }, + { "paramname":"pNetAdr", "paramtype":"uint32 *" }, + { "paramname":"pPort", "paramtype":"uint16 *" } + ], + "returntype": "int" + }, + { + "methodname": "EnableHeartbeats", + "methodname_flat": "SteamAPI_ISteamGameServer_EnableHeartbeats", + "params": [ + { "paramname":"bActive", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "SetHeartbeatInterval", + "methodname_flat": "SteamAPI_ISteamGameServer_SetHeartbeatInterval", + "params": [ + { "paramname":"iHeartbeatInterval", "paramtype":"int" } + ], + "returntype": "void" + }, + { + "methodname": "ForceHeartbeat", + "methodname_flat": "SteamAPI_ISteamGameServer_ForceHeartbeat", + "params": [], + "returntype": "void" + }, + { + "callresult": "AssociateWithClanResult_t", + "methodname": "AssociateWithClan", + "methodname_flat": "SteamAPI_ISteamGameServer_AssociateWithClan", + "params": [ + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "callresult": "ComputeNewPlayerCompatibilityResult_t", + "methodname": "ComputeNewPlayerCompatibility", + "methodname_flat": "SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility", + "params": [ + { "paramname":"steamIDNewPlayer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + } + ], + "version_string": "SteamGameServer013" + }, + { + "accessors": [ + { + "kind": "gameserver", + "name": "SteamGameServerStats", + "name_flat": "SteamAPI_SteamGameServerStats_v001" + } + ], + "classname": "ISteamGameServerStats", + "fields": [], + "methods": [ + { + "callresult": "GSStatsReceived_t", + "methodname": "RequestUserStats", + "methodname_flat": "SteamAPI_ISteamGameServerStats_RequestUserStats", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetUserStat", + "methodname_flat": "SteamAPI_ISteamGameServerStats_GetUserStatInt32", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pData", "paramtype":"int32 *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetUserStat", + "methodname_flat": "SteamAPI_ISteamGameServerStats_GetUserStatFloat", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pData", "paramtype":"float *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetUserAchievement", + "methodname_flat": "SteamAPI_ISteamGameServerStats_GetUserAchievement", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"pbAchieved", "paramtype":"bool *" } + ], + "returntype": "bool" + }, + { + "methodname": "SetUserStat", + "methodname_flat": "SteamAPI_ISteamGameServerStats_SetUserStatInt32", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"nData", "paramtype":"int32" } + ], + "returntype": "bool" + }, + { + "methodname": "SetUserStat", + "methodname_flat": "SteamAPI_ISteamGameServerStats_SetUserStatFloat", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"fData", "paramtype":"float" } + ], + "returntype": "bool" + }, + { + "methodname": "UpdateUserAvgRateStat", + "methodname_flat": "SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" }, + { "paramname":"flCountThisSession", "paramtype":"float" }, + { "paramname":"dSessionLength", "paramtype":"double" } + ], + "returntype": "bool" + }, + { + "methodname": "SetUserAchievement", + "methodname_flat": "SteamAPI_ISteamGameServerStats_SetUserAchievement", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "ClearUserAchievement", + "methodname_flat": "SteamAPI_ISteamGameServerStats_ClearUserAchievement", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchName", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "callresult": "GSStatsStored_t", + "methodname": "StoreUserStats", + "methodname_flat": "SteamAPI_ISteamGameServerStats_StoreUserStats", + "params": [ + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + } + ], + "version_string": "SteamGameServerStats001" + } + ], + "structs": [ + { + "fields": [ + { "fieldname":"m_rgubIPv6", "fieldtype":"uint8 [16]" }, + { "fieldname":"m_eType", "fieldtype":"ESteamIPType" } + ], + "methods": [ + { + "methodname": "IsSet", + "methodname_flat": "SteamAPI_SteamIPAddress_t_IsSet", + "params": [], + "returntype": "bool" + } + ], + "struct": "SteamIPAddress_t" + }, + { + "fields": [ + { "fieldname":"m_gameID", "fieldtype":"CGameID" }, + { "fieldname":"m_unGameIP", "fieldtype":"uint32" }, + { "fieldname":"m_usGamePort", "fieldtype":"uint16" }, + { "fieldname":"m_usQueryPort", "fieldtype":"uint16" }, + { "fieldname":"m_steamIDLobby", "fieldtype":"CSteamID" } + ], + "struct": "FriendGameInfo_t" + }, + { + "fields": [ + { "fieldname":"m_szKey", "fieldtype":"char [256]" }, + { "fieldname":"m_szValue", "fieldtype":"char [256]" } + ], + "methods": [ + { + "methodname": "Construct", + "methodname_flat": "SteamAPI_MatchMakingKeyValuePair_t_Construct", + "params": [], + "returntype": "void" + } + ], + "struct": "MatchMakingKeyValuePair_t" + }, + { + "fields": [ + { + "fieldname": "m_usConnectionPort", + "fieldtype": "uint16", + "private": true + }, + { + "fieldname": "m_usQueryPort", + "fieldtype": "uint16", + "private": true + }, + { + "fieldname": "m_unIP", + "fieldtype": "uint32", + "private": true + } + ], + "methods": [ + { + "methodname": "Construct", + "methodname_flat": "SteamAPI_servernetadr_t_Construct", + "params": [], + "returntype": "void" + }, + { + "methodname": "Init", + "methodname_flat": "SteamAPI_servernetadr_t_Init", + "params": [ + { "paramname":"ip", "paramtype":"unsigned int" }, + { "paramname":"usQueryPort", "paramtype":"uint16" }, + { "paramname":"usConnectionPort", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "GetQueryPort", + "methodname_flat": "SteamAPI_servernetadr_t_GetQueryPort", + "params": [], + "returntype": "uint16" + }, + { + "methodname": "SetQueryPort", + "methodname_flat": "SteamAPI_servernetadr_t_SetQueryPort", + "params": [ + { "paramname":"usPort", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "GetConnectionPort", + "methodname_flat": "SteamAPI_servernetadr_t_GetConnectionPort", + "params": [], + "returntype": "uint16" + }, + { + "methodname": "SetConnectionPort", + "methodname_flat": "SteamAPI_servernetadr_t_SetConnectionPort", + "params": [ + { "paramname":"usPort", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "GetIP", + "methodname_flat": "SteamAPI_servernetadr_t_GetIP", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "SetIP", + "methodname_flat": "SteamAPI_servernetadr_t_SetIP", + "params": [ + { "paramname":"unIP", "paramtype":"uint32" } + ], + "returntype": "void" + }, + { + "methodname": "GetConnectionAddressString", + "methodname_flat": "SteamAPI_servernetadr_t_GetConnectionAddressString", + "params": [], + "returntype": "const char *" + }, + { + "methodname": "GetQueryAddressString", + "methodname_flat": "SteamAPI_servernetadr_t_GetQueryAddressString", + "params": [], + "returntype": "const char *" + }, + { + "methodname": "operator<", + "methodname_flat": "SteamAPI_servernetadr_t_IsLessThan", + "params": [ + { "paramname":"netadr", "paramtype":"const servernetadr_t &" } + ], + "returntype": "bool" + }, + { + "methodname": "operator=", + "methodname_flat": "SteamAPI_servernetadr_t_Assign", + "params": [ + { "paramname":"that", "paramtype":"const servernetadr_t &" } + ], + "returntype": "void" + } + ], + "struct": "servernetadr_t" + }, + { + "fields": [ + { "fieldname":"m_NetAdr", "fieldtype":"servernetadr_t" }, + { "fieldname":"m_nPing", "fieldtype":"int" }, + { "fieldname":"m_bHadSuccessfulResponse", "fieldtype":"bool" }, + { "fieldname":"m_bDoNotRefresh", "fieldtype":"bool" }, + { "fieldname":"m_szGameDir", "fieldtype":"char [32]" }, + { "fieldname":"m_szMap", "fieldtype":"char [32]" }, + { "fieldname":"m_szGameDescription", "fieldtype":"char [64]" }, + { "fieldname":"m_nAppID", "fieldtype":"uint32" }, + { "fieldname":"m_nPlayers", "fieldtype":"int" }, + { "fieldname":"m_nMaxPlayers", "fieldtype":"int" }, + { "fieldname":"m_nBotPlayers", "fieldtype":"int" }, + { "fieldname":"m_bPassword", "fieldtype":"bool" }, + { "fieldname":"m_bSecure", "fieldtype":"bool" }, + { "fieldname":"m_ulTimeLastPlayed", "fieldtype":"uint32" }, + { "fieldname":"m_nServerVersion", "fieldtype":"int" }, + { + "fieldname": "m_szServerName", + "fieldtype": "char [64]", + "private": true + }, + { "fieldname":"m_szGameTags", "fieldtype":"char [128]" }, + { "fieldname":"m_steamID", "fieldtype":"CSteamID" } + ], + "methods": [ + { + "methodname": "Construct", + "methodname_flat": "SteamAPI_gameserveritem_t_Construct", + "params": [], + "returntype": "void" + }, + { + "methodname": "GetName", + "methodname_flat": "SteamAPI_gameserveritem_t_GetName", + "params": [], + "returntype": "const char *" + }, + { + "methodname": "SetName", + "methodname_flat": "SteamAPI_gameserveritem_t_SetName", + "params": [ + { "paramname":"pName", "paramtype":"const char *" } + ], + "returntype": "void" + } + ], + "struct": "gameserveritem_t" + }, + { + "fields": [ + { "fieldname":"m_eType", "fieldtype":"ESteamPartyBeaconLocationType" }, + { "fieldname":"m_ulLocationID", "fieldtype":"uint64" } + ], + "struct": "SteamPartyBeaconLocation_t" + }, + { + "fields": [ + { "fieldname":"m_ppStrings", "fieldtype":"const char **" }, + { "fieldname":"m_nNumStrings", "fieldtype":"int32" } + ], + "struct": "SteamParamStringArray_t" + }, + { + "fields": [ + { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" }, + { "fieldname":"m_nGlobalRank", "fieldtype":"int32" }, + { "fieldname":"m_nScore", "fieldtype":"int32" }, + { "fieldname":"m_cDetails", "fieldtype":"int32" }, + { "fieldname":"m_hUGC", "fieldtype":"UGCHandle_t" } + ], + "struct": "LeaderboardEntry_t" + }, + { + "fields": [ + { "fieldname":"m_bConnectionActive", "fieldtype":"uint8" }, + { "fieldname":"m_bConnecting", "fieldtype":"uint8" }, + { "fieldname":"m_eP2PSessionError", "fieldtype":"uint8" }, + { "fieldname":"m_bUsingRelay", "fieldtype":"uint8" }, + { "fieldname":"m_nBytesQueuedForSend", "fieldtype":"int32" }, + { "fieldname":"m_nPacketsQueuedForSend", "fieldtype":"int32" }, + { "fieldname":"m_nRemoteIP", "fieldtype":"uint32" }, + { "fieldname":"m_nRemotePort", "fieldtype":"uint16" } + ], + "struct": "P2PSessionState_t" + }, + { + "fields": [ + { "fieldname":"eMode", "fieldtype":"EInputSourceMode" }, + { "fieldname":"x", "fieldtype":"float" }, + { "fieldname":"y", "fieldtype":"float" }, + { "fieldname":"bActive", "fieldtype":"bool" } + ], + "struct": "InputAnalogActionData_t" + }, + { + "fields": [ + { "fieldname":"bState", "fieldtype":"bool" }, + { "fieldname":"bActive", "fieldtype":"bool" } + ], + "struct": "InputDigitalActionData_t" + }, + { + "fields": [ + { "fieldname":"rotQuatX", "fieldtype":"float" }, + { "fieldname":"rotQuatY", "fieldtype":"float" }, + { "fieldname":"rotQuatZ", "fieldtype":"float" }, + { "fieldname":"rotQuatW", "fieldtype":"float" }, + { "fieldname":"posAccelX", "fieldtype":"float" }, + { "fieldname":"posAccelY", "fieldtype":"float" }, + { "fieldname":"posAccelZ", "fieldtype":"float" }, + { "fieldname":"rotVelX", "fieldtype":"float" }, + { "fieldname":"rotVelY", "fieldtype":"float" }, + { "fieldname":"rotVelZ", "fieldtype":"float" } + ], + "struct": "InputMotionData_t" + }, + { + "fields": [ + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_eFileType", "fieldtype":"EWorkshopFileType" }, + { "fieldname":"m_nCreatorAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_nConsumerAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_rgchTitle", "fieldtype":"char [129]" }, + { "fieldname":"m_rgchDescription", "fieldtype":"char [8000]" }, + { "fieldname":"m_ulSteamIDOwner", "fieldtype":"uint64" }, + { "fieldname":"m_rtimeCreated", "fieldtype":"uint32" }, + { "fieldname":"m_rtimeUpdated", "fieldtype":"uint32" }, + { "fieldname":"m_rtimeAddedToUserList", "fieldtype":"uint32" }, + { "fieldname":"m_eVisibility", "fieldtype":"ERemoteStoragePublishedFileVisibility" }, + { "fieldname":"m_bBanned", "fieldtype":"bool" }, + { "fieldname":"m_bAcceptedForUse", "fieldtype":"bool" }, + { "fieldname":"m_bTagsTruncated", "fieldtype":"bool" }, + { "fieldname":"m_rgchTags", "fieldtype":"char [1025]" }, + { "fieldname":"m_hFile", "fieldtype":"UGCHandle_t" }, + { "fieldname":"m_hPreviewFile", "fieldtype":"UGCHandle_t" }, + { "fieldname":"m_pchFileName", "fieldtype":"char [260]" }, + { "fieldname":"m_nFileSize", "fieldtype":"int32" }, + { "fieldname":"m_nPreviewFileSize", "fieldtype":"int32" }, + { "fieldname":"m_rgchURL", "fieldtype":"char [256]" }, + { "fieldname":"m_unVotesUp", "fieldtype":"uint32" }, + { "fieldname":"m_unVotesDown", "fieldtype":"uint32" }, + { "fieldname":"m_flScore", "fieldtype":"float" }, + { "fieldname":"m_unNumChildren", "fieldtype":"uint32" } + ], + "struct": "SteamUGCDetails_t" + }, + { + "fields": [ + { "fieldname":"m_itemId", "fieldtype":"SteamItemInstanceID_t" }, + { "fieldname":"m_iDefinition", "fieldtype":"SteamItemDef_t" }, + { "fieldname":"m_unQuantity", "fieldtype":"uint16" }, + { "fieldname":"m_unFlags", "fieldtype":"uint16" } + ], + "struct": "SteamItemDetails_t" + }, + { + "consts": [ + { "constname":"k_cchMaxString", "consttype":"int", "constval":"48" } + ], + "fields": [ + { "fieldname":"m_ipv6", "fieldtype":"uint8 [16]" }, + { "fieldname":"m_port", "fieldtype":"uint16" } + ], + "methods": [ + { + "methodname": "Clear", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_Clear", + "params": [], + "returntype": "void" + }, + { + "methodname": "IsIPv6AllZeros", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_IsIPv6AllZeros", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetIPv6", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_SetIPv6", + "params": [ + { "paramname":"ipv6", "paramtype":"const uint8 *" }, + { "paramname":"nPort", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "SetIPv4", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_SetIPv4", + "params": [ + { "paramname":"nIP", "paramtype":"uint32" }, + { "paramname":"nPort", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "IsIPv4", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_IsIPv4", + "params": [], + "returntype": "bool" + }, + { + "methodname": "GetIPv4", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_GetIPv4", + "params": [], + "returntype": "uint32" + }, + { + "methodname": "SetIPv6LocalHost", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_SetIPv6LocalHost", + "params": [ + { "paramname":"nPort", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "IsLocalHost", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_IsLocalHost", + "params": [], + "returntype": "bool" + }, + { + "methodname": "ToString", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_ToString", + "params": [ + { "paramname":"buf", "paramtype":"char *" }, + { "paramname":"cbBuf", "paramtype":"uint32" }, + { "paramname":"bWithPort", "paramtype":"bool" } + ], + "returntype": "void" + }, + { + "methodname": "ParseString", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_ParseString", + "params": [ + { "paramname":"pszStr", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "operator==", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_IsEqualTo", + "params": [ + { "paramname":"x", "paramtype":"const SteamNetworkingIPAddr &" } + ], + "returntype": "bool" + } + ], + "struct": "SteamNetworkingIPAddr" + }, + { + "consts": [ + { "constname":"k_cchMaxString", "consttype":"int", "constval":"128" }, + { "constname":"k_cchMaxGenericString", "consttype":"int", "constval":"32" }, + { "constname":"k_cchMaxXboxPairwiseID", "consttype":"int", "constval":"33" }, + { "constname":"k_cbMaxGenericBytes", "consttype":"int", "constval":"32" } + ], + "fields": [ + { "fieldname":"m_eType", "fieldtype":"ESteamNetworkingIdentityType" }, + { "fieldname":"m_cbSize", "fieldtype":"int" }, + { "fieldname":"m_szUnknownRawString", "fieldtype":"char [128]" } + ], + "methods": [ + { + "methodname": "Clear", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_Clear", + "params": [], + "returntype": "void" + }, + { + "methodname": "IsInvalid", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_IsInvalid", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetSteamID", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetSteamID", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "void" + }, + { + "methodname": "GetSteamID", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetSteamID", + "params": [], + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" + }, + { + "methodname": "SetSteamID64", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetSteamID64", + "params": [ + { "paramname":"steamID", "paramtype":"uint64" } + ], + "returntype": "void" + }, + { + "methodname": "GetSteamID64", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetSteamID64", + "params": [], + "returntype": "uint64" + }, + { + "methodname": "SetXboxPairwiseID", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetXboxPairwiseID", + "params": [ + { "paramname":"pszString", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetXboxPairwiseID", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetXboxPairwiseID", + "params": [], + "returntype": "const char *" + }, + { + "methodname": "SetPSNID", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetPSNID", + "params": [ + { "paramname":"id", "paramtype":"uint64" } + ], + "returntype": "void" + }, + { + "methodname": "GetPSNID", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetPSNID", + "params": [], + "returntype": "uint64" + }, + { + "methodname": "SetStadiaID", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetStadiaID", + "params": [ + { "paramname":"id", "paramtype":"uint64" } + ], + "returntype": "void" + }, + { + "methodname": "GetStadiaID", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetStadiaID", + "params": [], + "returntype": "uint64" + }, + { + "methodname": "SetIPAddr", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetIPAddr", + "params": [ + { "paramname":"addr", "paramtype":"const SteamNetworkingIPAddr &" } + ], + "returntype": "void" + }, + { + "methodname": "GetIPAddr", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetIPAddr", + "params": [], + "returntype": "const SteamNetworkingIPAddr *" + }, + { + "methodname": "SetLocalHost", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetLocalHost", + "params": [], + "returntype": "void" + }, + { + "methodname": "IsLocalHost", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_IsLocalHost", + "params": [], + "returntype": "bool" + }, + { + "methodname": "SetGenericString", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetGenericString", + "params": [ + { "paramname":"pszString", "paramtype":"const char *" } + ], + "returntype": "bool" + }, + { + "methodname": "GetGenericString", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetGenericString", + "params": [], + "returntype": "const char *" + }, + { + "methodname": "SetGenericBytes", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetGenericBytes", + "params": [ + { "paramname":"data", "paramtype":"const void *" }, + { "paramname":"cbLen", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetGenericBytes", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetGenericBytes", + "params": [ + { "paramname":"cbLen", "paramtype":"int &" } + ], + "returntype": "const uint8 *" + }, + { + "methodname": "operator==", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_IsEqualTo", + "params": [ + { "paramname":"x", "paramtype":"const SteamNetworkingIdentity &" } + ], + "returntype": "bool" + }, + { + "methodname": "ToString", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_ToString", + "params": [ + { "paramname":"buf", "paramtype":"char *" }, + { "paramname":"cbBuf", "paramtype":"uint32" } + ], + "returntype": "void" + }, + { + "methodname": "ParseString", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_ParseString", + "params": [ + { "paramname":"pszStr", "paramtype":"const char *" } + ], + "returntype": "bool" + } + ], + "struct": "SteamNetworkingIdentity" + }, + { + "fields": [ + { "fieldname":"m_identityRemote", "fieldtype":"SteamNetworkingIdentity" }, + { "fieldname":"m_nUserData", "fieldtype":"int64" }, + { "fieldname":"m_hListenSocket", "fieldtype":"HSteamListenSocket" }, + { "fieldname":"m_addrRemote", "fieldtype":"SteamNetworkingIPAddr" }, + { "fieldname":"m__pad1", "fieldtype":"uint16" }, + { "fieldname":"m_idPOPRemote", "fieldtype":"SteamNetworkingPOPID" }, + { "fieldname":"m_idPOPRelay", "fieldtype":"SteamNetworkingPOPID" }, + { "fieldname":"m_eState", "fieldtype":"ESteamNetworkingConnectionState" }, + { "fieldname":"m_eEndReason", "fieldtype":"int" }, + { "fieldname":"m_szEndDebug", "fieldtype":"char [128]" }, + { "fieldname":"m_szConnectionDescription", "fieldtype":"char [128]" }, + { "fieldname":"m_eTransportKind", "fieldtype":"ESteamNetTransportKind" }, + { "fieldname":"reserved", "fieldtype":"uint32 [63]" } + ], + "struct": "SteamNetConnectionInfo_t" + }, + { + "fields": [ + { "fieldname":"m_eState", "fieldtype":"ESteamNetworkingConnectionState" }, + { "fieldname":"m_nPing", "fieldtype":"int" }, + { "fieldname":"m_flConnectionQualityLocal", "fieldtype":"float" }, + { "fieldname":"m_flConnectionQualityRemote", "fieldtype":"float" }, + { "fieldname":"m_flOutPacketsPerSec", "fieldtype":"float" }, + { "fieldname":"m_flOutBytesPerSec", "fieldtype":"float" }, + { "fieldname":"m_flInPacketsPerSec", "fieldtype":"float" }, + { "fieldname":"m_flInBytesPerSec", "fieldtype":"float" }, + { "fieldname":"m_nSendRateBytesPerSecond", "fieldtype":"int" }, + { "fieldname":"m_cbPendingUnreliable", "fieldtype":"int" }, + { "fieldname":"m_cbPendingReliable", "fieldtype":"int" }, + { "fieldname":"m_cbSentUnackedReliable", "fieldtype":"int" }, + { "fieldname":"m_usecQueueTime", "fieldtype":"SteamNetworkingMicroseconds" }, + { "fieldname":"reserved", "fieldtype":"uint32 [16]" } + ], + "struct": "SteamNetworkingQuickConnectionStatus" + }, + { + "fields": [ + { "fieldname":"m_pData", "fieldtype":"void *" }, + { "fieldname":"m_cbSize", "fieldtype":"int" }, + { "fieldname":"m_conn", "fieldtype":"HSteamNetConnection" }, + { "fieldname":"m_identityPeer", "fieldtype":"SteamNetworkingIdentity" }, + { "fieldname":"m_nConnUserData", "fieldtype":"int64" }, + { "fieldname":"m_usecTimeReceived", "fieldtype":"SteamNetworkingMicroseconds" }, + { "fieldname":"m_nMessageNumber", "fieldtype":"int64" }, + { "fieldname":"m_pfnFreeData", "fieldtype":"void (*)(SteamNetworkingMessage_t *)" }, + { "fieldname":"m_pfnRelease", "fieldtype":"void (*)(SteamNetworkingMessage_t *)" }, + { "fieldname":"m_nChannel", "fieldtype":"int" }, + { "fieldname":"m_nFlags", "fieldtype":"int" }, + { "fieldname":"m_nUserData", "fieldtype":"int64" } + ], + "methods": [ + { + "methodname": "Release", + "methodname_flat": "SteamAPI_SteamNetworkingMessage_t_Release", + "params": [], + "returntype": "void" + } + ], + "struct": "SteamNetworkingMessage_t" + }, + { + "fields": [ + { "fieldname":"m_data", "fieldtype":"uint8 [512]" } + ], + "struct": "SteamNetworkPingLocation_t" + }, + { + "fields": [ + { "fieldname":"m_eValue", "fieldtype":"ESteamNetworkingConfigValue" }, + { "fieldname":"m_eDataType", "fieldtype":"ESteamNetworkingConfigDataType" }, + { "fieldname":"m_int64", "fieldtype":"int64_t" } + ], + "methods": [ + { + "methodname": "SetInt32", + "methodname_flat": "SteamAPI_SteamNetworkingConfigValue_t_SetInt32", + "params": [ + { "paramname":"eVal", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"data", "paramtype":"int32_t" } + ], + "returntype": "void" + }, + { + "methodname": "SetInt64", + "methodname_flat": "SteamAPI_SteamNetworkingConfigValue_t_SetInt64", + "params": [ + { "paramname":"eVal", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"data", "paramtype":"int64_t" } + ], + "returntype": "void" + }, + { + "methodname": "SetFloat", + "methodname_flat": "SteamAPI_SteamNetworkingConfigValue_t_SetFloat", + "params": [ + { "paramname":"eVal", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"data", "paramtype":"float" } + ], + "returntype": "void" + }, + { + "methodname": "SetPtr", + "methodname_flat": "SteamAPI_SteamNetworkingConfigValue_t_SetPtr", + "params": [ + { "paramname":"eVal", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"data", "paramtype":"void *" } + ], + "returntype": "void" + }, + { + "methodname": "SetString", + "methodname_flat": "SteamAPI_SteamNetworkingConfigValue_t_SetString", + "params": [ + { "paramname":"eVal", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"data", "paramtype":"const char *" } + ], + "returntype": "void" + } + ], + "struct": "SteamNetworkingConfigValue_t" + }, + { + "fields": [ + { + "fieldname": "buf", + "fieldtype": "char [8]", + "private": true + } + ], + "methods": [ + { + "methodname": "c_str", + "methodname_flat": "SteamAPI_SteamNetworkingPOPIDRender_c_str", + "params": [], + "returntype": "const char *" + } + ], + "struct": "SteamNetworkingPOPIDRender" + }, + { + "fields": [ + { + "fieldname": "buf", + "fieldtype": "char [128]", + "private": true + } + ], + "methods": [ + { + "methodname": "c_str", + "methodname_flat": "SteamAPI_SteamNetworkingIdentityRender_c_str", + "params": [], + "returntype": "const char *" + } + ], + "struct": "SteamNetworkingIdentityRender" + }, + { + "fields": [ + { + "fieldname": "buf", + "fieldtype": "char [48]", + "private": true + } + ], + "methods": [ + { + "methodname": "c_str", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddrRender_c_str", + "params": [], + "returntype": "const char *" + } + ], + "struct": "SteamNetworkingIPAddrRender" + }, + { + "fields": [ + { "fieldname":"m_cbSize", "fieldtype":"int" }, + { "fieldname":"m_data", "fieldtype":"char [128]" } + ], + "methods": [ + { + "methodname": "Clear", + "methodname_flat": "SteamAPI_SteamDatagramHostedAddress_Clear", + "params": [], + "returntype": "void" + }, + { + "methodname": "GetPopID", + "methodname_flat": "SteamAPI_SteamDatagramHostedAddress_GetPopID", + "params": [], + "returntype": "SteamNetworkingPOPID" + }, + { + "methodname": "SetDevAddress", + "methodname_flat": "SteamAPI_SteamDatagramHostedAddress_SetDevAddress", + "params": [ + { "paramname":"nIP", "paramtype":"uint32" }, + { "paramname":"nPort", "paramtype":"uint16" }, + { "paramname":"popid", "paramtype":"SteamNetworkingPOPID" } + ], + "returntype": "void" + } + ], + "struct": "SteamDatagramHostedAddress" + }, + { + "fields": [ + { "fieldname":"m_identity", "fieldtype":"SteamNetworkingIdentity" }, + { "fieldname":"m_routing", "fieldtype":"SteamDatagramHostedAddress" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_rtime", "fieldtype":"RTime32" }, + { "fieldname":"m_cbAppData", "fieldtype":"int" }, + { "fieldname":"m_appData", "fieldtype":"char [2048]" } + ], + "struct": "SteamDatagramGameCoordinatorServerLogin" + } + ], + "typedefs": [ + { "typedef":"uint8", "type":"unsigned char" }, + { "typedef":"int8", "type":"signed char" }, + { "typedef":"int16", "type":"short" }, + { "typedef":"uint16", "type":"unsigned short" }, + { "typedef":"int32", "type":"int" }, + { "typedef":"uint32", "type":"unsigned int" }, + { "typedef":"int64", "type":"long long" }, + { "typedef":"uint64", "type":"unsigned long long" }, + { "typedef":"lint64", "type":"long long" }, + { "typedef":"ulint64", "type":"unsigned long long" }, + { "typedef":"intp", "type":"long long" }, + { "typedef":"uintp", "type":"unsigned long long" }, + { "typedef":"Salt_t", "type":"unsigned char [8]" }, + { "typedef":"GID_t", "type":"unsigned long long" }, + { "typedef":"JobID_t", "type":"unsigned long long" }, + { "typedef":"TxnID_t", "type":"unsigned long long" }, + { "typedef":"PackageId_t", "type":"unsigned int" }, + { "typedef":"BundleId_t", "type":"unsigned int" }, + { "typedef":"AppId_t", "type":"unsigned int" }, + { "typedef":"AssetClassId_t", "type":"unsigned long long" }, + { "typedef":"PhysicalItemId_t", "type":"unsigned int" }, + { "typedef":"DepotId_t", "type":"unsigned int" }, + { "typedef":"RTime32", "type":"unsigned int" }, + { "typedef":"CellID_t", "type":"unsigned int" }, + { "typedef":"SteamAPICall_t", "type":"unsigned long long" }, + { "typedef":"AccountID_t", "type":"unsigned int" }, + { "typedef":"PartnerId_t", "type":"unsigned int" }, + { "typedef":"ManifestId_t", "type":"unsigned long long" }, + { "typedef":"SiteId_t", "type":"unsigned long long" }, + { "typedef":"PartyBeaconID_t", "type":"unsigned long long" }, + { "typedef":"HAuthTicket", "type":"unsigned int" }, + { "typedef":"PFNLegacyKeyRegistration", "type":"void (*)(const char *, const char *)" }, + { "typedef":"PFNLegacyKeyInstalled", "type":"bool (*)()" }, + { "typedef":"PFNPreMinidumpCallback", "type":"void (*)(void *)" }, + { "typedef":"BREAKPAD_HANDLE", "type":"void *" }, + { "typedef":"HSteamPipe", "type":"int" }, + { "typedef":"HSteamUser", "type":"int" }, + { "typedef":"FriendsGroupID_t", "type":"short" }, + { "typedef":"HServerListRequest", "type":"void *" }, + { "typedef":"HServerQuery", "type":"int" }, + { "typedef":"UGCHandle_t", "type":"unsigned long long" }, + { "typedef":"PublishedFileUpdateHandle_t", "type":"unsigned long long" }, + { "typedef":"PublishedFileId_t", "type":"unsigned long long" }, + { "typedef":"UGCFileWriteStreamHandle_t", "type":"unsigned long long" }, + { "typedef":"SteamLeaderboard_t", "type":"unsigned long long" }, + { "typedef":"SteamLeaderboardEntries_t", "type":"unsigned long long" }, + { "typedef":"SNetSocket_t", "type":"unsigned int" }, + { "typedef":"SNetListenSocket_t", "type":"unsigned int" }, + { "typedef":"ScreenshotHandle", "type":"unsigned int" }, + { "typedef":"HTTPRequestHandle", "type":"unsigned int" }, + { "typedef":"HTTPCookieContainerHandle", "type":"unsigned int" }, + { "typedef":"InputHandle_t", "type":"unsigned long long" }, + { "typedef":"InputActionSetHandle_t", "type":"unsigned long long" }, + { "typedef":"InputDigitalActionHandle_t", "type":"unsigned long long" }, + { "typedef":"InputAnalogActionHandle_t", "type":"unsigned long long" }, + { "typedef":"ControllerHandle_t", "type":"unsigned long long" }, + { "typedef":"ControllerActionSetHandle_t", "type":"unsigned long long" }, + { "typedef":"ControllerDigitalActionHandle_t", "type":"unsigned long long" }, + { "typedef":"ControllerAnalogActionHandle_t", "type":"unsigned long long" }, + { "typedef":"UGCQueryHandle_t", "type":"unsigned long long" }, + { "typedef":"UGCUpdateHandle_t", "type":"unsigned long long" }, + { "typedef":"HHTMLBrowser", "type":"unsigned int" }, + { "typedef":"SteamItemInstanceID_t", "type":"unsigned long long" }, + { "typedef":"SteamItemDef_t", "type":"int" }, + { "typedef":"SteamInventoryResult_t", "type":"int" }, + { "typedef":"SteamInventoryUpdateHandle_t", "type":"unsigned long long" }, + { "typedef":"RemotePlaySessionID_t", "type":"unsigned int" }, + { "typedef":"FnSteamNetConnectionStatusChanged", "type":"void (*)(SteamNetConnectionStatusChangedCallback_t *)" }, + { "typedef":"FnSteamNetAuthenticationStatusChanged", "type":"void (*)(SteamNetAuthenticationStatus_t *)" }, + { "typedef":"FnSteamRelayNetworkStatusChanged", "type":"void (*)(SteamRelayNetworkStatus_t *)" }, + { "typedef":"FnSteamNetworkingMessagesSessionRequest", "type":"void (*)(SteamNetworkingMessagesSessionRequest_t *)" }, + { "typedef":"FnSteamNetworkingMessagesSessionFailed", "type":"void (*)(SteamNetworkingMessagesSessionFailed_t *)" }, + { "typedef":"HSteamNetConnection", "type":"unsigned int" }, + { "typedef":"HSteamListenSocket", "type":"unsigned int" }, + { "typedef":"HSteamNetPollGroup", "type":"unsigned int" }, + { "typedef":"SteamNetworkingErrMsg", "type":"char [1024]" }, + { "typedef":"SteamNetworkingPOPID", "type":"unsigned int" }, + { "typedef":"SteamNetworkingMicroseconds", "type":"long long" }, + { "typedef":"FSteamNetworkingSocketsDebugOutput", "type":"void (*)(ESteamNetworkingSocketsDebugOutputType, const char *)" } + ] +} diff --git a/CodeGen/steam/steam_api_common.h b/CodeGen/steam/steam_api_common.h index 7620a8de..005fb117 100644 --- a/CodeGen/steam/steam_api_common.h +++ b/CodeGen/steam/steam_api_common.h @@ -1,235 +1,235 @@ -//====== Copyright Valve Corporation, All rights reserved. ==================== -// -// Steamworks SDK minimal include -// -// Defines the minimal set of things we need to use any single interface -// or register for any callback. -// -//============================================================================= - -#ifndef STEAM_API_COMMON_H -#define STEAM_API_COMMON_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steamtypes.h" -#include "steamclientpublic.h" - -// S_API defines the linkage and calling conventions for steam_api.dll exports -#if defined( _WIN32 ) && !defined( _X360 ) - #if defined( STEAM_API_EXPORTS ) - #define S_API extern "C" __declspec( dllexport ) - #elif defined( STEAM_API_NODLL ) - #define S_API extern "C" - #else - #define S_API extern "C" __declspec( dllimport ) - #endif // STEAM_API_EXPORTS -#elif defined( GNUC ) - #if defined( STEAM_API_EXPORTS ) - #define S_API extern "C" __attribute__ ((visibility("default"))) - #else - #define S_API extern "C" - #endif // STEAM_API_EXPORTS -#else // !WIN32 - #if defined( STEAM_API_EXPORTS ) - #define S_API extern "C" - #else - #define S_API extern "C" - #endif // STEAM_API_EXPORTS -#endif - -#if ( defined(STEAM_API_EXPORTS) || defined(STEAM_API_NODLL) ) && !defined(API_GEN) -#define STEAM_PRIVATE_API( ... ) __VA_ARGS__ -#elif defined(STEAM_API_EXPORTS) && defined(API_GEN) -#define STEAM_PRIVATE_API( ... ) -#else -#define STEAM_PRIVATE_API( ... ) protected: __VA_ARGS__ public: -#endif - -// handle to a communication pipe to the Steam client -typedef int32 HSteamPipe; -// handle to single instance of a steam user -typedef int32 HSteamUser; -// function prototype -#if defined( POSIX ) -#define __cdecl -#endif -extern "C" typedef void (__cdecl *SteamAPIWarningMessageHook_t)(int, const char *); -extern "C" typedef uint32 ( *SteamAPI_CheckCallbackRegistered_t )( int iCallbackNum ); -#if defined( __SNC__ ) - #pragma diag_suppress=1700 // warning 1700: class "%s" has virtual functions but non-virtual destructor -#endif - -//----------------------------------------------------------------------------------------------------------------------------------------------------------// -// steam callback and call-result helpers -// -// The following macros and classes are used to register your application for -// callbacks and call-results, which are delivered in a predictable manner. -// -// STEAM_CALLBACK macros are meant for use inside of a C++ class definition. -// They map a Steam notification callback directly to a class member function -// which is automatically prototyped as "void func( callback_type *pParam )". -// -// CCallResult is used with specific Steam APIs that return "result handles". -// The handle can be passed to a CCallResult object's Set function, along with -// an object pointer and member-function pointer. The member function will -// be executed once the results of the Steam API call are available. -// -// CCallback and CCallbackManual classes can be used instead of STEAM_CALLBACK -// macros if you require finer control over registration and unregistration. -// -// Callbacks and call-results are queued automatically and are only -// delivered/executed when your application calls SteamAPI_RunCallbacks(). -// -// Note that there is an alternative, lower level callback dispatch mechanism. -// See SteamAPI_ManualDispatch_Init -//----------------------------------------------------------------------------------------------------------------------------------------------------------// - -// Dispatch all queued Steamworks callbacks. -// -// This is safe to call from multiple threads simultaneously, -// but if you choose to do this, callback code could be executed on any thread. -// One alternative is to call SteamAPI_RunCallbacks from the main thread only, -// and call SteamAPI_ReleaseCurrentThreadMemory regularly on other threads. -S_API void S_CALLTYPE SteamAPI_RunCallbacks(); - -// Declares a callback member function plus a helper member variable which -// registers the callback on object creation and unregisters on destruction. -// The optional fourth 'var' param exists only for backwards-compatibility -// and can be ignored. -#define STEAM_CALLBACK( thisclass, func, .../*callback_type, [deprecated] var*/ ) \ - _STEAM_CALLBACK_SELECT( ( __VA_ARGS__, 4, 3 ), ( /**/, thisclass, func, __VA_ARGS__ ) ) - -// Declares a callback function and a named CCallbackManual variable which -// has Register and Unregister functions instead of automatic registration. -#define STEAM_CALLBACK_MANUAL( thisclass, func, callback_type, var ) \ - CCallbackManual< thisclass, callback_type > var; void func( callback_type *pParam ) - -// Dispatch callbacks relevant to the gameserver client and interfaces. -// To register for these, you need to use STEAM_GAMESERVER_CALLBACK. -// (Or call SetGameserverFlag on your CCallbackBase object.) -S_API void S_CALLTYPE SteamGameServer_RunCallbacks(); - -// Same as STEAM_CALLBACK, but for callbacks on the gameserver interface. -// These will be dispatched during SteamGameServer_RunCallbacks -#define STEAM_GAMESERVER_CALLBACK( thisclass, func, /*callback_type, [deprecated] var*/... ) \ - _STEAM_CALLBACK_SELECT( ( __VA_ARGS__, GS, 3 ), ( this->SetGameserverFlag();, thisclass, func, __VA_ARGS__ ) ) -#define STEAM_GAMESERVER_CALLBACK_MANUAL( thisclass, func, callback_type, var ) \ - CCallbackManual< thisclass, callback_type, true > var; void func( callback_type *pParam ) - -//----------------------------------------------------------------------------- -// Purpose: base for callbacks and call results - internal implementation detail -//----------------------------------------------------------------------------- -class CCallbackBase -{ -public: - CCallbackBase() { m_nCallbackFlags = 0; m_iCallback = 0; } - // don't add a virtual destructor because we export this binary interface across dll's - virtual void Run( void *pvParam ) = 0; - virtual void Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ) = 0; - int GetICallback() { return m_iCallback; } - virtual int GetCallbackSizeBytes() = 0; - -protected: - enum { k_ECallbackFlagsRegistered = 0x01, k_ECallbackFlagsGameServer = 0x02 }; - uint8 m_nCallbackFlags; - int m_iCallback; - friend class CCallbackMgr; - -private: - CCallbackBase( const CCallbackBase& ); - CCallbackBase& operator=( const CCallbackBase& ); -}; - -//----------------------------------------------------------------------------- -// Purpose: templated base for callbacks - internal implementation detail -//----------------------------------------------------------------------------- -template< int sizeof_P > -class CCallbackImpl : protected CCallbackBase -{ -public: - virtual ~CCallbackImpl() { if ( m_nCallbackFlags & k_ECallbackFlagsRegistered ) SteamAPI_UnregisterCallback( this ); } - void SetGameserverFlag() { m_nCallbackFlags |= k_ECallbackFlagsGameServer; } - -protected: - friend class CCallbackMgr; - virtual void Run( void *pvParam ) = 0; - virtual void Run( void *pvParam, bool /*bIOFailure*/, SteamAPICall_t /*hSteamAPICall*/ ) { Run( pvParam ); } - virtual int GetCallbackSizeBytes() { return sizeof_P; } -}; - - -//----------------------------------------------------------------------------- -// Purpose: maps a steam async call result to a class member function -// template params: T = local class, P = parameter struct -//----------------------------------------------------------------------------- -template< class T, class P > -class CCallResult : private CCallbackBase -{ -public: - typedef void (T::*func_t)( P*, bool ); - - CCallResult(); - ~CCallResult(); - - void Set( SteamAPICall_t hAPICall, T *p, func_t func ); - bool IsActive() const; - void Cancel(); - - void SetGameserverFlag() { m_nCallbackFlags |= k_ECallbackFlagsGameServer; } -private: - virtual void Run( void *pvParam ); - virtual void Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ); - virtual int GetCallbackSizeBytes() { return sizeof( P ); } - - SteamAPICall_t m_hAPICall; - T *m_pObj; - func_t m_Func; -}; - - - -//----------------------------------------------------------------------------- -// Purpose: maps a steam callback to a class member function -// template params: T = local class, P = parameter struct, -// bGameserver = listen for gameserver callbacks instead of client callbacks -//----------------------------------------------------------------------------- -template< class T, class P, bool bGameserver = false > -class CCallback : public CCallbackImpl< sizeof( P ) > -{ -public: - typedef void (T::*func_t)(P*); - - // NOTE: If you can't provide the correct parameters at construction time, you should - // use the CCallbackManual callback object (STEAM_CALLBACK_MANUAL macro) instead. - CCallback( T *pObj, func_t func ); - - void Register( T *pObj, func_t func ); - void Unregister(); - -protected: - virtual void Run( void *pvParam ); - - T *m_pObj; - func_t m_Func; -}; - - -//----------------------------------------------------------------------------- -// Purpose: subclass of CCallback which allows default-construction in -// an unregistered state; you must call Register manually -//----------------------------------------------------------------------------- -template< class T, class P, bool bGameServer = false > -class CCallbackManual : public CCallback< T, P, bGameServer > -{ -public: - CCallbackManual() : CCallback< T, P, bGameServer >( nullptr, nullptr ) {} - - // Inherits public Register and Unregister functions from base class -}; - -// Internal implementation details for all of the above -#include "steam_api_internal.h" - -#endif // STEAM_API_COMMON_H +//====== Copyright Valve Corporation, All rights reserved. ==================== +// +// Steamworks SDK minimal include +// +// Defines the minimal set of things we need to use any single interface +// or register for any callback. +// +//============================================================================= + +#ifndef STEAM_API_COMMON_H +#define STEAM_API_COMMON_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steamtypes.h" +#include "steamclientpublic.h" + +// S_API defines the linkage and calling conventions for steam_api.dll exports +#if defined( _WIN32 ) && !defined( _X360 ) + #if defined( STEAM_API_EXPORTS ) + #define S_API extern "C" __declspec( dllexport ) + #elif defined( STEAM_API_NODLL ) + #define S_API extern "C" + #else + #define S_API extern "C" __declspec( dllimport ) + #endif // STEAM_API_EXPORTS +#elif defined( GNUC ) + #if defined( STEAM_API_EXPORTS ) + #define S_API extern "C" __attribute__ ((visibility("default"))) + #else + #define S_API extern "C" + #endif // STEAM_API_EXPORTS +#else // !WIN32 + #if defined( STEAM_API_EXPORTS ) + #define S_API extern "C" + #else + #define S_API extern "C" + #endif // STEAM_API_EXPORTS +#endif + +#if ( defined(STEAM_API_EXPORTS) || defined(STEAM_API_NODLL) ) && !defined(API_GEN) +#define STEAM_PRIVATE_API( ... ) __VA_ARGS__ +#elif defined(STEAM_API_EXPORTS) && defined(API_GEN) +#define STEAM_PRIVATE_API( ... ) +#else +#define STEAM_PRIVATE_API( ... ) protected: __VA_ARGS__ public: +#endif + +// handle to a communication pipe to the Steam client +typedef int32 HSteamPipe; +// handle to single instance of a steam user +typedef int32 HSteamUser; +// function prototype +#if defined( POSIX ) +#define __cdecl +#endif +extern "C" typedef void (__cdecl *SteamAPIWarningMessageHook_t)(int, const char *); +extern "C" typedef uint32 ( *SteamAPI_CheckCallbackRegistered_t )( int iCallbackNum ); +#if defined( __SNC__ ) + #pragma diag_suppress=1700 // warning 1700: class "%s" has virtual functions but non-virtual destructor +#endif + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// steam callback and call-result helpers +// +// The following macros and classes are used to register your application for +// callbacks and call-results, which are delivered in a predictable manner. +// +// STEAM_CALLBACK macros are meant for use inside of a C++ class definition. +// They map a Steam notification callback directly to a class member function +// which is automatically prototyped as "void func( callback_type *pParam )". +// +// CCallResult is used with specific Steam APIs that return "result handles". +// The handle can be passed to a CCallResult object's Set function, along with +// an object pointer and member-function pointer. The member function will +// be executed once the results of the Steam API call are available. +// +// CCallback and CCallbackManual classes can be used instead of STEAM_CALLBACK +// macros if you require finer control over registration and unregistration. +// +// Callbacks and call-results are queued automatically and are only +// delivered/executed when your application calls SteamAPI_RunCallbacks(). +// +// Note that there is an alternative, lower level callback dispatch mechanism. +// See SteamAPI_ManualDispatch_Init +//----------------------------------------------------------------------------------------------------------------------------------------------------------// + +// Dispatch all queued Steamworks callbacks. +// +// This is safe to call from multiple threads simultaneously, +// but if you choose to do this, callback code could be executed on any thread. +// One alternative is to call SteamAPI_RunCallbacks from the main thread only, +// and call SteamAPI_ReleaseCurrentThreadMemory regularly on other threads. +S_API void S_CALLTYPE SteamAPI_RunCallbacks(); + +// Declares a callback member function plus a helper member variable which +// registers the callback on object creation and unregisters on destruction. +// The optional fourth 'var' param exists only for backwards-compatibility +// and can be ignored. +#define STEAM_CALLBACK( thisclass, func, .../*callback_type, [deprecated] var*/ ) \ + _STEAM_CALLBACK_SELECT( ( __VA_ARGS__, 4, 3 ), ( /**/, thisclass, func, __VA_ARGS__ ) ) + +// Declares a callback function and a named CCallbackManual variable which +// has Register and Unregister functions instead of automatic registration. +#define STEAM_CALLBACK_MANUAL( thisclass, func, callback_type, var ) \ + CCallbackManual< thisclass, callback_type > var; void func( callback_type *pParam ) + +// Dispatch callbacks relevant to the gameserver client and interfaces. +// To register for these, you need to use STEAM_GAMESERVER_CALLBACK. +// (Or call SetGameserverFlag on your CCallbackBase object.) +S_API void S_CALLTYPE SteamGameServer_RunCallbacks(); + +// Same as STEAM_CALLBACK, but for callbacks on the gameserver interface. +// These will be dispatched during SteamGameServer_RunCallbacks +#define STEAM_GAMESERVER_CALLBACK( thisclass, func, /*callback_type, [deprecated] var*/... ) \ + _STEAM_CALLBACK_SELECT( ( __VA_ARGS__, GS, 3 ), ( this->SetGameserverFlag();, thisclass, func, __VA_ARGS__ ) ) +#define STEAM_GAMESERVER_CALLBACK_MANUAL( thisclass, func, callback_type, var ) \ + CCallbackManual< thisclass, callback_type, true > var; void func( callback_type *pParam ) + +//----------------------------------------------------------------------------- +// Purpose: base for callbacks and call results - internal implementation detail +//----------------------------------------------------------------------------- +class CCallbackBase +{ +public: + CCallbackBase() { m_nCallbackFlags = 0; m_iCallback = 0; } + // don't add a virtual destructor because we export this binary interface across dll's + virtual void Run( void *pvParam ) = 0; + virtual void Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ) = 0; + int GetICallback() { return m_iCallback; } + virtual int GetCallbackSizeBytes() = 0; + +protected: + enum { k_ECallbackFlagsRegistered = 0x01, k_ECallbackFlagsGameServer = 0x02 }; + uint8 m_nCallbackFlags; + int m_iCallback; + friend class CCallbackMgr; + +private: + CCallbackBase( const CCallbackBase& ); + CCallbackBase& operator=( const CCallbackBase& ); +}; + +//----------------------------------------------------------------------------- +// Purpose: templated base for callbacks - internal implementation detail +//----------------------------------------------------------------------------- +template< int sizeof_P > +class CCallbackImpl : protected CCallbackBase +{ +public: + virtual ~CCallbackImpl() { if ( m_nCallbackFlags & k_ECallbackFlagsRegistered ) SteamAPI_UnregisterCallback( this ); } + void SetGameserverFlag() { m_nCallbackFlags |= k_ECallbackFlagsGameServer; } + +protected: + friend class CCallbackMgr; + virtual void Run( void *pvParam ) = 0; + virtual void Run( void *pvParam, bool /*bIOFailure*/, SteamAPICall_t /*hSteamAPICall*/ ) { Run( pvParam ); } + virtual int GetCallbackSizeBytes() { return sizeof_P; } +}; + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam async call result to a class member function +// template params: T = local class, P = parameter struct +//----------------------------------------------------------------------------- +template< class T, class P > +class CCallResult : private CCallbackBase +{ +public: + typedef void (T::*func_t)( P*, bool ); + + CCallResult(); + ~CCallResult(); + + void Set( SteamAPICall_t hAPICall, T *p, func_t func ); + bool IsActive() const; + void Cancel(); + + void SetGameserverFlag() { m_nCallbackFlags |= k_ECallbackFlagsGameServer; } +private: + virtual void Run( void *pvParam ); + virtual void Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ); + virtual int GetCallbackSizeBytes() { return sizeof( P ); } + + SteamAPICall_t m_hAPICall; + T *m_pObj; + func_t m_Func; +}; + + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam callback to a class member function +// template params: T = local class, P = parameter struct, +// bGameserver = listen for gameserver callbacks instead of client callbacks +//----------------------------------------------------------------------------- +template< class T, class P, bool bGameserver = false > +class CCallback : public CCallbackImpl< sizeof( P ) > +{ +public: + typedef void (T::*func_t)(P*); + + // NOTE: If you can't provide the correct parameters at construction time, you should + // use the CCallbackManual callback object (STEAM_CALLBACK_MANUAL macro) instead. + CCallback( T *pObj, func_t func ); + + void Register( T *pObj, func_t func ); + void Unregister(); + +protected: + virtual void Run( void *pvParam ); + + T *m_pObj; + func_t m_Func; +}; + + +//----------------------------------------------------------------------------- +// Purpose: subclass of CCallback which allows default-construction in +// an unregistered state; you must call Register manually +//----------------------------------------------------------------------------- +template< class T, class P, bool bGameServer = false > +class CCallbackManual : public CCallback< T, P, bGameServer > +{ +public: + CCallbackManual() : CCallback< T, P, bGameServer >( nullptr, nullptr ) {} + + // Inherits public Register and Unregister functions from base class +}; + +// Internal implementation details for all of the above +#include "steam_api_internal.h" + +#endif // STEAM_API_COMMON_H diff --git a/CodeGen/steam/steam_api_flat.h b/CodeGen/steam/steam_api_flat.h index c0571a90..c71e61c6 100644 --- a/CodeGen/steam/steam_api_flat.h +++ b/CodeGen/steam/steam_api_flat.h @@ -1,1088 +1,1088 @@ -//====== Copyright Valve Corporation, All rights reserved. ==================== -// -// Purpose: Header for "flat" SteamAPI. Use this for binding to other languages. -// This file is auto-generated, do not edit it. -// -//============================================================================= - -#ifndef STEAMAPIFLAT_H -#define STEAMAPIFLAT_H - -#include "steam/steam_api.h" -#include "steam/isteamgameserver.h" -#include "steam/isteamgameserverstats.h" - -typedef uint64 uint64_steamid; // Used when passing or returning CSteamID -typedef uint64 uint64_gameid; // Used when passing or return CGameID - - - -// ISteamClient -S_API HSteamPipe SteamAPI_ISteamClient_CreateSteamPipe( ISteamClient* self ); -S_API bool SteamAPI_ISteamClient_BReleaseSteamPipe( ISteamClient* self, HSteamPipe hSteamPipe ); -S_API HSteamUser SteamAPI_ISteamClient_ConnectToGlobalUser( ISteamClient* self, HSteamPipe hSteamPipe ); -S_API HSteamUser SteamAPI_ISteamClient_CreateLocalUser( ISteamClient* self, HSteamPipe * phSteamPipe, EAccountType eAccountType ); -S_API void SteamAPI_ISteamClient_ReleaseUser( ISteamClient* self, HSteamPipe hSteamPipe, HSteamUser hUser ); -S_API ISteamUser * SteamAPI_ISteamClient_GetISteamUser( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamGameServer * SteamAPI_ISteamClient_GetISteamGameServer( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API void SteamAPI_ISteamClient_SetLocalIPBinding( ISteamClient* self, const SteamIPAddress_t & unIP, uint16 usPort ); -S_API ISteamFriends * SteamAPI_ISteamClient_GetISteamFriends( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamUtils * SteamAPI_ISteamClient_GetISteamUtils( ISteamClient* self, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamMatchmaking * SteamAPI_ISteamClient_GetISteamMatchmaking( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamMatchmakingServers * SteamAPI_ISteamClient_GetISteamMatchmakingServers( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API void * SteamAPI_ISteamClient_GetISteamGenericInterface( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamUserStats * SteamAPI_ISteamClient_GetISteamUserStats( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamGameServerStats * SteamAPI_ISteamClient_GetISteamGameServerStats( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamApps * SteamAPI_ISteamClient_GetISteamApps( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamNetworking * SteamAPI_ISteamClient_GetISteamNetworking( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamRemoteStorage * SteamAPI_ISteamClient_GetISteamRemoteStorage( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamScreenshots * SteamAPI_ISteamClient_GetISteamScreenshots( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamGameSearch * SteamAPI_ISteamClient_GetISteamGameSearch( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API uint32 SteamAPI_ISteamClient_GetIPCCallCount( ISteamClient* self ); -S_API void SteamAPI_ISteamClient_SetWarningMessageHook( ISteamClient* self, SteamAPIWarningMessageHook_t pFunction ); -S_API bool SteamAPI_ISteamClient_BShutdownIfAllPipesClosed( ISteamClient* self ); -S_API ISteamHTTP * SteamAPI_ISteamClient_GetISteamHTTP( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamController * SteamAPI_ISteamClient_GetISteamController( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamUGC * SteamAPI_ISteamClient_GetISteamUGC( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamAppList * SteamAPI_ISteamClient_GetISteamAppList( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamMusic * SteamAPI_ISteamClient_GetISteamMusic( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamMusicRemote * SteamAPI_ISteamClient_GetISteamMusicRemote( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamHTMLSurface * SteamAPI_ISteamClient_GetISteamHTMLSurface( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamInventory * SteamAPI_ISteamClient_GetISteamInventory( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamVideo * SteamAPI_ISteamClient_GetISteamVideo( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamParentalSettings * SteamAPI_ISteamClient_GetISteamParentalSettings( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamInput * SteamAPI_ISteamClient_GetISteamInput( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamParties * SteamAPI_ISteamClient_GetISteamParties( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamRemotePlay * SteamAPI_ISteamClient_GetISteamRemotePlay( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); - -// ISteamUser -S_API ISteamUser *SteamAPI_SteamUser_v021(); -S_API HSteamUser SteamAPI_ISteamUser_GetHSteamUser( ISteamUser* self ); -S_API bool SteamAPI_ISteamUser_BLoggedOn( ISteamUser* self ); -S_API uint64_steamid SteamAPI_ISteamUser_GetSteamID( ISteamUser* self ); -S_API int SteamAPI_ISteamUser_InitiateGameConnection( ISteamUser* self, void * pAuthBlob, int cbMaxAuthBlob, uint64_steamid steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure ); -S_API void SteamAPI_ISteamUser_TerminateGameConnection( ISteamUser* self, uint32 unIPServer, uint16 usPortServer ); -S_API void SteamAPI_ISteamUser_TrackAppUsageEvent( ISteamUser* self, uint64_gameid gameID, int eAppUsageEvent, const char * pchExtraInfo ); -S_API bool SteamAPI_ISteamUser_GetUserDataFolder( ISteamUser* self, char * pchBuffer, int cubBuffer ); -S_API void SteamAPI_ISteamUser_StartVoiceRecording( ISteamUser* self ); -S_API void SteamAPI_ISteamUser_StopVoiceRecording( ISteamUser* self ); -S_API EVoiceResult SteamAPI_ISteamUser_GetAvailableVoice( ISteamUser* self, uint32 * pcbCompressed, uint32 * pcbUncompressed_Deprecated, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated ); -S_API EVoiceResult SteamAPI_ISteamUser_GetVoice( ISteamUser* self, bool bWantCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, bool bWantUncompressed_Deprecated, void * pUncompressedDestBuffer_Deprecated, uint32 cbUncompressedDestBufferSize_Deprecated, uint32 * nUncompressBytesWritten_Deprecated, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated ); -S_API EVoiceResult SteamAPI_ISteamUser_DecompressVoice( ISteamUser* self, const void * pCompressed, uint32 cbCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, uint32 nDesiredSampleRate ); -S_API uint32 SteamAPI_ISteamUser_GetVoiceOptimalSampleRate( ISteamUser* self ); -S_API HAuthTicket SteamAPI_ISteamUser_GetAuthSessionTicket( ISteamUser* self, void * pTicket, int cbMaxTicket, uint32 * pcbTicket ); -S_API EBeginAuthSessionResult SteamAPI_ISteamUser_BeginAuthSession( ISteamUser* self, const void * pAuthTicket, int cbAuthTicket, uint64_steamid steamID ); -S_API void SteamAPI_ISteamUser_EndAuthSession( ISteamUser* self, uint64_steamid steamID ); -S_API void SteamAPI_ISteamUser_CancelAuthTicket( ISteamUser* self, HAuthTicket hAuthTicket ); -S_API EUserHasLicenseForAppResult SteamAPI_ISteamUser_UserHasLicenseForApp( ISteamUser* self, uint64_steamid steamID, AppId_t appID ); -S_API bool SteamAPI_ISteamUser_BIsBehindNAT( ISteamUser* self ); -S_API void SteamAPI_ISteamUser_AdvertiseGame( ISteamUser* self, uint64_steamid steamIDGameServer, uint32 unIPServer, uint16 usPortServer ); -S_API SteamAPICall_t SteamAPI_ISteamUser_RequestEncryptedAppTicket( ISteamUser* self, void * pDataToInclude, int cbDataToInclude ); -S_API bool SteamAPI_ISteamUser_GetEncryptedAppTicket( ISteamUser* self, void * pTicket, int cbMaxTicket, uint32 * pcbTicket ); -S_API int SteamAPI_ISteamUser_GetGameBadgeLevel( ISteamUser* self, int nSeries, bool bFoil ); -S_API int SteamAPI_ISteamUser_GetPlayerSteamLevel( ISteamUser* self ); -S_API SteamAPICall_t SteamAPI_ISteamUser_RequestStoreAuthURL( ISteamUser* self, const char * pchRedirectURL ); -S_API bool SteamAPI_ISteamUser_BIsPhoneVerified( ISteamUser* self ); -S_API bool SteamAPI_ISteamUser_BIsTwoFactorEnabled( ISteamUser* self ); -S_API bool SteamAPI_ISteamUser_BIsPhoneIdentifying( ISteamUser* self ); -S_API bool SteamAPI_ISteamUser_BIsPhoneRequiringVerification( ISteamUser* self ); -S_API SteamAPICall_t SteamAPI_ISteamUser_GetMarketEligibility( ISteamUser* self ); -S_API SteamAPICall_t SteamAPI_ISteamUser_GetDurationControl( ISteamUser* self ); -S_API bool SteamAPI_ISteamUser_BSetDurationControlOnlineState( ISteamUser* self, EDurationControlOnlineState eNewState ); - -// ISteamFriends -S_API ISteamFriends *SteamAPI_SteamFriends_v017(); -S_API const char * SteamAPI_ISteamFriends_GetPersonaName( ISteamFriends* self ); -S_API SteamAPICall_t SteamAPI_ISteamFriends_SetPersonaName( ISteamFriends* self, const char * pchPersonaName ); -S_API EPersonaState SteamAPI_ISteamFriends_GetPersonaState( ISteamFriends* self ); -S_API int SteamAPI_ISteamFriends_GetFriendCount( ISteamFriends* self, int iFriendFlags ); -S_API uint64_steamid SteamAPI_ISteamFriends_GetFriendByIndex( ISteamFriends* self, int iFriend, int iFriendFlags ); -S_API EFriendRelationship SteamAPI_ISteamFriends_GetFriendRelationship( ISteamFriends* self, uint64_steamid steamIDFriend ); -S_API EPersonaState SteamAPI_ISteamFriends_GetFriendPersonaState( ISteamFriends* self, uint64_steamid steamIDFriend ); -S_API const char * SteamAPI_ISteamFriends_GetFriendPersonaName( ISteamFriends* self, uint64_steamid steamIDFriend ); -S_API bool SteamAPI_ISteamFriends_GetFriendGamePlayed( ISteamFriends* self, uint64_steamid steamIDFriend, FriendGameInfo_t * pFriendGameInfo ); -S_API const char * SteamAPI_ISteamFriends_GetFriendPersonaNameHistory( ISteamFriends* self, uint64_steamid steamIDFriend, int iPersonaName ); -S_API int SteamAPI_ISteamFriends_GetFriendSteamLevel( ISteamFriends* self, uint64_steamid steamIDFriend ); -S_API const char * SteamAPI_ISteamFriends_GetPlayerNickname( ISteamFriends* self, uint64_steamid steamIDPlayer ); -S_API int SteamAPI_ISteamFriends_GetFriendsGroupCount( ISteamFriends* self ); -S_API FriendsGroupID_t SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex( ISteamFriends* self, int iFG ); -S_API const char * SteamAPI_ISteamFriends_GetFriendsGroupName( ISteamFriends* self, FriendsGroupID_t friendsGroupID ); -S_API int SteamAPI_ISteamFriends_GetFriendsGroupMembersCount( ISteamFriends* self, FriendsGroupID_t friendsGroupID ); -S_API void SteamAPI_ISteamFriends_GetFriendsGroupMembersList( ISteamFriends* self, FriendsGroupID_t friendsGroupID, CSteamID * pOutSteamIDMembers, int nMembersCount ); -S_API bool SteamAPI_ISteamFriends_HasFriend( ISteamFriends* self, uint64_steamid steamIDFriend, int iFriendFlags ); -S_API int SteamAPI_ISteamFriends_GetClanCount( ISteamFriends* self ); -S_API uint64_steamid SteamAPI_ISteamFriends_GetClanByIndex( ISteamFriends* self, int iClan ); -S_API const char * SteamAPI_ISteamFriends_GetClanName( ISteamFriends* self, uint64_steamid steamIDClan ); -S_API const char * SteamAPI_ISteamFriends_GetClanTag( ISteamFriends* self, uint64_steamid steamIDClan ); -S_API bool SteamAPI_ISteamFriends_GetClanActivityCounts( ISteamFriends* self, uint64_steamid steamIDClan, int * pnOnline, int * pnInGame, int * pnChatting ); -S_API SteamAPICall_t SteamAPI_ISteamFriends_DownloadClanActivityCounts( ISteamFriends* self, CSteamID * psteamIDClans, int cClansToRequest ); -S_API int SteamAPI_ISteamFriends_GetFriendCountFromSource( ISteamFriends* self, uint64_steamid steamIDSource ); -S_API uint64_steamid SteamAPI_ISteamFriends_GetFriendFromSourceByIndex( ISteamFriends* self, uint64_steamid steamIDSource, int iFriend ); -S_API bool SteamAPI_ISteamFriends_IsUserInSource( ISteamFriends* self, uint64_steamid steamIDUser, uint64_steamid steamIDSource ); -S_API void SteamAPI_ISteamFriends_SetInGameVoiceSpeaking( ISteamFriends* self, uint64_steamid steamIDUser, bool bSpeaking ); -S_API void SteamAPI_ISteamFriends_ActivateGameOverlay( ISteamFriends* self, const char * pchDialog ); -S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToUser( ISteamFriends* self, const char * pchDialog, uint64_steamid steamID ); -S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage( ISteamFriends* self, const char * pchURL, EActivateGameOverlayToWebPageMode eMode ); -S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToStore( ISteamFriends* self, AppId_t nAppID, EOverlayToStoreFlag eFlag ); -S_API void SteamAPI_ISteamFriends_SetPlayedWith( ISteamFriends* self, uint64_steamid steamIDUserPlayedWith ); -S_API void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog( ISteamFriends* self, uint64_steamid steamIDLobby ); -S_API int SteamAPI_ISteamFriends_GetSmallFriendAvatar( ISteamFriends* self, uint64_steamid steamIDFriend ); -S_API int SteamAPI_ISteamFriends_GetMediumFriendAvatar( ISteamFriends* self, uint64_steamid steamIDFriend ); -S_API int SteamAPI_ISteamFriends_GetLargeFriendAvatar( ISteamFriends* self, uint64_steamid steamIDFriend ); -S_API bool SteamAPI_ISteamFriends_RequestUserInformation( ISteamFriends* self, uint64_steamid steamIDUser, bool bRequireNameOnly ); -S_API SteamAPICall_t SteamAPI_ISteamFriends_RequestClanOfficerList( ISteamFriends* self, uint64_steamid steamIDClan ); -S_API uint64_steamid SteamAPI_ISteamFriends_GetClanOwner( ISteamFriends* self, uint64_steamid steamIDClan ); -S_API int SteamAPI_ISteamFriends_GetClanOfficerCount( ISteamFriends* self, uint64_steamid steamIDClan ); -S_API uint64_steamid SteamAPI_ISteamFriends_GetClanOfficerByIndex( ISteamFriends* self, uint64_steamid steamIDClan, int iOfficer ); -S_API uint32 SteamAPI_ISteamFriends_GetUserRestrictions( ISteamFriends* self ); -S_API bool SteamAPI_ISteamFriends_SetRichPresence( ISteamFriends* self, const char * pchKey, const char * pchValue ); -S_API void SteamAPI_ISteamFriends_ClearRichPresence( ISteamFriends* self ); -S_API const char * SteamAPI_ISteamFriends_GetFriendRichPresence( ISteamFriends* self, uint64_steamid steamIDFriend, const char * pchKey ); -S_API int SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount( ISteamFriends* self, uint64_steamid steamIDFriend ); -S_API const char * SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex( ISteamFriends* self, uint64_steamid steamIDFriend, int iKey ); -S_API void SteamAPI_ISteamFriends_RequestFriendRichPresence( ISteamFriends* self, uint64_steamid steamIDFriend ); -S_API bool SteamAPI_ISteamFriends_InviteUserToGame( ISteamFriends* self, uint64_steamid steamIDFriend, const char * pchConnectString ); -S_API int SteamAPI_ISteamFriends_GetCoplayFriendCount( ISteamFriends* self ); -S_API uint64_steamid SteamAPI_ISteamFriends_GetCoplayFriend( ISteamFriends* self, int iCoplayFriend ); -S_API int SteamAPI_ISteamFriends_GetFriendCoplayTime( ISteamFriends* self, uint64_steamid steamIDFriend ); -S_API AppId_t SteamAPI_ISteamFriends_GetFriendCoplayGame( ISteamFriends* self, uint64_steamid steamIDFriend ); -S_API SteamAPICall_t SteamAPI_ISteamFriends_JoinClanChatRoom( ISteamFriends* self, uint64_steamid steamIDClan ); -S_API bool SteamAPI_ISteamFriends_LeaveClanChatRoom( ISteamFriends* self, uint64_steamid steamIDClan ); -S_API int SteamAPI_ISteamFriends_GetClanChatMemberCount( ISteamFriends* self, uint64_steamid steamIDClan ); -S_API uint64_steamid SteamAPI_ISteamFriends_GetChatMemberByIndex( ISteamFriends* self, uint64_steamid steamIDClan, int iUser ); -S_API bool SteamAPI_ISteamFriends_SendClanChatMessage( ISteamFriends* self, uint64_steamid steamIDClanChat, const char * pchText ); -S_API int SteamAPI_ISteamFriends_GetClanChatMessage( ISteamFriends* self, uint64_steamid steamIDClanChat, int iMessage, void * prgchText, int cchTextMax, EChatEntryType * peChatEntryType, CSteamID * psteamidChatter ); -S_API bool SteamAPI_ISteamFriends_IsClanChatAdmin( ISteamFriends* self, uint64_steamid steamIDClanChat, uint64_steamid steamIDUser ); -S_API bool SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam( ISteamFriends* self, uint64_steamid steamIDClanChat ); -S_API bool SteamAPI_ISteamFriends_OpenClanChatWindowInSteam( ISteamFriends* self, uint64_steamid steamIDClanChat ); -S_API bool SteamAPI_ISteamFriends_CloseClanChatWindowInSteam( ISteamFriends* self, uint64_steamid steamIDClanChat ); -S_API bool SteamAPI_ISteamFriends_SetListenForFriendsMessages( ISteamFriends* self, bool bInterceptEnabled ); -S_API bool SteamAPI_ISteamFriends_ReplyToFriendMessage( ISteamFriends* self, uint64_steamid steamIDFriend, const char * pchMsgToSend ); -S_API int SteamAPI_ISteamFriends_GetFriendMessage( ISteamFriends* self, uint64_steamid steamIDFriend, int iMessageID, void * pvData, int cubData, EChatEntryType * peChatEntryType ); -S_API SteamAPICall_t SteamAPI_ISteamFriends_GetFollowerCount( ISteamFriends* self, uint64_steamid steamID ); -S_API SteamAPICall_t SteamAPI_ISteamFriends_IsFollowing( ISteamFriends* self, uint64_steamid steamID ); -S_API SteamAPICall_t SteamAPI_ISteamFriends_EnumerateFollowingList( ISteamFriends* self, uint32 unStartIndex ); -S_API bool SteamAPI_ISteamFriends_IsClanPublic( ISteamFriends* self, uint64_steamid steamIDClan ); -S_API bool SteamAPI_ISteamFriends_IsClanOfficialGameGroup( ISteamFriends* self, uint64_steamid steamIDClan ); -S_API int SteamAPI_ISteamFriends_GetNumChatsWithUnreadPriorityMessages( ISteamFriends* self ); -S_API void SteamAPI_ISteamFriends_ActivateGameOverlayRemotePlayTogetherInviteDialog( ISteamFriends* self, uint64_steamid steamIDLobby ); -S_API bool SteamAPI_ISteamFriends_RegisterProtocolInOverlayBrowser( ISteamFriends* self, const char * pchProtocol ); -S_API void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialogConnectString( ISteamFriends* self, const char * pchConnectString ); - -// ISteamUtils -S_API ISteamUtils *SteamAPI_SteamUtils_v010(); -S_API ISteamUtils *SteamAPI_SteamGameServerUtils_v010(); -S_API uint32 SteamAPI_ISteamUtils_GetSecondsSinceAppActive( ISteamUtils* self ); -S_API uint32 SteamAPI_ISteamUtils_GetSecondsSinceComputerActive( ISteamUtils* self ); -S_API EUniverse SteamAPI_ISteamUtils_GetConnectedUniverse( ISteamUtils* self ); -S_API uint32 SteamAPI_ISteamUtils_GetServerRealTime( ISteamUtils* self ); -S_API const char * SteamAPI_ISteamUtils_GetIPCountry( ISteamUtils* self ); -S_API bool SteamAPI_ISteamUtils_GetImageSize( ISteamUtils* self, int iImage, uint32 * pnWidth, uint32 * pnHeight ); -S_API bool SteamAPI_ISteamUtils_GetImageRGBA( ISteamUtils* self, int iImage, uint8 * pubDest, int nDestBufferSize ); -S_API uint8 SteamAPI_ISteamUtils_GetCurrentBatteryPower( ISteamUtils* self ); -S_API uint32 SteamAPI_ISteamUtils_GetAppID( ISteamUtils* self ); -S_API void SteamAPI_ISteamUtils_SetOverlayNotificationPosition( ISteamUtils* self, ENotificationPosition eNotificationPosition ); -S_API bool SteamAPI_ISteamUtils_IsAPICallCompleted( ISteamUtils* self, SteamAPICall_t hSteamAPICall, bool * pbFailed ); -S_API ESteamAPICallFailure SteamAPI_ISteamUtils_GetAPICallFailureReason( ISteamUtils* self, SteamAPICall_t hSteamAPICall ); -S_API bool SteamAPI_ISteamUtils_GetAPICallResult( ISteamUtils* self, SteamAPICall_t hSteamAPICall, void * pCallback, int cubCallback, int iCallbackExpected, bool * pbFailed ); -S_API uint32 SteamAPI_ISteamUtils_GetIPCCallCount( ISteamUtils* self ); -S_API void SteamAPI_ISteamUtils_SetWarningMessageHook( ISteamUtils* self, SteamAPIWarningMessageHook_t pFunction ); -S_API bool SteamAPI_ISteamUtils_IsOverlayEnabled( ISteamUtils* self ); -S_API bool SteamAPI_ISteamUtils_BOverlayNeedsPresent( ISteamUtils* self ); -S_API SteamAPICall_t SteamAPI_ISteamUtils_CheckFileSignature( ISteamUtils* self, const char * szFileName ); -S_API bool SteamAPI_ISteamUtils_ShowGamepadTextInput( ISteamUtils* self, EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, const char * pchDescription, uint32 unCharMax, const char * pchExistingText ); -S_API uint32 SteamAPI_ISteamUtils_GetEnteredGamepadTextLength( ISteamUtils* self ); -S_API bool SteamAPI_ISteamUtils_GetEnteredGamepadTextInput( ISteamUtils* self, char * pchText, uint32 cchText ); -S_API const char * SteamAPI_ISteamUtils_GetSteamUILanguage( ISteamUtils* self ); -S_API bool SteamAPI_ISteamUtils_IsSteamRunningInVR( ISteamUtils* self ); -S_API void SteamAPI_ISteamUtils_SetOverlayNotificationInset( ISteamUtils* self, int nHorizontalInset, int nVerticalInset ); -S_API bool SteamAPI_ISteamUtils_IsSteamInBigPictureMode( ISteamUtils* self ); -S_API void SteamAPI_ISteamUtils_StartVRDashboard( ISteamUtils* self ); -S_API bool SteamAPI_ISteamUtils_IsVRHeadsetStreamingEnabled( ISteamUtils* self ); -S_API void SteamAPI_ISteamUtils_SetVRHeadsetStreamingEnabled( ISteamUtils* self, bool bEnabled ); -S_API bool SteamAPI_ISteamUtils_IsSteamChinaLauncher( ISteamUtils* self ); -S_API bool SteamAPI_ISteamUtils_InitFilterText( ISteamUtils* self, uint32 unFilterOptions ); -S_API int SteamAPI_ISteamUtils_FilterText( ISteamUtils* self, ETextFilteringContext eContext, uint64_steamid sourceSteamID, const char * pchInputMessage, char * pchOutFilteredText, uint32 nByteSizeOutFilteredText ); -S_API ESteamIPv6ConnectivityState SteamAPI_ISteamUtils_GetIPv6ConnectivityState( ISteamUtils* self, ESteamIPv6ConnectivityProtocol eProtocol ); - -// ISteamMatchmaking -S_API ISteamMatchmaking *SteamAPI_SteamMatchmaking_v009(); -S_API int SteamAPI_ISteamMatchmaking_GetFavoriteGameCount( ISteamMatchmaking* self ); -S_API bool SteamAPI_ISteamMatchmaking_GetFavoriteGame( ISteamMatchmaking* self, int iGame, AppId_t * pnAppID, uint32 * pnIP, uint16 * pnConnPort, uint16 * pnQueryPort, uint32 * punFlags, uint32 * pRTime32LastPlayedOnServer ); -S_API int SteamAPI_ISteamMatchmaking_AddFavoriteGame( ISteamMatchmaking* self, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer ); -S_API bool SteamAPI_ISteamMatchmaking_RemoveFavoriteGame( ISteamMatchmaking* self, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags ); -S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_RequestLobbyList( ISteamMatchmaking* self ); -S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter( ISteamMatchmaking* self, const char * pchKeyToMatch, const char * pchValueToMatch, ELobbyComparison eComparisonType ); -S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter( ISteamMatchmaking* self, const char * pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType ); -S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter( ISteamMatchmaking* self, const char * pchKeyToMatch, int nValueToBeCloseTo ); -S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable( ISteamMatchmaking* self, int nSlotsAvailable ); -S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter( ISteamMatchmaking* self, ELobbyDistanceFilter eLobbyDistanceFilter ); -S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter( ISteamMatchmaking* self, int cMaxResults ); -S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); -S_API uint64_steamid SteamAPI_ISteamMatchmaking_GetLobbyByIndex( ISteamMatchmaking* self, int iLobby ); -S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_CreateLobby( ISteamMatchmaking* self, ELobbyType eLobbyType, int cMaxMembers ); -S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_JoinLobby( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); -S_API void SteamAPI_ISteamMatchmaking_LeaveLobby( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); -S_API bool SteamAPI_ISteamMatchmaking_InviteUserToLobby( ISteamMatchmaking* self, uint64_steamid steamIDLobby, uint64_steamid steamIDInvitee ); -S_API int SteamAPI_ISteamMatchmaking_GetNumLobbyMembers( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); -S_API uint64_steamid SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex( ISteamMatchmaking* self, uint64_steamid steamIDLobby, int iMember ); -S_API const char * SteamAPI_ISteamMatchmaking_GetLobbyData( ISteamMatchmaking* self, uint64_steamid steamIDLobby, const char * pchKey ); -S_API bool SteamAPI_ISteamMatchmaking_SetLobbyData( ISteamMatchmaking* self, uint64_steamid steamIDLobby, const char * pchKey, const char * pchValue ); -S_API int SteamAPI_ISteamMatchmaking_GetLobbyDataCount( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); -S_API bool SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex( ISteamMatchmaking* self, uint64_steamid steamIDLobby, int iLobbyData, char * pchKey, int cchKeyBufferSize, char * pchValue, int cchValueBufferSize ); -S_API bool SteamAPI_ISteamMatchmaking_DeleteLobbyData( ISteamMatchmaking* self, uint64_steamid steamIDLobby, const char * pchKey ); -S_API const char * SteamAPI_ISteamMatchmaking_GetLobbyMemberData( ISteamMatchmaking* self, uint64_steamid steamIDLobby, uint64_steamid steamIDUser, const char * pchKey ); -S_API void SteamAPI_ISteamMatchmaking_SetLobbyMemberData( ISteamMatchmaking* self, uint64_steamid steamIDLobby, const char * pchKey, const char * pchValue ); -S_API bool SteamAPI_ISteamMatchmaking_SendLobbyChatMsg( ISteamMatchmaking* self, uint64_steamid steamIDLobby, const void * pvMsgBody, int cubMsgBody ); -S_API int SteamAPI_ISteamMatchmaking_GetLobbyChatEntry( ISteamMatchmaking* self, uint64_steamid steamIDLobby, int iChatID, CSteamID * pSteamIDUser, void * pvData, int cubData, EChatEntryType * peChatEntryType ); -S_API bool SteamAPI_ISteamMatchmaking_RequestLobbyData( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); -S_API void SteamAPI_ISteamMatchmaking_SetLobbyGameServer( ISteamMatchmaking* self, uint64_steamid steamIDLobby, uint32 unGameServerIP, uint16 unGameServerPort, uint64_steamid steamIDGameServer ); -S_API bool SteamAPI_ISteamMatchmaking_GetLobbyGameServer( ISteamMatchmaking* self, uint64_steamid steamIDLobby, uint32 * punGameServerIP, uint16 * punGameServerPort, CSteamID * psteamIDGameServer ); -S_API bool SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit( ISteamMatchmaking* self, uint64_steamid steamIDLobby, int cMaxMembers ); -S_API int SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); -S_API bool SteamAPI_ISteamMatchmaking_SetLobbyType( ISteamMatchmaking* self, uint64_steamid steamIDLobby, ELobbyType eLobbyType ); -S_API bool SteamAPI_ISteamMatchmaking_SetLobbyJoinable( ISteamMatchmaking* self, uint64_steamid steamIDLobby, bool bLobbyJoinable ); -S_API uint64_steamid SteamAPI_ISteamMatchmaking_GetLobbyOwner( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); -S_API bool SteamAPI_ISteamMatchmaking_SetLobbyOwner( ISteamMatchmaking* self, uint64_steamid steamIDLobby, uint64_steamid steamIDNewOwner ); -S_API bool SteamAPI_ISteamMatchmaking_SetLinkedLobby( ISteamMatchmaking* self, uint64_steamid steamIDLobby, uint64_steamid steamIDLobbyDependent ); - -// ISteamMatchmakingServerListResponse -S_API void SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded( ISteamMatchmakingServerListResponse* self, HServerListRequest hRequest, int iServer ); -S_API void SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond( ISteamMatchmakingServerListResponse* self, HServerListRequest hRequest, int iServer ); -S_API void SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete( ISteamMatchmakingServerListResponse* self, HServerListRequest hRequest, EMatchMakingServerResponse response ); - -// ISteamMatchmakingPingResponse -S_API void SteamAPI_ISteamMatchmakingPingResponse_ServerResponded( ISteamMatchmakingPingResponse* self, gameserveritem_t & server ); -S_API void SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond( ISteamMatchmakingPingResponse* self ); - -// ISteamMatchmakingPlayersResponse -S_API void SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList( ISteamMatchmakingPlayersResponse* self, const char * pchName, int nScore, float flTimePlayed ); -S_API void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond( ISteamMatchmakingPlayersResponse* self ); -S_API void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete( ISteamMatchmakingPlayersResponse* self ); - -// ISteamMatchmakingRulesResponse -S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded( ISteamMatchmakingRulesResponse* self, const char * pchRule, const char * pchValue ); -S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond( ISteamMatchmakingRulesResponse* self ); -S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete( ISteamMatchmakingRulesResponse* self ); - -// ISteamMatchmakingServers -S_API ISteamMatchmakingServers *SteamAPI_SteamMatchmakingServers_v002(); -S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestInternetServerList( ISteamMatchmakingServers* self, AppId_t iApp, MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse * pRequestServersResponse ); -S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestLANServerList( ISteamMatchmakingServers* self, AppId_t iApp, ISteamMatchmakingServerListResponse * pRequestServersResponse ); -S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList( ISteamMatchmakingServers* self, AppId_t iApp, MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse * pRequestServersResponse ); -S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList( ISteamMatchmakingServers* self, AppId_t iApp, MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse * pRequestServersResponse ); -S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList( ISteamMatchmakingServers* self, AppId_t iApp, MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse * pRequestServersResponse ); -S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList( ISteamMatchmakingServers* self, AppId_t iApp, MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse * pRequestServersResponse ); -S_API void SteamAPI_ISteamMatchmakingServers_ReleaseRequest( ISteamMatchmakingServers* self, HServerListRequest hServerListRequest ); -S_API gameserveritem_t * SteamAPI_ISteamMatchmakingServers_GetServerDetails( ISteamMatchmakingServers* self, HServerListRequest hRequest, int iServer ); -S_API void SteamAPI_ISteamMatchmakingServers_CancelQuery( ISteamMatchmakingServers* self, HServerListRequest hRequest ); -S_API void SteamAPI_ISteamMatchmakingServers_RefreshQuery( ISteamMatchmakingServers* self, HServerListRequest hRequest ); -S_API bool SteamAPI_ISteamMatchmakingServers_IsRefreshing( ISteamMatchmakingServers* self, HServerListRequest hRequest ); -S_API int SteamAPI_ISteamMatchmakingServers_GetServerCount( ISteamMatchmakingServers* self, HServerListRequest hRequest ); -S_API void SteamAPI_ISteamMatchmakingServers_RefreshServer( ISteamMatchmakingServers* self, HServerListRequest hRequest, int iServer ); -S_API HServerQuery SteamAPI_ISteamMatchmakingServers_PingServer( ISteamMatchmakingServers* self, uint32 unIP, uint16 usPort, ISteamMatchmakingPingResponse * pRequestServersResponse ); -S_API HServerQuery SteamAPI_ISteamMatchmakingServers_PlayerDetails( ISteamMatchmakingServers* self, uint32 unIP, uint16 usPort, ISteamMatchmakingPlayersResponse * pRequestServersResponse ); -S_API HServerQuery SteamAPI_ISteamMatchmakingServers_ServerRules( ISteamMatchmakingServers* self, uint32 unIP, uint16 usPort, ISteamMatchmakingRulesResponse * pRequestServersResponse ); -S_API void SteamAPI_ISteamMatchmakingServers_CancelServerQuery( ISteamMatchmakingServers* self, HServerQuery hServerQuery ); - -// ISteamGameSearch -S_API ISteamGameSearch *SteamAPI_SteamGameSearch_v001(); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_AddGameSearchParams( ISteamGameSearch* self, const char * pchKeyToFind, const char * pchValuesToFind ); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SearchForGameWithLobby( ISteamGameSearch* self, uint64_steamid steamIDLobby, int nPlayerMin, int nPlayerMax ); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SearchForGameSolo( ISteamGameSearch* self, int nPlayerMin, int nPlayerMax ); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_AcceptGame( ISteamGameSearch* self ); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_DeclineGame( ISteamGameSearch* self ); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_RetrieveConnectionDetails( ISteamGameSearch* self, uint64_steamid steamIDHost, char * pchConnectionDetails, int cubConnectionDetails ); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_EndGameSearch( ISteamGameSearch* self ); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SetGameHostParams( ISteamGameSearch* self, const char * pchKey, const char * pchValue ); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SetConnectionDetails( ISteamGameSearch* self, const char * pchConnectionDetails, int cubConnectionDetails ); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_RequestPlayersForGame( ISteamGameSearch* self, int nPlayerMin, int nPlayerMax, int nMaxTeamSize ); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_HostConfirmGameStart( ISteamGameSearch* self, uint64 ullUniqueGameID ); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_CancelRequestPlayersForGame( ISteamGameSearch* self ); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SubmitPlayerResult( ISteamGameSearch* self, uint64 ullUniqueGameID, uint64_steamid steamIDPlayer, EPlayerResult_t EPlayerResult ); -S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_EndGame( ISteamGameSearch* self, uint64 ullUniqueGameID ); - -// ISteamParties -S_API ISteamParties *SteamAPI_SteamParties_v002(); -S_API uint32 SteamAPI_ISteamParties_GetNumActiveBeacons( ISteamParties* self ); -S_API PartyBeaconID_t SteamAPI_ISteamParties_GetBeaconByIndex( ISteamParties* self, uint32 unIndex ); -S_API bool SteamAPI_ISteamParties_GetBeaconDetails( ISteamParties* self, PartyBeaconID_t ulBeaconID, CSteamID * pSteamIDBeaconOwner, SteamPartyBeaconLocation_t * pLocation, char * pchMetadata, int cchMetadata ); -S_API SteamAPICall_t SteamAPI_ISteamParties_JoinParty( ISteamParties* self, PartyBeaconID_t ulBeaconID ); -S_API bool SteamAPI_ISteamParties_GetNumAvailableBeaconLocations( ISteamParties* self, uint32 * puNumLocations ); -S_API bool SteamAPI_ISteamParties_GetAvailableBeaconLocations( ISteamParties* self, SteamPartyBeaconLocation_t * pLocationList, uint32 uMaxNumLocations ); -S_API SteamAPICall_t SteamAPI_ISteamParties_CreateBeacon( ISteamParties* self, uint32 unOpenSlots, SteamPartyBeaconLocation_t * pBeaconLocation, const char * pchConnectString, const char * pchMetadata ); -S_API void SteamAPI_ISteamParties_OnReservationCompleted( ISteamParties* self, PartyBeaconID_t ulBeacon, uint64_steamid steamIDUser ); -S_API void SteamAPI_ISteamParties_CancelReservation( ISteamParties* self, PartyBeaconID_t ulBeacon, uint64_steamid steamIDUser ); -S_API SteamAPICall_t SteamAPI_ISteamParties_ChangeNumOpenSlots( ISteamParties* self, PartyBeaconID_t ulBeacon, uint32 unOpenSlots ); -S_API bool SteamAPI_ISteamParties_DestroyBeacon( ISteamParties* self, PartyBeaconID_t ulBeacon ); -S_API bool SteamAPI_ISteamParties_GetBeaconLocationData( ISteamParties* self, SteamPartyBeaconLocation_t BeaconLocation, ESteamPartyBeaconLocationData eData, char * pchDataStringOut, int cchDataStringOut ); - -// ISteamRemoteStorage -S_API ISteamRemoteStorage *SteamAPI_SteamRemoteStorage_v014(); -S_API bool SteamAPI_ISteamRemoteStorage_FileWrite( ISteamRemoteStorage* self, const char * pchFile, const void * pvData, int32 cubData ); -S_API int32 SteamAPI_ISteamRemoteStorage_FileRead( ISteamRemoteStorage* self, const char * pchFile, void * pvData, int32 cubDataToRead ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileWriteAsync( ISteamRemoteStorage* self, const char * pchFile, const void * pvData, uint32 cubData ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileReadAsync( ISteamRemoteStorage* self, const char * pchFile, uint32 nOffset, uint32 cubToRead ); -S_API bool SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete( ISteamRemoteStorage* self, SteamAPICall_t hReadCall, void * pvBuffer, uint32 cubToRead ); -S_API bool SteamAPI_ISteamRemoteStorage_FileForget( ISteamRemoteStorage* self, const char * pchFile ); -S_API bool SteamAPI_ISteamRemoteStorage_FileDelete( ISteamRemoteStorage* self, const char * pchFile ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileShare( ISteamRemoteStorage* self, const char * pchFile ); -S_API bool SteamAPI_ISteamRemoteStorage_SetSyncPlatforms( ISteamRemoteStorage* self, const char * pchFile, ERemoteStoragePlatform eRemoteStoragePlatform ); -S_API UGCFileWriteStreamHandle_t SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen( ISteamRemoteStorage* self, const char * pchFile ); -S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk( ISteamRemoteStorage* self, UGCFileWriteStreamHandle_t writeHandle, const void * pvData, int32 cubData ); -S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamClose( ISteamRemoteStorage* self, UGCFileWriteStreamHandle_t writeHandle ); -S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel( ISteamRemoteStorage* self, UGCFileWriteStreamHandle_t writeHandle ); -S_API bool SteamAPI_ISteamRemoteStorage_FileExists( ISteamRemoteStorage* self, const char * pchFile ); -S_API bool SteamAPI_ISteamRemoteStorage_FilePersisted( ISteamRemoteStorage* self, const char * pchFile ); -S_API int32 SteamAPI_ISteamRemoteStorage_GetFileSize( ISteamRemoteStorage* self, const char * pchFile ); -S_API int64 SteamAPI_ISteamRemoteStorage_GetFileTimestamp( ISteamRemoteStorage* self, const char * pchFile ); -S_API ERemoteStoragePlatform SteamAPI_ISteamRemoteStorage_GetSyncPlatforms( ISteamRemoteStorage* self, const char * pchFile ); -S_API int32 SteamAPI_ISteamRemoteStorage_GetFileCount( ISteamRemoteStorage* self ); -S_API const char * SteamAPI_ISteamRemoteStorage_GetFileNameAndSize( ISteamRemoteStorage* self, int iFile, int32 * pnFileSizeInBytes ); -S_API bool SteamAPI_ISteamRemoteStorage_GetQuota( ISteamRemoteStorage* self, uint64 * pnTotalBytes, uint64 * puAvailableBytes ); -S_API bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount( ISteamRemoteStorage* self ); -S_API bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp( ISteamRemoteStorage* self ); -S_API void SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp( ISteamRemoteStorage* self, bool bEnabled ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UGCDownload( ISteamRemoteStorage* self, UGCHandle_t hContent, uint32 unPriority ); -S_API bool SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress( ISteamRemoteStorage* self, UGCHandle_t hContent, int32 * pnBytesDownloaded, int32 * pnBytesExpected ); -S_API bool SteamAPI_ISteamRemoteStorage_GetUGCDetails( ISteamRemoteStorage* self, UGCHandle_t hContent, AppId_t * pnAppID, char ** ppchName, int32 * pnFileSizeInBytes, CSteamID * pSteamIDOwner ); -S_API int32 SteamAPI_ISteamRemoteStorage_UGCRead( ISteamRemoteStorage* self, UGCHandle_t hContent, void * pvData, int32 cubDataToRead, uint32 cOffset, EUGCReadAction eAction ); -S_API int32 SteamAPI_ISteamRemoteStorage_GetCachedUGCCount( ISteamRemoteStorage* self ); -S_API UGCHandle_t SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle( ISteamRemoteStorage* self, int32 iCachedContent ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_PublishWorkshopFile( ISteamRemoteStorage* self, const char * pchFile, const char * pchPreviewFile, AppId_t nConsumerAppId, const char * pchTitle, const char * pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t * pTags, EWorkshopFileType eWorkshopFileType ); -S_API PublishedFileUpdateHandle_t SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId ); -S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, const char * pchFile ); -S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, const char * pchPreviewFile ); -S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, const char * pchTitle ); -S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, const char * pchDescription ); -S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, ERemoteStoragePublishedFileVisibility eVisibility ); -S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, SteamParamStringArray_t * pTags ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId, uint32 unMaxSecondsOld ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_DeletePublishedFile( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles( ISteamRemoteStorage* self, uint32 unStartIndex ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_SubscribePublishedFile( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles( ISteamRemoteStorage* self, uint32 unStartIndex ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId ); -S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, const char * pchChangeDescription ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId, bool bVoteUp ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles( ISteamRemoteStorage* self, uint64_steamid steamId, uint32 unStartIndex, SteamParamStringArray_t * pRequiredTags, SteamParamStringArray_t * pExcludedTags ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_PublishVideo( ISteamRemoteStorage* self, EWorkshopVideoProvider eVideoProvider, const char * pchVideoAccount, const char * pchVideoIdentifier, const char * pchPreviewFile, AppId_t nConsumerAppId, const char * pchTitle, const char * pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t * pTags ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId, EWorkshopFileAction eAction ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction( ISteamRemoteStorage* self, EWorkshopFileAction eAction, uint32 unStartIndex ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles( ISteamRemoteStorage* self, EWorkshopEnumerationType eEnumerationType, uint32 unStartIndex, uint32 unCount, uint32 unDays, SteamParamStringArray_t * pTags, SteamParamStringArray_t * pUserTags ); -S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation( ISteamRemoteStorage* self, UGCHandle_t hContent, const char * pchLocation, uint32 unPriority ); - -// ISteamUserStats -S_API ISteamUserStats *SteamAPI_SteamUserStats_v012(); -S_API bool SteamAPI_ISteamUserStats_RequestCurrentStats( ISteamUserStats* self ); -S_API bool SteamAPI_ISteamUserStats_GetStatInt32( ISteamUserStats* self, const char * pchName, int32 * pData ); -S_API bool SteamAPI_ISteamUserStats_GetStatFloat( ISteamUserStats* self, const char * pchName, float * pData ); -S_API bool SteamAPI_ISteamUserStats_SetStatInt32( ISteamUserStats* self, const char * pchName, int32 nData ); -S_API bool SteamAPI_ISteamUserStats_SetStatFloat( ISteamUserStats* self, const char * pchName, float fData ); -S_API bool SteamAPI_ISteamUserStats_UpdateAvgRateStat( ISteamUserStats* self, const char * pchName, float flCountThisSession, double dSessionLength ); -S_API bool SteamAPI_ISteamUserStats_GetAchievement( ISteamUserStats* self, const char * pchName, bool * pbAchieved ); -S_API bool SteamAPI_ISteamUserStats_SetAchievement( ISteamUserStats* self, const char * pchName ); -S_API bool SteamAPI_ISteamUserStats_ClearAchievement( ISteamUserStats* self, const char * pchName ); -S_API bool SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime( ISteamUserStats* self, const char * pchName, bool * pbAchieved, uint32 * punUnlockTime ); -S_API bool SteamAPI_ISteamUserStats_StoreStats( ISteamUserStats* self ); -S_API int SteamAPI_ISteamUserStats_GetAchievementIcon( ISteamUserStats* self, const char * pchName ); -S_API const char * SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute( ISteamUserStats* self, const char * pchName, const char * pchKey ); -S_API bool SteamAPI_ISteamUserStats_IndicateAchievementProgress( ISteamUserStats* self, const char * pchName, uint32 nCurProgress, uint32 nMaxProgress ); -S_API uint32 SteamAPI_ISteamUserStats_GetNumAchievements( ISteamUserStats* self ); -S_API const char * SteamAPI_ISteamUserStats_GetAchievementName( ISteamUserStats* self, uint32 iAchievement ); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestUserStats( ISteamUserStats* self, uint64_steamid steamIDUser ); -S_API bool SteamAPI_ISteamUserStats_GetUserStatInt32( ISteamUserStats* self, uint64_steamid steamIDUser, const char * pchName, int32 * pData ); -S_API bool SteamAPI_ISteamUserStats_GetUserStatFloat( ISteamUserStats* self, uint64_steamid steamIDUser, const char * pchName, float * pData ); -S_API bool SteamAPI_ISteamUserStats_GetUserAchievement( ISteamUserStats* self, uint64_steamid steamIDUser, const char * pchName, bool * pbAchieved ); -S_API bool SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime( ISteamUserStats* self, uint64_steamid steamIDUser, const char * pchName, bool * pbAchieved, uint32 * punUnlockTime ); -S_API bool SteamAPI_ISteamUserStats_ResetAllStats( ISteamUserStats* self, bool bAchievementsToo ); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_FindOrCreateLeaderboard( ISteamUserStats* self, const char * pchLeaderboardName, ELeaderboardSortMethod eLeaderboardSortMethod, ELeaderboardDisplayType eLeaderboardDisplayType ); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_FindLeaderboard( ISteamUserStats* self, const char * pchLeaderboardName ); -S_API const char * SteamAPI_ISteamUserStats_GetLeaderboardName( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard ); -S_API int SteamAPI_ISteamUserStats_GetLeaderboardEntryCount( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard ); -S_API ELeaderboardSortMethod SteamAPI_ISteamUserStats_GetLeaderboardSortMethod( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard ); -S_API ELeaderboardDisplayType SteamAPI_ISteamUserStats_GetLeaderboardDisplayType( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard ); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_DownloadLeaderboardEntries( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard, ELeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd ); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard, CSteamID * prgUsers, int cUsers ); -S_API bool SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry( ISteamUserStats* self, SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, LeaderboardEntry_t * pLeaderboardEntry, int32 * pDetails, int cDetailsMax ); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_UploadLeaderboardScore( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard, ELeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int32 nScore, const int32 * pScoreDetails, int cScoreDetailsCount ); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_AttachLeaderboardUGC( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC ); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers( ISteamUserStats* self ); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages( ISteamUserStats* self ); -S_API int SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo( ISteamUserStats* self, char * pchName, uint32 unNameBufLen, float * pflPercent, bool * pbAchieved ); -S_API int SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo( ISteamUserStats* self, int iIteratorPrevious, char * pchName, uint32 unNameBufLen, float * pflPercent, bool * pbAchieved ); -S_API bool SteamAPI_ISteamUserStats_GetAchievementAchievedPercent( ISteamUserStats* self, const char * pchName, float * pflPercent ); -S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestGlobalStats( ISteamUserStats* self, int nHistoryDays ); -S_API bool SteamAPI_ISteamUserStats_GetGlobalStatInt64( ISteamUserStats* self, const char * pchStatName, int64 * pData ); -S_API bool SteamAPI_ISteamUserStats_GetGlobalStatDouble( ISteamUserStats* self, const char * pchStatName, double * pData ); -S_API int32 SteamAPI_ISteamUserStats_GetGlobalStatHistoryInt64( ISteamUserStats* self, const char * pchStatName, int64 * pData, uint32 cubData ); -S_API int32 SteamAPI_ISteamUserStats_GetGlobalStatHistoryDouble( ISteamUserStats* self, const char * pchStatName, double * pData, uint32 cubData ); -S_API bool SteamAPI_ISteamUserStats_GetAchievementProgressLimitsInt32( ISteamUserStats* self, const char * pchName, int32 * pnMinProgress, int32 * pnMaxProgress ); -S_API bool SteamAPI_ISteamUserStats_GetAchievementProgressLimitsFloat( ISteamUserStats* self, const char * pchName, float * pfMinProgress, float * pfMaxProgress ); - -// ISteamApps -S_API ISteamApps *SteamAPI_SteamApps_v008(); -S_API ISteamApps *SteamAPI_SteamGameServerApps_v008(); -S_API bool SteamAPI_ISteamApps_BIsSubscribed( ISteamApps* self ); -S_API bool SteamAPI_ISteamApps_BIsLowViolence( ISteamApps* self ); -S_API bool SteamAPI_ISteamApps_BIsCybercafe( ISteamApps* self ); -S_API bool SteamAPI_ISteamApps_BIsVACBanned( ISteamApps* self ); -S_API const char * SteamAPI_ISteamApps_GetCurrentGameLanguage( ISteamApps* self ); -S_API const char * SteamAPI_ISteamApps_GetAvailableGameLanguages( ISteamApps* self ); -S_API bool SteamAPI_ISteamApps_BIsSubscribedApp( ISteamApps* self, AppId_t appID ); -S_API bool SteamAPI_ISteamApps_BIsDlcInstalled( ISteamApps* self, AppId_t appID ); -S_API uint32 SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime( ISteamApps* self, AppId_t nAppID ); -S_API bool SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend( ISteamApps* self ); -S_API int SteamAPI_ISteamApps_GetDLCCount( ISteamApps* self ); -S_API bool SteamAPI_ISteamApps_BGetDLCDataByIndex( ISteamApps* self, int iDLC, AppId_t * pAppID, bool * pbAvailable, char * pchName, int cchNameBufferSize ); -S_API void SteamAPI_ISteamApps_InstallDLC( ISteamApps* self, AppId_t nAppID ); -S_API void SteamAPI_ISteamApps_UninstallDLC( ISteamApps* self, AppId_t nAppID ); -S_API void SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey( ISteamApps* self, AppId_t nAppID ); -S_API bool SteamAPI_ISteamApps_GetCurrentBetaName( ISteamApps* self, char * pchName, int cchNameBufferSize ); -S_API bool SteamAPI_ISteamApps_MarkContentCorrupt( ISteamApps* self, bool bMissingFilesOnly ); -S_API uint32 SteamAPI_ISteamApps_GetInstalledDepots( ISteamApps* self, AppId_t appID, DepotId_t * pvecDepots, uint32 cMaxDepots ); -S_API uint32 SteamAPI_ISteamApps_GetAppInstallDir( ISteamApps* self, AppId_t appID, char * pchFolder, uint32 cchFolderBufferSize ); -S_API bool SteamAPI_ISteamApps_BIsAppInstalled( ISteamApps* self, AppId_t appID ); -S_API uint64_steamid SteamAPI_ISteamApps_GetAppOwner( ISteamApps* self ); -S_API const char * SteamAPI_ISteamApps_GetLaunchQueryParam( ISteamApps* self, const char * pchKey ); -S_API bool SteamAPI_ISteamApps_GetDlcDownloadProgress( ISteamApps* self, AppId_t nAppID, uint64 * punBytesDownloaded, uint64 * punBytesTotal ); -S_API int SteamAPI_ISteamApps_GetAppBuildId( ISteamApps* self ); -S_API void SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys( ISteamApps* self ); -S_API SteamAPICall_t SteamAPI_ISteamApps_GetFileDetails( ISteamApps* self, const char * pszFileName ); -S_API int SteamAPI_ISteamApps_GetLaunchCommandLine( ISteamApps* self, char * pszCommandLine, int cubCommandLine ); -S_API bool SteamAPI_ISteamApps_BIsSubscribedFromFamilySharing( ISteamApps* self ); -S_API bool SteamAPI_ISteamApps_BIsTimedTrial( ISteamApps* self, uint32 * punSecondsAllowed, uint32 * punSecondsPlayed ); - -// ISteamNetworking -S_API ISteamNetworking *SteamAPI_SteamNetworking_v006(); -S_API ISteamNetworking *SteamAPI_SteamGameServerNetworking_v006(); -S_API bool SteamAPI_ISteamNetworking_SendP2PPacket( ISteamNetworking* self, uint64_steamid steamIDRemote, const void * pubData, uint32 cubData, EP2PSend eP2PSendType, int nChannel ); -S_API bool SteamAPI_ISteamNetworking_IsP2PPacketAvailable( ISteamNetworking* self, uint32 * pcubMsgSize, int nChannel ); -S_API bool SteamAPI_ISteamNetworking_ReadP2PPacket( ISteamNetworking* self, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize, CSteamID * psteamIDRemote, int nChannel ); -S_API bool SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser( ISteamNetworking* self, uint64_steamid steamIDRemote ); -S_API bool SteamAPI_ISteamNetworking_CloseP2PSessionWithUser( ISteamNetworking* self, uint64_steamid steamIDRemote ); -S_API bool SteamAPI_ISteamNetworking_CloseP2PChannelWithUser( ISteamNetworking* self, uint64_steamid steamIDRemote, int nChannel ); -S_API bool SteamAPI_ISteamNetworking_GetP2PSessionState( ISteamNetworking* self, uint64_steamid steamIDRemote, P2PSessionState_t * pConnectionState ); -S_API bool SteamAPI_ISteamNetworking_AllowP2PPacketRelay( ISteamNetworking* self, bool bAllow ); -S_API SNetListenSocket_t SteamAPI_ISteamNetworking_CreateListenSocket( ISteamNetworking* self, int nVirtualP2PPort, SteamIPAddress_t nIP, uint16 nPort, bool bAllowUseOfPacketRelay ); -S_API SNetSocket_t SteamAPI_ISteamNetworking_CreateP2PConnectionSocket( ISteamNetworking* self, uint64_steamid steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay ); -S_API SNetSocket_t SteamAPI_ISteamNetworking_CreateConnectionSocket( ISteamNetworking* self, SteamIPAddress_t nIP, uint16 nPort, int nTimeoutSec ); -S_API bool SteamAPI_ISteamNetworking_DestroySocket( ISteamNetworking* self, SNetSocket_t hSocket, bool bNotifyRemoteEnd ); -S_API bool SteamAPI_ISteamNetworking_DestroyListenSocket( ISteamNetworking* self, SNetListenSocket_t hSocket, bool bNotifyRemoteEnd ); -S_API bool SteamAPI_ISteamNetworking_SendDataOnSocket( ISteamNetworking* self, SNetSocket_t hSocket, void * pubData, uint32 cubData, bool bReliable ); -S_API bool SteamAPI_ISteamNetworking_IsDataAvailableOnSocket( ISteamNetworking* self, SNetSocket_t hSocket, uint32 * pcubMsgSize ); -S_API bool SteamAPI_ISteamNetworking_RetrieveDataFromSocket( ISteamNetworking* self, SNetSocket_t hSocket, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize ); -S_API bool SteamAPI_ISteamNetworking_IsDataAvailable( ISteamNetworking* self, SNetListenSocket_t hListenSocket, uint32 * pcubMsgSize, SNetSocket_t * phSocket ); -S_API bool SteamAPI_ISteamNetworking_RetrieveData( ISteamNetworking* self, SNetListenSocket_t hListenSocket, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize, SNetSocket_t * phSocket ); -S_API bool SteamAPI_ISteamNetworking_GetSocketInfo( ISteamNetworking* self, SNetSocket_t hSocket, CSteamID * pSteamIDRemote, int * peSocketStatus, SteamIPAddress_t * punIPRemote, uint16 * punPortRemote ); -S_API bool SteamAPI_ISteamNetworking_GetListenSocketInfo( ISteamNetworking* self, SNetListenSocket_t hListenSocket, SteamIPAddress_t * pnIP, uint16 * pnPort ); -S_API ESNetSocketConnectionType SteamAPI_ISteamNetworking_GetSocketConnectionType( ISteamNetworking* self, SNetSocket_t hSocket ); -S_API int SteamAPI_ISteamNetworking_GetMaxPacketSize( ISteamNetworking* self, SNetSocket_t hSocket ); - -// ISteamScreenshots -S_API ISteamScreenshots *SteamAPI_SteamScreenshots_v003(); -S_API ScreenshotHandle SteamAPI_ISteamScreenshots_WriteScreenshot( ISteamScreenshots* self, void * pubRGB, uint32 cubRGB, int nWidth, int nHeight ); -S_API ScreenshotHandle SteamAPI_ISteamScreenshots_AddScreenshotToLibrary( ISteamScreenshots* self, const char * pchFilename, const char * pchThumbnailFilename, int nWidth, int nHeight ); -S_API void SteamAPI_ISteamScreenshots_TriggerScreenshot( ISteamScreenshots* self ); -S_API void SteamAPI_ISteamScreenshots_HookScreenshots( ISteamScreenshots* self, bool bHook ); -S_API bool SteamAPI_ISteamScreenshots_SetLocation( ISteamScreenshots* self, ScreenshotHandle hScreenshot, const char * pchLocation ); -S_API bool SteamAPI_ISteamScreenshots_TagUser( ISteamScreenshots* self, ScreenshotHandle hScreenshot, uint64_steamid steamID ); -S_API bool SteamAPI_ISteamScreenshots_TagPublishedFile( ISteamScreenshots* self, ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID ); -S_API bool SteamAPI_ISteamScreenshots_IsScreenshotsHooked( ISteamScreenshots* self ); -S_API ScreenshotHandle SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary( ISteamScreenshots* self, EVRScreenshotType eType, const char * pchFilename, const char * pchVRFilename ); - -// ISteamMusic -S_API ISteamMusic *SteamAPI_SteamMusic_v001(); -S_API bool SteamAPI_ISteamMusic_BIsEnabled( ISteamMusic* self ); -S_API bool SteamAPI_ISteamMusic_BIsPlaying( ISteamMusic* self ); -S_API AudioPlayback_Status SteamAPI_ISteamMusic_GetPlaybackStatus( ISteamMusic* self ); -S_API void SteamAPI_ISteamMusic_Play( ISteamMusic* self ); -S_API void SteamAPI_ISteamMusic_Pause( ISteamMusic* self ); -S_API void SteamAPI_ISteamMusic_PlayPrevious( ISteamMusic* self ); -S_API void SteamAPI_ISteamMusic_PlayNext( ISteamMusic* self ); -S_API void SteamAPI_ISteamMusic_SetVolume( ISteamMusic* self, float flVolume ); -S_API float SteamAPI_ISteamMusic_GetVolume( ISteamMusic* self ); - -// ISteamMusicRemote -S_API ISteamMusicRemote *SteamAPI_SteamMusicRemote_v001(); -S_API bool SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote( ISteamMusicRemote* self, const char * pchName ); -S_API bool SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote( ISteamMusicRemote* self ); -S_API bool SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote( ISteamMusicRemote* self ); -S_API bool SteamAPI_ISteamMusicRemote_BActivationSuccess( ISteamMusicRemote* self, bool bValue ); -S_API bool SteamAPI_ISteamMusicRemote_SetDisplayName( ISteamMusicRemote* self, const char * pchDisplayName ); -S_API bool SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64( ISteamMusicRemote* self, void * pvBuffer, uint32 cbBufferLength ); -S_API bool SteamAPI_ISteamMusicRemote_EnablePlayPrevious( ISteamMusicRemote* self, bool bValue ); -S_API bool SteamAPI_ISteamMusicRemote_EnablePlayNext( ISteamMusicRemote* self, bool bValue ); -S_API bool SteamAPI_ISteamMusicRemote_EnableShuffled( ISteamMusicRemote* self, bool bValue ); -S_API bool SteamAPI_ISteamMusicRemote_EnableLooped( ISteamMusicRemote* self, bool bValue ); -S_API bool SteamAPI_ISteamMusicRemote_EnableQueue( ISteamMusicRemote* self, bool bValue ); -S_API bool SteamAPI_ISteamMusicRemote_EnablePlaylists( ISteamMusicRemote* self, bool bValue ); -S_API bool SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus( ISteamMusicRemote* self, AudioPlayback_Status nStatus ); -S_API bool SteamAPI_ISteamMusicRemote_UpdateShuffled( ISteamMusicRemote* self, bool bValue ); -S_API bool SteamAPI_ISteamMusicRemote_UpdateLooped( ISteamMusicRemote* self, bool bValue ); -S_API bool SteamAPI_ISteamMusicRemote_UpdateVolume( ISteamMusicRemote* self, float flValue ); -S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryWillChange( ISteamMusicRemote* self ); -S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable( ISteamMusicRemote* self, bool bAvailable ); -S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText( ISteamMusicRemote* self, const char * pchText ); -S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds( ISteamMusicRemote* self, int nValue ); -S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt( ISteamMusicRemote* self, void * pvBuffer, uint32 cbBufferLength ); -S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryDidChange( ISteamMusicRemote* self ); -S_API bool SteamAPI_ISteamMusicRemote_QueueWillChange( ISteamMusicRemote* self ); -S_API bool SteamAPI_ISteamMusicRemote_ResetQueueEntries( ISteamMusicRemote* self ); -S_API bool SteamAPI_ISteamMusicRemote_SetQueueEntry( ISteamMusicRemote* self, int nID, int nPosition, const char * pchEntryText ); -S_API bool SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry( ISteamMusicRemote* self, int nID ); -S_API bool SteamAPI_ISteamMusicRemote_QueueDidChange( ISteamMusicRemote* self ); -S_API bool SteamAPI_ISteamMusicRemote_PlaylistWillChange( ISteamMusicRemote* self ); -S_API bool SteamAPI_ISteamMusicRemote_ResetPlaylistEntries( ISteamMusicRemote* self ); -S_API bool SteamAPI_ISteamMusicRemote_SetPlaylistEntry( ISteamMusicRemote* self, int nID, int nPosition, const char * pchEntryText ); -S_API bool SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry( ISteamMusicRemote* self, int nID ); -S_API bool SteamAPI_ISteamMusicRemote_PlaylistDidChange( ISteamMusicRemote* self ); - -// ISteamHTTP -S_API ISteamHTTP *SteamAPI_SteamHTTP_v003(); -S_API ISteamHTTP *SteamAPI_SteamGameServerHTTP_v003(); -S_API HTTPRequestHandle SteamAPI_ISteamHTTP_CreateHTTPRequest( ISteamHTTP* self, EHTTPMethod eHTTPRequestMethod, const char * pchAbsoluteURL ); -S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestContextValue( ISteamHTTP* self, HTTPRequestHandle hRequest, uint64 ulContextValue ); -S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout( ISteamHTTP* self, HTTPRequestHandle hRequest, uint32 unTimeoutSeconds ); -S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue( ISteamHTTP* self, HTTPRequestHandle hRequest, const char * pchHeaderName, const char * pchHeaderValue ); -S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter( ISteamHTTP* self, HTTPRequestHandle hRequest, const char * pchParamName, const char * pchParamValue ); -S_API bool SteamAPI_ISteamHTTP_SendHTTPRequest( ISteamHTTP* self, HTTPRequestHandle hRequest, SteamAPICall_t * pCallHandle ); -S_API bool SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse( ISteamHTTP* self, HTTPRequestHandle hRequest, SteamAPICall_t * pCallHandle ); -S_API bool SteamAPI_ISteamHTTP_DeferHTTPRequest( ISteamHTTP* self, HTTPRequestHandle hRequest ); -S_API bool SteamAPI_ISteamHTTP_PrioritizeHTTPRequest( ISteamHTTP* self, HTTPRequestHandle hRequest ); -S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize( ISteamHTTP* self, HTTPRequestHandle hRequest, const char * pchHeaderName, uint32 * unResponseHeaderSize ); -S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue( ISteamHTTP* self, HTTPRequestHandle hRequest, const char * pchHeaderName, uint8 * pHeaderValueBuffer, uint32 unBufferSize ); -S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseBodySize( ISteamHTTP* self, HTTPRequestHandle hRequest, uint32 * unBodySize ); -S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseBodyData( ISteamHTTP* self, HTTPRequestHandle hRequest, uint8 * pBodyDataBuffer, uint32 unBufferSize ); -S_API bool SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData( ISteamHTTP* self, HTTPRequestHandle hRequest, uint32 cOffset, uint8 * pBodyDataBuffer, uint32 unBufferSize ); -S_API bool SteamAPI_ISteamHTTP_ReleaseHTTPRequest( ISteamHTTP* self, HTTPRequestHandle hRequest ); -S_API bool SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct( ISteamHTTP* self, HTTPRequestHandle hRequest, float * pflPercentOut ); -S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody( ISteamHTTP* self, HTTPRequestHandle hRequest, const char * pchContentType, uint8 * pubBody, uint32 unBodyLen ); -S_API HTTPCookieContainerHandle SteamAPI_ISteamHTTP_CreateCookieContainer( ISteamHTTP* self, bool bAllowResponsesToModify ); -S_API bool SteamAPI_ISteamHTTP_ReleaseCookieContainer( ISteamHTTP* self, HTTPCookieContainerHandle hCookieContainer ); -S_API bool SteamAPI_ISteamHTTP_SetCookie( ISteamHTTP* self, HTTPCookieContainerHandle hCookieContainer, const char * pchHost, const char * pchUrl, const char * pchCookie ); -S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer( ISteamHTTP* self, HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer ); -S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo( ISteamHTTP* self, HTTPRequestHandle hRequest, const char * pchUserAgentInfo ); -S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate( ISteamHTTP* self, HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate ); -S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS( ISteamHTTP* self, HTTPRequestHandle hRequest, uint32 unMilliseconds ); -S_API bool SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut( ISteamHTTP* self, HTTPRequestHandle hRequest, bool * pbWasTimedOut ); - -// ISteamInput -S_API ISteamInput *SteamAPI_SteamInput_v002(); -S_API bool SteamAPI_ISteamInput_Init( ISteamInput* self ); -S_API bool SteamAPI_ISteamInput_Shutdown( ISteamInput* self ); -S_API void SteamAPI_ISteamInput_RunFrame( ISteamInput* self ); -S_API int SteamAPI_ISteamInput_GetConnectedControllers( ISteamInput* self, InputHandle_t * handlesOut ); -S_API InputActionSetHandle_t SteamAPI_ISteamInput_GetActionSetHandle( ISteamInput* self, const char * pszActionSetName ); -S_API void SteamAPI_ISteamInput_ActivateActionSet( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle ); -S_API InputActionSetHandle_t SteamAPI_ISteamInput_GetCurrentActionSet( ISteamInput* self, InputHandle_t inputHandle ); -S_API void SteamAPI_ISteamInput_ActivateActionSetLayer( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ); -S_API void SteamAPI_ISteamInput_DeactivateActionSetLayer( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ); -S_API void SteamAPI_ISteamInput_DeactivateAllActionSetLayers( ISteamInput* self, InputHandle_t inputHandle ); -S_API int SteamAPI_ISteamInput_GetActiveActionSetLayers( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t * handlesOut ); -S_API InputDigitalActionHandle_t SteamAPI_ISteamInput_GetDigitalActionHandle( ISteamInput* self, const char * pszActionName ); -S_API InputDigitalActionData_t SteamAPI_ISteamInput_GetDigitalActionData( ISteamInput* self, InputHandle_t inputHandle, InputDigitalActionHandle_t digitalActionHandle ); -S_API int SteamAPI_ISteamInput_GetDigitalActionOrigins( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputDigitalActionHandle_t digitalActionHandle, EInputActionOrigin * originsOut ); -S_API InputAnalogActionHandle_t SteamAPI_ISteamInput_GetAnalogActionHandle( ISteamInput* self, const char * pszActionName ); -S_API InputAnalogActionData_t SteamAPI_ISteamInput_GetAnalogActionData( ISteamInput* self, InputHandle_t inputHandle, InputAnalogActionHandle_t analogActionHandle ); -S_API int SteamAPI_ISteamInput_GetAnalogActionOrigins( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputAnalogActionHandle_t analogActionHandle, EInputActionOrigin * originsOut ); -S_API const char * SteamAPI_ISteamInput_GetGlyphForActionOrigin( ISteamInput* self, EInputActionOrigin eOrigin ); -S_API const char * SteamAPI_ISteamInput_GetStringForActionOrigin( ISteamInput* self, EInputActionOrigin eOrigin ); -S_API void SteamAPI_ISteamInput_StopAnalogActionMomentum( ISteamInput* self, InputHandle_t inputHandle, InputAnalogActionHandle_t eAction ); -S_API InputMotionData_t SteamAPI_ISteamInput_GetMotionData( ISteamInput* self, InputHandle_t inputHandle ); -S_API void SteamAPI_ISteamInput_TriggerVibration( ISteamInput* self, InputHandle_t inputHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed ); -S_API void SteamAPI_ISteamInput_SetLEDColor( ISteamInput* self, InputHandle_t inputHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags ); -S_API void SteamAPI_ISteamInput_TriggerHapticPulse( ISteamInput* self, InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ); -S_API void SteamAPI_ISteamInput_TriggerRepeatedHapticPulse( ISteamInput* self, InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ); -S_API bool SteamAPI_ISteamInput_ShowBindingPanel( ISteamInput* self, InputHandle_t inputHandle ); -S_API ESteamInputType SteamAPI_ISteamInput_GetInputTypeForHandle( ISteamInput* self, InputHandle_t inputHandle ); -S_API InputHandle_t SteamAPI_ISteamInput_GetControllerForGamepadIndex( ISteamInput* self, int nIndex ); -S_API int SteamAPI_ISteamInput_GetGamepadIndexForController( ISteamInput* self, InputHandle_t ulinputHandle ); -S_API const char * SteamAPI_ISteamInput_GetStringForXboxOrigin( ISteamInput* self, EXboxOrigin eOrigin ); -S_API const char * SteamAPI_ISteamInput_GetGlyphForXboxOrigin( ISteamInput* self, EXboxOrigin eOrigin ); -S_API EInputActionOrigin SteamAPI_ISteamInput_GetActionOriginFromXboxOrigin( ISteamInput* self, InputHandle_t inputHandle, EXboxOrigin eOrigin ); -S_API EInputActionOrigin SteamAPI_ISteamInput_TranslateActionOrigin( ISteamInput* self, ESteamInputType eDestinationInputType, EInputActionOrigin eSourceOrigin ); -S_API bool SteamAPI_ISteamInput_GetDeviceBindingRevision( ISteamInput* self, InputHandle_t inputHandle, int * pMajor, int * pMinor ); -S_API uint32 SteamAPI_ISteamInput_GetRemotePlaySessionID( ISteamInput* self, InputHandle_t inputHandle ); - -// ISteamController -S_API ISteamController *SteamAPI_SteamController_v008(); -S_API bool SteamAPI_ISteamController_Init( ISteamController* self ); -S_API bool SteamAPI_ISteamController_Shutdown( ISteamController* self ); -S_API void SteamAPI_ISteamController_RunFrame( ISteamController* self ); -S_API int SteamAPI_ISteamController_GetConnectedControllers( ISteamController* self, ControllerHandle_t * handlesOut ); -S_API ControllerActionSetHandle_t SteamAPI_ISteamController_GetActionSetHandle( ISteamController* self, const char * pszActionSetName ); -S_API void SteamAPI_ISteamController_ActivateActionSet( ISteamController* self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle ); -S_API ControllerActionSetHandle_t SteamAPI_ISteamController_GetCurrentActionSet( ISteamController* self, ControllerHandle_t controllerHandle ); -S_API void SteamAPI_ISteamController_ActivateActionSetLayer( ISteamController* self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle ); -S_API void SteamAPI_ISteamController_DeactivateActionSetLayer( ISteamController* self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle ); -S_API void SteamAPI_ISteamController_DeactivateAllActionSetLayers( ISteamController* self, ControllerHandle_t controllerHandle ); -S_API int SteamAPI_ISteamController_GetActiveActionSetLayers( ISteamController* self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t * handlesOut ); -S_API ControllerDigitalActionHandle_t SteamAPI_ISteamController_GetDigitalActionHandle( ISteamController* self, const char * pszActionName ); -S_API InputDigitalActionData_t SteamAPI_ISteamController_GetDigitalActionData( ISteamController* self, ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle ); -S_API int SteamAPI_ISteamController_GetDigitalActionOrigins( ISteamController* self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, EControllerActionOrigin * originsOut ); -S_API ControllerAnalogActionHandle_t SteamAPI_ISteamController_GetAnalogActionHandle( ISteamController* self, const char * pszActionName ); -S_API InputAnalogActionData_t SteamAPI_ISteamController_GetAnalogActionData( ISteamController* self, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle ); -S_API int SteamAPI_ISteamController_GetAnalogActionOrigins( ISteamController* self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, EControllerActionOrigin * originsOut ); -S_API const char * SteamAPI_ISteamController_GetGlyphForActionOrigin( ISteamController* self, EControllerActionOrigin eOrigin ); -S_API const char * SteamAPI_ISteamController_GetStringForActionOrigin( ISteamController* self, EControllerActionOrigin eOrigin ); -S_API void SteamAPI_ISteamController_StopAnalogActionMomentum( ISteamController* self, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction ); -S_API InputMotionData_t SteamAPI_ISteamController_GetMotionData( ISteamController* self, ControllerHandle_t controllerHandle ); -S_API void SteamAPI_ISteamController_TriggerHapticPulse( ISteamController* self, ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ); -S_API void SteamAPI_ISteamController_TriggerRepeatedHapticPulse( ISteamController* self, ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ); -S_API void SteamAPI_ISteamController_TriggerVibration( ISteamController* self, ControllerHandle_t controllerHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed ); -S_API void SteamAPI_ISteamController_SetLEDColor( ISteamController* self, ControllerHandle_t controllerHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags ); -S_API bool SteamAPI_ISteamController_ShowBindingPanel( ISteamController* self, ControllerHandle_t controllerHandle ); -S_API ESteamInputType SteamAPI_ISteamController_GetInputTypeForHandle( ISteamController* self, ControllerHandle_t controllerHandle ); -S_API ControllerHandle_t SteamAPI_ISteamController_GetControllerForGamepadIndex( ISteamController* self, int nIndex ); -S_API int SteamAPI_ISteamController_GetGamepadIndexForController( ISteamController* self, ControllerHandle_t ulControllerHandle ); -S_API const char * SteamAPI_ISteamController_GetStringForXboxOrigin( ISteamController* self, EXboxOrigin eOrigin ); -S_API const char * SteamAPI_ISteamController_GetGlyphForXboxOrigin( ISteamController* self, EXboxOrigin eOrigin ); -S_API EControllerActionOrigin SteamAPI_ISteamController_GetActionOriginFromXboxOrigin( ISteamController* self, ControllerHandle_t controllerHandle, EXboxOrigin eOrigin ); -S_API EControllerActionOrigin SteamAPI_ISteamController_TranslateActionOrigin( ISteamController* self, ESteamInputType eDestinationInputType, EControllerActionOrigin eSourceOrigin ); -S_API bool SteamAPI_ISteamController_GetControllerBindingRevision( ISteamController* self, ControllerHandle_t controllerHandle, int * pMajor, int * pMinor ); - -// ISteamUGC -S_API ISteamUGC *SteamAPI_SteamUGC_v015(); -S_API ISteamUGC *SteamAPI_SteamGameServerUGC_v015(); -S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUserUGCRequest( ISteamUGC* self, AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ); -S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestPage( ISteamUGC* self, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ); -S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestCursor( ISteamUGC* self, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, const char * pchCursor ); -S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest( ISteamUGC* self, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_SendQueryUGCRequest( ISteamUGC* self, UGCQueryHandle_t handle ); -S_API bool SteamAPI_ISteamUGC_GetQueryUGCResult( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, SteamUGCDetails_t * pDetails ); -S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumTags( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index ); -S_API bool SteamAPI_ISteamUGC_GetQueryUGCTag( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, uint32 indexTag, char * pchValue, uint32 cchValueSize ); -S_API bool SteamAPI_ISteamUGC_GetQueryUGCTagDisplayName( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, uint32 indexTag, char * pchValue, uint32 cchValueSize ); -S_API bool SteamAPI_ISteamUGC_GetQueryUGCPreviewURL( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, char * pchURL, uint32 cchURLSize ); -S_API bool SteamAPI_ISteamUGC_GetQueryUGCMetadata( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, char * pchMetadata, uint32 cchMetadatasize ); -S_API bool SteamAPI_ISteamUGC_GetQueryUGCChildren( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries ); -S_API bool SteamAPI_ISteamUGC_GetQueryUGCStatistic( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, EItemStatistic eStatType, uint64 * pStatValue ); -S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index ); -S_API bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, char * pchURLOrVideoID, uint32 cchURLSize, char * pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType * pPreviewType ); -S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index ); -S_API bool SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, char * pchKey, uint32 cchKeySize, char * pchValue, uint32 cchValueSize ); -S_API bool SteamAPI_ISteamUGC_GetQueryFirstUGCKeyValueTag( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, const char * pchKey, char * pchValue, uint32 cchValueSize ); -S_API bool SteamAPI_ISteamUGC_ReleaseQueryUGCRequest( ISteamUGC* self, UGCQueryHandle_t handle ); -S_API bool SteamAPI_ISteamUGC_AddRequiredTag( ISteamUGC* self, UGCQueryHandle_t handle, const char * pTagName ); -S_API bool SteamAPI_ISteamUGC_AddRequiredTagGroup( ISteamUGC* self, UGCQueryHandle_t handle, const SteamParamStringArray_t * pTagGroups ); -S_API bool SteamAPI_ISteamUGC_AddExcludedTag( ISteamUGC* self, UGCQueryHandle_t handle, const char * pTagName ); -S_API bool SteamAPI_ISteamUGC_SetReturnOnlyIDs( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnOnlyIDs ); -S_API bool SteamAPI_ISteamUGC_SetReturnKeyValueTags( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnKeyValueTags ); -S_API bool SteamAPI_ISteamUGC_SetReturnLongDescription( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnLongDescription ); -S_API bool SteamAPI_ISteamUGC_SetReturnMetadata( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnMetadata ); -S_API bool SteamAPI_ISteamUGC_SetReturnChildren( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnChildren ); -S_API bool SteamAPI_ISteamUGC_SetReturnAdditionalPreviews( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnAdditionalPreviews ); -S_API bool SteamAPI_ISteamUGC_SetReturnTotalOnly( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnTotalOnly ); -S_API bool SteamAPI_ISteamUGC_SetReturnPlaytimeStats( ISteamUGC* self, UGCQueryHandle_t handle, uint32 unDays ); -S_API bool SteamAPI_ISteamUGC_SetLanguage( ISteamUGC* self, UGCQueryHandle_t handle, const char * pchLanguage ); -S_API bool SteamAPI_ISteamUGC_SetAllowCachedResponse( ISteamUGC* self, UGCQueryHandle_t handle, uint32 unMaxAgeSeconds ); -S_API bool SteamAPI_ISteamUGC_SetCloudFileNameFilter( ISteamUGC* self, UGCQueryHandle_t handle, const char * pMatchCloudFileName ); -S_API bool SteamAPI_ISteamUGC_SetMatchAnyTag( ISteamUGC* self, UGCQueryHandle_t handle, bool bMatchAnyTag ); -S_API bool SteamAPI_ISteamUGC_SetSearchText( ISteamUGC* self, UGCQueryHandle_t handle, const char * pSearchText ); -S_API bool SteamAPI_ISteamUGC_SetRankedByTrendDays( ISteamUGC* self, UGCQueryHandle_t handle, uint32 unDays ); -S_API bool SteamAPI_ISteamUGC_AddRequiredKeyValueTag( ISteamUGC* self, UGCQueryHandle_t handle, const char * pKey, const char * pValue ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_RequestUGCDetails( ISteamUGC* self, PublishedFileId_t nPublishedFileID, uint32 unMaxAgeSeconds ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_CreateItem( ISteamUGC* self, AppId_t nConsumerAppId, EWorkshopFileType eFileType ); -S_API UGCUpdateHandle_t SteamAPI_ISteamUGC_StartItemUpdate( ISteamUGC* self, AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID ); -S_API bool SteamAPI_ISteamUGC_SetItemTitle( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchTitle ); -S_API bool SteamAPI_ISteamUGC_SetItemDescription( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchDescription ); -S_API bool SteamAPI_ISteamUGC_SetItemUpdateLanguage( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchLanguage ); -S_API bool SteamAPI_ISteamUGC_SetItemMetadata( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchMetaData ); -S_API bool SteamAPI_ISteamUGC_SetItemVisibility( ISteamUGC* self, UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility ); -S_API bool SteamAPI_ISteamUGC_SetItemTags( ISteamUGC* self, UGCUpdateHandle_t updateHandle, const SteamParamStringArray_t * pTags ); -S_API bool SteamAPI_ISteamUGC_SetItemContent( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pszContentFolder ); -S_API bool SteamAPI_ISteamUGC_SetItemPreview( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pszPreviewFile ); -S_API bool SteamAPI_ISteamUGC_SetAllowLegacyUpload( ISteamUGC* self, UGCUpdateHandle_t handle, bool bAllowLegacyUpload ); -S_API bool SteamAPI_ISteamUGC_RemoveAllItemKeyValueTags( ISteamUGC* self, UGCUpdateHandle_t handle ); -S_API bool SteamAPI_ISteamUGC_RemoveItemKeyValueTags( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchKey ); -S_API bool SteamAPI_ISteamUGC_AddItemKeyValueTag( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchKey, const char * pchValue ); -S_API bool SteamAPI_ISteamUGC_AddItemPreviewFile( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pszPreviewFile, EItemPreviewType type ); -S_API bool SteamAPI_ISteamUGC_AddItemPreviewVideo( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pszVideoID ); -S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewFile( ISteamUGC* self, UGCUpdateHandle_t handle, uint32 index, const char * pszPreviewFile ); -S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewVideo( ISteamUGC* self, UGCUpdateHandle_t handle, uint32 index, const char * pszVideoID ); -S_API bool SteamAPI_ISteamUGC_RemoveItemPreview( ISteamUGC* self, UGCUpdateHandle_t handle, uint32 index ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_SubmitItemUpdate( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchChangeNote ); -S_API EItemUpdateStatus SteamAPI_ISteamUGC_GetItemUpdateProgress( ISteamUGC* self, UGCUpdateHandle_t handle, uint64 * punBytesProcessed, uint64 * punBytesTotal ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_SetUserItemVote( ISteamUGC* self, PublishedFileId_t nPublishedFileID, bool bVoteUp ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_GetUserItemVote( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_AddItemToFavorites( ISteamUGC* self, AppId_t nAppId, PublishedFileId_t nPublishedFileID ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveItemFromFavorites( ISteamUGC* self, AppId_t nAppId, PublishedFileId_t nPublishedFileID ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_SubscribeItem( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_UnsubscribeItem( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); -S_API uint32 SteamAPI_ISteamUGC_GetNumSubscribedItems( ISteamUGC* self ); -S_API uint32 SteamAPI_ISteamUGC_GetSubscribedItems( ISteamUGC* self, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries ); -S_API uint32 SteamAPI_ISteamUGC_GetItemState( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); -S_API bool SteamAPI_ISteamUGC_GetItemInstallInfo( ISteamUGC* self, PublishedFileId_t nPublishedFileID, uint64 * punSizeOnDisk, char * pchFolder, uint32 cchFolderSize, uint32 * punTimeStamp ); -S_API bool SteamAPI_ISteamUGC_GetItemDownloadInfo( ISteamUGC* self, PublishedFileId_t nPublishedFileID, uint64 * punBytesDownloaded, uint64 * punBytesTotal ); -S_API bool SteamAPI_ISteamUGC_DownloadItem( ISteamUGC* self, PublishedFileId_t nPublishedFileID, bool bHighPriority ); -S_API bool SteamAPI_ISteamUGC_BInitWorkshopForGameServer( ISteamUGC* self, DepotId_t unWorkshopDepotID, const char * pszFolder ); -S_API void SteamAPI_ISteamUGC_SuspendDownloads( ISteamUGC* self, bool bSuspend ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_StartPlaytimeTracking( ISteamUGC* self, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTracking( ISteamUGC* self, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems( ISteamUGC* self ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_AddDependency( ISteamUGC* self, PublishedFileId_t nParentPublishedFileID, PublishedFileId_t nChildPublishedFileID ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveDependency( ISteamUGC* self, PublishedFileId_t nParentPublishedFileID, PublishedFileId_t nChildPublishedFileID ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_AddAppDependency( ISteamUGC* self, PublishedFileId_t nPublishedFileID, AppId_t nAppID ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveAppDependency( ISteamUGC* self, PublishedFileId_t nPublishedFileID, AppId_t nAppID ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_GetAppDependencies( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); -S_API SteamAPICall_t SteamAPI_ISteamUGC_DeleteItem( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); - -// ISteamAppList -S_API ISteamAppList *SteamAPI_SteamAppList_v001(); -S_API uint32 SteamAPI_ISteamAppList_GetNumInstalledApps( ISteamAppList* self ); -S_API uint32 SteamAPI_ISteamAppList_GetInstalledApps( ISteamAppList* self, AppId_t * pvecAppID, uint32 unMaxAppIDs ); -S_API int SteamAPI_ISteamAppList_GetAppName( ISteamAppList* self, AppId_t nAppID, char * pchName, int cchNameMax ); -S_API int SteamAPI_ISteamAppList_GetAppInstallDir( ISteamAppList* self, AppId_t nAppID, char * pchDirectory, int cchNameMax ); -S_API int SteamAPI_ISteamAppList_GetAppBuildId( ISteamAppList* self, AppId_t nAppID ); - -// ISteamHTMLSurface -S_API ISteamHTMLSurface *SteamAPI_SteamHTMLSurface_v005(); -S_API bool SteamAPI_ISteamHTMLSurface_Init( ISteamHTMLSurface* self ); -S_API bool SteamAPI_ISteamHTMLSurface_Shutdown( ISteamHTMLSurface* self ); -S_API SteamAPICall_t SteamAPI_ISteamHTMLSurface_CreateBrowser( ISteamHTMLSurface* self, const char * pchUserAgent, const char * pchUserCSS ); -S_API void SteamAPI_ISteamHTMLSurface_RemoveBrowser( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); -S_API void SteamAPI_ISteamHTMLSurface_LoadURL( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, const char * pchURL, const char * pchPostData ); -S_API void SteamAPI_ISteamHTMLSurface_SetSize( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, uint32 unWidth, uint32 unHeight ); -S_API void SteamAPI_ISteamHTMLSurface_StopLoad( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); -S_API void SteamAPI_ISteamHTMLSurface_Reload( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); -S_API void SteamAPI_ISteamHTMLSurface_GoBack( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); -S_API void SteamAPI_ISteamHTMLSurface_GoForward( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); -S_API void SteamAPI_ISteamHTMLSurface_AddHeader( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, const char * pchKey, const char * pchValue ); -S_API void SteamAPI_ISteamHTMLSurface_ExecuteJavascript( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, const char * pchScript ); -S_API void SteamAPI_ISteamHTMLSurface_MouseUp( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton ); -S_API void SteamAPI_ISteamHTMLSurface_MouseDown( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton ); -S_API void SteamAPI_ISteamHTMLSurface_MouseDoubleClick( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton ); -S_API void SteamAPI_ISteamHTMLSurface_MouseMove( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, int x, int y ); -S_API void SteamAPI_ISteamHTMLSurface_MouseWheel( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, int32 nDelta ); -S_API void SteamAPI_ISteamHTMLSurface_KeyDown( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers, bool bIsSystemKey ); -S_API void SteamAPI_ISteamHTMLSurface_KeyUp( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers ); -S_API void SteamAPI_ISteamHTMLSurface_KeyChar( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, uint32 cUnicodeChar, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers ); -S_API void SteamAPI_ISteamHTMLSurface_SetHorizontalScroll( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll ); -S_API void SteamAPI_ISteamHTMLSurface_SetVerticalScroll( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll ); -S_API void SteamAPI_ISteamHTMLSurface_SetKeyFocus( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, bool bHasKeyFocus ); -S_API void SteamAPI_ISteamHTMLSurface_ViewSource( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); -S_API void SteamAPI_ISteamHTMLSurface_CopyToClipboard( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); -S_API void SteamAPI_ISteamHTMLSurface_PasteFromClipboard( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); -S_API void SteamAPI_ISteamHTMLSurface_Find( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, const char * pchSearchStr, bool bCurrentlyInFind, bool bReverse ); -S_API void SteamAPI_ISteamHTMLSurface_StopFind( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); -S_API void SteamAPI_ISteamHTMLSurface_GetLinkAtPosition( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, int x, int y ); -S_API void SteamAPI_ISteamHTMLSurface_SetCookie( ISteamHTMLSurface* self, const char * pchHostname, const char * pchKey, const char * pchValue, const char * pchPath, RTime32 nExpires, bool bSecure, bool bHTTPOnly ); -S_API void SteamAPI_ISteamHTMLSurface_SetPageScaleFactor( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY ); -S_API void SteamAPI_ISteamHTMLSurface_SetBackgroundMode( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, bool bBackgroundMode ); -S_API void SteamAPI_ISteamHTMLSurface_SetDPIScalingFactor( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, float flDPIScaling ); -S_API void SteamAPI_ISteamHTMLSurface_OpenDeveloperTools( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); -S_API void SteamAPI_ISteamHTMLSurface_AllowStartRequest( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, bool bAllowed ); -S_API void SteamAPI_ISteamHTMLSurface_JSDialogResponse( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, bool bResult ); -S_API void SteamAPI_ISteamHTMLSurface_FileLoadDialogResponse( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, const char ** pchSelectedFiles ); - -// ISteamInventory -S_API ISteamInventory *SteamAPI_SteamInventory_v003(); -S_API ISteamInventory *SteamAPI_SteamGameServerInventory_v003(); -S_API EResult SteamAPI_ISteamInventory_GetResultStatus( ISteamInventory* self, SteamInventoryResult_t resultHandle ); -S_API bool SteamAPI_ISteamInventory_GetResultItems( ISteamInventory* self, SteamInventoryResult_t resultHandle, SteamItemDetails_t * pOutItemsArray, uint32 * punOutItemsArraySize ); -S_API bool SteamAPI_ISteamInventory_GetResultItemProperty( ISteamInventory* self, SteamInventoryResult_t resultHandle, uint32 unItemIndex, const char * pchPropertyName, char * pchValueBuffer, uint32 * punValueBufferSizeOut ); -S_API uint32 SteamAPI_ISteamInventory_GetResultTimestamp( ISteamInventory* self, SteamInventoryResult_t resultHandle ); -S_API bool SteamAPI_ISteamInventory_CheckResultSteamID( ISteamInventory* self, SteamInventoryResult_t resultHandle, uint64_steamid steamIDExpected ); -S_API void SteamAPI_ISteamInventory_DestroyResult( ISteamInventory* self, SteamInventoryResult_t resultHandle ); -S_API bool SteamAPI_ISteamInventory_GetAllItems( ISteamInventory* self, SteamInventoryResult_t * pResultHandle ); -S_API bool SteamAPI_ISteamInventory_GetItemsByID( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, const SteamItemInstanceID_t * pInstanceIDs, uint32 unCountInstanceIDs ); -S_API bool SteamAPI_ISteamInventory_SerializeResult( ISteamInventory* self, SteamInventoryResult_t resultHandle, void * pOutBuffer, uint32 * punOutBufferSize ); -S_API bool SteamAPI_ISteamInventory_DeserializeResult( ISteamInventory* self, SteamInventoryResult_t * pOutResultHandle, const void * pBuffer, uint32 unBufferSize, bool bRESERVED_MUST_BE_FALSE ); -S_API bool SteamAPI_ISteamInventory_GenerateItems( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayItemDefs, const uint32 * punArrayQuantity, uint32 unArrayLength ); -S_API bool SteamAPI_ISteamInventory_GrantPromoItems( ISteamInventory* self, SteamInventoryResult_t * pResultHandle ); -S_API bool SteamAPI_ISteamInventory_AddPromoItem( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, SteamItemDef_t itemDef ); -S_API bool SteamAPI_ISteamInventory_AddPromoItems( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayItemDefs, uint32 unArrayLength ); -S_API bool SteamAPI_ISteamInventory_ConsumeItem( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity ); -S_API bool SteamAPI_ISteamInventory_ExchangeItems( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayGenerate, const uint32 * punArrayGenerateQuantity, uint32 unArrayGenerateLength, const SteamItemInstanceID_t * pArrayDestroy, const uint32 * punArrayDestroyQuantity, uint32 unArrayDestroyLength ); -S_API bool SteamAPI_ISteamInventory_TransferItemQuantity( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest ); -S_API void SteamAPI_ISteamInventory_SendItemDropHeartbeat( ISteamInventory* self ); -S_API bool SteamAPI_ISteamInventory_TriggerItemDrop( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, SteamItemDef_t dropListDefinition ); -S_API bool SteamAPI_ISteamInventory_TradeItems( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, uint64_steamid steamIDTradePartner, const SteamItemInstanceID_t * pArrayGive, const uint32 * pArrayGiveQuantity, uint32 nArrayGiveLength, const SteamItemInstanceID_t * pArrayGet, const uint32 * pArrayGetQuantity, uint32 nArrayGetLength ); -S_API bool SteamAPI_ISteamInventory_LoadItemDefinitions( ISteamInventory* self ); -S_API bool SteamAPI_ISteamInventory_GetItemDefinitionIDs( ISteamInventory* self, SteamItemDef_t * pItemDefIDs, uint32 * punItemDefIDsArraySize ); -S_API bool SteamAPI_ISteamInventory_GetItemDefinitionProperty( ISteamInventory* self, SteamItemDef_t iDefinition, const char * pchPropertyName, char * pchValueBuffer, uint32 * punValueBufferSizeOut ); -S_API SteamAPICall_t SteamAPI_ISteamInventory_RequestEligiblePromoItemDefinitionsIDs( ISteamInventory* self, uint64_steamid steamID ); -S_API bool SteamAPI_ISteamInventory_GetEligiblePromoItemDefinitionIDs( ISteamInventory* self, uint64_steamid steamID, SteamItemDef_t * pItemDefIDs, uint32 * punItemDefIDsArraySize ); -S_API SteamAPICall_t SteamAPI_ISteamInventory_StartPurchase( ISteamInventory* self, const SteamItemDef_t * pArrayItemDefs, const uint32 * punArrayQuantity, uint32 unArrayLength ); -S_API SteamAPICall_t SteamAPI_ISteamInventory_RequestPrices( ISteamInventory* self ); -S_API uint32 SteamAPI_ISteamInventory_GetNumItemsWithPrices( ISteamInventory* self ); -S_API bool SteamAPI_ISteamInventory_GetItemsWithPrices( ISteamInventory* self, SteamItemDef_t * pArrayItemDefs, uint64 * pCurrentPrices, uint64 * pBasePrices, uint32 unArrayLength ); -S_API bool SteamAPI_ISteamInventory_GetItemPrice( ISteamInventory* self, SteamItemDef_t iDefinition, uint64 * pCurrentPrice, uint64 * pBasePrice ); -S_API SteamInventoryUpdateHandle_t SteamAPI_ISteamInventory_StartUpdateProperties( ISteamInventory* self ); -S_API bool SteamAPI_ISteamInventory_RemoveProperty( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName ); -S_API bool SteamAPI_ISteamInventory_SetPropertyString( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName, const char * pchPropertyValue ); -S_API bool SteamAPI_ISteamInventory_SetPropertyBool( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName, bool bValue ); -S_API bool SteamAPI_ISteamInventory_SetPropertyInt64( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName, int64 nValue ); -S_API bool SteamAPI_ISteamInventory_SetPropertyFloat( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName, float flValue ); -S_API bool SteamAPI_ISteamInventory_SubmitUpdateProperties( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamInventoryResult_t * pResultHandle ); -S_API bool SteamAPI_ISteamInventory_InspectItem( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, const char * pchItemToken ); - -// ISteamVideo -S_API ISteamVideo *SteamAPI_SteamVideo_v002(); -S_API void SteamAPI_ISteamVideo_GetVideoURL( ISteamVideo* self, AppId_t unVideoAppID ); -S_API bool SteamAPI_ISteamVideo_IsBroadcasting( ISteamVideo* self, int * pnNumViewers ); -S_API void SteamAPI_ISteamVideo_GetOPFSettings( ISteamVideo* self, AppId_t unVideoAppID ); -S_API bool SteamAPI_ISteamVideo_GetOPFStringForApp( ISteamVideo* self, AppId_t unVideoAppID, char * pchBuffer, int32 * pnBufferSize ); - -// ISteamParentalSettings -S_API ISteamParentalSettings *SteamAPI_SteamParentalSettings_v001(); -S_API bool SteamAPI_ISteamParentalSettings_BIsParentalLockEnabled( ISteamParentalSettings* self ); -S_API bool SteamAPI_ISteamParentalSettings_BIsParentalLockLocked( ISteamParentalSettings* self ); -S_API bool SteamAPI_ISteamParentalSettings_BIsAppBlocked( ISteamParentalSettings* self, AppId_t nAppID ); -S_API bool SteamAPI_ISteamParentalSettings_BIsAppInBlockList( ISteamParentalSettings* self, AppId_t nAppID ); -S_API bool SteamAPI_ISteamParentalSettings_BIsFeatureBlocked( ISteamParentalSettings* self, EParentalFeature eFeature ); -S_API bool SteamAPI_ISteamParentalSettings_BIsFeatureInBlockList( ISteamParentalSettings* self, EParentalFeature eFeature ); - -// ISteamRemotePlay -S_API ISteamRemotePlay *SteamAPI_SteamRemotePlay_v001(); -S_API uint32 SteamAPI_ISteamRemotePlay_GetSessionCount( ISteamRemotePlay* self ); -S_API RemotePlaySessionID_t SteamAPI_ISteamRemotePlay_GetSessionID( ISteamRemotePlay* self, int iSessionIndex ); -S_API uint64_steamid SteamAPI_ISteamRemotePlay_GetSessionSteamID( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID ); -S_API const char * SteamAPI_ISteamRemotePlay_GetSessionClientName( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID ); -S_API ESteamDeviceFormFactor SteamAPI_ISteamRemotePlay_GetSessionClientFormFactor( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID ); -S_API bool SteamAPI_ISteamRemotePlay_BGetSessionClientResolution( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID, int * pnResolutionX, int * pnResolutionY ); -S_API bool SteamAPI_ISteamRemotePlay_BSendRemotePlayTogetherInvite( ISteamRemotePlay* self, uint64_steamid steamIDFriend ); - -// ISteamNetworkingMessages -S_API ISteamNetworkingMessages *SteamAPI_SteamNetworkingMessages_SteamAPI_v002(); -S_API ISteamNetworkingMessages *SteamAPI_SteamGameServerNetworkingMessages_SteamAPI_v002(); -S_API EResult SteamAPI_ISteamNetworkingMessages_SendMessageToUser( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote, const void * pubData, uint32 cubData, int nSendFlags, int nRemoteChannel ); -S_API int SteamAPI_ISteamNetworkingMessages_ReceiveMessagesOnChannel( ISteamNetworkingMessages* self, int nLocalChannel, SteamNetworkingMessage_t ** ppOutMessages, int nMaxMessages ); -S_API bool SteamAPI_ISteamNetworkingMessages_AcceptSessionWithUser( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote ); -S_API bool SteamAPI_ISteamNetworkingMessages_CloseSessionWithUser( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote ); -S_API bool SteamAPI_ISteamNetworkingMessages_CloseChannelWithUser( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote, int nLocalChannel ); -S_API ESteamNetworkingConnectionState SteamAPI_ISteamNetworkingMessages_GetSessionConnectionInfo( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote, SteamNetConnectionInfo_t * pConnectionInfo, SteamNetworkingQuickConnectionStatus * pQuickStatus ); - -// ISteamNetworkingSockets -S_API ISteamNetworkingSockets *SteamAPI_SteamNetworkingSockets_SteamAPI_v009(); -S_API ISteamNetworkingSockets *SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v009(); -S_API HSteamListenSocket SteamAPI_ISteamNetworkingSockets_CreateListenSocketIP( ISteamNetworkingSockets* self, const SteamNetworkingIPAddr & localAddress, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); -S_API HSteamNetConnection SteamAPI_ISteamNetworkingSockets_ConnectByIPAddress( ISteamNetworkingSockets* self, const SteamNetworkingIPAddr & address, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); -S_API HSteamListenSocket SteamAPI_ISteamNetworkingSockets_CreateListenSocketP2P( ISteamNetworkingSockets* self, int nLocalVirtualPort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); -S_API HSteamNetConnection SteamAPI_ISteamNetworkingSockets_ConnectP2P( ISteamNetworkingSockets* self, const SteamNetworkingIdentity & identityRemote, int nRemoteVirtualPort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); -S_API EResult SteamAPI_ISteamNetworkingSockets_AcceptConnection( ISteamNetworkingSockets* self, HSteamNetConnection hConn ); -S_API bool SteamAPI_ISteamNetworkingSockets_CloseConnection( ISteamNetworkingSockets* self, HSteamNetConnection hPeer, int nReason, const char * pszDebug, bool bEnableLinger ); -S_API bool SteamAPI_ISteamNetworkingSockets_CloseListenSocket( ISteamNetworkingSockets* self, HSteamListenSocket hSocket ); -S_API bool SteamAPI_ISteamNetworkingSockets_SetConnectionUserData( ISteamNetworkingSockets* self, HSteamNetConnection hPeer, int64 nUserData ); -S_API int64 SteamAPI_ISteamNetworkingSockets_GetConnectionUserData( ISteamNetworkingSockets* self, HSteamNetConnection hPeer ); -S_API void SteamAPI_ISteamNetworkingSockets_SetConnectionName( ISteamNetworkingSockets* self, HSteamNetConnection hPeer, const char * pszName ); -S_API bool SteamAPI_ISteamNetworkingSockets_GetConnectionName( ISteamNetworkingSockets* self, HSteamNetConnection hPeer, char * pszName, int nMaxLen ); -S_API EResult SteamAPI_ISteamNetworkingSockets_SendMessageToConnection( ISteamNetworkingSockets* self, HSteamNetConnection hConn, const void * pData, uint32 cbData, int nSendFlags, int64 * pOutMessageNumber ); -S_API void SteamAPI_ISteamNetworkingSockets_SendMessages( ISteamNetworkingSockets* self, int nMessages, SteamNetworkingMessage_t *const * pMessages, int64 * pOutMessageNumberOrResult ); -S_API EResult SteamAPI_ISteamNetworkingSockets_FlushMessagesOnConnection( ISteamNetworkingSockets* self, HSteamNetConnection hConn ); -S_API int SteamAPI_ISteamNetworkingSockets_ReceiveMessagesOnConnection( ISteamNetworkingSockets* self, HSteamNetConnection hConn, SteamNetworkingMessage_t ** ppOutMessages, int nMaxMessages ); -S_API bool SteamAPI_ISteamNetworkingSockets_GetConnectionInfo( ISteamNetworkingSockets* self, HSteamNetConnection hConn, SteamNetConnectionInfo_t * pInfo ); -S_API bool SteamAPI_ISteamNetworkingSockets_GetQuickConnectionStatus( ISteamNetworkingSockets* self, HSteamNetConnection hConn, SteamNetworkingQuickConnectionStatus * pStats ); -S_API int SteamAPI_ISteamNetworkingSockets_GetDetailedConnectionStatus( ISteamNetworkingSockets* self, HSteamNetConnection hConn, char * pszBuf, int cbBuf ); -S_API bool SteamAPI_ISteamNetworkingSockets_GetListenSocketAddress( ISteamNetworkingSockets* self, HSteamListenSocket hSocket, SteamNetworkingIPAddr * address ); -S_API bool SteamAPI_ISteamNetworkingSockets_CreateSocketPair( ISteamNetworkingSockets* self, HSteamNetConnection * pOutConnection1, HSteamNetConnection * pOutConnection2, bool bUseNetworkLoopback, const SteamNetworkingIdentity * pIdentity1, const SteamNetworkingIdentity * pIdentity2 ); -S_API bool SteamAPI_ISteamNetworkingSockets_GetIdentity( ISteamNetworkingSockets* self, SteamNetworkingIdentity * pIdentity ); -S_API ESteamNetworkingAvailability SteamAPI_ISteamNetworkingSockets_InitAuthentication( ISteamNetworkingSockets* self ); -S_API ESteamNetworkingAvailability SteamAPI_ISteamNetworkingSockets_GetAuthenticationStatus( ISteamNetworkingSockets* self, SteamNetAuthenticationStatus_t * pDetails ); -S_API HSteamNetPollGroup SteamAPI_ISteamNetworkingSockets_CreatePollGroup( ISteamNetworkingSockets* self ); -S_API bool SteamAPI_ISteamNetworkingSockets_DestroyPollGroup( ISteamNetworkingSockets* self, HSteamNetPollGroup hPollGroup ); -S_API bool SteamAPI_ISteamNetworkingSockets_SetConnectionPollGroup( ISteamNetworkingSockets* self, HSteamNetConnection hConn, HSteamNetPollGroup hPollGroup ); -S_API int SteamAPI_ISteamNetworkingSockets_ReceiveMessagesOnPollGroup( ISteamNetworkingSockets* self, HSteamNetPollGroup hPollGroup, SteamNetworkingMessage_t ** ppOutMessages, int nMaxMessages ); -S_API bool SteamAPI_ISteamNetworkingSockets_ReceivedRelayAuthTicket( ISteamNetworkingSockets* self, const void * pvTicket, int cbTicket, SteamDatagramRelayAuthTicket * pOutParsedTicket ); -S_API int SteamAPI_ISteamNetworkingSockets_FindRelayAuthTicketForServer( ISteamNetworkingSockets* self, const SteamNetworkingIdentity & identityGameServer, int nRemoteVirtualPort, SteamDatagramRelayAuthTicket * pOutParsedTicket ); -S_API HSteamNetConnection SteamAPI_ISteamNetworkingSockets_ConnectToHostedDedicatedServer( ISteamNetworkingSockets* self, const SteamNetworkingIdentity & identityTarget, int nRemoteVirtualPort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); -S_API uint16 SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerPort( ISteamNetworkingSockets* self ); -S_API SteamNetworkingPOPID SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerPOPID( ISteamNetworkingSockets* self ); -S_API EResult SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerAddress( ISteamNetworkingSockets* self, SteamDatagramHostedAddress * pRouting ); -S_API HSteamListenSocket SteamAPI_ISteamNetworkingSockets_CreateHostedDedicatedServerListenSocket( ISteamNetworkingSockets* self, int nLocalVirtualPort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); -S_API EResult SteamAPI_ISteamNetworkingSockets_GetGameCoordinatorServerLogin( ISteamNetworkingSockets* self, SteamDatagramGameCoordinatorServerLogin * pLoginInfo, int * pcbSignedBlob, void * pBlob ); -S_API HSteamNetConnection SteamAPI_ISteamNetworkingSockets_ConnectP2PCustomSignaling( ISteamNetworkingSockets* self, ISteamNetworkingConnectionSignaling * pSignaling, const SteamNetworkingIdentity * pPeerIdentity, int nRemoteVirtualPort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); -S_API bool SteamAPI_ISteamNetworkingSockets_ReceivedP2PCustomSignal( ISteamNetworkingSockets* self, const void * pMsg, int cbMsg, ISteamNetworkingSignalingRecvContext * pContext ); -S_API bool SteamAPI_ISteamNetworkingSockets_GetCertificateRequest( ISteamNetworkingSockets* self, int * pcbBlob, void * pBlob, SteamNetworkingErrMsg & errMsg ); -S_API bool SteamAPI_ISteamNetworkingSockets_SetCertificate( ISteamNetworkingSockets* self, const void * pCertificate, int cbCertificate, SteamNetworkingErrMsg & errMsg ); -S_API void SteamAPI_ISteamNetworkingSockets_RunCallbacks( ISteamNetworkingSockets* self ); - -// ISteamNetworkingUtils -S_API ISteamNetworkingUtils *SteamAPI_SteamNetworkingUtils_SteamAPI_v003(); -S_API SteamNetworkingMessage_t * SteamAPI_ISteamNetworkingUtils_AllocateMessage( ISteamNetworkingUtils* self, int cbAllocateBuffer ); -S_API void SteamAPI_ISteamNetworkingUtils_InitRelayNetworkAccess( ISteamNetworkingUtils* self ); -S_API ESteamNetworkingAvailability SteamAPI_ISteamNetworkingUtils_GetRelayNetworkStatus( ISteamNetworkingUtils* self, SteamRelayNetworkStatus_t * pDetails ); -S_API float SteamAPI_ISteamNetworkingUtils_GetLocalPingLocation( ISteamNetworkingUtils* self, SteamNetworkPingLocation_t & result ); -S_API int SteamAPI_ISteamNetworkingUtils_EstimatePingTimeBetweenTwoLocations( ISteamNetworkingUtils* self, const SteamNetworkPingLocation_t & location1, const SteamNetworkPingLocation_t & location2 ); -S_API int SteamAPI_ISteamNetworkingUtils_EstimatePingTimeFromLocalHost( ISteamNetworkingUtils* self, const SteamNetworkPingLocation_t & remoteLocation ); -S_API void SteamAPI_ISteamNetworkingUtils_ConvertPingLocationToString( ISteamNetworkingUtils* self, const SteamNetworkPingLocation_t & location, char * pszBuf, int cchBufSize ); -S_API bool SteamAPI_ISteamNetworkingUtils_ParsePingLocationString( ISteamNetworkingUtils* self, const char * pszString, SteamNetworkPingLocation_t & result ); -S_API bool SteamAPI_ISteamNetworkingUtils_CheckPingDataUpToDate( ISteamNetworkingUtils* self, float flMaxAgeSeconds ); -S_API int SteamAPI_ISteamNetworkingUtils_GetPingToDataCenter( ISteamNetworkingUtils* self, SteamNetworkingPOPID popID, SteamNetworkingPOPID * pViaRelayPoP ); -S_API int SteamAPI_ISteamNetworkingUtils_GetDirectPingToPOP( ISteamNetworkingUtils* self, SteamNetworkingPOPID popID ); -S_API int SteamAPI_ISteamNetworkingUtils_GetPOPCount( ISteamNetworkingUtils* self ); -S_API int SteamAPI_ISteamNetworkingUtils_GetPOPList( ISteamNetworkingUtils* self, SteamNetworkingPOPID * list, int nListSz ); -S_API SteamNetworkingMicroseconds SteamAPI_ISteamNetworkingUtils_GetLocalTimestamp( ISteamNetworkingUtils* self ); -S_API void SteamAPI_ISteamNetworkingUtils_SetDebugOutputFunction( ISteamNetworkingUtils* self, ESteamNetworkingSocketsDebugOutputType eDetailLevel, FSteamNetworkingSocketsDebugOutput pfnFunc ); -S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueInt32( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, int32 val ); -S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueFloat( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, float val ); -S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueString( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, const char * val ); -S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValuePtr( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, void * val ); -S_API bool SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueInt32( ISteamNetworkingUtils* self, HSteamNetConnection hConn, ESteamNetworkingConfigValue eValue, int32 val ); -S_API bool SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueFloat( ISteamNetworkingUtils* self, HSteamNetConnection hConn, ESteamNetworkingConfigValue eValue, float val ); -S_API bool SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueString( ISteamNetworkingUtils* self, HSteamNetConnection hConn, ESteamNetworkingConfigValue eValue, const char * val ); -S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamNetConnectionStatusChanged( ISteamNetworkingUtils* self, FnSteamNetConnectionStatusChanged fnCallback ); -S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamNetAuthenticationStatusChanged( ISteamNetworkingUtils* self, FnSteamNetAuthenticationStatusChanged fnCallback ); -S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamRelayNetworkStatusChanged( ISteamNetworkingUtils* self, FnSteamRelayNetworkStatusChanged fnCallback ); -S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_MessagesSessionRequest( ISteamNetworkingUtils* self, FnSteamNetworkingMessagesSessionRequest fnCallback ); -S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_MessagesSessionFailed( ISteamNetworkingUtils* self, FnSteamNetworkingMessagesSessionFailed fnCallback ); -S_API bool SteamAPI_ISteamNetworkingUtils_SetConfigValue( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj, ESteamNetworkingConfigDataType eDataType, const void * pArg ); -S_API bool SteamAPI_ISteamNetworkingUtils_SetConfigValueStruct( ISteamNetworkingUtils* self, const SteamNetworkingConfigValue_t & opt, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj ); -S_API ESteamNetworkingGetConfigValueResult SteamAPI_ISteamNetworkingUtils_GetConfigValue( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj, ESteamNetworkingConfigDataType * pOutDataType, void * pResult, size_t * cbResult ); -S_API bool SteamAPI_ISteamNetworkingUtils_GetConfigValueInfo( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, const char ** pOutName, ESteamNetworkingConfigDataType * pOutDataType, ESteamNetworkingConfigScope * pOutScope, ESteamNetworkingConfigValue * pOutNextValue ); -S_API ESteamNetworkingConfigValue SteamAPI_ISteamNetworkingUtils_GetFirstConfigValue( ISteamNetworkingUtils* self ); -S_API void SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ToString( ISteamNetworkingUtils* self, const SteamNetworkingIPAddr & addr, char * buf, uint32 cbBuf, bool bWithPort ); -S_API bool SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ParseString( ISteamNetworkingUtils* self, SteamNetworkingIPAddr * pAddr, const char * pszStr ); -S_API void SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ToString( ISteamNetworkingUtils* self, const SteamNetworkingIdentity & identity, char * buf, uint32 cbBuf ); -S_API bool SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ParseString( ISteamNetworkingUtils* self, SteamNetworkingIdentity * pIdentity, const char * pszStr ); - -// ISteamGameServer -S_API ISteamGameServer *SteamAPI_SteamGameServer_v013(); -S_API void SteamAPI_ISteamGameServer_SetProduct( ISteamGameServer* self, const char * pszProduct ); -S_API void SteamAPI_ISteamGameServer_SetGameDescription( ISteamGameServer* self, const char * pszGameDescription ); -S_API void SteamAPI_ISteamGameServer_SetModDir( ISteamGameServer* self, const char * pszModDir ); -S_API void SteamAPI_ISteamGameServer_SetDedicatedServer( ISteamGameServer* self, bool bDedicated ); -S_API void SteamAPI_ISteamGameServer_LogOn( ISteamGameServer* self, const char * pszToken ); -S_API void SteamAPI_ISteamGameServer_LogOnAnonymous( ISteamGameServer* self ); -S_API void SteamAPI_ISteamGameServer_LogOff( ISteamGameServer* self ); -S_API bool SteamAPI_ISteamGameServer_BLoggedOn( ISteamGameServer* self ); -S_API bool SteamAPI_ISteamGameServer_BSecure( ISteamGameServer* self ); -S_API uint64_steamid SteamAPI_ISteamGameServer_GetSteamID( ISteamGameServer* self ); -S_API bool SteamAPI_ISteamGameServer_WasRestartRequested( ISteamGameServer* self ); -S_API void SteamAPI_ISteamGameServer_SetMaxPlayerCount( ISteamGameServer* self, int cPlayersMax ); -S_API void SteamAPI_ISteamGameServer_SetBotPlayerCount( ISteamGameServer* self, int cBotplayers ); -S_API void SteamAPI_ISteamGameServer_SetServerName( ISteamGameServer* self, const char * pszServerName ); -S_API void SteamAPI_ISteamGameServer_SetMapName( ISteamGameServer* self, const char * pszMapName ); -S_API void SteamAPI_ISteamGameServer_SetPasswordProtected( ISteamGameServer* self, bool bPasswordProtected ); -S_API void SteamAPI_ISteamGameServer_SetSpectatorPort( ISteamGameServer* self, uint16 unSpectatorPort ); -S_API void SteamAPI_ISteamGameServer_SetSpectatorServerName( ISteamGameServer* self, const char * pszSpectatorServerName ); -S_API void SteamAPI_ISteamGameServer_ClearAllKeyValues( ISteamGameServer* self ); -S_API void SteamAPI_ISteamGameServer_SetKeyValue( ISteamGameServer* self, const char * pKey, const char * pValue ); -S_API void SteamAPI_ISteamGameServer_SetGameTags( ISteamGameServer* self, const char * pchGameTags ); -S_API void SteamAPI_ISteamGameServer_SetGameData( ISteamGameServer* self, const char * pchGameData ); -S_API void SteamAPI_ISteamGameServer_SetRegion( ISteamGameServer* self, const char * pszRegion ); -S_API bool SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate( ISteamGameServer* self, uint32 unIPClient, const void * pvAuthBlob, uint32 cubAuthBlobSize, CSteamID * pSteamIDUser ); -S_API uint64_steamid SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection( ISteamGameServer* self ); -S_API void SteamAPI_ISteamGameServer_SendUserDisconnect( ISteamGameServer* self, uint64_steamid steamIDUser ); -S_API bool SteamAPI_ISteamGameServer_BUpdateUserData( ISteamGameServer* self, uint64_steamid steamIDUser, const char * pchPlayerName, uint32 uScore ); -S_API HAuthTicket SteamAPI_ISteamGameServer_GetAuthSessionTicket( ISteamGameServer* self, void * pTicket, int cbMaxTicket, uint32 * pcbTicket ); -S_API EBeginAuthSessionResult SteamAPI_ISteamGameServer_BeginAuthSession( ISteamGameServer* self, const void * pAuthTicket, int cbAuthTicket, uint64_steamid steamID ); -S_API void SteamAPI_ISteamGameServer_EndAuthSession( ISteamGameServer* self, uint64_steamid steamID ); -S_API void SteamAPI_ISteamGameServer_CancelAuthTicket( ISteamGameServer* self, HAuthTicket hAuthTicket ); -S_API EUserHasLicenseForAppResult SteamAPI_ISteamGameServer_UserHasLicenseForApp( ISteamGameServer* self, uint64_steamid steamID, AppId_t appID ); -S_API bool SteamAPI_ISteamGameServer_RequestUserGroupStatus( ISteamGameServer* self, uint64_steamid steamIDUser, uint64_steamid steamIDGroup ); -S_API void SteamAPI_ISteamGameServer_GetGameplayStats( ISteamGameServer* self ); -S_API SteamAPICall_t SteamAPI_ISteamGameServer_GetServerReputation( ISteamGameServer* self ); -S_API SteamIPAddress_t SteamAPI_ISteamGameServer_GetPublicIP( ISteamGameServer* self ); -S_API bool SteamAPI_ISteamGameServer_HandleIncomingPacket( ISteamGameServer* self, const void * pData, int cbData, uint32 srcIP, uint16 srcPort ); -S_API int SteamAPI_ISteamGameServer_GetNextOutgoingPacket( ISteamGameServer* self, void * pOut, int cbMaxOut, uint32 * pNetAdr, uint16 * pPort ); -S_API void SteamAPI_ISteamGameServer_EnableHeartbeats( ISteamGameServer* self, bool bActive ); -S_API void SteamAPI_ISteamGameServer_SetHeartbeatInterval( ISteamGameServer* self, int iHeartbeatInterval ); -S_API void SteamAPI_ISteamGameServer_ForceHeartbeat( ISteamGameServer* self ); -S_API SteamAPICall_t SteamAPI_ISteamGameServer_AssociateWithClan( ISteamGameServer* self, uint64_steamid steamIDClan ); -S_API SteamAPICall_t SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility( ISteamGameServer* self, uint64_steamid steamIDNewPlayer ); - -// ISteamGameServerStats -S_API ISteamGameServerStats *SteamAPI_SteamGameServerStats_v001(); -S_API SteamAPICall_t SteamAPI_ISteamGameServerStats_RequestUserStats( ISteamGameServerStats* self, uint64_steamid steamIDUser ); -S_API bool SteamAPI_ISteamGameServerStats_GetUserStatInt32( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, int32 * pData ); -S_API bool SteamAPI_ISteamGameServerStats_GetUserStatFloat( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, float * pData ); -S_API bool SteamAPI_ISteamGameServerStats_GetUserAchievement( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, bool * pbAchieved ); -S_API bool SteamAPI_ISteamGameServerStats_SetUserStatInt32( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, int32 nData ); -S_API bool SteamAPI_ISteamGameServerStats_SetUserStatFloat( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, float fData ); -S_API bool SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, float flCountThisSession, double dSessionLength ); -S_API bool SteamAPI_ISteamGameServerStats_SetUserAchievement( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName ); -S_API bool SteamAPI_ISteamGameServerStats_ClearUserAchievement( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName ); -S_API SteamAPICall_t SteamAPI_ISteamGameServerStats_StoreUserStats( ISteamGameServerStats* self, uint64_steamid steamIDUser ); - -// SteamIPAddress_t -S_API bool SteamAPI_SteamIPAddress_t_IsSet( SteamIPAddress_t* self ); - -// MatchMakingKeyValuePair_t -S_API void SteamAPI_MatchMakingKeyValuePair_t_Construct( MatchMakingKeyValuePair_t* self ); - -// servernetadr_t -S_API void SteamAPI_servernetadr_t_Construct( servernetadr_t* self ); -S_API void SteamAPI_servernetadr_t_Init( servernetadr_t* self, unsigned int ip, uint16 usQueryPort, uint16 usConnectionPort ); -S_API uint16 SteamAPI_servernetadr_t_GetQueryPort( servernetadr_t* self ); -S_API void SteamAPI_servernetadr_t_SetQueryPort( servernetadr_t* self, uint16 usPort ); -S_API uint16 SteamAPI_servernetadr_t_GetConnectionPort( servernetadr_t* self ); -S_API void SteamAPI_servernetadr_t_SetConnectionPort( servernetadr_t* self, uint16 usPort ); -S_API uint32 SteamAPI_servernetadr_t_GetIP( servernetadr_t* self ); -S_API void SteamAPI_servernetadr_t_SetIP( servernetadr_t* self, uint32 unIP ); -S_API const char * SteamAPI_servernetadr_t_GetConnectionAddressString( servernetadr_t* self ); -S_API const char * SteamAPI_servernetadr_t_GetQueryAddressString( servernetadr_t* self ); -S_API bool SteamAPI_servernetadr_t_IsLessThan( servernetadr_t* self, const servernetadr_t & netadr ); -S_API void SteamAPI_servernetadr_t_Assign( servernetadr_t* self, const servernetadr_t & that ); - -// gameserveritem_t -S_API void SteamAPI_gameserveritem_t_Construct( gameserveritem_t* self ); -S_API const char * SteamAPI_gameserveritem_t_GetName( gameserveritem_t* self ); -S_API void SteamAPI_gameserveritem_t_SetName( gameserveritem_t* self, const char * pName ); - -// SteamNetworkingIPAddr -S_API void SteamAPI_SteamNetworkingIPAddr_Clear( SteamNetworkingIPAddr* self ); -S_API bool SteamAPI_SteamNetworkingIPAddr_IsIPv6AllZeros( SteamNetworkingIPAddr* self ); -S_API void SteamAPI_SteamNetworkingIPAddr_SetIPv6( SteamNetworkingIPAddr* self, const uint8 * ipv6, uint16 nPort ); -S_API void SteamAPI_SteamNetworkingIPAddr_SetIPv4( SteamNetworkingIPAddr* self, uint32 nIP, uint16 nPort ); -S_API bool SteamAPI_SteamNetworkingIPAddr_IsIPv4( SteamNetworkingIPAddr* self ); -S_API uint32 SteamAPI_SteamNetworkingIPAddr_GetIPv4( SteamNetworkingIPAddr* self ); -S_API void SteamAPI_SteamNetworkingIPAddr_SetIPv6LocalHost( SteamNetworkingIPAddr* self, uint16 nPort ); -S_API bool SteamAPI_SteamNetworkingIPAddr_IsLocalHost( SteamNetworkingIPAddr* self ); -S_API void SteamAPI_SteamNetworkingIPAddr_ToString( SteamNetworkingIPAddr* self, char * buf, uint32 cbBuf, bool bWithPort ); -S_API bool SteamAPI_SteamNetworkingIPAddr_ParseString( SteamNetworkingIPAddr* self, const char * pszStr ); -S_API bool SteamAPI_SteamNetworkingIPAddr_IsEqualTo( SteamNetworkingIPAddr* self, const SteamNetworkingIPAddr & x ); - -// SteamNetworkingIdentity -S_API void SteamAPI_SteamNetworkingIdentity_Clear( SteamNetworkingIdentity* self ); -S_API bool SteamAPI_SteamNetworkingIdentity_IsInvalid( SteamNetworkingIdentity* self ); -S_API void SteamAPI_SteamNetworkingIdentity_SetSteamID( SteamNetworkingIdentity* self, uint64_steamid steamID ); -S_API uint64_steamid SteamAPI_SteamNetworkingIdentity_GetSteamID( SteamNetworkingIdentity* self ); -S_API void SteamAPI_SteamNetworkingIdentity_SetSteamID64( SteamNetworkingIdentity* self, uint64 steamID ); -S_API uint64 SteamAPI_SteamNetworkingIdentity_GetSteamID64( SteamNetworkingIdentity* self ); -S_API bool SteamAPI_SteamNetworkingIdentity_SetXboxPairwiseID( SteamNetworkingIdentity* self, const char * pszString ); -S_API const char * SteamAPI_SteamNetworkingIdentity_GetXboxPairwiseID( SteamNetworkingIdentity* self ); -S_API void SteamAPI_SteamNetworkingIdentity_SetPSNID( SteamNetworkingIdentity* self, uint64 id ); -S_API uint64 SteamAPI_SteamNetworkingIdentity_GetPSNID( SteamNetworkingIdentity* self ); -S_API void SteamAPI_SteamNetworkingIdentity_SetStadiaID( SteamNetworkingIdentity* self, uint64 id ); -S_API uint64 SteamAPI_SteamNetworkingIdentity_GetStadiaID( SteamNetworkingIdentity* self ); -S_API void SteamAPI_SteamNetworkingIdentity_SetIPAddr( SteamNetworkingIdentity* self, const SteamNetworkingIPAddr & addr ); -S_API const SteamNetworkingIPAddr * SteamAPI_SteamNetworkingIdentity_GetIPAddr( SteamNetworkingIdentity* self ); -S_API void SteamAPI_SteamNetworkingIdentity_SetLocalHost( SteamNetworkingIdentity* self ); -S_API bool SteamAPI_SteamNetworkingIdentity_IsLocalHost( SteamNetworkingIdentity* self ); -S_API bool SteamAPI_SteamNetworkingIdentity_SetGenericString( SteamNetworkingIdentity* self, const char * pszString ); -S_API const char * SteamAPI_SteamNetworkingIdentity_GetGenericString( SteamNetworkingIdentity* self ); -S_API bool SteamAPI_SteamNetworkingIdentity_SetGenericBytes( SteamNetworkingIdentity* self, const void * data, uint32 cbLen ); -S_API const uint8 * SteamAPI_SteamNetworkingIdentity_GetGenericBytes( SteamNetworkingIdentity* self, int & cbLen ); -S_API bool SteamAPI_SteamNetworkingIdentity_IsEqualTo( SteamNetworkingIdentity* self, const SteamNetworkingIdentity & x ); -S_API void SteamAPI_SteamNetworkingIdentity_ToString( SteamNetworkingIdentity* self, char * buf, uint32 cbBuf ); -S_API bool SteamAPI_SteamNetworkingIdentity_ParseString( SteamNetworkingIdentity* self, const char * pszStr ); - -// SteamNetworkingMessage_t -S_API void SteamAPI_SteamNetworkingMessage_t_Release( SteamNetworkingMessage_t* self ); - -// SteamNetworkingConfigValue_t -S_API void SteamAPI_SteamNetworkingConfigValue_t_SetInt32( SteamNetworkingConfigValue_t* self, ESteamNetworkingConfigValue eVal, int32_t data ); -S_API void SteamAPI_SteamNetworkingConfigValue_t_SetInt64( SteamNetworkingConfigValue_t* self, ESteamNetworkingConfigValue eVal, int64_t data ); -S_API void SteamAPI_SteamNetworkingConfigValue_t_SetFloat( SteamNetworkingConfigValue_t* self, ESteamNetworkingConfigValue eVal, float data ); -S_API void SteamAPI_SteamNetworkingConfigValue_t_SetPtr( SteamNetworkingConfigValue_t* self, ESteamNetworkingConfigValue eVal, void * data ); -S_API void SteamAPI_SteamNetworkingConfigValue_t_SetString( SteamNetworkingConfigValue_t* self, ESteamNetworkingConfigValue eVal, const char * data ); - -// SteamNetworkingPOPIDRender -S_API const char * SteamAPI_SteamNetworkingPOPIDRender_c_str( SteamNetworkingPOPIDRender* self ); - -// SteamNetworkingIdentityRender -S_API const char * SteamAPI_SteamNetworkingIdentityRender_c_str( SteamNetworkingIdentityRender* self ); - -// SteamNetworkingIPAddrRender -S_API const char * SteamAPI_SteamNetworkingIPAddrRender_c_str( SteamNetworkingIPAddrRender* self ); - -// SteamDatagramHostedAddress -S_API void SteamAPI_SteamDatagramHostedAddress_Clear( SteamDatagramHostedAddress* self ); -S_API SteamNetworkingPOPID SteamAPI_SteamDatagramHostedAddress_GetPopID( SteamDatagramHostedAddress* self ); -S_API void SteamAPI_SteamDatagramHostedAddress_SetDevAddress( SteamDatagramHostedAddress* self, uint32 nIP, uint16 nPort, SteamNetworkingPOPID popid ); -#endif // STEAMAPIFLAT_H +//====== Copyright Valve Corporation, All rights reserved. ==================== +// +// Purpose: Header for "flat" SteamAPI. Use this for binding to other languages. +// This file is auto-generated, do not edit it. +// +//============================================================================= + +#ifndef STEAMAPIFLAT_H +#define STEAMAPIFLAT_H + +#include "steam/steam_api.h" +#include "steam/isteamgameserver.h" +#include "steam/isteamgameserverstats.h" + +typedef uint64 uint64_steamid; // Used when passing or returning CSteamID +typedef uint64 uint64_gameid; // Used when passing or return CGameID + + + +// ISteamClient +S_API HSteamPipe SteamAPI_ISteamClient_CreateSteamPipe( ISteamClient* self ); +S_API bool SteamAPI_ISteamClient_BReleaseSteamPipe( ISteamClient* self, HSteamPipe hSteamPipe ); +S_API HSteamUser SteamAPI_ISteamClient_ConnectToGlobalUser( ISteamClient* self, HSteamPipe hSteamPipe ); +S_API HSteamUser SteamAPI_ISteamClient_CreateLocalUser( ISteamClient* self, HSteamPipe * phSteamPipe, EAccountType eAccountType ); +S_API void SteamAPI_ISteamClient_ReleaseUser( ISteamClient* self, HSteamPipe hSteamPipe, HSteamUser hUser ); +S_API ISteamUser * SteamAPI_ISteamClient_GetISteamUser( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamGameServer * SteamAPI_ISteamClient_GetISteamGameServer( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API void SteamAPI_ISteamClient_SetLocalIPBinding( ISteamClient* self, const SteamIPAddress_t & unIP, uint16 usPort ); +S_API ISteamFriends * SteamAPI_ISteamClient_GetISteamFriends( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamUtils * SteamAPI_ISteamClient_GetISteamUtils( ISteamClient* self, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamMatchmaking * SteamAPI_ISteamClient_GetISteamMatchmaking( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamMatchmakingServers * SteamAPI_ISteamClient_GetISteamMatchmakingServers( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API void * SteamAPI_ISteamClient_GetISteamGenericInterface( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamUserStats * SteamAPI_ISteamClient_GetISteamUserStats( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamGameServerStats * SteamAPI_ISteamClient_GetISteamGameServerStats( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamApps * SteamAPI_ISteamClient_GetISteamApps( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamNetworking * SteamAPI_ISteamClient_GetISteamNetworking( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamRemoteStorage * SteamAPI_ISteamClient_GetISteamRemoteStorage( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamScreenshots * SteamAPI_ISteamClient_GetISteamScreenshots( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamGameSearch * SteamAPI_ISteamClient_GetISteamGameSearch( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API uint32 SteamAPI_ISteamClient_GetIPCCallCount( ISteamClient* self ); +S_API void SteamAPI_ISteamClient_SetWarningMessageHook( ISteamClient* self, SteamAPIWarningMessageHook_t pFunction ); +S_API bool SteamAPI_ISteamClient_BShutdownIfAllPipesClosed( ISteamClient* self ); +S_API ISteamHTTP * SteamAPI_ISteamClient_GetISteamHTTP( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamController * SteamAPI_ISteamClient_GetISteamController( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamUGC * SteamAPI_ISteamClient_GetISteamUGC( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamAppList * SteamAPI_ISteamClient_GetISteamAppList( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamMusic * SteamAPI_ISteamClient_GetISteamMusic( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamMusicRemote * SteamAPI_ISteamClient_GetISteamMusicRemote( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamHTMLSurface * SteamAPI_ISteamClient_GetISteamHTMLSurface( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamInventory * SteamAPI_ISteamClient_GetISteamInventory( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamVideo * SteamAPI_ISteamClient_GetISteamVideo( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamParentalSettings * SteamAPI_ISteamClient_GetISteamParentalSettings( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamInput * SteamAPI_ISteamClient_GetISteamInput( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamParties * SteamAPI_ISteamClient_GetISteamParties( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); +S_API ISteamRemotePlay * SteamAPI_ISteamClient_GetISteamRemotePlay( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); + +// ISteamUser +S_API ISteamUser *SteamAPI_SteamUser_v021(); +S_API HSteamUser SteamAPI_ISteamUser_GetHSteamUser( ISteamUser* self ); +S_API bool SteamAPI_ISteamUser_BLoggedOn( ISteamUser* self ); +S_API uint64_steamid SteamAPI_ISteamUser_GetSteamID( ISteamUser* self ); +S_API int SteamAPI_ISteamUser_InitiateGameConnection( ISteamUser* self, void * pAuthBlob, int cbMaxAuthBlob, uint64_steamid steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure ); +S_API void SteamAPI_ISteamUser_TerminateGameConnection( ISteamUser* self, uint32 unIPServer, uint16 usPortServer ); +S_API void SteamAPI_ISteamUser_TrackAppUsageEvent( ISteamUser* self, uint64_gameid gameID, int eAppUsageEvent, const char * pchExtraInfo ); +S_API bool SteamAPI_ISteamUser_GetUserDataFolder( ISteamUser* self, char * pchBuffer, int cubBuffer ); +S_API void SteamAPI_ISteamUser_StartVoiceRecording( ISteamUser* self ); +S_API void SteamAPI_ISteamUser_StopVoiceRecording( ISteamUser* self ); +S_API EVoiceResult SteamAPI_ISteamUser_GetAvailableVoice( ISteamUser* self, uint32 * pcbCompressed, uint32 * pcbUncompressed_Deprecated, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated ); +S_API EVoiceResult SteamAPI_ISteamUser_GetVoice( ISteamUser* self, bool bWantCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, bool bWantUncompressed_Deprecated, void * pUncompressedDestBuffer_Deprecated, uint32 cbUncompressedDestBufferSize_Deprecated, uint32 * nUncompressBytesWritten_Deprecated, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated ); +S_API EVoiceResult SteamAPI_ISteamUser_DecompressVoice( ISteamUser* self, const void * pCompressed, uint32 cbCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, uint32 nDesiredSampleRate ); +S_API uint32 SteamAPI_ISteamUser_GetVoiceOptimalSampleRate( ISteamUser* self ); +S_API HAuthTicket SteamAPI_ISteamUser_GetAuthSessionTicket( ISteamUser* self, void * pTicket, int cbMaxTicket, uint32 * pcbTicket ); +S_API EBeginAuthSessionResult SteamAPI_ISteamUser_BeginAuthSession( ISteamUser* self, const void * pAuthTicket, int cbAuthTicket, uint64_steamid steamID ); +S_API void SteamAPI_ISteamUser_EndAuthSession( ISteamUser* self, uint64_steamid steamID ); +S_API void SteamAPI_ISteamUser_CancelAuthTicket( ISteamUser* self, HAuthTicket hAuthTicket ); +S_API EUserHasLicenseForAppResult SteamAPI_ISteamUser_UserHasLicenseForApp( ISteamUser* self, uint64_steamid steamID, AppId_t appID ); +S_API bool SteamAPI_ISteamUser_BIsBehindNAT( ISteamUser* self ); +S_API void SteamAPI_ISteamUser_AdvertiseGame( ISteamUser* self, uint64_steamid steamIDGameServer, uint32 unIPServer, uint16 usPortServer ); +S_API SteamAPICall_t SteamAPI_ISteamUser_RequestEncryptedAppTicket( ISteamUser* self, void * pDataToInclude, int cbDataToInclude ); +S_API bool SteamAPI_ISteamUser_GetEncryptedAppTicket( ISteamUser* self, void * pTicket, int cbMaxTicket, uint32 * pcbTicket ); +S_API int SteamAPI_ISteamUser_GetGameBadgeLevel( ISteamUser* self, int nSeries, bool bFoil ); +S_API int SteamAPI_ISteamUser_GetPlayerSteamLevel( ISteamUser* self ); +S_API SteamAPICall_t SteamAPI_ISteamUser_RequestStoreAuthURL( ISteamUser* self, const char * pchRedirectURL ); +S_API bool SteamAPI_ISteamUser_BIsPhoneVerified( ISteamUser* self ); +S_API bool SteamAPI_ISteamUser_BIsTwoFactorEnabled( ISteamUser* self ); +S_API bool SteamAPI_ISteamUser_BIsPhoneIdentifying( ISteamUser* self ); +S_API bool SteamAPI_ISteamUser_BIsPhoneRequiringVerification( ISteamUser* self ); +S_API SteamAPICall_t SteamAPI_ISteamUser_GetMarketEligibility( ISteamUser* self ); +S_API SteamAPICall_t SteamAPI_ISteamUser_GetDurationControl( ISteamUser* self ); +S_API bool SteamAPI_ISteamUser_BSetDurationControlOnlineState( ISteamUser* self, EDurationControlOnlineState eNewState ); + +// ISteamFriends +S_API ISteamFriends *SteamAPI_SteamFriends_v017(); +S_API const char * SteamAPI_ISteamFriends_GetPersonaName( ISteamFriends* self ); +S_API SteamAPICall_t SteamAPI_ISteamFriends_SetPersonaName( ISteamFriends* self, const char * pchPersonaName ); +S_API EPersonaState SteamAPI_ISteamFriends_GetPersonaState( ISteamFriends* self ); +S_API int SteamAPI_ISteamFriends_GetFriendCount( ISteamFriends* self, int iFriendFlags ); +S_API uint64_steamid SteamAPI_ISteamFriends_GetFriendByIndex( ISteamFriends* self, int iFriend, int iFriendFlags ); +S_API EFriendRelationship SteamAPI_ISteamFriends_GetFriendRelationship( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API EPersonaState SteamAPI_ISteamFriends_GetFriendPersonaState( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API const char * SteamAPI_ISteamFriends_GetFriendPersonaName( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API bool SteamAPI_ISteamFriends_GetFriendGamePlayed( ISteamFriends* self, uint64_steamid steamIDFriend, FriendGameInfo_t * pFriendGameInfo ); +S_API const char * SteamAPI_ISteamFriends_GetFriendPersonaNameHistory( ISteamFriends* self, uint64_steamid steamIDFriend, int iPersonaName ); +S_API int SteamAPI_ISteamFriends_GetFriendSteamLevel( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API const char * SteamAPI_ISteamFriends_GetPlayerNickname( ISteamFriends* self, uint64_steamid steamIDPlayer ); +S_API int SteamAPI_ISteamFriends_GetFriendsGroupCount( ISteamFriends* self ); +S_API FriendsGroupID_t SteamAPI_ISteamFriends_GetFriendsGroupIDByIndex( ISteamFriends* self, int iFG ); +S_API const char * SteamAPI_ISteamFriends_GetFriendsGroupName( ISteamFriends* self, FriendsGroupID_t friendsGroupID ); +S_API int SteamAPI_ISteamFriends_GetFriendsGroupMembersCount( ISteamFriends* self, FriendsGroupID_t friendsGroupID ); +S_API void SteamAPI_ISteamFriends_GetFriendsGroupMembersList( ISteamFriends* self, FriendsGroupID_t friendsGroupID, CSteamID * pOutSteamIDMembers, int nMembersCount ); +S_API bool SteamAPI_ISteamFriends_HasFriend( ISteamFriends* self, uint64_steamid steamIDFriend, int iFriendFlags ); +S_API int SteamAPI_ISteamFriends_GetClanCount( ISteamFriends* self ); +S_API uint64_steamid SteamAPI_ISteamFriends_GetClanByIndex( ISteamFriends* self, int iClan ); +S_API const char * SteamAPI_ISteamFriends_GetClanName( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API const char * SteamAPI_ISteamFriends_GetClanTag( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API bool SteamAPI_ISteamFriends_GetClanActivityCounts( ISteamFriends* self, uint64_steamid steamIDClan, int * pnOnline, int * pnInGame, int * pnChatting ); +S_API SteamAPICall_t SteamAPI_ISteamFriends_DownloadClanActivityCounts( ISteamFriends* self, CSteamID * psteamIDClans, int cClansToRequest ); +S_API int SteamAPI_ISteamFriends_GetFriendCountFromSource( ISteamFriends* self, uint64_steamid steamIDSource ); +S_API uint64_steamid SteamAPI_ISteamFriends_GetFriendFromSourceByIndex( ISteamFriends* self, uint64_steamid steamIDSource, int iFriend ); +S_API bool SteamAPI_ISteamFriends_IsUserInSource( ISteamFriends* self, uint64_steamid steamIDUser, uint64_steamid steamIDSource ); +S_API void SteamAPI_ISteamFriends_SetInGameVoiceSpeaking( ISteamFriends* self, uint64_steamid steamIDUser, bool bSpeaking ); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlay( ISteamFriends* self, const char * pchDialog ); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToUser( ISteamFriends* self, const char * pchDialog, uint64_steamid steamID ); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage( ISteamFriends* self, const char * pchURL, EActivateGameOverlayToWebPageMode eMode ); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayToStore( ISteamFriends* self, AppId_t nAppID, EOverlayToStoreFlag eFlag ); +S_API void SteamAPI_ISteamFriends_SetPlayedWith( ISteamFriends* self, uint64_steamid steamIDUserPlayedWith ); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialog( ISteamFriends* self, uint64_steamid steamIDLobby ); +S_API int SteamAPI_ISteamFriends_GetSmallFriendAvatar( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API int SteamAPI_ISteamFriends_GetMediumFriendAvatar( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API int SteamAPI_ISteamFriends_GetLargeFriendAvatar( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API bool SteamAPI_ISteamFriends_RequestUserInformation( ISteamFriends* self, uint64_steamid steamIDUser, bool bRequireNameOnly ); +S_API SteamAPICall_t SteamAPI_ISteamFriends_RequestClanOfficerList( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API uint64_steamid SteamAPI_ISteamFriends_GetClanOwner( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API int SteamAPI_ISteamFriends_GetClanOfficerCount( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API uint64_steamid SteamAPI_ISteamFriends_GetClanOfficerByIndex( ISteamFriends* self, uint64_steamid steamIDClan, int iOfficer ); +S_API uint32 SteamAPI_ISteamFriends_GetUserRestrictions( ISteamFriends* self ); +S_API bool SteamAPI_ISteamFriends_SetRichPresence( ISteamFriends* self, const char * pchKey, const char * pchValue ); +S_API void SteamAPI_ISteamFriends_ClearRichPresence( ISteamFriends* self ); +S_API const char * SteamAPI_ISteamFriends_GetFriendRichPresence( ISteamFriends* self, uint64_steamid steamIDFriend, const char * pchKey ); +S_API int SteamAPI_ISteamFriends_GetFriendRichPresenceKeyCount( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API const char * SteamAPI_ISteamFriends_GetFriendRichPresenceKeyByIndex( ISteamFriends* self, uint64_steamid steamIDFriend, int iKey ); +S_API void SteamAPI_ISteamFriends_RequestFriendRichPresence( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API bool SteamAPI_ISteamFriends_InviteUserToGame( ISteamFriends* self, uint64_steamid steamIDFriend, const char * pchConnectString ); +S_API int SteamAPI_ISteamFriends_GetCoplayFriendCount( ISteamFriends* self ); +S_API uint64_steamid SteamAPI_ISteamFriends_GetCoplayFriend( ISteamFriends* self, int iCoplayFriend ); +S_API int SteamAPI_ISteamFriends_GetFriendCoplayTime( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API AppId_t SteamAPI_ISteamFriends_GetFriendCoplayGame( ISteamFriends* self, uint64_steamid steamIDFriend ); +S_API SteamAPICall_t SteamAPI_ISteamFriends_JoinClanChatRoom( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API bool SteamAPI_ISteamFriends_LeaveClanChatRoom( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API int SteamAPI_ISteamFriends_GetClanChatMemberCount( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API uint64_steamid SteamAPI_ISteamFriends_GetChatMemberByIndex( ISteamFriends* self, uint64_steamid steamIDClan, int iUser ); +S_API bool SteamAPI_ISteamFriends_SendClanChatMessage( ISteamFriends* self, uint64_steamid steamIDClanChat, const char * pchText ); +S_API int SteamAPI_ISteamFriends_GetClanChatMessage( ISteamFriends* self, uint64_steamid steamIDClanChat, int iMessage, void * prgchText, int cchTextMax, EChatEntryType * peChatEntryType, CSteamID * psteamidChatter ); +S_API bool SteamAPI_ISteamFriends_IsClanChatAdmin( ISteamFriends* self, uint64_steamid steamIDClanChat, uint64_steamid steamIDUser ); +S_API bool SteamAPI_ISteamFriends_IsClanChatWindowOpenInSteam( ISteamFriends* self, uint64_steamid steamIDClanChat ); +S_API bool SteamAPI_ISteamFriends_OpenClanChatWindowInSteam( ISteamFriends* self, uint64_steamid steamIDClanChat ); +S_API bool SteamAPI_ISteamFriends_CloseClanChatWindowInSteam( ISteamFriends* self, uint64_steamid steamIDClanChat ); +S_API bool SteamAPI_ISteamFriends_SetListenForFriendsMessages( ISteamFriends* self, bool bInterceptEnabled ); +S_API bool SteamAPI_ISteamFriends_ReplyToFriendMessage( ISteamFriends* self, uint64_steamid steamIDFriend, const char * pchMsgToSend ); +S_API int SteamAPI_ISteamFriends_GetFriendMessage( ISteamFriends* self, uint64_steamid steamIDFriend, int iMessageID, void * pvData, int cubData, EChatEntryType * peChatEntryType ); +S_API SteamAPICall_t SteamAPI_ISteamFriends_GetFollowerCount( ISteamFriends* self, uint64_steamid steamID ); +S_API SteamAPICall_t SteamAPI_ISteamFriends_IsFollowing( ISteamFriends* self, uint64_steamid steamID ); +S_API SteamAPICall_t SteamAPI_ISteamFriends_EnumerateFollowingList( ISteamFriends* self, uint32 unStartIndex ); +S_API bool SteamAPI_ISteamFriends_IsClanPublic( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API bool SteamAPI_ISteamFriends_IsClanOfficialGameGroup( ISteamFriends* self, uint64_steamid steamIDClan ); +S_API int SteamAPI_ISteamFriends_GetNumChatsWithUnreadPriorityMessages( ISteamFriends* self ); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayRemotePlayTogetherInviteDialog( ISteamFriends* self, uint64_steamid steamIDLobby ); +S_API bool SteamAPI_ISteamFriends_RegisterProtocolInOverlayBrowser( ISteamFriends* self, const char * pchProtocol ); +S_API void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialogConnectString( ISteamFriends* self, const char * pchConnectString ); + +// ISteamUtils +S_API ISteamUtils *SteamAPI_SteamUtils_v010(); +S_API ISteamUtils *SteamAPI_SteamGameServerUtils_v010(); +S_API uint32 SteamAPI_ISteamUtils_GetSecondsSinceAppActive( ISteamUtils* self ); +S_API uint32 SteamAPI_ISteamUtils_GetSecondsSinceComputerActive( ISteamUtils* self ); +S_API EUniverse SteamAPI_ISteamUtils_GetConnectedUniverse( ISteamUtils* self ); +S_API uint32 SteamAPI_ISteamUtils_GetServerRealTime( ISteamUtils* self ); +S_API const char * SteamAPI_ISteamUtils_GetIPCountry( ISteamUtils* self ); +S_API bool SteamAPI_ISteamUtils_GetImageSize( ISteamUtils* self, int iImage, uint32 * pnWidth, uint32 * pnHeight ); +S_API bool SteamAPI_ISteamUtils_GetImageRGBA( ISteamUtils* self, int iImage, uint8 * pubDest, int nDestBufferSize ); +S_API uint8 SteamAPI_ISteamUtils_GetCurrentBatteryPower( ISteamUtils* self ); +S_API uint32 SteamAPI_ISteamUtils_GetAppID( ISteamUtils* self ); +S_API void SteamAPI_ISteamUtils_SetOverlayNotificationPosition( ISteamUtils* self, ENotificationPosition eNotificationPosition ); +S_API bool SteamAPI_ISteamUtils_IsAPICallCompleted( ISteamUtils* self, SteamAPICall_t hSteamAPICall, bool * pbFailed ); +S_API ESteamAPICallFailure SteamAPI_ISteamUtils_GetAPICallFailureReason( ISteamUtils* self, SteamAPICall_t hSteamAPICall ); +S_API bool SteamAPI_ISteamUtils_GetAPICallResult( ISteamUtils* self, SteamAPICall_t hSteamAPICall, void * pCallback, int cubCallback, int iCallbackExpected, bool * pbFailed ); +S_API uint32 SteamAPI_ISteamUtils_GetIPCCallCount( ISteamUtils* self ); +S_API void SteamAPI_ISteamUtils_SetWarningMessageHook( ISteamUtils* self, SteamAPIWarningMessageHook_t pFunction ); +S_API bool SteamAPI_ISteamUtils_IsOverlayEnabled( ISteamUtils* self ); +S_API bool SteamAPI_ISteamUtils_BOverlayNeedsPresent( ISteamUtils* self ); +S_API SteamAPICall_t SteamAPI_ISteamUtils_CheckFileSignature( ISteamUtils* self, const char * szFileName ); +S_API bool SteamAPI_ISteamUtils_ShowGamepadTextInput( ISteamUtils* self, EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, const char * pchDescription, uint32 unCharMax, const char * pchExistingText ); +S_API uint32 SteamAPI_ISteamUtils_GetEnteredGamepadTextLength( ISteamUtils* self ); +S_API bool SteamAPI_ISteamUtils_GetEnteredGamepadTextInput( ISteamUtils* self, char * pchText, uint32 cchText ); +S_API const char * SteamAPI_ISteamUtils_GetSteamUILanguage( ISteamUtils* self ); +S_API bool SteamAPI_ISteamUtils_IsSteamRunningInVR( ISteamUtils* self ); +S_API void SteamAPI_ISteamUtils_SetOverlayNotificationInset( ISteamUtils* self, int nHorizontalInset, int nVerticalInset ); +S_API bool SteamAPI_ISteamUtils_IsSteamInBigPictureMode( ISteamUtils* self ); +S_API void SteamAPI_ISteamUtils_StartVRDashboard( ISteamUtils* self ); +S_API bool SteamAPI_ISteamUtils_IsVRHeadsetStreamingEnabled( ISteamUtils* self ); +S_API void SteamAPI_ISteamUtils_SetVRHeadsetStreamingEnabled( ISteamUtils* self, bool bEnabled ); +S_API bool SteamAPI_ISteamUtils_IsSteamChinaLauncher( ISteamUtils* self ); +S_API bool SteamAPI_ISteamUtils_InitFilterText( ISteamUtils* self, uint32 unFilterOptions ); +S_API int SteamAPI_ISteamUtils_FilterText( ISteamUtils* self, ETextFilteringContext eContext, uint64_steamid sourceSteamID, const char * pchInputMessage, char * pchOutFilteredText, uint32 nByteSizeOutFilteredText ); +S_API ESteamIPv6ConnectivityState SteamAPI_ISteamUtils_GetIPv6ConnectivityState( ISteamUtils* self, ESteamIPv6ConnectivityProtocol eProtocol ); + +// ISteamMatchmaking +S_API ISteamMatchmaking *SteamAPI_SteamMatchmaking_v009(); +S_API int SteamAPI_ISteamMatchmaking_GetFavoriteGameCount( ISteamMatchmaking* self ); +S_API bool SteamAPI_ISteamMatchmaking_GetFavoriteGame( ISteamMatchmaking* self, int iGame, AppId_t * pnAppID, uint32 * pnIP, uint16 * pnConnPort, uint16 * pnQueryPort, uint32 * punFlags, uint32 * pRTime32LastPlayedOnServer ); +S_API int SteamAPI_ISteamMatchmaking_AddFavoriteGame( ISteamMatchmaking* self, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer ); +S_API bool SteamAPI_ISteamMatchmaking_RemoveFavoriteGame( ISteamMatchmaking* self, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags ); +S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_RequestLobbyList( ISteamMatchmaking* self ); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListStringFilter( ISteamMatchmaking* self, const char * pchKeyToMatch, const char * pchValueToMatch, ELobbyComparison eComparisonType ); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNumericalFilter( ISteamMatchmaking* self, const char * pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType ); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListNearValueFilter( ISteamMatchmaking* self, const char * pchKeyToMatch, int nValueToBeCloseTo ); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListFilterSlotsAvailable( ISteamMatchmaking* self, int nSlotsAvailable ); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListDistanceFilter( ISteamMatchmaking* self, ELobbyDistanceFilter eLobbyDistanceFilter ); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListResultCountFilter( ISteamMatchmaking* self, int cMaxResults ); +S_API void SteamAPI_ISteamMatchmaking_AddRequestLobbyListCompatibleMembersFilter( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); +S_API uint64_steamid SteamAPI_ISteamMatchmaking_GetLobbyByIndex( ISteamMatchmaking* self, int iLobby ); +S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_CreateLobby( ISteamMatchmaking* self, ELobbyType eLobbyType, int cMaxMembers ); +S_API SteamAPICall_t SteamAPI_ISteamMatchmaking_JoinLobby( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); +S_API void SteamAPI_ISteamMatchmaking_LeaveLobby( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); +S_API bool SteamAPI_ISteamMatchmaking_InviteUserToLobby( ISteamMatchmaking* self, uint64_steamid steamIDLobby, uint64_steamid steamIDInvitee ); +S_API int SteamAPI_ISteamMatchmaking_GetNumLobbyMembers( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); +S_API uint64_steamid SteamAPI_ISteamMatchmaking_GetLobbyMemberByIndex( ISteamMatchmaking* self, uint64_steamid steamIDLobby, int iMember ); +S_API const char * SteamAPI_ISteamMatchmaking_GetLobbyData( ISteamMatchmaking* self, uint64_steamid steamIDLobby, const char * pchKey ); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyData( ISteamMatchmaking* self, uint64_steamid steamIDLobby, const char * pchKey, const char * pchValue ); +S_API int SteamAPI_ISteamMatchmaking_GetLobbyDataCount( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); +S_API bool SteamAPI_ISteamMatchmaking_GetLobbyDataByIndex( ISteamMatchmaking* self, uint64_steamid steamIDLobby, int iLobbyData, char * pchKey, int cchKeyBufferSize, char * pchValue, int cchValueBufferSize ); +S_API bool SteamAPI_ISteamMatchmaking_DeleteLobbyData( ISteamMatchmaking* self, uint64_steamid steamIDLobby, const char * pchKey ); +S_API const char * SteamAPI_ISteamMatchmaking_GetLobbyMemberData( ISteamMatchmaking* self, uint64_steamid steamIDLobby, uint64_steamid steamIDUser, const char * pchKey ); +S_API void SteamAPI_ISteamMatchmaking_SetLobbyMemberData( ISteamMatchmaking* self, uint64_steamid steamIDLobby, const char * pchKey, const char * pchValue ); +S_API bool SteamAPI_ISteamMatchmaking_SendLobbyChatMsg( ISteamMatchmaking* self, uint64_steamid steamIDLobby, const void * pvMsgBody, int cubMsgBody ); +S_API int SteamAPI_ISteamMatchmaking_GetLobbyChatEntry( ISteamMatchmaking* self, uint64_steamid steamIDLobby, int iChatID, CSteamID * pSteamIDUser, void * pvData, int cubData, EChatEntryType * peChatEntryType ); +S_API bool SteamAPI_ISteamMatchmaking_RequestLobbyData( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); +S_API void SteamAPI_ISteamMatchmaking_SetLobbyGameServer( ISteamMatchmaking* self, uint64_steamid steamIDLobby, uint32 unGameServerIP, uint16 unGameServerPort, uint64_steamid steamIDGameServer ); +S_API bool SteamAPI_ISteamMatchmaking_GetLobbyGameServer( ISteamMatchmaking* self, uint64_steamid steamIDLobby, uint32 * punGameServerIP, uint16 * punGameServerPort, CSteamID * psteamIDGameServer ); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyMemberLimit( ISteamMatchmaking* self, uint64_steamid steamIDLobby, int cMaxMembers ); +S_API int SteamAPI_ISteamMatchmaking_GetLobbyMemberLimit( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyType( ISteamMatchmaking* self, uint64_steamid steamIDLobby, ELobbyType eLobbyType ); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyJoinable( ISteamMatchmaking* self, uint64_steamid steamIDLobby, bool bLobbyJoinable ); +S_API uint64_steamid SteamAPI_ISteamMatchmaking_GetLobbyOwner( ISteamMatchmaking* self, uint64_steamid steamIDLobby ); +S_API bool SteamAPI_ISteamMatchmaking_SetLobbyOwner( ISteamMatchmaking* self, uint64_steamid steamIDLobby, uint64_steamid steamIDNewOwner ); +S_API bool SteamAPI_ISteamMatchmaking_SetLinkedLobby( ISteamMatchmaking* self, uint64_steamid steamIDLobby, uint64_steamid steamIDLobbyDependent ); + +// ISteamMatchmakingServerListResponse +S_API void SteamAPI_ISteamMatchmakingServerListResponse_ServerResponded( ISteamMatchmakingServerListResponse* self, HServerListRequest hRequest, int iServer ); +S_API void SteamAPI_ISteamMatchmakingServerListResponse_ServerFailedToRespond( ISteamMatchmakingServerListResponse* self, HServerListRequest hRequest, int iServer ); +S_API void SteamAPI_ISteamMatchmakingServerListResponse_RefreshComplete( ISteamMatchmakingServerListResponse* self, HServerListRequest hRequest, EMatchMakingServerResponse response ); + +// ISteamMatchmakingPingResponse +S_API void SteamAPI_ISteamMatchmakingPingResponse_ServerResponded( ISteamMatchmakingPingResponse* self, gameserveritem_t & server ); +S_API void SteamAPI_ISteamMatchmakingPingResponse_ServerFailedToRespond( ISteamMatchmakingPingResponse* self ); + +// ISteamMatchmakingPlayersResponse +S_API void SteamAPI_ISteamMatchmakingPlayersResponse_AddPlayerToList( ISteamMatchmakingPlayersResponse* self, const char * pchName, int nScore, float flTimePlayed ); +S_API void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersFailedToRespond( ISteamMatchmakingPlayersResponse* self ); +S_API void SteamAPI_ISteamMatchmakingPlayersResponse_PlayersRefreshComplete( ISteamMatchmakingPlayersResponse* self ); + +// ISteamMatchmakingRulesResponse +S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesResponded( ISteamMatchmakingRulesResponse* self, const char * pchRule, const char * pchValue ); +S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond( ISteamMatchmakingRulesResponse* self ); +S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete( ISteamMatchmakingRulesResponse* self ); + +// ISteamMatchmakingServers +S_API ISteamMatchmakingServers *SteamAPI_SteamMatchmakingServers_v002(); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestInternetServerList( ISteamMatchmakingServers* self, AppId_t iApp, MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse * pRequestServersResponse ); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestLANServerList( ISteamMatchmakingServers* self, AppId_t iApp, ISteamMatchmakingServerListResponse * pRequestServersResponse ); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList( ISteamMatchmakingServers* self, AppId_t iApp, MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse * pRequestServersResponse ); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestFavoritesServerList( ISteamMatchmakingServers* self, AppId_t iApp, MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse * pRequestServersResponse ); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestHistoryServerList( ISteamMatchmakingServers* self, AppId_t iApp, MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse * pRequestServersResponse ); +S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestSpectatorServerList( ISteamMatchmakingServers* self, AppId_t iApp, MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse * pRequestServersResponse ); +S_API void SteamAPI_ISteamMatchmakingServers_ReleaseRequest( ISteamMatchmakingServers* self, HServerListRequest hServerListRequest ); +S_API gameserveritem_t * SteamAPI_ISteamMatchmakingServers_GetServerDetails( ISteamMatchmakingServers* self, HServerListRequest hRequest, int iServer ); +S_API void SteamAPI_ISteamMatchmakingServers_CancelQuery( ISteamMatchmakingServers* self, HServerListRequest hRequest ); +S_API void SteamAPI_ISteamMatchmakingServers_RefreshQuery( ISteamMatchmakingServers* self, HServerListRequest hRequest ); +S_API bool SteamAPI_ISteamMatchmakingServers_IsRefreshing( ISteamMatchmakingServers* self, HServerListRequest hRequest ); +S_API int SteamAPI_ISteamMatchmakingServers_GetServerCount( ISteamMatchmakingServers* self, HServerListRequest hRequest ); +S_API void SteamAPI_ISteamMatchmakingServers_RefreshServer( ISteamMatchmakingServers* self, HServerListRequest hRequest, int iServer ); +S_API HServerQuery SteamAPI_ISteamMatchmakingServers_PingServer( ISteamMatchmakingServers* self, uint32 unIP, uint16 usPort, ISteamMatchmakingPingResponse * pRequestServersResponse ); +S_API HServerQuery SteamAPI_ISteamMatchmakingServers_PlayerDetails( ISteamMatchmakingServers* self, uint32 unIP, uint16 usPort, ISteamMatchmakingPlayersResponse * pRequestServersResponse ); +S_API HServerQuery SteamAPI_ISteamMatchmakingServers_ServerRules( ISteamMatchmakingServers* self, uint32 unIP, uint16 usPort, ISteamMatchmakingRulesResponse * pRequestServersResponse ); +S_API void SteamAPI_ISteamMatchmakingServers_CancelServerQuery( ISteamMatchmakingServers* self, HServerQuery hServerQuery ); + +// ISteamGameSearch +S_API ISteamGameSearch *SteamAPI_SteamGameSearch_v001(); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_AddGameSearchParams( ISteamGameSearch* self, const char * pchKeyToFind, const char * pchValuesToFind ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SearchForGameWithLobby( ISteamGameSearch* self, uint64_steamid steamIDLobby, int nPlayerMin, int nPlayerMax ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SearchForGameSolo( ISteamGameSearch* self, int nPlayerMin, int nPlayerMax ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_AcceptGame( ISteamGameSearch* self ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_DeclineGame( ISteamGameSearch* self ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_RetrieveConnectionDetails( ISteamGameSearch* self, uint64_steamid steamIDHost, char * pchConnectionDetails, int cubConnectionDetails ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_EndGameSearch( ISteamGameSearch* self ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SetGameHostParams( ISteamGameSearch* self, const char * pchKey, const char * pchValue ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SetConnectionDetails( ISteamGameSearch* self, const char * pchConnectionDetails, int cubConnectionDetails ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_RequestPlayersForGame( ISteamGameSearch* self, int nPlayerMin, int nPlayerMax, int nMaxTeamSize ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_HostConfirmGameStart( ISteamGameSearch* self, uint64 ullUniqueGameID ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_CancelRequestPlayersForGame( ISteamGameSearch* self ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SubmitPlayerResult( ISteamGameSearch* self, uint64 ullUniqueGameID, uint64_steamid steamIDPlayer, EPlayerResult_t EPlayerResult ); +S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_EndGame( ISteamGameSearch* self, uint64 ullUniqueGameID ); + +// ISteamParties +S_API ISteamParties *SteamAPI_SteamParties_v002(); +S_API uint32 SteamAPI_ISteamParties_GetNumActiveBeacons( ISteamParties* self ); +S_API PartyBeaconID_t SteamAPI_ISteamParties_GetBeaconByIndex( ISteamParties* self, uint32 unIndex ); +S_API bool SteamAPI_ISteamParties_GetBeaconDetails( ISteamParties* self, PartyBeaconID_t ulBeaconID, CSteamID * pSteamIDBeaconOwner, SteamPartyBeaconLocation_t * pLocation, char * pchMetadata, int cchMetadata ); +S_API SteamAPICall_t SteamAPI_ISteamParties_JoinParty( ISteamParties* self, PartyBeaconID_t ulBeaconID ); +S_API bool SteamAPI_ISteamParties_GetNumAvailableBeaconLocations( ISteamParties* self, uint32 * puNumLocations ); +S_API bool SteamAPI_ISteamParties_GetAvailableBeaconLocations( ISteamParties* self, SteamPartyBeaconLocation_t * pLocationList, uint32 uMaxNumLocations ); +S_API SteamAPICall_t SteamAPI_ISteamParties_CreateBeacon( ISteamParties* self, uint32 unOpenSlots, SteamPartyBeaconLocation_t * pBeaconLocation, const char * pchConnectString, const char * pchMetadata ); +S_API void SteamAPI_ISteamParties_OnReservationCompleted( ISteamParties* self, PartyBeaconID_t ulBeacon, uint64_steamid steamIDUser ); +S_API void SteamAPI_ISteamParties_CancelReservation( ISteamParties* self, PartyBeaconID_t ulBeacon, uint64_steamid steamIDUser ); +S_API SteamAPICall_t SteamAPI_ISteamParties_ChangeNumOpenSlots( ISteamParties* self, PartyBeaconID_t ulBeacon, uint32 unOpenSlots ); +S_API bool SteamAPI_ISteamParties_DestroyBeacon( ISteamParties* self, PartyBeaconID_t ulBeacon ); +S_API bool SteamAPI_ISteamParties_GetBeaconLocationData( ISteamParties* self, SteamPartyBeaconLocation_t BeaconLocation, ESteamPartyBeaconLocationData eData, char * pchDataStringOut, int cchDataStringOut ); + +// ISteamRemoteStorage +S_API ISteamRemoteStorage *SteamAPI_SteamRemoteStorage_v014(); +S_API bool SteamAPI_ISteamRemoteStorage_FileWrite( ISteamRemoteStorage* self, const char * pchFile, const void * pvData, int32 cubData ); +S_API int32 SteamAPI_ISteamRemoteStorage_FileRead( ISteamRemoteStorage* self, const char * pchFile, void * pvData, int32 cubDataToRead ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileWriteAsync( ISteamRemoteStorage* self, const char * pchFile, const void * pvData, uint32 cubData ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileReadAsync( ISteamRemoteStorage* self, const char * pchFile, uint32 nOffset, uint32 cubToRead ); +S_API bool SteamAPI_ISteamRemoteStorage_FileReadAsyncComplete( ISteamRemoteStorage* self, SteamAPICall_t hReadCall, void * pvBuffer, uint32 cubToRead ); +S_API bool SteamAPI_ISteamRemoteStorage_FileForget( ISteamRemoteStorage* self, const char * pchFile ); +S_API bool SteamAPI_ISteamRemoteStorage_FileDelete( ISteamRemoteStorage* self, const char * pchFile ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileShare( ISteamRemoteStorage* self, const char * pchFile ); +S_API bool SteamAPI_ISteamRemoteStorage_SetSyncPlatforms( ISteamRemoteStorage* self, const char * pchFile, ERemoteStoragePlatform eRemoteStoragePlatform ); +S_API UGCFileWriteStreamHandle_t SteamAPI_ISteamRemoteStorage_FileWriteStreamOpen( ISteamRemoteStorage* self, const char * pchFile ); +S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamWriteChunk( ISteamRemoteStorage* self, UGCFileWriteStreamHandle_t writeHandle, const void * pvData, int32 cubData ); +S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamClose( ISteamRemoteStorage* self, UGCFileWriteStreamHandle_t writeHandle ); +S_API bool SteamAPI_ISteamRemoteStorage_FileWriteStreamCancel( ISteamRemoteStorage* self, UGCFileWriteStreamHandle_t writeHandle ); +S_API bool SteamAPI_ISteamRemoteStorage_FileExists( ISteamRemoteStorage* self, const char * pchFile ); +S_API bool SteamAPI_ISteamRemoteStorage_FilePersisted( ISteamRemoteStorage* self, const char * pchFile ); +S_API int32 SteamAPI_ISteamRemoteStorage_GetFileSize( ISteamRemoteStorage* self, const char * pchFile ); +S_API int64 SteamAPI_ISteamRemoteStorage_GetFileTimestamp( ISteamRemoteStorage* self, const char * pchFile ); +S_API ERemoteStoragePlatform SteamAPI_ISteamRemoteStorage_GetSyncPlatforms( ISteamRemoteStorage* self, const char * pchFile ); +S_API int32 SteamAPI_ISteamRemoteStorage_GetFileCount( ISteamRemoteStorage* self ); +S_API const char * SteamAPI_ISteamRemoteStorage_GetFileNameAndSize( ISteamRemoteStorage* self, int iFile, int32 * pnFileSizeInBytes ); +S_API bool SteamAPI_ISteamRemoteStorage_GetQuota( ISteamRemoteStorage* self, uint64 * pnTotalBytes, uint64 * puAvailableBytes ); +S_API bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForAccount( ISteamRemoteStorage* self ); +S_API bool SteamAPI_ISteamRemoteStorage_IsCloudEnabledForApp( ISteamRemoteStorage* self ); +S_API void SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp( ISteamRemoteStorage* self, bool bEnabled ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UGCDownload( ISteamRemoteStorage* self, UGCHandle_t hContent, uint32 unPriority ); +S_API bool SteamAPI_ISteamRemoteStorage_GetUGCDownloadProgress( ISteamRemoteStorage* self, UGCHandle_t hContent, int32 * pnBytesDownloaded, int32 * pnBytesExpected ); +S_API bool SteamAPI_ISteamRemoteStorage_GetUGCDetails( ISteamRemoteStorage* self, UGCHandle_t hContent, AppId_t * pnAppID, char ** ppchName, int32 * pnFileSizeInBytes, CSteamID * pSteamIDOwner ); +S_API int32 SteamAPI_ISteamRemoteStorage_UGCRead( ISteamRemoteStorage* self, UGCHandle_t hContent, void * pvData, int32 cubDataToRead, uint32 cOffset, EUGCReadAction eAction ); +S_API int32 SteamAPI_ISteamRemoteStorage_GetCachedUGCCount( ISteamRemoteStorage* self ); +S_API UGCHandle_t SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle( ISteamRemoteStorage* self, int32 iCachedContent ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_PublishWorkshopFile( ISteamRemoteStorage* self, const char * pchFile, const char * pchPreviewFile, AppId_t nConsumerAppId, const char * pchTitle, const char * pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t * pTags, EWorkshopFileType eWorkshopFileType ); +S_API PublishedFileUpdateHandle_t SteamAPI_ISteamRemoteStorage_CreatePublishedFileUpdateRequest( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId ); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileFile( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, const char * pchFile ); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFilePreviewFile( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, const char * pchPreviewFile ); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTitle( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, const char * pchTitle ); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileDescription( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, const char * pchDescription ); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileVisibility( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, ERemoteStoragePublishedFileVisibility eVisibility ); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileTags( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, SteamParamStringArray_t * pTags ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_CommitPublishedFileUpdate( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetPublishedFileDetails( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId, uint32 unMaxSecondsOld ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_DeletePublishedFile( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserPublishedFiles( ISteamRemoteStorage* self, uint32 unStartIndex ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_SubscribePublishedFile( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserSubscribedFiles( ISteamRemoteStorage* self, uint32 unStartIndex ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UnsubscribePublishedFile( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId ); +S_API bool SteamAPI_ISteamRemoteStorage_UpdatePublishedFileSetChangeDescription( ISteamRemoteStorage* self, PublishedFileUpdateHandle_t updateHandle, const char * pchChangeDescription ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetPublishedItemVoteDetails( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UpdateUserPublishedItemVote( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId, bool bVoteUp ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_GetUserPublishedItemVoteDetails( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumerateUserSharedWorkshopFiles( ISteamRemoteStorage* self, uint64_steamid steamId, uint32 unStartIndex, SteamParamStringArray_t * pRequiredTags, SteamParamStringArray_t * pExcludedTags ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_PublishVideo( ISteamRemoteStorage* self, EWorkshopVideoProvider eVideoProvider, const char * pchVideoAccount, const char * pchVideoIdentifier, const char * pchPreviewFile, AppId_t nConsumerAppId, const char * pchTitle, const char * pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t * pTags ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction( ISteamRemoteStorage* self, PublishedFileId_t unPublishedFileId, EWorkshopFileAction eAction ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction( ISteamRemoteStorage* self, EWorkshopFileAction eAction, uint32 unStartIndex ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles( ISteamRemoteStorage* self, EWorkshopEnumerationType eEnumerationType, uint32 unStartIndex, uint32 unCount, uint32 unDays, SteamParamStringArray_t * pTags, SteamParamStringArray_t * pUserTags ); +S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation( ISteamRemoteStorage* self, UGCHandle_t hContent, const char * pchLocation, uint32 unPriority ); + +// ISteamUserStats +S_API ISteamUserStats *SteamAPI_SteamUserStats_v012(); +S_API bool SteamAPI_ISteamUserStats_RequestCurrentStats( ISteamUserStats* self ); +S_API bool SteamAPI_ISteamUserStats_GetStatInt32( ISteamUserStats* self, const char * pchName, int32 * pData ); +S_API bool SteamAPI_ISteamUserStats_GetStatFloat( ISteamUserStats* self, const char * pchName, float * pData ); +S_API bool SteamAPI_ISteamUserStats_SetStatInt32( ISteamUserStats* self, const char * pchName, int32 nData ); +S_API bool SteamAPI_ISteamUserStats_SetStatFloat( ISteamUserStats* self, const char * pchName, float fData ); +S_API bool SteamAPI_ISteamUserStats_UpdateAvgRateStat( ISteamUserStats* self, const char * pchName, float flCountThisSession, double dSessionLength ); +S_API bool SteamAPI_ISteamUserStats_GetAchievement( ISteamUserStats* self, const char * pchName, bool * pbAchieved ); +S_API bool SteamAPI_ISteamUserStats_SetAchievement( ISteamUserStats* self, const char * pchName ); +S_API bool SteamAPI_ISteamUserStats_ClearAchievement( ISteamUserStats* self, const char * pchName ); +S_API bool SteamAPI_ISteamUserStats_GetAchievementAndUnlockTime( ISteamUserStats* self, const char * pchName, bool * pbAchieved, uint32 * punUnlockTime ); +S_API bool SteamAPI_ISteamUserStats_StoreStats( ISteamUserStats* self ); +S_API int SteamAPI_ISteamUserStats_GetAchievementIcon( ISteamUserStats* self, const char * pchName ); +S_API const char * SteamAPI_ISteamUserStats_GetAchievementDisplayAttribute( ISteamUserStats* self, const char * pchName, const char * pchKey ); +S_API bool SteamAPI_ISteamUserStats_IndicateAchievementProgress( ISteamUserStats* self, const char * pchName, uint32 nCurProgress, uint32 nMaxProgress ); +S_API uint32 SteamAPI_ISteamUserStats_GetNumAchievements( ISteamUserStats* self ); +S_API const char * SteamAPI_ISteamUserStats_GetAchievementName( ISteamUserStats* self, uint32 iAchievement ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestUserStats( ISteamUserStats* self, uint64_steamid steamIDUser ); +S_API bool SteamAPI_ISteamUserStats_GetUserStatInt32( ISteamUserStats* self, uint64_steamid steamIDUser, const char * pchName, int32 * pData ); +S_API bool SteamAPI_ISteamUserStats_GetUserStatFloat( ISteamUserStats* self, uint64_steamid steamIDUser, const char * pchName, float * pData ); +S_API bool SteamAPI_ISteamUserStats_GetUserAchievement( ISteamUserStats* self, uint64_steamid steamIDUser, const char * pchName, bool * pbAchieved ); +S_API bool SteamAPI_ISteamUserStats_GetUserAchievementAndUnlockTime( ISteamUserStats* self, uint64_steamid steamIDUser, const char * pchName, bool * pbAchieved, uint32 * punUnlockTime ); +S_API bool SteamAPI_ISteamUserStats_ResetAllStats( ISteamUserStats* self, bool bAchievementsToo ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_FindOrCreateLeaderboard( ISteamUserStats* self, const char * pchLeaderboardName, ELeaderboardSortMethod eLeaderboardSortMethod, ELeaderboardDisplayType eLeaderboardDisplayType ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_FindLeaderboard( ISteamUserStats* self, const char * pchLeaderboardName ); +S_API const char * SteamAPI_ISteamUserStats_GetLeaderboardName( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard ); +S_API int SteamAPI_ISteamUserStats_GetLeaderboardEntryCount( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard ); +S_API ELeaderboardSortMethod SteamAPI_ISteamUserStats_GetLeaderboardSortMethod( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard ); +S_API ELeaderboardDisplayType SteamAPI_ISteamUserStats_GetLeaderboardDisplayType( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_DownloadLeaderboardEntries( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard, ELeaderboardDataRequest eLeaderboardDataRequest, int nRangeStart, int nRangeEnd ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard, CSteamID * prgUsers, int cUsers ); +S_API bool SteamAPI_ISteamUserStats_GetDownloadedLeaderboardEntry( ISteamUserStats* self, SteamLeaderboardEntries_t hSteamLeaderboardEntries, int index, LeaderboardEntry_t * pLeaderboardEntry, int32 * pDetails, int cDetailsMax ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_UploadLeaderboardScore( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard, ELeaderboardUploadScoreMethod eLeaderboardUploadScoreMethod, int32 nScore, const int32 * pScoreDetails, int cScoreDetailsCount ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_AttachLeaderboardUGC( ISteamUserStats* self, SteamLeaderboard_t hSteamLeaderboard, UGCHandle_t hUGC ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_GetNumberOfCurrentPlayers( ISteamUserStats* self ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestGlobalAchievementPercentages( ISteamUserStats* self ); +S_API int SteamAPI_ISteamUserStats_GetMostAchievedAchievementInfo( ISteamUserStats* self, char * pchName, uint32 unNameBufLen, float * pflPercent, bool * pbAchieved ); +S_API int SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo( ISteamUserStats* self, int iIteratorPrevious, char * pchName, uint32 unNameBufLen, float * pflPercent, bool * pbAchieved ); +S_API bool SteamAPI_ISteamUserStats_GetAchievementAchievedPercent( ISteamUserStats* self, const char * pchName, float * pflPercent ); +S_API SteamAPICall_t SteamAPI_ISteamUserStats_RequestGlobalStats( ISteamUserStats* self, int nHistoryDays ); +S_API bool SteamAPI_ISteamUserStats_GetGlobalStatInt64( ISteamUserStats* self, const char * pchStatName, int64 * pData ); +S_API bool SteamAPI_ISteamUserStats_GetGlobalStatDouble( ISteamUserStats* self, const char * pchStatName, double * pData ); +S_API int32 SteamAPI_ISteamUserStats_GetGlobalStatHistoryInt64( ISteamUserStats* self, const char * pchStatName, int64 * pData, uint32 cubData ); +S_API int32 SteamAPI_ISteamUserStats_GetGlobalStatHistoryDouble( ISteamUserStats* self, const char * pchStatName, double * pData, uint32 cubData ); +S_API bool SteamAPI_ISteamUserStats_GetAchievementProgressLimitsInt32( ISteamUserStats* self, const char * pchName, int32 * pnMinProgress, int32 * pnMaxProgress ); +S_API bool SteamAPI_ISteamUserStats_GetAchievementProgressLimitsFloat( ISteamUserStats* self, const char * pchName, float * pfMinProgress, float * pfMaxProgress ); + +// ISteamApps +S_API ISteamApps *SteamAPI_SteamApps_v008(); +S_API ISteamApps *SteamAPI_SteamGameServerApps_v008(); +S_API bool SteamAPI_ISteamApps_BIsSubscribed( ISteamApps* self ); +S_API bool SteamAPI_ISteamApps_BIsLowViolence( ISteamApps* self ); +S_API bool SteamAPI_ISteamApps_BIsCybercafe( ISteamApps* self ); +S_API bool SteamAPI_ISteamApps_BIsVACBanned( ISteamApps* self ); +S_API const char * SteamAPI_ISteamApps_GetCurrentGameLanguage( ISteamApps* self ); +S_API const char * SteamAPI_ISteamApps_GetAvailableGameLanguages( ISteamApps* self ); +S_API bool SteamAPI_ISteamApps_BIsSubscribedApp( ISteamApps* self, AppId_t appID ); +S_API bool SteamAPI_ISteamApps_BIsDlcInstalled( ISteamApps* self, AppId_t appID ); +S_API uint32 SteamAPI_ISteamApps_GetEarliestPurchaseUnixTime( ISteamApps* self, AppId_t nAppID ); +S_API bool SteamAPI_ISteamApps_BIsSubscribedFromFreeWeekend( ISteamApps* self ); +S_API int SteamAPI_ISteamApps_GetDLCCount( ISteamApps* self ); +S_API bool SteamAPI_ISteamApps_BGetDLCDataByIndex( ISteamApps* self, int iDLC, AppId_t * pAppID, bool * pbAvailable, char * pchName, int cchNameBufferSize ); +S_API void SteamAPI_ISteamApps_InstallDLC( ISteamApps* self, AppId_t nAppID ); +S_API void SteamAPI_ISteamApps_UninstallDLC( ISteamApps* self, AppId_t nAppID ); +S_API void SteamAPI_ISteamApps_RequestAppProofOfPurchaseKey( ISteamApps* self, AppId_t nAppID ); +S_API bool SteamAPI_ISteamApps_GetCurrentBetaName( ISteamApps* self, char * pchName, int cchNameBufferSize ); +S_API bool SteamAPI_ISteamApps_MarkContentCorrupt( ISteamApps* self, bool bMissingFilesOnly ); +S_API uint32 SteamAPI_ISteamApps_GetInstalledDepots( ISteamApps* self, AppId_t appID, DepotId_t * pvecDepots, uint32 cMaxDepots ); +S_API uint32 SteamAPI_ISteamApps_GetAppInstallDir( ISteamApps* self, AppId_t appID, char * pchFolder, uint32 cchFolderBufferSize ); +S_API bool SteamAPI_ISteamApps_BIsAppInstalled( ISteamApps* self, AppId_t appID ); +S_API uint64_steamid SteamAPI_ISteamApps_GetAppOwner( ISteamApps* self ); +S_API const char * SteamAPI_ISteamApps_GetLaunchQueryParam( ISteamApps* self, const char * pchKey ); +S_API bool SteamAPI_ISteamApps_GetDlcDownloadProgress( ISteamApps* self, AppId_t nAppID, uint64 * punBytesDownloaded, uint64 * punBytesTotal ); +S_API int SteamAPI_ISteamApps_GetAppBuildId( ISteamApps* self ); +S_API void SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys( ISteamApps* self ); +S_API SteamAPICall_t SteamAPI_ISteamApps_GetFileDetails( ISteamApps* self, const char * pszFileName ); +S_API int SteamAPI_ISteamApps_GetLaunchCommandLine( ISteamApps* self, char * pszCommandLine, int cubCommandLine ); +S_API bool SteamAPI_ISteamApps_BIsSubscribedFromFamilySharing( ISteamApps* self ); +S_API bool SteamAPI_ISteamApps_BIsTimedTrial( ISteamApps* self, uint32 * punSecondsAllowed, uint32 * punSecondsPlayed ); + +// ISteamNetworking +S_API ISteamNetworking *SteamAPI_SteamNetworking_v006(); +S_API ISteamNetworking *SteamAPI_SteamGameServerNetworking_v006(); +S_API bool SteamAPI_ISteamNetworking_SendP2PPacket( ISteamNetworking* self, uint64_steamid steamIDRemote, const void * pubData, uint32 cubData, EP2PSend eP2PSendType, int nChannel ); +S_API bool SteamAPI_ISteamNetworking_IsP2PPacketAvailable( ISteamNetworking* self, uint32 * pcubMsgSize, int nChannel ); +S_API bool SteamAPI_ISteamNetworking_ReadP2PPacket( ISteamNetworking* self, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize, CSteamID * psteamIDRemote, int nChannel ); +S_API bool SteamAPI_ISteamNetworking_AcceptP2PSessionWithUser( ISteamNetworking* self, uint64_steamid steamIDRemote ); +S_API bool SteamAPI_ISteamNetworking_CloseP2PSessionWithUser( ISteamNetworking* self, uint64_steamid steamIDRemote ); +S_API bool SteamAPI_ISteamNetworking_CloseP2PChannelWithUser( ISteamNetworking* self, uint64_steamid steamIDRemote, int nChannel ); +S_API bool SteamAPI_ISteamNetworking_GetP2PSessionState( ISteamNetworking* self, uint64_steamid steamIDRemote, P2PSessionState_t * pConnectionState ); +S_API bool SteamAPI_ISteamNetworking_AllowP2PPacketRelay( ISteamNetworking* self, bool bAllow ); +S_API SNetListenSocket_t SteamAPI_ISteamNetworking_CreateListenSocket( ISteamNetworking* self, int nVirtualP2PPort, SteamIPAddress_t nIP, uint16 nPort, bool bAllowUseOfPacketRelay ); +S_API SNetSocket_t SteamAPI_ISteamNetworking_CreateP2PConnectionSocket( ISteamNetworking* self, uint64_steamid steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay ); +S_API SNetSocket_t SteamAPI_ISteamNetworking_CreateConnectionSocket( ISteamNetworking* self, SteamIPAddress_t nIP, uint16 nPort, int nTimeoutSec ); +S_API bool SteamAPI_ISteamNetworking_DestroySocket( ISteamNetworking* self, SNetSocket_t hSocket, bool bNotifyRemoteEnd ); +S_API bool SteamAPI_ISteamNetworking_DestroyListenSocket( ISteamNetworking* self, SNetListenSocket_t hSocket, bool bNotifyRemoteEnd ); +S_API bool SteamAPI_ISteamNetworking_SendDataOnSocket( ISteamNetworking* self, SNetSocket_t hSocket, void * pubData, uint32 cubData, bool bReliable ); +S_API bool SteamAPI_ISteamNetworking_IsDataAvailableOnSocket( ISteamNetworking* self, SNetSocket_t hSocket, uint32 * pcubMsgSize ); +S_API bool SteamAPI_ISteamNetworking_RetrieveDataFromSocket( ISteamNetworking* self, SNetSocket_t hSocket, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize ); +S_API bool SteamAPI_ISteamNetworking_IsDataAvailable( ISteamNetworking* self, SNetListenSocket_t hListenSocket, uint32 * pcubMsgSize, SNetSocket_t * phSocket ); +S_API bool SteamAPI_ISteamNetworking_RetrieveData( ISteamNetworking* self, SNetListenSocket_t hListenSocket, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize, SNetSocket_t * phSocket ); +S_API bool SteamAPI_ISteamNetworking_GetSocketInfo( ISteamNetworking* self, SNetSocket_t hSocket, CSteamID * pSteamIDRemote, int * peSocketStatus, SteamIPAddress_t * punIPRemote, uint16 * punPortRemote ); +S_API bool SteamAPI_ISteamNetworking_GetListenSocketInfo( ISteamNetworking* self, SNetListenSocket_t hListenSocket, SteamIPAddress_t * pnIP, uint16 * pnPort ); +S_API ESNetSocketConnectionType SteamAPI_ISteamNetworking_GetSocketConnectionType( ISteamNetworking* self, SNetSocket_t hSocket ); +S_API int SteamAPI_ISteamNetworking_GetMaxPacketSize( ISteamNetworking* self, SNetSocket_t hSocket ); + +// ISteamScreenshots +S_API ISteamScreenshots *SteamAPI_SteamScreenshots_v003(); +S_API ScreenshotHandle SteamAPI_ISteamScreenshots_WriteScreenshot( ISteamScreenshots* self, void * pubRGB, uint32 cubRGB, int nWidth, int nHeight ); +S_API ScreenshotHandle SteamAPI_ISteamScreenshots_AddScreenshotToLibrary( ISteamScreenshots* self, const char * pchFilename, const char * pchThumbnailFilename, int nWidth, int nHeight ); +S_API void SteamAPI_ISteamScreenshots_TriggerScreenshot( ISteamScreenshots* self ); +S_API void SteamAPI_ISteamScreenshots_HookScreenshots( ISteamScreenshots* self, bool bHook ); +S_API bool SteamAPI_ISteamScreenshots_SetLocation( ISteamScreenshots* self, ScreenshotHandle hScreenshot, const char * pchLocation ); +S_API bool SteamAPI_ISteamScreenshots_TagUser( ISteamScreenshots* self, ScreenshotHandle hScreenshot, uint64_steamid steamID ); +S_API bool SteamAPI_ISteamScreenshots_TagPublishedFile( ISteamScreenshots* self, ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID ); +S_API bool SteamAPI_ISteamScreenshots_IsScreenshotsHooked( ISteamScreenshots* self ); +S_API ScreenshotHandle SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary( ISteamScreenshots* self, EVRScreenshotType eType, const char * pchFilename, const char * pchVRFilename ); + +// ISteamMusic +S_API ISteamMusic *SteamAPI_SteamMusic_v001(); +S_API bool SteamAPI_ISteamMusic_BIsEnabled( ISteamMusic* self ); +S_API bool SteamAPI_ISteamMusic_BIsPlaying( ISteamMusic* self ); +S_API AudioPlayback_Status SteamAPI_ISteamMusic_GetPlaybackStatus( ISteamMusic* self ); +S_API void SteamAPI_ISteamMusic_Play( ISteamMusic* self ); +S_API void SteamAPI_ISteamMusic_Pause( ISteamMusic* self ); +S_API void SteamAPI_ISteamMusic_PlayPrevious( ISteamMusic* self ); +S_API void SteamAPI_ISteamMusic_PlayNext( ISteamMusic* self ); +S_API void SteamAPI_ISteamMusic_SetVolume( ISteamMusic* self, float flVolume ); +S_API float SteamAPI_ISteamMusic_GetVolume( ISteamMusic* self ); + +// ISteamMusicRemote +S_API ISteamMusicRemote *SteamAPI_SteamMusicRemote_v001(); +S_API bool SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote( ISteamMusicRemote* self, const char * pchName ); +S_API bool SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote( ISteamMusicRemote* self ); +S_API bool SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote( ISteamMusicRemote* self ); +S_API bool SteamAPI_ISteamMusicRemote_BActivationSuccess( ISteamMusicRemote* self, bool bValue ); +S_API bool SteamAPI_ISteamMusicRemote_SetDisplayName( ISteamMusicRemote* self, const char * pchDisplayName ); +S_API bool SteamAPI_ISteamMusicRemote_SetPNGIcon_64x64( ISteamMusicRemote* self, void * pvBuffer, uint32 cbBufferLength ); +S_API bool SteamAPI_ISteamMusicRemote_EnablePlayPrevious( ISteamMusicRemote* self, bool bValue ); +S_API bool SteamAPI_ISteamMusicRemote_EnablePlayNext( ISteamMusicRemote* self, bool bValue ); +S_API bool SteamAPI_ISteamMusicRemote_EnableShuffled( ISteamMusicRemote* self, bool bValue ); +S_API bool SteamAPI_ISteamMusicRemote_EnableLooped( ISteamMusicRemote* self, bool bValue ); +S_API bool SteamAPI_ISteamMusicRemote_EnableQueue( ISteamMusicRemote* self, bool bValue ); +S_API bool SteamAPI_ISteamMusicRemote_EnablePlaylists( ISteamMusicRemote* self, bool bValue ); +S_API bool SteamAPI_ISteamMusicRemote_UpdatePlaybackStatus( ISteamMusicRemote* self, AudioPlayback_Status nStatus ); +S_API bool SteamAPI_ISteamMusicRemote_UpdateShuffled( ISteamMusicRemote* self, bool bValue ); +S_API bool SteamAPI_ISteamMusicRemote_UpdateLooped( ISteamMusicRemote* self, bool bValue ); +S_API bool SteamAPI_ISteamMusicRemote_UpdateVolume( ISteamMusicRemote* self, float flValue ); +S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryWillChange( ISteamMusicRemote* self ); +S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryIsAvailable( ISteamMusicRemote* self, bool bAvailable ); +S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryText( ISteamMusicRemote* self, const char * pchText ); +S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryElapsedSeconds( ISteamMusicRemote* self, int nValue ); +S_API bool SteamAPI_ISteamMusicRemote_UpdateCurrentEntryCoverArt( ISteamMusicRemote* self, void * pvBuffer, uint32 cbBufferLength ); +S_API bool SteamAPI_ISteamMusicRemote_CurrentEntryDidChange( ISteamMusicRemote* self ); +S_API bool SteamAPI_ISteamMusicRemote_QueueWillChange( ISteamMusicRemote* self ); +S_API bool SteamAPI_ISteamMusicRemote_ResetQueueEntries( ISteamMusicRemote* self ); +S_API bool SteamAPI_ISteamMusicRemote_SetQueueEntry( ISteamMusicRemote* self, int nID, int nPosition, const char * pchEntryText ); +S_API bool SteamAPI_ISteamMusicRemote_SetCurrentQueueEntry( ISteamMusicRemote* self, int nID ); +S_API bool SteamAPI_ISteamMusicRemote_QueueDidChange( ISteamMusicRemote* self ); +S_API bool SteamAPI_ISteamMusicRemote_PlaylistWillChange( ISteamMusicRemote* self ); +S_API bool SteamAPI_ISteamMusicRemote_ResetPlaylistEntries( ISteamMusicRemote* self ); +S_API bool SteamAPI_ISteamMusicRemote_SetPlaylistEntry( ISteamMusicRemote* self, int nID, int nPosition, const char * pchEntryText ); +S_API bool SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry( ISteamMusicRemote* self, int nID ); +S_API bool SteamAPI_ISteamMusicRemote_PlaylistDidChange( ISteamMusicRemote* self ); + +// ISteamHTTP +S_API ISteamHTTP *SteamAPI_SteamHTTP_v003(); +S_API ISteamHTTP *SteamAPI_SteamGameServerHTTP_v003(); +S_API HTTPRequestHandle SteamAPI_ISteamHTTP_CreateHTTPRequest( ISteamHTTP* self, EHTTPMethod eHTTPRequestMethod, const char * pchAbsoluteURL ); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestContextValue( ISteamHTTP* self, HTTPRequestHandle hRequest, uint64 ulContextValue ); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout( ISteamHTTP* self, HTTPRequestHandle hRequest, uint32 unTimeoutSeconds ); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestHeaderValue( ISteamHTTP* self, HTTPRequestHandle hRequest, const char * pchHeaderName, const char * pchHeaderValue ); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestGetOrPostParameter( ISteamHTTP* self, HTTPRequestHandle hRequest, const char * pchParamName, const char * pchParamValue ); +S_API bool SteamAPI_ISteamHTTP_SendHTTPRequest( ISteamHTTP* self, HTTPRequestHandle hRequest, SteamAPICall_t * pCallHandle ); +S_API bool SteamAPI_ISteamHTTP_SendHTTPRequestAndStreamResponse( ISteamHTTP* self, HTTPRequestHandle hRequest, SteamAPICall_t * pCallHandle ); +S_API bool SteamAPI_ISteamHTTP_DeferHTTPRequest( ISteamHTTP* self, HTTPRequestHandle hRequest ); +S_API bool SteamAPI_ISteamHTTP_PrioritizeHTTPRequest( ISteamHTTP* self, HTTPRequestHandle hRequest ); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderSize( ISteamHTTP* self, HTTPRequestHandle hRequest, const char * pchHeaderName, uint32 * unResponseHeaderSize ); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseHeaderValue( ISteamHTTP* self, HTTPRequestHandle hRequest, const char * pchHeaderName, uint8 * pHeaderValueBuffer, uint32 unBufferSize ); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseBodySize( ISteamHTTP* self, HTTPRequestHandle hRequest, uint32 * unBodySize ); +S_API bool SteamAPI_ISteamHTTP_GetHTTPResponseBodyData( ISteamHTTP* self, HTTPRequestHandle hRequest, uint8 * pBodyDataBuffer, uint32 unBufferSize ); +S_API bool SteamAPI_ISteamHTTP_GetHTTPStreamingResponseBodyData( ISteamHTTP* self, HTTPRequestHandle hRequest, uint32 cOffset, uint8 * pBodyDataBuffer, uint32 unBufferSize ); +S_API bool SteamAPI_ISteamHTTP_ReleaseHTTPRequest( ISteamHTTP* self, HTTPRequestHandle hRequest ); +S_API bool SteamAPI_ISteamHTTP_GetHTTPDownloadProgressPct( ISteamHTTP* self, HTTPRequestHandle hRequest, float * pflPercentOut ); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestRawPostBody( ISteamHTTP* self, HTTPRequestHandle hRequest, const char * pchContentType, uint8 * pubBody, uint32 unBodyLen ); +S_API HTTPCookieContainerHandle SteamAPI_ISteamHTTP_CreateCookieContainer( ISteamHTTP* self, bool bAllowResponsesToModify ); +S_API bool SteamAPI_ISteamHTTP_ReleaseCookieContainer( ISteamHTTP* self, HTTPCookieContainerHandle hCookieContainer ); +S_API bool SteamAPI_ISteamHTTP_SetCookie( ISteamHTTP* self, HTTPCookieContainerHandle hCookieContainer, const char * pchHost, const char * pchUrl, const char * pchCookie ); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestCookieContainer( ISteamHTTP* self, HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer ); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestUserAgentInfo( ISteamHTTP* self, HTTPRequestHandle hRequest, const char * pchUserAgentInfo ); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate( ISteamHTTP* self, HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate ); +S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS( ISteamHTTP* self, HTTPRequestHandle hRequest, uint32 unMilliseconds ); +S_API bool SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut( ISteamHTTP* self, HTTPRequestHandle hRequest, bool * pbWasTimedOut ); + +// ISteamInput +S_API ISteamInput *SteamAPI_SteamInput_v002(); +S_API bool SteamAPI_ISteamInput_Init( ISteamInput* self ); +S_API bool SteamAPI_ISteamInput_Shutdown( ISteamInput* self ); +S_API void SteamAPI_ISteamInput_RunFrame( ISteamInput* self ); +S_API int SteamAPI_ISteamInput_GetConnectedControllers( ISteamInput* self, InputHandle_t * handlesOut ); +S_API InputActionSetHandle_t SteamAPI_ISteamInput_GetActionSetHandle( ISteamInput* self, const char * pszActionSetName ); +S_API void SteamAPI_ISteamInput_ActivateActionSet( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle ); +S_API InputActionSetHandle_t SteamAPI_ISteamInput_GetCurrentActionSet( ISteamInput* self, InputHandle_t inputHandle ); +S_API void SteamAPI_ISteamInput_ActivateActionSetLayer( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ); +S_API void SteamAPI_ISteamInput_DeactivateActionSetLayer( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ); +S_API void SteamAPI_ISteamInput_DeactivateAllActionSetLayers( ISteamInput* self, InputHandle_t inputHandle ); +S_API int SteamAPI_ISteamInput_GetActiveActionSetLayers( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t * handlesOut ); +S_API InputDigitalActionHandle_t SteamAPI_ISteamInput_GetDigitalActionHandle( ISteamInput* self, const char * pszActionName ); +S_API InputDigitalActionData_t SteamAPI_ISteamInput_GetDigitalActionData( ISteamInput* self, InputHandle_t inputHandle, InputDigitalActionHandle_t digitalActionHandle ); +S_API int SteamAPI_ISteamInput_GetDigitalActionOrigins( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputDigitalActionHandle_t digitalActionHandle, EInputActionOrigin * originsOut ); +S_API InputAnalogActionHandle_t SteamAPI_ISteamInput_GetAnalogActionHandle( ISteamInput* self, const char * pszActionName ); +S_API InputAnalogActionData_t SteamAPI_ISteamInput_GetAnalogActionData( ISteamInput* self, InputHandle_t inputHandle, InputAnalogActionHandle_t analogActionHandle ); +S_API int SteamAPI_ISteamInput_GetAnalogActionOrigins( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputAnalogActionHandle_t analogActionHandle, EInputActionOrigin * originsOut ); +S_API const char * SteamAPI_ISteamInput_GetGlyphForActionOrigin( ISteamInput* self, EInputActionOrigin eOrigin ); +S_API const char * SteamAPI_ISteamInput_GetStringForActionOrigin( ISteamInput* self, EInputActionOrigin eOrigin ); +S_API void SteamAPI_ISteamInput_StopAnalogActionMomentum( ISteamInput* self, InputHandle_t inputHandle, InputAnalogActionHandle_t eAction ); +S_API InputMotionData_t SteamAPI_ISteamInput_GetMotionData( ISteamInput* self, InputHandle_t inputHandle ); +S_API void SteamAPI_ISteamInput_TriggerVibration( ISteamInput* self, InputHandle_t inputHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed ); +S_API void SteamAPI_ISteamInput_SetLEDColor( ISteamInput* self, InputHandle_t inputHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags ); +S_API void SteamAPI_ISteamInput_TriggerHapticPulse( ISteamInput* self, InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ); +S_API void SteamAPI_ISteamInput_TriggerRepeatedHapticPulse( ISteamInput* self, InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ); +S_API bool SteamAPI_ISteamInput_ShowBindingPanel( ISteamInput* self, InputHandle_t inputHandle ); +S_API ESteamInputType SteamAPI_ISteamInput_GetInputTypeForHandle( ISteamInput* self, InputHandle_t inputHandle ); +S_API InputHandle_t SteamAPI_ISteamInput_GetControllerForGamepadIndex( ISteamInput* self, int nIndex ); +S_API int SteamAPI_ISteamInput_GetGamepadIndexForController( ISteamInput* self, InputHandle_t ulinputHandle ); +S_API const char * SteamAPI_ISteamInput_GetStringForXboxOrigin( ISteamInput* self, EXboxOrigin eOrigin ); +S_API const char * SteamAPI_ISteamInput_GetGlyphForXboxOrigin( ISteamInput* self, EXboxOrigin eOrigin ); +S_API EInputActionOrigin SteamAPI_ISteamInput_GetActionOriginFromXboxOrigin( ISteamInput* self, InputHandle_t inputHandle, EXboxOrigin eOrigin ); +S_API EInputActionOrigin SteamAPI_ISteamInput_TranslateActionOrigin( ISteamInput* self, ESteamInputType eDestinationInputType, EInputActionOrigin eSourceOrigin ); +S_API bool SteamAPI_ISteamInput_GetDeviceBindingRevision( ISteamInput* self, InputHandle_t inputHandle, int * pMajor, int * pMinor ); +S_API uint32 SteamAPI_ISteamInput_GetRemotePlaySessionID( ISteamInput* self, InputHandle_t inputHandle ); + +// ISteamController +S_API ISteamController *SteamAPI_SteamController_v008(); +S_API bool SteamAPI_ISteamController_Init( ISteamController* self ); +S_API bool SteamAPI_ISteamController_Shutdown( ISteamController* self ); +S_API void SteamAPI_ISteamController_RunFrame( ISteamController* self ); +S_API int SteamAPI_ISteamController_GetConnectedControllers( ISteamController* self, ControllerHandle_t * handlesOut ); +S_API ControllerActionSetHandle_t SteamAPI_ISteamController_GetActionSetHandle( ISteamController* self, const char * pszActionSetName ); +S_API void SteamAPI_ISteamController_ActivateActionSet( ISteamController* self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle ); +S_API ControllerActionSetHandle_t SteamAPI_ISteamController_GetCurrentActionSet( ISteamController* self, ControllerHandle_t controllerHandle ); +S_API void SteamAPI_ISteamController_ActivateActionSetLayer( ISteamController* self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle ); +S_API void SteamAPI_ISteamController_DeactivateActionSetLayer( ISteamController* self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetLayerHandle ); +S_API void SteamAPI_ISteamController_DeactivateAllActionSetLayers( ISteamController* self, ControllerHandle_t controllerHandle ); +S_API int SteamAPI_ISteamController_GetActiveActionSetLayers( ISteamController* self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t * handlesOut ); +S_API ControllerDigitalActionHandle_t SteamAPI_ISteamController_GetDigitalActionHandle( ISteamController* self, const char * pszActionName ); +S_API InputDigitalActionData_t SteamAPI_ISteamController_GetDigitalActionData( ISteamController* self, ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle ); +S_API int SteamAPI_ISteamController_GetDigitalActionOrigins( ISteamController* self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerDigitalActionHandle_t digitalActionHandle, EControllerActionOrigin * originsOut ); +S_API ControllerAnalogActionHandle_t SteamAPI_ISteamController_GetAnalogActionHandle( ISteamController* self, const char * pszActionName ); +S_API InputAnalogActionData_t SteamAPI_ISteamController_GetAnalogActionData( ISteamController* self, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle ); +S_API int SteamAPI_ISteamController_GetAnalogActionOrigins( ISteamController* self, ControllerHandle_t controllerHandle, ControllerActionSetHandle_t actionSetHandle, ControllerAnalogActionHandle_t analogActionHandle, EControllerActionOrigin * originsOut ); +S_API const char * SteamAPI_ISteamController_GetGlyphForActionOrigin( ISteamController* self, EControllerActionOrigin eOrigin ); +S_API const char * SteamAPI_ISteamController_GetStringForActionOrigin( ISteamController* self, EControllerActionOrigin eOrigin ); +S_API void SteamAPI_ISteamController_StopAnalogActionMomentum( ISteamController* self, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t eAction ); +S_API InputMotionData_t SteamAPI_ISteamController_GetMotionData( ISteamController* self, ControllerHandle_t controllerHandle ); +S_API void SteamAPI_ISteamController_TriggerHapticPulse( ISteamController* self, ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ); +S_API void SteamAPI_ISteamController_TriggerRepeatedHapticPulse( ISteamController* self, ControllerHandle_t controllerHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ); +S_API void SteamAPI_ISteamController_TriggerVibration( ISteamController* self, ControllerHandle_t controllerHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed ); +S_API void SteamAPI_ISteamController_SetLEDColor( ISteamController* self, ControllerHandle_t controllerHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags ); +S_API bool SteamAPI_ISteamController_ShowBindingPanel( ISteamController* self, ControllerHandle_t controllerHandle ); +S_API ESteamInputType SteamAPI_ISteamController_GetInputTypeForHandle( ISteamController* self, ControllerHandle_t controllerHandle ); +S_API ControllerHandle_t SteamAPI_ISteamController_GetControllerForGamepadIndex( ISteamController* self, int nIndex ); +S_API int SteamAPI_ISteamController_GetGamepadIndexForController( ISteamController* self, ControllerHandle_t ulControllerHandle ); +S_API const char * SteamAPI_ISteamController_GetStringForXboxOrigin( ISteamController* self, EXboxOrigin eOrigin ); +S_API const char * SteamAPI_ISteamController_GetGlyphForXboxOrigin( ISteamController* self, EXboxOrigin eOrigin ); +S_API EControllerActionOrigin SteamAPI_ISteamController_GetActionOriginFromXboxOrigin( ISteamController* self, ControllerHandle_t controllerHandle, EXboxOrigin eOrigin ); +S_API EControllerActionOrigin SteamAPI_ISteamController_TranslateActionOrigin( ISteamController* self, ESteamInputType eDestinationInputType, EControllerActionOrigin eSourceOrigin ); +S_API bool SteamAPI_ISteamController_GetControllerBindingRevision( ISteamController* self, ControllerHandle_t controllerHandle, int * pMajor, int * pMinor ); + +// ISteamUGC +S_API ISteamUGC *SteamAPI_SteamUGC_v015(); +S_API ISteamUGC *SteamAPI_SteamGameServerUGC_v015(); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUserUGCRequest( ISteamUGC* self, AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestPage( ISteamUGC* self, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestCursor( ISteamUGC* self, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, const char * pchCursor ); +S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUGCDetailsRequest( ISteamUGC* self, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SendQueryUGCRequest( ISteamUGC* self, UGCQueryHandle_t handle ); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCResult( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, SteamUGCDetails_t * pDetails ); +S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumTags( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index ); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCTag( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, uint32 indexTag, char * pchValue, uint32 cchValueSize ); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCTagDisplayName( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, uint32 indexTag, char * pchValue, uint32 cchValueSize ); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCPreviewURL( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, char * pchURL, uint32 cchURLSize ); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCMetadata( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, char * pchMetadata, uint32 cchMetadatasize ); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCChildren( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries ); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCStatistic( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, EItemStatistic eStatType, uint64 * pStatValue ); +S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index ); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, char * pchURLOrVideoID, uint32 cchURLSize, char * pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType * pPreviewType ); +S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index ); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, char * pchKey, uint32 cchKeySize, char * pchValue, uint32 cchValueSize ); +S_API bool SteamAPI_ISteamUGC_GetQueryFirstUGCKeyValueTag( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, const char * pchKey, char * pchValue, uint32 cchValueSize ); +S_API bool SteamAPI_ISteamUGC_ReleaseQueryUGCRequest( ISteamUGC* self, UGCQueryHandle_t handle ); +S_API bool SteamAPI_ISteamUGC_AddRequiredTag( ISteamUGC* self, UGCQueryHandle_t handle, const char * pTagName ); +S_API bool SteamAPI_ISteamUGC_AddRequiredTagGroup( ISteamUGC* self, UGCQueryHandle_t handle, const SteamParamStringArray_t * pTagGroups ); +S_API bool SteamAPI_ISteamUGC_AddExcludedTag( ISteamUGC* self, UGCQueryHandle_t handle, const char * pTagName ); +S_API bool SteamAPI_ISteamUGC_SetReturnOnlyIDs( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnOnlyIDs ); +S_API bool SteamAPI_ISteamUGC_SetReturnKeyValueTags( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnKeyValueTags ); +S_API bool SteamAPI_ISteamUGC_SetReturnLongDescription( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnLongDescription ); +S_API bool SteamAPI_ISteamUGC_SetReturnMetadata( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnMetadata ); +S_API bool SteamAPI_ISteamUGC_SetReturnChildren( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnChildren ); +S_API bool SteamAPI_ISteamUGC_SetReturnAdditionalPreviews( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnAdditionalPreviews ); +S_API bool SteamAPI_ISteamUGC_SetReturnTotalOnly( ISteamUGC* self, UGCQueryHandle_t handle, bool bReturnTotalOnly ); +S_API bool SteamAPI_ISteamUGC_SetReturnPlaytimeStats( ISteamUGC* self, UGCQueryHandle_t handle, uint32 unDays ); +S_API bool SteamAPI_ISteamUGC_SetLanguage( ISteamUGC* self, UGCQueryHandle_t handle, const char * pchLanguage ); +S_API bool SteamAPI_ISteamUGC_SetAllowCachedResponse( ISteamUGC* self, UGCQueryHandle_t handle, uint32 unMaxAgeSeconds ); +S_API bool SteamAPI_ISteamUGC_SetCloudFileNameFilter( ISteamUGC* self, UGCQueryHandle_t handle, const char * pMatchCloudFileName ); +S_API bool SteamAPI_ISteamUGC_SetMatchAnyTag( ISteamUGC* self, UGCQueryHandle_t handle, bool bMatchAnyTag ); +S_API bool SteamAPI_ISteamUGC_SetSearchText( ISteamUGC* self, UGCQueryHandle_t handle, const char * pSearchText ); +S_API bool SteamAPI_ISteamUGC_SetRankedByTrendDays( ISteamUGC* self, UGCQueryHandle_t handle, uint32 unDays ); +S_API bool SteamAPI_ISteamUGC_AddRequiredKeyValueTag( ISteamUGC* self, UGCQueryHandle_t handle, const char * pKey, const char * pValue ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_RequestUGCDetails( ISteamUGC* self, PublishedFileId_t nPublishedFileID, uint32 unMaxAgeSeconds ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_CreateItem( ISteamUGC* self, AppId_t nConsumerAppId, EWorkshopFileType eFileType ); +S_API UGCUpdateHandle_t SteamAPI_ISteamUGC_StartItemUpdate( ISteamUGC* self, AppId_t nConsumerAppId, PublishedFileId_t nPublishedFileID ); +S_API bool SteamAPI_ISteamUGC_SetItemTitle( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchTitle ); +S_API bool SteamAPI_ISteamUGC_SetItemDescription( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchDescription ); +S_API bool SteamAPI_ISteamUGC_SetItemUpdateLanguage( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchLanguage ); +S_API bool SteamAPI_ISteamUGC_SetItemMetadata( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchMetaData ); +S_API bool SteamAPI_ISteamUGC_SetItemVisibility( ISteamUGC* self, UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility ); +S_API bool SteamAPI_ISteamUGC_SetItemTags( ISteamUGC* self, UGCUpdateHandle_t updateHandle, const SteamParamStringArray_t * pTags ); +S_API bool SteamAPI_ISteamUGC_SetItemContent( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pszContentFolder ); +S_API bool SteamAPI_ISteamUGC_SetItemPreview( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pszPreviewFile ); +S_API bool SteamAPI_ISteamUGC_SetAllowLegacyUpload( ISteamUGC* self, UGCUpdateHandle_t handle, bool bAllowLegacyUpload ); +S_API bool SteamAPI_ISteamUGC_RemoveAllItemKeyValueTags( ISteamUGC* self, UGCUpdateHandle_t handle ); +S_API bool SteamAPI_ISteamUGC_RemoveItemKeyValueTags( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchKey ); +S_API bool SteamAPI_ISteamUGC_AddItemKeyValueTag( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchKey, const char * pchValue ); +S_API bool SteamAPI_ISteamUGC_AddItemPreviewFile( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pszPreviewFile, EItemPreviewType type ); +S_API bool SteamAPI_ISteamUGC_AddItemPreviewVideo( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pszVideoID ); +S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewFile( ISteamUGC* self, UGCUpdateHandle_t handle, uint32 index, const char * pszPreviewFile ); +S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewVideo( ISteamUGC* self, UGCUpdateHandle_t handle, uint32 index, const char * pszVideoID ); +S_API bool SteamAPI_ISteamUGC_RemoveItemPreview( ISteamUGC* self, UGCUpdateHandle_t handle, uint32 index ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SubmitItemUpdate( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchChangeNote ); +S_API EItemUpdateStatus SteamAPI_ISteamUGC_GetItemUpdateProgress( ISteamUGC* self, UGCUpdateHandle_t handle, uint64 * punBytesProcessed, uint64 * punBytesTotal ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SetUserItemVote( ISteamUGC* self, PublishedFileId_t nPublishedFileID, bool bVoteUp ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_GetUserItemVote( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_AddItemToFavorites( ISteamUGC* self, AppId_t nAppId, PublishedFileId_t nPublishedFileID ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveItemFromFavorites( ISteamUGC* self, AppId_t nAppId, PublishedFileId_t nPublishedFileID ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_SubscribeItem( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_UnsubscribeItem( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); +S_API uint32 SteamAPI_ISteamUGC_GetNumSubscribedItems( ISteamUGC* self ); +S_API uint32 SteamAPI_ISteamUGC_GetSubscribedItems( ISteamUGC* self, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries ); +S_API uint32 SteamAPI_ISteamUGC_GetItemState( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); +S_API bool SteamAPI_ISteamUGC_GetItemInstallInfo( ISteamUGC* self, PublishedFileId_t nPublishedFileID, uint64 * punSizeOnDisk, char * pchFolder, uint32 cchFolderSize, uint32 * punTimeStamp ); +S_API bool SteamAPI_ISteamUGC_GetItemDownloadInfo( ISteamUGC* self, PublishedFileId_t nPublishedFileID, uint64 * punBytesDownloaded, uint64 * punBytesTotal ); +S_API bool SteamAPI_ISteamUGC_DownloadItem( ISteamUGC* self, PublishedFileId_t nPublishedFileID, bool bHighPriority ); +S_API bool SteamAPI_ISteamUGC_BInitWorkshopForGameServer( ISteamUGC* self, DepotId_t unWorkshopDepotID, const char * pszFolder ); +S_API void SteamAPI_ISteamUGC_SuspendDownloads( ISteamUGC* self, bool bSuspend ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_StartPlaytimeTracking( ISteamUGC* self, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTracking( ISteamUGC* self, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems( ISteamUGC* self ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_AddDependency( ISteamUGC* self, PublishedFileId_t nParentPublishedFileID, PublishedFileId_t nChildPublishedFileID ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveDependency( ISteamUGC* self, PublishedFileId_t nParentPublishedFileID, PublishedFileId_t nChildPublishedFileID ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_AddAppDependency( ISteamUGC* self, PublishedFileId_t nPublishedFileID, AppId_t nAppID ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveAppDependency( ISteamUGC* self, PublishedFileId_t nPublishedFileID, AppId_t nAppID ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_GetAppDependencies( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_DeleteItem( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); + +// ISteamAppList +S_API ISteamAppList *SteamAPI_SteamAppList_v001(); +S_API uint32 SteamAPI_ISteamAppList_GetNumInstalledApps( ISteamAppList* self ); +S_API uint32 SteamAPI_ISteamAppList_GetInstalledApps( ISteamAppList* self, AppId_t * pvecAppID, uint32 unMaxAppIDs ); +S_API int SteamAPI_ISteamAppList_GetAppName( ISteamAppList* self, AppId_t nAppID, char * pchName, int cchNameMax ); +S_API int SteamAPI_ISteamAppList_GetAppInstallDir( ISteamAppList* self, AppId_t nAppID, char * pchDirectory, int cchNameMax ); +S_API int SteamAPI_ISteamAppList_GetAppBuildId( ISteamAppList* self, AppId_t nAppID ); + +// ISteamHTMLSurface +S_API ISteamHTMLSurface *SteamAPI_SteamHTMLSurface_v005(); +S_API bool SteamAPI_ISteamHTMLSurface_Init( ISteamHTMLSurface* self ); +S_API bool SteamAPI_ISteamHTMLSurface_Shutdown( ISteamHTMLSurface* self ); +S_API SteamAPICall_t SteamAPI_ISteamHTMLSurface_CreateBrowser( ISteamHTMLSurface* self, const char * pchUserAgent, const char * pchUserCSS ); +S_API void SteamAPI_ISteamHTMLSurface_RemoveBrowser( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_LoadURL( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, const char * pchURL, const char * pchPostData ); +S_API void SteamAPI_ISteamHTMLSurface_SetSize( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, uint32 unWidth, uint32 unHeight ); +S_API void SteamAPI_ISteamHTMLSurface_StopLoad( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_Reload( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_GoBack( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_GoForward( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_AddHeader( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, const char * pchKey, const char * pchValue ); +S_API void SteamAPI_ISteamHTMLSurface_ExecuteJavascript( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, const char * pchScript ); +S_API void SteamAPI_ISteamHTMLSurface_MouseUp( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton ); +S_API void SteamAPI_ISteamHTMLSurface_MouseDown( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton ); +S_API void SteamAPI_ISteamHTMLSurface_MouseDoubleClick( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, ISteamHTMLSurface::EHTMLMouseButton eMouseButton ); +S_API void SteamAPI_ISteamHTMLSurface_MouseMove( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, int x, int y ); +S_API void SteamAPI_ISteamHTMLSurface_MouseWheel( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, int32 nDelta ); +S_API void SteamAPI_ISteamHTMLSurface_KeyDown( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers, bool bIsSystemKey ); +S_API void SteamAPI_ISteamHTMLSurface_KeyUp( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, uint32 nNativeKeyCode, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers ); +S_API void SteamAPI_ISteamHTMLSurface_KeyChar( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, uint32 cUnicodeChar, ISteamHTMLSurface::EHTMLKeyModifiers eHTMLKeyModifiers ); +S_API void SteamAPI_ISteamHTMLSurface_SetHorizontalScroll( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll ); +S_API void SteamAPI_ISteamHTMLSurface_SetVerticalScroll( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, uint32 nAbsolutePixelScroll ); +S_API void SteamAPI_ISteamHTMLSurface_SetKeyFocus( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, bool bHasKeyFocus ); +S_API void SteamAPI_ISteamHTMLSurface_ViewSource( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_CopyToClipboard( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_PasteFromClipboard( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_Find( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, const char * pchSearchStr, bool bCurrentlyInFind, bool bReverse ); +S_API void SteamAPI_ISteamHTMLSurface_StopFind( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_GetLinkAtPosition( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, int x, int y ); +S_API void SteamAPI_ISteamHTMLSurface_SetCookie( ISteamHTMLSurface* self, const char * pchHostname, const char * pchKey, const char * pchValue, const char * pchPath, RTime32 nExpires, bool bSecure, bool bHTTPOnly ); +S_API void SteamAPI_ISteamHTMLSurface_SetPageScaleFactor( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, float flZoom, int nPointX, int nPointY ); +S_API void SteamAPI_ISteamHTMLSurface_SetBackgroundMode( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, bool bBackgroundMode ); +S_API void SteamAPI_ISteamHTMLSurface_SetDPIScalingFactor( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, float flDPIScaling ); +S_API void SteamAPI_ISteamHTMLSurface_OpenDeveloperTools( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle ); +S_API void SteamAPI_ISteamHTMLSurface_AllowStartRequest( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, bool bAllowed ); +S_API void SteamAPI_ISteamHTMLSurface_JSDialogResponse( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, bool bResult ); +S_API void SteamAPI_ISteamHTMLSurface_FileLoadDialogResponse( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, const char ** pchSelectedFiles ); + +// ISteamInventory +S_API ISteamInventory *SteamAPI_SteamInventory_v003(); +S_API ISteamInventory *SteamAPI_SteamGameServerInventory_v003(); +S_API EResult SteamAPI_ISteamInventory_GetResultStatus( ISteamInventory* self, SteamInventoryResult_t resultHandle ); +S_API bool SteamAPI_ISteamInventory_GetResultItems( ISteamInventory* self, SteamInventoryResult_t resultHandle, SteamItemDetails_t * pOutItemsArray, uint32 * punOutItemsArraySize ); +S_API bool SteamAPI_ISteamInventory_GetResultItemProperty( ISteamInventory* self, SteamInventoryResult_t resultHandle, uint32 unItemIndex, const char * pchPropertyName, char * pchValueBuffer, uint32 * punValueBufferSizeOut ); +S_API uint32 SteamAPI_ISteamInventory_GetResultTimestamp( ISteamInventory* self, SteamInventoryResult_t resultHandle ); +S_API bool SteamAPI_ISteamInventory_CheckResultSteamID( ISteamInventory* self, SteamInventoryResult_t resultHandle, uint64_steamid steamIDExpected ); +S_API void SteamAPI_ISteamInventory_DestroyResult( ISteamInventory* self, SteamInventoryResult_t resultHandle ); +S_API bool SteamAPI_ISteamInventory_GetAllItems( ISteamInventory* self, SteamInventoryResult_t * pResultHandle ); +S_API bool SteamAPI_ISteamInventory_GetItemsByID( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, const SteamItemInstanceID_t * pInstanceIDs, uint32 unCountInstanceIDs ); +S_API bool SteamAPI_ISteamInventory_SerializeResult( ISteamInventory* self, SteamInventoryResult_t resultHandle, void * pOutBuffer, uint32 * punOutBufferSize ); +S_API bool SteamAPI_ISteamInventory_DeserializeResult( ISteamInventory* self, SteamInventoryResult_t * pOutResultHandle, const void * pBuffer, uint32 unBufferSize, bool bRESERVED_MUST_BE_FALSE ); +S_API bool SteamAPI_ISteamInventory_GenerateItems( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayItemDefs, const uint32 * punArrayQuantity, uint32 unArrayLength ); +S_API bool SteamAPI_ISteamInventory_GrantPromoItems( ISteamInventory* self, SteamInventoryResult_t * pResultHandle ); +S_API bool SteamAPI_ISteamInventory_AddPromoItem( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, SteamItemDef_t itemDef ); +S_API bool SteamAPI_ISteamInventory_AddPromoItems( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayItemDefs, uint32 unArrayLength ); +S_API bool SteamAPI_ISteamInventory_ConsumeItem( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity ); +S_API bool SteamAPI_ISteamInventory_ExchangeItems( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, const SteamItemDef_t * pArrayGenerate, const uint32 * punArrayGenerateQuantity, uint32 unArrayGenerateLength, const SteamItemInstanceID_t * pArrayDestroy, const uint32 * punArrayDestroyQuantity, uint32 unArrayDestroyLength ); +S_API bool SteamAPI_ISteamInventory_TransferItemQuantity( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, SteamItemInstanceID_t itemIdSource, uint32 unQuantity, SteamItemInstanceID_t itemIdDest ); +S_API void SteamAPI_ISteamInventory_SendItemDropHeartbeat( ISteamInventory* self ); +S_API bool SteamAPI_ISteamInventory_TriggerItemDrop( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, SteamItemDef_t dropListDefinition ); +S_API bool SteamAPI_ISteamInventory_TradeItems( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, uint64_steamid steamIDTradePartner, const SteamItemInstanceID_t * pArrayGive, const uint32 * pArrayGiveQuantity, uint32 nArrayGiveLength, const SteamItemInstanceID_t * pArrayGet, const uint32 * pArrayGetQuantity, uint32 nArrayGetLength ); +S_API bool SteamAPI_ISteamInventory_LoadItemDefinitions( ISteamInventory* self ); +S_API bool SteamAPI_ISteamInventory_GetItemDefinitionIDs( ISteamInventory* self, SteamItemDef_t * pItemDefIDs, uint32 * punItemDefIDsArraySize ); +S_API bool SteamAPI_ISteamInventory_GetItemDefinitionProperty( ISteamInventory* self, SteamItemDef_t iDefinition, const char * pchPropertyName, char * pchValueBuffer, uint32 * punValueBufferSizeOut ); +S_API SteamAPICall_t SteamAPI_ISteamInventory_RequestEligiblePromoItemDefinitionsIDs( ISteamInventory* self, uint64_steamid steamID ); +S_API bool SteamAPI_ISteamInventory_GetEligiblePromoItemDefinitionIDs( ISteamInventory* self, uint64_steamid steamID, SteamItemDef_t * pItemDefIDs, uint32 * punItemDefIDsArraySize ); +S_API SteamAPICall_t SteamAPI_ISteamInventory_StartPurchase( ISteamInventory* self, const SteamItemDef_t * pArrayItemDefs, const uint32 * punArrayQuantity, uint32 unArrayLength ); +S_API SteamAPICall_t SteamAPI_ISteamInventory_RequestPrices( ISteamInventory* self ); +S_API uint32 SteamAPI_ISteamInventory_GetNumItemsWithPrices( ISteamInventory* self ); +S_API bool SteamAPI_ISteamInventory_GetItemsWithPrices( ISteamInventory* self, SteamItemDef_t * pArrayItemDefs, uint64 * pCurrentPrices, uint64 * pBasePrices, uint32 unArrayLength ); +S_API bool SteamAPI_ISteamInventory_GetItemPrice( ISteamInventory* self, SteamItemDef_t iDefinition, uint64 * pCurrentPrice, uint64 * pBasePrice ); +S_API SteamInventoryUpdateHandle_t SteamAPI_ISteamInventory_StartUpdateProperties( ISteamInventory* self ); +S_API bool SteamAPI_ISteamInventory_RemoveProperty( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName ); +S_API bool SteamAPI_ISteamInventory_SetPropertyString( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName, const char * pchPropertyValue ); +S_API bool SteamAPI_ISteamInventory_SetPropertyBool( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName, bool bValue ); +S_API bool SteamAPI_ISteamInventory_SetPropertyInt64( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName, int64 nValue ); +S_API bool SteamAPI_ISteamInventory_SetPropertyFloat( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamItemInstanceID_t nItemID, const char * pchPropertyName, float flValue ); +S_API bool SteamAPI_ISteamInventory_SubmitUpdateProperties( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamInventoryResult_t * pResultHandle ); +S_API bool SteamAPI_ISteamInventory_InspectItem( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, const char * pchItemToken ); + +// ISteamVideo +S_API ISteamVideo *SteamAPI_SteamVideo_v002(); +S_API void SteamAPI_ISteamVideo_GetVideoURL( ISteamVideo* self, AppId_t unVideoAppID ); +S_API bool SteamAPI_ISteamVideo_IsBroadcasting( ISteamVideo* self, int * pnNumViewers ); +S_API void SteamAPI_ISteamVideo_GetOPFSettings( ISteamVideo* self, AppId_t unVideoAppID ); +S_API bool SteamAPI_ISteamVideo_GetOPFStringForApp( ISteamVideo* self, AppId_t unVideoAppID, char * pchBuffer, int32 * pnBufferSize ); + +// ISteamParentalSettings +S_API ISteamParentalSettings *SteamAPI_SteamParentalSettings_v001(); +S_API bool SteamAPI_ISteamParentalSettings_BIsParentalLockEnabled( ISteamParentalSettings* self ); +S_API bool SteamAPI_ISteamParentalSettings_BIsParentalLockLocked( ISteamParentalSettings* self ); +S_API bool SteamAPI_ISteamParentalSettings_BIsAppBlocked( ISteamParentalSettings* self, AppId_t nAppID ); +S_API bool SteamAPI_ISteamParentalSettings_BIsAppInBlockList( ISteamParentalSettings* self, AppId_t nAppID ); +S_API bool SteamAPI_ISteamParentalSettings_BIsFeatureBlocked( ISteamParentalSettings* self, EParentalFeature eFeature ); +S_API bool SteamAPI_ISteamParentalSettings_BIsFeatureInBlockList( ISteamParentalSettings* self, EParentalFeature eFeature ); + +// ISteamRemotePlay +S_API ISteamRemotePlay *SteamAPI_SteamRemotePlay_v001(); +S_API uint32 SteamAPI_ISteamRemotePlay_GetSessionCount( ISteamRemotePlay* self ); +S_API RemotePlaySessionID_t SteamAPI_ISteamRemotePlay_GetSessionID( ISteamRemotePlay* self, int iSessionIndex ); +S_API uint64_steamid SteamAPI_ISteamRemotePlay_GetSessionSteamID( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID ); +S_API const char * SteamAPI_ISteamRemotePlay_GetSessionClientName( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID ); +S_API ESteamDeviceFormFactor SteamAPI_ISteamRemotePlay_GetSessionClientFormFactor( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID ); +S_API bool SteamAPI_ISteamRemotePlay_BGetSessionClientResolution( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID, int * pnResolutionX, int * pnResolutionY ); +S_API bool SteamAPI_ISteamRemotePlay_BSendRemotePlayTogetherInvite( ISteamRemotePlay* self, uint64_steamid steamIDFriend ); + +// ISteamNetworkingMessages +S_API ISteamNetworkingMessages *SteamAPI_SteamNetworkingMessages_SteamAPI_v002(); +S_API ISteamNetworkingMessages *SteamAPI_SteamGameServerNetworkingMessages_SteamAPI_v002(); +S_API EResult SteamAPI_ISteamNetworkingMessages_SendMessageToUser( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote, const void * pubData, uint32 cubData, int nSendFlags, int nRemoteChannel ); +S_API int SteamAPI_ISteamNetworkingMessages_ReceiveMessagesOnChannel( ISteamNetworkingMessages* self, int nLocalChannel, SteamNetworkingMessage_t ** ppOutMessages, int nMaxMessages ); +S_API bool SteamAPI_ISteamNetworkingMessages_AcceptSessionWithUser( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote ); +S_API bool SteamAPI_ISteamNetworkingMessages_CloseSessionWithUser( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote ); +S_API bool SteamAPI_ISteamNetworkingMessages_CloseChannelWithUser( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote, int nLocalChannel ); +S_API ESteamNetworkingConnectionState SteamAPI_ISteamNetworkingMessages_GetSessionConnectionInfo( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote, SteamNetConnectionInfo_t * pConnectionInfo, SteamNetworkingQuickConnectionStatus * pQuickStatus ); + +// ISteamNetworkingSockets +S_API ISteamNetworkingSockets *SteamAPI_SteamNetworkingSockets_SteamAPI_v009(); +S_API ISteamNetworkingSockets *SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v009(); +S_API HSteamListenSocket SteamAPI_ISteamNetworkingSockets_CreateListenSocketIP( ISteamNetworkingSockets* self, const SteamNetworkingIPAddr & localAddress, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); +S_API HSteamNetConnection SteamAPI_ISteamNetworkingSockets_ConnectByIPAddress( ISteamNetworkingSockets* self, const SteamNetworkingIPAddr & address, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); +S_API HSteamListenSocket SteamAPI_ISteamNetworkingSockets_CreateListenSocketP2P( ISteamNetworkingSockets* self, int nLocalVirtualPort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); +S_API HSteamNetConnection SteamAPI_ISteamNetworkingSockets_ConnectP2P( ISteamNetworkingSockets* self, const SteamNetworkingIdentity & identityRemote, int nRemoteVirtualPort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); +S_API EResult SteamAPI_ISteamNetworkingSockets_AcceptConnection( ISteamNetworkingSockets* self, HSteamNetConnection hConn ); +S_API bool SteamAPI_ISteamNetworkingSockets_CloseConnection( ISteamNetworkingSockets* self, HSteamNetConnection hPeer, int nReason, const char * pszDebug, bool bEnableLinger ); +S_API bool SteamAPI_ISteamNetworkingSockets_CloseListenSocket( ISteamNetworkingSockets* self, HSteamListenSocket hSocket ); +S_API bool SteamAPI_ISteamNetworkingSockets_SetConnectionUserData( ISteamNetworkingSockets* self, HSteamNetConnection hPeer, int64 nUserData ); +S_API int64 SteamAPI_ISteamNetworkingSockets_GetConnectionUserData( ISteamNetworkingSockets* self, HSteamNetConnection hPeer ); +S_API void SteamAPI_ISteamNetworkingSockets_SetConnectionName( ISteamNetworkingSockets* self, HSteamNetConnection hPeer, const char * pszName ); +S_API bool SteamAPI_ISteamNetworkingSockets_GetConnectionName( ISteamNetworkingSockets* self, HSteamNetConnection hPeer, char * pszName, int nMaxLen ); +S_API EResult SteamAPI_ISteamNetworkingSockets_SendMessageToConnection( ISteamNetworkingSockets* self, HSteamNetConnection hConn, const void * pData, uint32 cbData, int nSendFlags, int64 * pOutMessageNumber ); +S_API void SteamAPI_ISteamNetworkingSockets_SendMessages( ISteamNetworkingSockets* self, int nMessages, SteamNetworkingMessage_t *const * pMessages, int64 * pOutMessageNumberOrResult ); +S_API EResult SteamAPI_ISteamNetworkingSockets_FlushMessagesOnConnection( ISteamNetworkingSockets* self, HSteamNetConnection hConn ); +S_API int SteamAPI_ISteamNetworkingSockets_ReceiveMessagesOnConnection( ISteamNetworkingSockets* self, HSteamNetConnection hConn, SteamNetworkingMessage_t ** ppOutMessages, int nMaxMessages ); +S_API bool SteamAPI_ISteamNetworkingSockets_GetConnectionInfo( ISteamNetworkingSockets* self, HSteamNetConnection hConn, SteamNetConnectionInfo_t * pInfo ); +S_API bool SteamAPI_ISteamNetworkingSockets_GetQuickConnectionStatus( ISteamNetworkingSockets* self, HSteamNetConnection hConn, SteamNetworkingQuickConnectionStatus * pStats ); +S_API int SteamAPI_ISteamNetworkingSockets_GetDetailedConnectionStatus( ISteamNetworkingSockets* self, HSteamNetConnection hConn, char * pszBuf, int cbBuf ); +S_API bool SteamAPI_ISteamNetworkingSockets_GetListenSocketAddress( ISteamNetworkingSockets* self, HSteamListenSocket hSocket, SteamNetworkingIPAddr * address ); +S_API bool SteamAPI_ISteamNetworkingSockets_CreateSocketPair( ISteamNetworkingSockets* self, HSteamNetConnection * pOutConnection1, HSteamNetConnection * pOutConnection2, bool bUseNetworkLoopback, const SteamNetworkingIdentity * pIdentity1, const SteamNetworkingIdentity * pIdentity2 ); +S_API bool SteamAPI_ISteamNetworkingSockets_GetIdentity( ISteamNetworkingSockets* self, SteamNetworkingIdentity * pIdentity ); +S_API ESteamNetworkingAvailability SteamAPI_ISteamNetworkingSockets_InitAuthentication( ISteamNetworkingSockets* self ); +S_API ESteamNetworkingAvailability SteamAPI_ISteamNetworkingSockets_GetAuthenticationStatus( ISteamNetworkingSockets* self, SteamNetAuthenticationStatus_t * pDetails ); +S_API HSteamNetPollGroup SteamAPI_ISteamNetworkingSockets_CreatePollGroup( ISteamNetworkingSockets* self ); +S_API bool SteamAPI_ISteamNetworkingSockets_DestroyPollGroup( ISteamNetworkingSockets* self, HSteamNetPollGroup hPollGroup ); +S_API bool SteamAPI_ISteamNetworkingSockets_SetConnectionPollGroup( ISteamNetworkingSockets* self, HSteamNetConnection hConn, HSteamNetPollGroup hPollGroup ); +S_API int SteamAPI_ISteamNetworkingSockets_ReceiveMessagesOnPollGroup( ISteamNetworkingSockets* self, HSteamNetPollGroup hPollGroup, SteamNetworkingMessage_t ** ppOutMessages, int nMaxMessages ); +S_API bool SteamAPI_ISteamNetworkingSockets_ReceivedRelayAuthTicket( ISteamNetworkingSockets* self, const void * pvTicket, int cbTicket, SteamDatagramRelayAuthTicket * pOutParsedTicket ); +S_API int SteamAPI_ISteamNetworkingSockets_FindRelayAuthTicketForServer( ISteamNetworkingSockets* self, const SteamNetworkingIdentity & identityGameServer, int nRemoteVirtualPort, SteamDatagramRelayAuthTicket * pOutParsedTicket ); +S_API HSteamNetConnection SteamAPI_ISteamNetworkingSockets_ConnectToHostedDedicatedServer( ISteamNetworkingSockets* self, const SteamNetworkingIdentity & identityTarget, int nRemoteVirtualPort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); +S_API uint16 SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerPort( ISteamNetworkingSockets* self ); +S_API SteamNetworkingPOPID SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerPOPID( ISteamNetworkingSockets* self ); +S_API EResult SteamAPI_ISteamNetworkingSockets_GetHostedDedicatedServerAddress( ISteamNetworkingSockets* self, SteamDatagramHostedAddress * pRouting ); +S_API HSteamListenSocket SteamAPI_ISteamNetworkingSockets_CreateHostedDedicatedServerListenSocket( ISteamNetworkingSockets* self, int nLocalVirtualPort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); +S_API EResult SteamAPI_ISteamNetworkingSockets_GetGameCoordinatorServerLogin( ISteamNetworkingSockets* self, SteamDatagramGameCoordinatorServerLogin * pLoginInfo, int * pcbSignedBlob, void * pBlob ); +S_API HSteamNetConnection SteamAPI_ISteamNetworkingSockets_ConnectP2PCustomSignaling( ISteamNetworkingSockets* self, ISteamNetworkingConnectionSignaling * pSignaling, const SteamNetworkingIdentity * pPeerIdentity, int nRemoteVirtualPort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); +S_API bool SteamAPI_ISteamNetworkingSockets_ReceivedP2PCustomSignal( ISteamNetworkingSockets* self, const void * pMsg, int cbMsg, ISteamNetworkingSignalingRecvContext * pContext ); +S_API bool SteamAPI_ISteamNetworkingSockets_GetCertificateRequest( ISteamNetworkingSockets* self, int * pcbBlob, void * pBlob, SteamNetworkingErrMsg & errMsg ); +S_API bool SteamAPI_ISteamNetworkingSockets_SetCertificate( ISteamNetworkingSockets* self, const void * pCertificate, int cbCertificate, SteamNetworkingErrMsg & errMsg ); +S_API void SteamAPI_ISteamNetworkingSockets_RunCallbacks( ISteamNetworkingSockets* self ); + +// ISteamNetworkingUtils +S_API ISteamNetworkingUtils *SteamAPI_SteamNetworkingUtils_SteamAPI_v003(); +S_API SteamNetworkingMessage_t * SteamAPI_ISteamNetworkingUtils_AllocateMessage( ISteamNetworkingUtils* self, int cbAllocateBuffer ); +S_API void SteamAPI_ISteamNetworkingUtils_InitRelayNetworkAccess( ISteamNetworkingUtils* self ); +S_API ESteamNetworkingAvailability SteamAPI_ISteamNetworkingUtils_GetRelayNetworkStatus( ISteamNetworkingUtils* self, SteamRelayNetworkStatus_t * pDetails ); +S_API float SteamAPI_ISteamNetworkingUtils_GetLocalPingLocation( ISteamNetworkingUtils* self, SteamNetworkPingLocation_t & result ); +S_API int SteamAPI_ISteamNetworkingUtils_EstimatePingTimeBetweenTwoLocations( ISteamNetworkingUtils* self, const SteamNetworkPingLocation_t & location1, const SteamNetworkPingLocation_t & location2 ); +S_API int SteamAPI_ISteamNetworkingUtils_EstimatePingTimeFromLocalHost( ISteamNetworkingUtils* self, const SteamNetworkPingLocation_t & remoteLocation ); +S_API void SteamAPI_ISteamNetworkingUtils_ConvertPingLocationToString( ISteamNetworkingUtils* self, const SteamNetworkPingLocation_t & location, char * pszBuf, int cchBufSize ); +S_API bool SteamAPI_ISteamNetworkingUtils_ParsePingLocationString( ISteamNetworkingUtils* self, const char * pszString, SteamNetworkPingLocation_t & result ); +S_API bool SteamAPI_ISteamNetworkingUtils_CheckPingDataUpToDate( ISteamNetworkingUtils* self, float flMaxAgeSeconds ); +S_API int SteamAPI_ISteamNetworkingUtils_GetPingToDataCenter( ISteamNetworkingUtils* self, SteamNetworkingPOPID popID, SteamNetworkingPOPID * pViaRelayPoP ); +S_API int SteamAPI_ISteamNetworkingUtils_GetDirectPingToPOP( ISteamNetworkingUtils* self, SteamNetworkingPOPID popID ); +S_API int SteamAPI_ISteamNetworkingUtils_GetPOPCount( ISteamNetworkingUtils* self ); +S_API int SteamAPI_ISteamNetworkingUtils_GetPOPList( ISteamNetworkingUtils* self, SteamNetworkingPOPID * list, int nListSz ); +S_API SteamNetworkingMicroseconds SteamAPI_ISteamNetworkingUtils_GetLocalTimestamp( ISteamNetworkingUtils* self ); +S_API void SteamAPI_ISteamNetworkingUtils_SetDebugOutputFunction( ISteamNetworkingUtils* self, ESteamNetworkingSocketsDebugOutputType eDetailLevel, FSteamNetworkingSocketsDebugOutput pfnFunc ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueInt32( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, int32 val ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueFloat( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, float val ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueString( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, const char * val ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValuePtr( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, void * val ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueInt32( ISteamNetworkingUtils* self, HSteamNetConnection hConn, ESteamNetworkingConfigValue eValue, int32 val ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueFloat( ISteamNetworkingUtils* self, HSteamNetConnection hConn, ESteamNetworkingConfigValue eValue, float val ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueString( ISteamNetworkingUtils* self, HSteamNetConnection hConn, ESteamNetworkingConfigValue eValue, const char * val ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamNetConnectionStatusChanged( ISteamNetworkingUtils* self, FnSteamNetConnectionStatusChanged fnCallback ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamNetAuthenticationStatusChanged( ISteamNetworkingUtils* self, FnSteamNetAuthenticationStatusChanged fnCallback ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamRelayNetworkStatusChanged( ISteamNetworkingUtils* self, FnSteamRelayNetworkStatusChanged fnCallback ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_MessagesSessionRequest( ISteamNetworkingUtils* self, FnSteamNetworkingMessagesSessionRequest fnCallback ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_MessagesSessionFailed( ISteamNetworkingUtils* self, FnSteamNetworkingMessagesSessionFailed fnCallback ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetConfigValue( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj, ESteamNetworkingConfigDataType eDataType, const void * pArg ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetConfigValueStruct( ISteamNetworkingUtils* self, const SteamNetworkingConfigValue_t & opt, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj ); +S_API ESteamNetworkingGetConfigValueResult SteamAPI_ISteamNetworkingUtils_GetConfigValue( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj, ESteamNetworkingConfigDataType * pOutDataType, void * pResult, size_t * cbResult ); +S_API bool SteamAPI_ISteamNetworkingUtils_GetConfigValueInfo( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, const char ** pOutName, ESteamNetworkingConfigDataType * pOutDataType, ESteamNetworkingConfigScope * pOutScope, ESteamNetworkingConfigValue * pOutNextValue ); +S_API ESteamNetworkingConfigValue SteamAPI_ISteamNetworkingUtils_GetFirstConfigValue( ISteamNetworkingUtils* self ); +S_API void SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ToString( ISteamNetworkingUtils* self, const SteamNetworkingIPAddr & addr, char * buf, uint32 cbBuf, bool bWithPort ); +S_API bool SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ParseString( ISteamNetworkingUtils* self, SteamNetworkingIPAddr * pAddr, const char * pszStr ); +S_API void SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ToString( ISteamNetworkingUtils* self, const SteamNetworkingIdentity & identity, char * buf, uint32 cbBuf ); +S_API bool SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ParseString( ISteamNetworkingUtils* self, SteamNetworkingIdentity * pIdentity, const char * pszStr ); + +// ISteamGameServer +S_API ISteamGameServer *SteamAPI_SteamGameServer_v013(); +S_API void SteamAPI_ISteamGameServer_SetProduct( ISteamGameServer* self, const char * pszProduct ); +S_API void SteamAPI_ISteamGameServer_SetGameDescription( ISteamGameServer* self, const char * pszGameDescription ); +S_API void SteamAPI_ISteamGameServer_SetModDir( ISteamGameServer* self, const char * pszModDir ); +S_API void SteamAPI_ISteamGameServer_SetDedicatedServer( ISteamGameServer* self, bool bDedicated ); +S_API void SteamAPI_ISteamGameServer_LogOn( ISteamGameServer* self, const char * pszToken ); +S_API void SteamAPI_ISteamGameServer_LogOnAnonymous( ISteamGameServer* self ); +S_API void SteamAPI_ISteamGameServer_LogOff( ISteamGameServer* self ); +S_API bool SteamAPI_ISteamGameServer_BLoggedOn( ISteamGameServer* self ); +S_API bool SteamAPI_ISteamGameServer_BSecure( ISteamGameServer* self ); +S_API uint64_steamid SteamAPI_ISteamGameServer_GetSteamID( ISteamGameServer* self ); +S_API bool SteamAPI_ISteamGameServer_WasRestartRequested( ISteamGameServer* self ); +S_API void SteamAPI_ISteamGameServer_SetMaxPlayerCount( ISteamGameServer* self, int cPlayersMax ); +S_API void SteamAPI_ISteamGameServer_SetBotPlayerCount( ISteamGameServer* self, int cBotplayers ); +S_API void SteamAPI_ISteamGameServer_SetServerName( ISteamGameServer* self, const char * pszServerName ); +S_API void SteamAPI_ISteamGameServer_SetMapName( ISteamGameServer* self, const char * pszMapName ); +S_API void SteamAPI_ISteamGameServer_SetPasswordProtected( ISteamGameServer* self, bool bPasswordProtected ); +S_API void SteamAPI_ISteamGameServer_SetSpectatorPort( ISteamGameServer* self, uint16 unSpectatorPort ); +S_API void SteamAPI_ISteamGameServer_SetSpectatorServerName( ISteamGameServer* self, const char * pszSpectatorServerName ); +S_API void SteamAPI_ISteamGameServer_ClearAllKeyValues( ISteamGameServer* self ); +S_API void SteamAPI_ISteamGameServer_SetKeyValue( ISteamGameServer* self, const char * pKey, const char * pValue ); +S_API void SteamAPI_ISteamGameServer_SetGameTags( ISteamGameServer* self, const char * pchGameTags ); +S_API void SteamAPI_ISteamGameServer_SetGameData( ISteamGameServer* self, const char * pchGameData ); +S_API void SteamAPI_ISteamGameServer_SetRegion( ISteamGameServer* self, const char * pszRegion ); +S_API bool SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate( ISteamGameServer* self, uint32 unIPClient, const void * pvAuthBlob, uint32 cubAuthBlobSize, CSteamID * pSteamIDUser ); +S_API uint64_steamid SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection( ISteamGameServer* self ); +S_API void SteamAPI_ISteamGameServer_SendUserDisconnect( ISteamGameServer* self, uint64_steamid steamIDUser ); +S_API bool SteamAPI_ISteamGameServer_BUpdateUserData( ISteamGameServer* self, uint64_steamid steamIDUser, const char * pchPlayerName, uint32 uScore ); +S_API HAuthTicket SteamAPI_ISteamGameServer_GetAuthSessionTicket( ISteamGameServer* self, void * pTicket, int cbMaxTicket, uint32 * pcbTicket ); +S_API EBeginAuthSessionResult SteamAPI_ISteamGameServer_BeginAuthSession( ISteamGameServer* self, const void * pAuthTicket, int cbAuthTicket, uint64_steamid steamID ); +S_API void SteamAPI_ISteamGameServer_EndAuthSession( ISteamGameServer* self, uint64_steamid steamID ); +S_API void SteamAPI_ISteamGameServer_CancelAuthTicket( ISteamGameServer* self, HAuthTicket hAuthTicket ); +S_API EUserHasLicenseForAppResult SteamAPI_ISteamGameServer_UserHasLicenseForApp( ISteamGameServer* self, uint64_steamid steamID, AppId_t appID ); +S_API bool SteamAPI_ISteamGameServer_RequestUserGroupStatus( ISteamGameServer* self, uint64_steamid steamIDUser, uint64_steamid steamIDGroup ); +S_API void SteamAPI_ISteamGameServer_GetGameplayStats( ISteamGameServer* self ); +S_API SteamAPICall_t SteamAPI_ISteamGameServer_GetServerReputation( ISteamGameServer* self ); +S_API SteamIPAddress_t SteamAPI_ISteamGameServer_GetPublicIP( ISteamGameServer* self ); +S_API bool SteamAPI_ISteamGameServer_HandleIncomingPacket( ISteamGameServer* self, const void * pData, int cbData, uint32 srcIP, uint16 srcPort ); +S_API int SteamAPI_ISteamGameServer_GetNextOutgoingPacket( ISteamGameServer* self, void * pOut, int cbMaxOut, uint32 * pNetAdr, uint16 * pPort ); +S_API void SteamAPI_ISteamGameServer_EnableHeartbeats( ISteamGameServer* self, bool bActive ); +S_API void SteamAPI_ISteamGameServer_SetHeartbeatInterval( ISteamGameServer* self, int iHeartbeatInterval ); +S_API void SteamAPI_ISteamGameServer_ForceHeartbeat( ISteamGameServer* self ); +S_API SteamAPICall_t SteamAPI_ISteamGameServer_AssociateWithClan( ISteamGameServer* self, uint64_steamid steamIDClan ); +S_API SteamAPICall_t SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility( ISteamGameServer* self, uint64_steamid steamIDNewPlayer ); + +// ISteamGameServerStats +S_API ISteamGameServerStats *SteamAPI_SteamGameServerStats_v001(); +S_API SteamAPICall_t SteamAPI_ISteamGameServerStats_RequestUserStats( ISteamGameServerStats* self, uint64_steamid steamIDUser ); +S_API bool SteamAPI_ISteamGameServerStats_GetUserStatInt32( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, int32 * pData ); +S_API bool SteamAPI_ISteamGameServerStats_GetUserStatFloat( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, float * pData ); +S_API bool SteamAPI_ISteamGameServerStats_GetUserAchievement( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, bool * pbAchieved ); +S_API bool SteamAPI_ISteamGameServerStats_SetUserStatInt32( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, int32 nData ); +S_API bool SteamAPI_ISteamGameServerStats_SetUserStatFloat( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, float fData ); +S_API bool SteamAPI_ISteamGameServerStats_UpdateUserAvgRateStat( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, float flCountThisSession, double dSessionLength ); +S_API bool SteamAPI_ISteamGameServerStats_SetUserAchievement( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName ); +S_API bool SteamAPI_ISteamGameServerStats_ClearUserAchievement( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName ); +S_API SteamAPICall_t SteamAPI_ISteamGameServerStats_StoreUserStats( ISteamGameServerStats* self, uint64_steamid steamIDUser ); + +// SteamIPAddress_t +S_API bool SteamAPI_SteamIPAddress_t_IsSet( SteamIPAddress_t* self ); + +// MatchMakingKeyValuePair_t +S_API void SteamAPI_MatchMakingKeyValuePair_t_Construct( MatchMakingKeyValuePair_t* self ); + +// servernetadr_t +S_API void SteamAPI_servernetadr_t_Construct( servernetadr_t* self ); +S_API void SteamAPI_servernetadr_t_Init( servernetadr_t* self, unsigned int ip, uint16 usQueryPort, uint16 usConnectionPort ); +S_API uint16 SteamAPI_servernetadr_t_GetQueryPort( servernetadr_t* self ); +S_API void SteamAPI_servernetadr_t_SetQueryPort( servernetadr_t* self, uint16 usPort ); +S_API uint16 SteamAPI_servernetadr_t_GetConnectionPort( servernetadr_t* self ); +S_API void SteamAPI_servernetadr_t_SetConnectionPort( servernetadr_t* self, uint16 usPort ); +S_API uint32 SteamAPI_servernetadr_t_GetIP( servernetadr_t* self ); +S_API void SteamAPI_servernetadr_t_SetIP( servernetadr_t* self, uint32 unIP ); +S_API const char * SteamAPI_servernetadr_t_GetConnectionAddressString( servernetadr_t* self ); +S_API const char * SteamAPI_servernetadr_t_GetQueryAddressString( servernetadr_t* self ); +S_API bool SteamAPI_servernetadr_t_IsLessThan( servernetadr_t* self, const servernetadr_t & netadr ); +S_API void SteamAPI_servernetadr_t_Assign( servernetadr_t* self, const servernetadr_t & that ); + +// gameserveritem_t +S_API void SteamAPI_gameserveritem_t_Construct( gameserveritem_t* self ); +S_API const char * SteamAPI_gameserveritem_t_GetName( gameserveritem_t* self ); +S_API void SteamAPI_gameserveritem_t_SetName( gameserveritem_t* self, const char * pName ); + +// SteamNetworkingIPAddr +S_API void SteamAPI_SteamNetworkingIPAddr_Clear( SteamNetworkingIPAddr* self ); +S_API bool SteamAPI_SteamNetworkingIPAddr_IsIPv6AllZeros( SteamNetworkingIPAddr* self ); +S_API void SteamAPI_SteamNetworkingIPAddr_SetIPv6( SteamNetworkingIPAddr* self, const uint8 * ipv6, uint16 nPort ); +S_API void SteamAPI_SteamNetworkingIPAddr_SetIPv4( SteamNetworkingIPAddr* self, uint32 nIP, uint16 nPort ); +S_API bool SteamAPI_SteamNetworkingIPAddr_IsIPv4( SteamNetworkingIPAddr* self ); +S_API uint32 SteamAPI_SteamNetworkingIPAddr_GetIPv4( SteamNetworkingIPAddr* self ); +S_API void SteamAPI_SteamNetworkingIPAddr_SetIPv6LocalHost( SteamNetworkingIPAddr* self, uint16 nPort ); +S_API bool SteamAPI_SteamNetworkingIPAddr_IsLocalHost( SteamNetworkingIPAddr* self ); +S_API void SteamAPI_SteamNetworkingIPAddr_ToString( SteamNetworkingIPAddr* self, char * buf, uint32 cbBuf, bool bWithPort ); +S_API bool SteamAPI_SteamNetworkingIPAddr_ParseString( SteamNetworkingIPAddr* self, const char * pszStr ); +S_API bool SteamAPI_SteamNetworkingIPAddr_IsEqualTo( SteamNetworkingIPAddr* self, const SteamNetworkingIPAddr & x ); + +// SteamNetworkingIdentity +S_API void SteamAPI_SteamNetworkingIdentity_Clear( SteamNetworkingIdentity* self ); +S_API bool SteamAPI_SteamNetworkingIdentity_IsInvalid( SteamNetworkingIdentity* self ); +S_API void SteamAPI_SteamNetworkingIdentity_SetSteamID( SteamNetworkingIdentity* self, uint64_steamid steamID ); +S_API uint64_steamid SteamAPI_SteamNetworkingIdentity_GetSteamID( SteamNetworkingIdentity* self ); +S_API void SteamAPI_SteamNetworkingIdentity_SetSteamID64( SteamNetworkingIdentity* self, uint64 steamID ); +S_API uint64 SteamAPI_SteamNetworkingIdentity_GetSteamID64( SteamNetworkingIdentity* self ); +S_API bool SteamAPI_SteamNetworkingIdentity_SetXboxPairwiseID( SteamNetworkingIdentity* self, const char * pszString ); +S_API const char * SteamAPI_SteamNetworkingIdentity_GetXboxPairwiseID( SteamNetworkingIdentity* self ); +S_API void SteamAPI_SteamNetworkingIdentity_SetPSNID( SteamNetworkingIdentity* self, uint64 id ); +S_API uint64 SteamAPI_SteamNetworkingIdentity_GetPSNID( SteamNetworkingIdentity* self ); +S_API void SteamAPI_SteamNetworkingIdentity_SetStadiaID( SteamNetworkingIdentity* self, uint64 id ); +S_API uint64 SteamAPI_SteamNetworkingIdentity_GetStadiaID( SteamNetworkingIdentity* self ); +S_API void SteamAPI_SteamNetworkingIdentity_SetIPAddr( SteamNetworkingIdentity* self, const SteamNetworkingIPAddr & addr ); +S_API const SteamNetworkingIPAddr * SteamAPI_SteamNetworkingIdentity_GetIPAddr( SteamNetworkingIdentity* self ); +S_API void SteamAPI_SteamNetworkingIdentity_SetLocalHost( SteamNetworkingIdentity* self ); +S_API bool SteamAPI_SteamNetworkingIdentity_IsLocalHost( SteamNetworkingIdentity* self ); +S_API bool SteamAPI_SteamNetworkingIdentity_SetGenericString( SteamNetworkingIdentity* self, const char * pszString ); +S_API const char * SteamAPI_SteamNetworkingIdentity_GetGenericString( SteamNetworkingIdentity* self ); +S_API bool SteamAPI_SteamNetworkingIdentity_SetGenericBytes( SteamNetworkingIdentity* self, const void * data, uint32 cbLen ); +S_API const uint8 * SteamAPI_SteamNetworkingIdentity_GetGenericBytes( SteamNetworkingIdentity* self, int & cbLen ); +S_API bool SteamAPI_SteamNetworkingIdentity_IsEqualTo( SteamNetworkingIdentity* self, const SteamNetworkingIdentity & x ); +S_API void SteamAPI_SteamNetworkingIdentity_ToString( SteamNetworkingIdentity* self, char * buf, uint32 cbBuf ); +S_API bool SteamAPI_SteamNetworkingIdentity_ParseString( SteamNetworkingIdentity* self, const char * pszStr ); + +// SteamNetworkingMessage_t +S_API void SteamAPI_SteamNetworkingMessage_t_Release( SteamNetworkingMessage_t* self ); + +// SteamNetworkingConfigValue_t +S_API void SteamAPI_SteamNetworkingConfigValue_t_SetInt32( SteamNetworkingConfigValue_t* self, ESteamNetworkingConfigValue eVal, int32_t data ); +S_API void SteamAPI_SteamNetworkingConfigValue_t_SetInt64( SteamNetworkingConfigValue_t* self, ESteamNetworkingConfigValue eVal, int64_t data ); +S_API void SteamAPI_SteamNetworkingConfigValue_t_SetFloat( SteamNetworkingConfigValue_t* self, ESteamNetworkingConfigValue eVal, float data ); +S_API void SteamAPI_SteamNetworkingConfigValue_t_SetPtr( SteamNetworkingConfigValue_t* self, ESteamNetworkingConfigValue eVal, void * data ); +S_API void SteamAPI_SteamNetworkingConfigValue_t_SetString( SteamNetworkingConfigValue_t* self, ESteamNetworkingConfigValue eVal, const char * data ); + +// SteamNetworkingPOPIDRender +S_API const char * SteamAPI_SteamNetworkingPOPIDRender_c_str( SteamNetworkingPOPIDRender* self ); + +// SteamNetworkingIdentityRender +S_API const char * SteamAPI_SteamNetworkingIdentityRender_c_str( SteamNetworkingIdentityRender* self ); + +// SteamNetworkingIPAddrRender +S_API const char * SteamAPI_SteamNetworkingIPAddrRender_c_str( SteamNetworkingIPAddrRender* self ); + +// SteamDatagramHostedAddress +S_API void SteamAPI_SteamDatagramHostedAddress_Clear( SteamDatagramHostedAddress* self ); +S_API SteamNetworkingPOPID SteamAPI_SteamDatagramHostedAddress_GetPopID( SteamDatagramHostedAddress* self ); +S_API void SteamAPI_SteamDatagramHostedAddress_SetDevAddress( SteamDatagramHostedAddress* self, uint32 nIP, uint16 nPort, SteamNetworkingPOPID popid ); +#endif // STEAMAPIFLAT_H diff --git a/CodeGen/steam/steam_api_internal.h b/CodeGen/steam/steam_api_internal.h index 258ba186..16657ac6 100644 --- a/CodeGen/steam/steam_api_internal.h +++ b/CodeGen/steam/steam_api_internal.h @@ -1,408 +1,408 @@ -//====== Copyright Valve Corporation, All rights reserved. ==================== -// -// Internal implementation details of the steamworks SDK. -// -// You should be able to figure out how to use the SDK by reading -// steam_api_common.h, and should not need to understand anything in here. -// -//----------------------------------------------------------------------------- - -#ifdef STEAM_CALLBACK_BEGIN -#error "This file should only be included from steam_api_common.h" -#endif - -#include - -// Internal functions used to locate/create interfaces -S_API HSteamPipe S_CALLTYPE SteamAPI_GetHSteamPipe(); -S_API HSteamUser S_CALLTYPE SteamAPI_GetHSteamUser(); -S_API HSteamPipe S_CALLTYPE SteamGameServer_GetHSteamPipe(); -S_API HSteamUser S_CALLTYPE SteamGameServer_GetHSteamUser(); -S_API void *S_CALLTYPE SteamInternal_ContextInit( void *pContextInitData ); -S_API void *S_CALLTYPE SteamInternal_CreateInterface( const char *ver ); -S_API void *S_CALLTYPE SteamInternal_FindOrCreateUserInterface( HSteamUser hSteamUser, const char *pszVersion ); -S_API void *S_CALLTYPE SteamInternal_FindOrCreateGameServerInterface( HSteamUser hSteamUser, const char *pszVersion ); - -// Macro used to define a type-safe accessor that will always return the version -// of the interface of the *header file* you are compiling with! We also bounce -// through a safety function that checks for interfaces being created or destroyed. -// -// SteamInternal_ContextInit takes a base pointer for the equivalent of -// struct { void (*pFn)(void* pCtx); uintptr_t counter; void *ptr; } -// Do not change layout or add non-pointer aligned data! -#define STEAM_DEFINE_INTERFACE_ACCESSOR( type, name, expr, kind, version ) \ - inline void S_CALLTYPE SteamInternal_Init_ ## name( type *p ) { *p = (type)( expr ); } \ - STEAM_CLANG_ATTR( "interface_accessor_kind:" kind ";interface_accessor_version:" version ";" ) \ - inline type name() { \ - static void* s_CallbackCounterAndContext[ 3 ] = { (void*)&SteamInternal_Init_ ## name, 0, 0 }; \ - return *(type*)SteamInternal_ContextInit( s_CallbackCounterAndContext ); \ - } - -#define STEAM_DEFINE_USER_INTERFACE_ACCESSOR( type, name, version ) \ - STEAM_DEFINE_INTERFACE_ACCESSOR( type, name, SteamInternal_FindOrCreateUserInterface( SteamAPI_GetHSteamUser(), version ), "user", version ) -#define STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( type, name, version ) \ - STEAM_DEFINE_INTERFACE_ACCESSOR( type, name, SteamInternal_FindOrCreateGameServerInterface( SteamGameServer_GetHSteamUser(), version ), "gameserver", version ) - -// -// Internal stuff used for the standard, higher-level callback mechanism -// - -// Internal functions used by the utility CCallback objects to receive callbacks -S_API void S_CALLTYPE SteamAPI_RegisterCallback( class CCallbackBase *pCallback, int iCallback ); -S_API void S_CALLTYPE SteamAPI_UnregisterCallback( class CCallbackBase *pCallback ); -// Internal functions used by the utility CCallResult objects to receive async call results -S_API void S_CALLTYPE SteamAPI_RegisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); -S_API void S_CALLTYPE SteamAPI_UnregisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); - -// disable this warning; this pattern need for steam callback registration -#ifdef _MSVC_VER -#pragma warning( push ) -#pragma warning( disable: 4355 ) // 'this' : used in base member initializer list -#endif - -#define _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) -#define _STEAM_CALLBACK_HELPER( _1, _2, SELECTED, ... ) _STEAM_CALLBACK_##SELECTED -#define _STEAM_CALLBACK_SELECT( X, Y ) _STEAM_CALLBACK_HELPER X Y -#define _STEAM_CALLBACK_3( extra_code, thisclass, func, param ) \ - struct CCallbackInternal_ ## func : private CCallbackImpl< sizeof( param ) > { \ - CCallbackInternal_ ## func () { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } \ - CCallbackInternal_ ## func ( const CCallbackInternal_ ## func & ) { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } \ - CCallbackInternal_ ## func & operator=( const CCallbackInternal_ ## func & ) { return *this; } \ - private: virtual void Run( void *pvParam ) { _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) \ - thisclass *pOuter = reinterpret_cast( reinterpret_cast(this) - offsetof( thisclass, m_steamcallback_ ## func ) ); \ - pOuter->func( reinterpret_cast( pvParam ) ); \ - } \ - } m_steamcallback_ ## func ; void func( param *pParam ) -#define _STEAM_CALLBACK_4( _, thisclass, func, param, var ) \ - CCallback< thisclass, param > var; void func( param *pParam ) -#define _STEAM_CALLBACK_GS( _, thisclass, func, param, var ) \ - CCallback< thisclass, param, true > var; void func( param *pParam ) - -#ifndef API_GEN - -template< class T, class P > -inline CCallResult::CCallResult() -{ - m_hAPICall = k_uAPICallInvalid; - m_pObj = nullptr; - m_Func = nullptr; - m_iCallback = P::k_iCallback; -} - -template< class T, class P > -inline void CCallResult::Set( SteamAPICall_t hAPICall, T *p, func_t func ) -{ - if ( m_hAPICall ) - SteamAPI_UnregisterCallResult( this, m_hAPICall ); - - m_hAPICall = hAPICall; - m_pObj = p; - m_Func = func; - - if ( hAPICall ) - SteamAPI_RegisterCallResult( this, hAPICall ); -} - -template< class T, class P > -inline bool CCallResult::IsActive() const -{ - return (m_hAPICall != k_uAPICallInvalid); -} - -template< class T, class P > -inline void CCallResult::Cancel() -{ - if ( m_hAPICall != k_uAPICallInvalid ) - { - SteamAPI_UnregisterCallResult( this, m_hAPICall ); - m_hAPICall = k_uAPICallInvalid; - } -} - -template< class T, class P > -inline CCallResult::~CCallResult() -{ - Cancel(); -} - -template< class T, class P > -inline void CCallResult::Run( void *pvParam ) -{ - m_hAPICall = k_uAPICallInvalid; // caller unregisters for us - (m_pObj->*m_Func)((P *)pvParam, false); -} - -template< class T, class P > -inline void CCallResult::Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ) -{ - if ( hSteamAPICall == m_hAPICall ) - { - m_hAPICall = k_uAPICallInvalid; // caller unregisters for us - (m_pObj->*m_Func)((P *)pvParam, bIOFailure); - } -} - -template< class T, class P, bool bGameserver > -inline CCallback< T, P, bGameserver >::CCallback( T *pObj, func_t func ) - : m_pObj( nullptr ), m_Func( nullptr ) -{ - if ( bGameserver ) - { - this->SetGameserverFlag(); - } - Register( pObj, func ); -} - -template< class T, class P, bool bGameserver > -inline void CCallback< T, P, bGameserver >::Register( T *pObj, func_t func ) -{ - if ( !pObj || !func ) - return; - - if ( this->m_nCallbackFlags & CCallbackBase::k_ECallbackFlagsRegistered ) - Unregister(); - - m_pObj = pObj; - m_Func = func; - // SteamAPI_RegisterCallback sets k_ECallbackFlagsRegistered - SteamAPI_RegisterCallback( this, P::k_iCallback ); -} - -template< class T, class P, bool bGameserver > -inline void CCallback< T, P, bGameserver >::Unregister() -{ - // SteamAPI_UnregisterCallback removes k_ECallbackFlagsRegistered - SteamAPI_UnregisterCallback( this ); -} - -template< class T, class P, bool bGameserver > -inline void CCallback< T, P, bGameserver >::Run( void *pvParam ) -{ - (m_pObj->*m_Func)((P *)pvParam); -} - -#endif // #ifndef API_GEN - -// structure that contains client callback data -// see callbacks documentation for more details -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - -/// Internal structure used in manual callback dispatch -struct CallbackMsg_t -{ - HSteamUser m_hSteamUser; // Specific user to whom this callback applies. - int m_iCallback; // Callback identifier. (Corresponds to the k_iCallback enum in the callback structure.) - uint8 *m_pubParam; // Points to the callback structure - int m_cubParam; // Size of the data pointed to by m_pubParam -}; -#pragma pack( pop ) - -// Macros to define steam callback structures. Used internally for debugging -#ifdef STEAM_CALLBACK_INSPECTION_ENABLED - #include "../../clientdll/steam_api_callback_inspection.h" -#else - #define STEAM_CALLBACK_BEGIN( callbackname, callbackid ) struct callbackname { enum { k_iCallback = callbackid }; - #define STEAM_CALLBACK_MEMBER( varidx, vartype, varname ) vartype varname ; - #define STEAM_CALLBACK_MEMBER_ARRAY( varidx, vartype, varname, varcount ) vartype varname [ varcount ]; - #define STEAM_CALLBACK_END(nArgs) }; -#endif - -// Forward declare all of the Steam interfaces. (Do we really need to do this?) -class ISteamClient; -class ISteamUser; -class ISteamGameServer; -class ISteamFriends; -class ISteamUtils; -class ISteamMatchmaking; -class ISteamContentServer; -class ISteamMatchmakingServers; -class ISteamUserStats; -class ISteamApps; -class ISteamNetworking; -class ISteamRemoteStorage; -class ISteamScreenshots; -class ISteamMusic; -class ISteamMusicRemote; -class ISteamGameServerStats; -class ISteamPS3OverlayRender; -class ISteamHTTP; -class ISteamController; -class ISteamUGC; -class ISteamAppList; -class ISteamHTMLSurface; -class ISteamInventory; -class ISteamVideo; -class ISteamParentalSettings; -class ISteamGameSearch; -class ISteamInput; -class ISteamParties; -class ISteamRemotePlay; - -//----------------------------------------------------------------------------- -// Purpose: Base values for callback identifiers, each callback must -// have a unique ID. -//----------------------------------------------------------------------------- -enum { k_iSteamUserCallbacks = 100 }; -enum { k_iSteamGameServerCallbacks = 200 }; -enum { k_iSteamFriendsCallbacks = 300 }; -enum { k_iSteamBillingCallbacks = 400 }; -enum { k_iSteamMatchmakingCallbacks = 500 }; -enum { k_iSteamContentServerCallbacks = 600 }; -enum { k_iSteamUtilsCallbacks = 700 }; -enum { k_iClientFriendsCallbacks = 800 }; -enum { k_iClientUserCallbacks = 900 }; -enum { k_iSteamAppsCallbacks = 1000 }; -enum { k_iSteamUserStatsCallbacks = 1100 }; -enum { k_iSteamNetworkingCallbacks = 1200 }; -enum { k_iSteamNetworkingSocketsCallbacks = 1220 }; -enum { k_iSteamNetworkingMessagesCallbacks = 1250 }; -enum { k_iSteamNetworkingUtilsCallbacks = 1280 }; -enum { k_iClientRemoteStorageCallbacks = 1300 }; -enum { k_iClientDepotBuilderCallbacks = 1400 }; -enum { k_iSteamGameServerItemsCallbacks = 1500 }; -enum { k_iClientUtilsCallbacks = 1600 }; -enum { k_iSteamGameCoordinatorCallbacks = 1700 }; -enum { k_iSteamGameServerStatsCallbacks = 1800 }; -enum { k_iSteam2AsyncCallbacks = 1900 }; -enum { k_iSteamGameStatsCallbacks = 2000 }; -enum { k_iClientHTTPCallbacks = 2100 }; -enum { k_iClientScreenshotsCallbacks = 2200 }; -enum { k_iSteamScreenshotsCallbacks = 2300 }; -enum { k_iClientAudioCallbacks = 2400 }; -enum { k_iClientUnifiedMessagesCallbacks = 2500 }; -enum { k_iSteamStreamLauncherCallbacks = 2600 }; -enum { k_iClientControllerCallbacks = 2700 }; -enum { k_iSteamControllerCallbacks = 2800 }; -enum { k_iClientParentalSettingsCallbacks = 2900 }; -enum { k_iClientDeviceAuthCallbacks = 3000 }; -enum { k_iClientNetworkDeviceManagerCallbacks = 3100 }; -enum { k_iClientMusicCallbacks = 3200 }; -enum { k_iClientRemoteClientManagerCallbacks = 3300 }; -enum { k_iClientUGCCallbacks = 3400 }; -enum { k_iSteamStreamClientCallbacks = 3500 }; -enum { k_IClientProductBuilderCallbacks = 3600 }; -enum { k_iClientShortcutsCallbacks = 3700 }; -enum { k_iClientRemoteControlManagerCallbacks = 3800 }; -enum { k_iSteamAppListCallbacks = 3900 }; -enum { k_iSteamMusicCallbacks = 4000 }; -enum { k_iSteamMusicRemoteCallbacks = 4100 }; -enum { k_iClientVRCallbacks = 4200 }; -enum { k_iClientGameNotificationCallbacks = 4300 }; -enum { k_iSteamGameNotificationCallbacks = 4400 }; -enum { k_iSteamHTMLSurfaceCallbacks = 4500 }; -enum { k_iClientVideoCallbacks = 4600 }; -enum { k_iClientInventoryCallbacks = 4700 }; -enum { k_iClientBluetoothManagerCallbacks = 4800 }; -enum { k_iClientSharedConnectionCallbacks = 4900 }; -enum { k_ISteamParentalSettingsCallbacks = 5000 }; -enum { k_iClientShaderCallbacks = 5100 }; -enum { k_iSteamGameSearchCallbacks = 5200 }; -enum { k_iSteamPartiesCallbacks = 5300 }; -enum { k_iClientPartiesCallbacks = 5400 }; -enum { k_iSteamSTARCallbacks = 5500 }; -enum { k_iClientSTARCallbacks = 5600 }; -enum { k_iSteamRemotePlayCallbacks = 5700 }; -enum { k_iClientCompatCallbacks = 5800 }; -enum { k_iSteamChatCallbacks = 5900 }; - -#ifdef _MSVC_VER -#pragma warning( pop ) -#endif - -// CSteamAPIContext encapsulates the Steamworks API global accessors into -// a single object. -// -// DEPRECATED: Used the global interface accessors instead! -// -// This will be removed in a future iteration of the SDK -class CSteamAPIContext -{ -public: - CSteamAPIContext() { Clear(); } - inline void Clear() { memset( this, 0, sizeof(*this) ); } - inline bool Init(); // NOTE: This is defined in steam_api.h, to avoid this file having to include everything - ISteamClient* SteamClient() const { return m_pSteamClient; } - ISteamUser* SteamUser() const { return m_pSteamUser; } - ISteamFriends* SteamFriends() const { return m_pSteamFriends; } - ISteamUtils* SteamUtils() const { return m_pSteamUtils; } - ISteamMatchmaking* SteamMatchmaking() const { return m_pSteamMatchmaking; } - ISteamGameSearch* SteamGameSearch() const { return m_pSteamGameSearch; } - ISteamUserStats* SteamUserStats() const { return m_pSteamUserStats; } - ISteamApps* SteamApps() const { return m_pSteamApps; } - ISteamMatchmakingServers* SteamMatchmakingServers() const { return m_pSteamMatchmakingServers; } - ISteamNetworking* SteamNetworking() const { return m_pSteamNetworking; } - ISteamRemoteStorage* SteamRemoteStorage() const { return m_pSteamRemoteStorage; } - ISteamScreenshots* SteamScreenshots() const { return m_pSteamScreenshots; } - ISteamHTTP* SteamHTTP() const { return m_pSteamHTTP; } - ISteamController* SteamController() const { return m_pController; } - ISteamUGC* SteamUGC() const { return m_pSteamUGC; } - ISteamAppList* SteamAppList() const { return m_pSteamAppList; } - ISteamMusic* SteamMusic() const { return m_pSteamMusic; } - ISteamMusicRemote* SteamMusicRemote() const { return m_pSteamMusicRemote; } - ISteamHTMLSurface* SteamHTMLSurface() const { return m_pSteamHTMLSurface; } - ISteamInventory* SteamInventory() const { return m_pSteamInventory; } - ISteamVideo* SteamVideo() const { return m_pSteamVideo; } - ISteamParentalSettings* SteamParentalSettings() const { return m_pSteamParentalSettings; } - ISteamInput* SteamInput() const { return m_pSteamInput; } -private: - ISteamClient *m_pSteamClient; - ISteamUser *m_pSteamUser; - ISteamFriends *m_pSteamFriends; - ISteamUtils *m_pSteamUtils; - ISteamMatchmaking *m_pSteamMatchmaking; - ISteamGameSearch *m_pSteamGameSearch; - ISteamUserStats *m_pSteamUserStats; - ISteamApps *m_pSteamApps; - ISteamMatchmakingServers *m_pSteamMatchmakingServers; - ISteamNetworking *m_pSteamNetworking; - ISteamRemoteStorage *m_pSteamRemoteStorage; - ISteamScreenshots *m_pSteamScreenshots; - ISteamHTTP *m_pSteamHTTP; - ISteamController *m_pController; - ISteamUGC *m_pSteamUGC; - ISteamAppList *m_pSteamAppList; - ISteamMusic *m_pSteamMusic; - ISteamMusicRemote *m_pSteamMusicRemote; - ISteamHTMLSurface *m_pSteamHTMLSurface; - ISteamInventory *m_pSteamInventory; - ISteamVideo *m_pSteamVideo; - ISteamParentalSettings *m_pSteamParentalSettings; - ISteamInput *m_pSteamInput; -}; - -class CSteamGameServerAPIContext -{ -public: - CSteamGameServerAPIContext() { Clear(); } - inline void Clear() { memset( this, 0, sizeof(*this) ); } - inline bool Init(); // NOTE: This is defined in steam_gameserver.h, to avoid this file having to include everything - - ISteamClient *SteamClient() const { return m_pSteamClient; } - ISteamGameServer *SteamGameServer() const { return m_pSteamGameServer; } - ISteamUtils *SteamGameServerUtils() const { return m_pSteamGameServerUtils; } - ISteamNetworking *SteamGameServerNetworking() const { return m_pSteamGameServerNetworking; } - ISteamGameServerStats *SteamGameServerStats() const { return m_pSteamGameServerStats; } - ISteamHTTP *SteamHTTP() const { return m_pSteamHTTP; } - ISteamInventory *SteamInventory() const { return m_pSteamInventory; } - ISteamUGC *SteamUGC() const { return m_pSteamUGC; } - ISteamApps *SteamApps() const { return m_pSteamApps; } - -private: - ISteamClient *m_pSteamClient; - ISteamGameServer *m_pSteamGameServer; - ISteamUtils *m_pSteamGameServerUtils; - ISteamNetworking *m_pSteamGameServerNetworking; - ISteamGameServerStats *m_pSteamGameServerStats; - ISteamHTTP *m_pSteamHTTP; - ISteamInventory *m_pSteamInventory; - ISteamUGC *m_pSteamUGC; - ISteamApps *m_pSteamApps; -}; - - +//====== Copyright Valve Corporation, All rights reserved. ==================== +// +// Internal implementation details of the steamworks SDK. +// +// You should be able to figure out how to use the SDK by reading +// steam_api_common.h, and should not need to understand anything in here. +// +//----------------------------------------------------------------------------- + +#ifdef STEAM_CALLBACK_BEGIN +#error "This file should only be included from steam_api_common.h" +#endif + +#include + +// Internal functions used to locate/create interfaces +S_API HSteamPipe S_CALLTYPE SteamAPI_GetHSteamPipe(); +S_API HSteamUser S_CALLTYPE SteamAPI_GetHSteamUser(); +S_API HSteamPipe S_CALLTYPE SteamGameServer_GetHSteamPipe(); +S_API HSteamUser S_CALLTYPE SteamGameServer_GetHSteamUser(); +S_API void *S_CALLTYPE SteamInternal_ContextInit( void *pContextInitData ); +S_API void *S_CALLTYPE SteamInternal_CreateInterface( const char *ver ); +S_API void *S_CALLTYPE SteamInternal_FindOrCreateUserInterface( HSteamUser hSteamUser, const char *pszVersion ); +S_API void *S_CALLTYPE SteamInternal_FindOrCreateGameServerInterface( HSteamUser hSteamUser, const char *pszVersion ); + +// Macro used to define a type-safe accessor that will always return the version +// of the interface of the *header file* you are compiling with! We also bounce +// through a safety function that checks for interfaces being created or destroyed. +// +// SteamInternal_ContextInit takes a base pointer for the equivalent of +// struct { void (*pFn)(void* pCtx); uintptr_t counter; void *ptr; } +// Do not change layout or add non-pointer aligned data! +#define STEAM_DEFINE_INTERFACE_ACCESSOR( type, name, expr, kind, version ) \ + inline void S_CALLTYPE SteamInternal_Init_ ## name( type *p ) { *p = (type)( expr ); } \ + STEAM_CLANG_ATTR( "interface_accessor_kind:" kind ";interface_accessor_version:" version ";" ) \ + inline type name() { \ + static void* s_CallbackCounterAndContext[ 3 ] = { (void*)&SteamInternal_Init_ ## name, 0, 0 }; \ + return *(type*)SteamInternal_ContextInit( s_CallbackCounterAndContext ); \ + } + +#define STEAM_DEFINE_USER_INTERFACE_ACCESSOR( type, name, version ) \ + STEAM_DEFINE_INTERFACE_ACCESSOR( type, name, SteamInternal_FindOrCreateUserInterface( SteamAPI_GetHSteamUser(), version ), "user", version ) +#define STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( type, name, version ) \ + STEAM_DEFINE_INTERFACE_ACCESSOR( type, name, SteamInternal_FindOrCreateGameServerInterface( SteamGameServer_GetHSteamUser(), version ), "gameserver", version ) + +// +// Internal stuff used for the standard, higher-level callback mechanism +// + +// Internal functions used by the utility CCallback objects to receive callbacks +S_API void S_CALLTYPE SteamAPI_RegisterCallback( class CCallbackBase *pCallback, int iCallback ); +S_API void S_CALLTYPE SteamAPI_UnregisterCallback( class CCallbackBase *pCallback ); +// Internal functions used by the utility CCallResult objects to receive async call results +S_API void S_CALLTYPE SteamAPI_RegisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); +S_API void S_CALLTYPE SteamAPI_UnregisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); + +// disable this warning; this pattern need for steam callback registration +#ifdef _MSVC_VER +#pragma warning( push ) +#pragma warning( disable: 4355 ) // 'this' : used in base member initializer list +#endif + +#define _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) +#define _STEAM_CALLBACK_HELPER( _1, _2, SELECTED, ... ) _STEAM_CALLBACK_##SELECTED +#define _STEAM_CALLBACK_SELECT( X, Y ) _STEAM_CALLBACK_HELPER X Y +#define _STEAM_CALLBACK_3( extra_code, thisclass, func, param ) \ + struct CCallbackInternal_ ## func : private CCallbackImpl< sizeof( param ) > { \ + CCallbackInternal_ ## func () { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } \ + CCallbackInternal_ ## func ( const CCallbackInternal_ ## func & ) { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } \ + CCallbackInternal_ ## func & operator=( const CCallbackInternal_ ## func & ) { return *this; } \ + private: virtual void Run( void *pvParam ) { _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) \ + thisclass *pOuter = reinterpret_cast( reinterpret_cast(this) - offsetof( thisclass, m_steamcallback_ ## func ) ); \ + pOuter->func( reinterpret_cast( pvParam ) ); \ + } \ + } m_steamcallback_ ## func ; void func( param *pParam ) +#define _STEAM_CALLBACK_4( _, thisclass, func, param, var ) \ + CCallback< thisclass, param > var; void func( param *pParam ) +#define _STEAM_CALLBACK_GS( _, thisclass, func, param, var ) \ + CCallback< thisclass, param, true > var; void func( param *pParam ) + +#ifndef API_GEN + +template< class T, class P > +inline CCallResult::CCallResult() +{ + m_hAPICall = k_uAPICallInvalid; + m_pObj = nullptr; + m_Func = nullptr; + m_iCallback = P::k_iCallback; +} + +template< class T, class P > +inline void CCallResult::Set( SteamAPICall_t hAPICall, T *p, func_t func ) +{ + if ( m_hAPICall ) + SteamAPI_UnregisterCallResult( this, m_hAPICall ); + + m_hAPICall = hAPICall; + m_pObj = p; + m_Func = func; + + if ( hAPICall ) + SteamAPI_RegisterCallResult( this, hAPICall ); +} + +template< class T, class P > +inline bool CCallResult::IsActive() const +{ + return (m_hAPICall != k_uAPICallInvalid); +} + +template< class T, class P > +inline void CCallResult::Cancel() +{ + if ( m_hAPICall != k_uAPICallInvalid ) + { + SteamAPI_UnregisterCallResult( this, m_hAPICall ); + m_hAPICall = k_uAPICallInvalid; + } +} + +template< class T, class P > +inline CCallResult::~CCallResult() +{ + Cancel(); +} + +template< class T, class P > +inline void CCallResult::Run( void *pvParam ) +{ + m_hAPICall = k_uAPICallInvalid; // caller unregisters for us + (m_pObj->*m_Func)((P *)pvParam, false); +} + +template< class T, class P > +inline void CCallResult::Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ) +{ + if ( hSteamAPICall == m_hAPICall ) + { + m_hAPICall = k_uAPICallInvalid; // caller unregisters for us + (m_pObj->*m_Func)((P *)pvParam, bIOFailure); + } +} + +template< class T, class P, bool bGameserver > +inline CCallback< T, P, bGameserver >::CCallback( T *pObj, func_t func ) + : m_pObj( nullptr ), m_Func( nullptr ) +{ + if ( bGameserver ) + { + this->SetGameserverFlag(); + } + Register( pObj, func ); +} + +template< class T, class P, bool bGameserver > +inline void CCallback< T, P, bGameserver >::Register( T *pObj, func_t func ) +{ + if ( !pObj || !func ) + return; + + if ( this->m_nCallbackFlags & CCallbackBase::k_ECallbackFlagsRegistered ) + Unregister(); + + m_pObj = pObj; + m_Func = func; + // SteamAPI_RegisterCallback sets k_ECallbackFlagsRegistered + SteamAPI_RegisterCallback( this, P::k_iCallback ); +} + +template< class T, class P, bool bGameserver > +inline void CCallback< T, P, bGameserver >::Unregister() +{ + // SteamAPI_UnregisterCallback removes k_ECallbackFlagsRegistered + SteamAPI_UnregisterCallback( this ); +} + +template< class T, class P, bool bGameserver > +inline void CCallback< T, P, bGameserver >::Run( void *pvParam ) +{ + (m_pObj->*m_Func)((P *)pvParam); +} + +#endif // #ifndef API_GEN + +// structure that contains client callback data +// see callbacks documentation for more details +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + +/// Internal structure used in manual callback dispatch +struct CallbackMsg_t +{ + HSteamUser m_hSteamUser; // Specific user to whom this callback applies. + int m_iCallback; // Callback identifier. (Corresponds to the k_iCallback enum in the callback structure.) + uint8 *m_pubParam; // Points to the callback structure + int m_cubParam; // Size of the data pointed to by m_pubParam +}; +#pragma pack( pop ) + +// Macros to define steam callback structures. Used internally for debugging +#ifdef STEAM_CALLBACK_INSPECTION_ENABLED + #include "../../clientdll/steam_api_callback_inspection.h" +#else + #define STEAM_CALLBACK_BEGIN( callbackname, callbackid ) struct callbackname { enum { k_iCallback = callbackid }; + #define STEAM_CALLBACK_MEMBER( varidx, vartype, varname ) vartype varname ; + #define STEAM_CALLBACK_MEMBER_ARRAY( varidx, vartype, varname, varcount ) vartype varname [ varcount ]; + #define STEAM_CALLBACK_END(nArgs) }; +#endif + +// Forward declare all of the Steam interfaces. (Do we really need to do this?) +class ISteamClient; +class ISteamUser; +class ISteamGameServer; +class ISteamFriends; +class ISteamUtils; +class ISteamMatchmaking; +class ISteamContentServer; +class ISteamMatchmakingServers; +class ISteamUserStats; +class ISteamApps; +class ISteamNetworking; +class ISteamRemoteStorage; +class ISteamScreenshots; +class ISteamMusic; +class ISteamMusicRemote; +class ISteamGameServerStats; +class ISteamPS3OverlayRender; +class ISteamHTTP; +class ISteamController; +class ISteamUGC; +class ISteamAppList; +class ISteamHTMLSurface; +class ISteamInventory; +class ISteamVideo; +class ISteamParentalSettings; +class ISteamGameSearch; +class ISteamInput; +class ISteamParties; +class ISteamRemotePlay; + +//----------------------------------------------------------------------------- +// Purpose: Base values for callback identifiers, each callback must +// have a unique ID. +//----------------------------------------------------------------------------- +enum { k_iSteamUserCallbacks = 100 }; +enum { k_iSteamGameServerCallbacks = 200 }; +enum { k_iSteamFriendsCallbacks = 300 }; +enum { k_iSteamBillingCallbacks = 400 }; +enum { k_iSteamMatchmakingCallbacks = 500 }; +enum { k_iSteamContentServerCallbacks = 600 }; +enum { k_iSteamUtilsCallbacks = 700 }; +enum { k_iClientFriendsCallbacks = 800 }; +enum { k_iClientUserCallbacks = 900 }; +enum { k_iSteamAppsCallbacks = 1000 }; +enum { k_iSteamUserStatsCallbacks = 1100 }; +enum { k_iSteamNetworkingCallbacks = 1200 }; +enum { k_iSteamNetworkingSocketsCallbacks = 1220 }; +enum { k_iSteamNetworkingMessagesCallbacks = 1250 }; +enum { k_iSteamNetworkingUtilsCallbacks = 1280 }; +enum { k_iClientRemoteStorageCallbacks = 1300 }; +enum { k_iClientDepotBuilderCallbacks = 1400 }; +enum { k_iSteamGameServerItemsCallbacks = 1500 }; +enum { k_iClientUtilsCallbacks = 1600 }; +enum { k_iSteamGameCoordinatorCallbacks = 1700 }; +enum { k_iSteamGameServerStatsCallbacks = 1800 }; +enum { k_iSteam2AsyncCallbacks = 1900 }; +enum { k_iSteamGameStatsCallbacks = 2000 }; +enum { k_iClientHTTPCallbacks = 2100 }; +enum { k_iClientScreenshotsCallbacks = 2200 }; +enum { k_iSteamScreenshotsCallbacks = 2300 }; +enum { k_iClientAudioCallbacks = 2400 }; +enum { k_iClientUnifiedMessagesCallbacks = 2500 }; +enum { k_iSteamStreamLauncherCallbacks = 2600 }; +enum { k_iClientControllerCallbacks = 2700 }; +enum { k_iSteamControllerCallbacks = 2800 }; +enum { k_iClientParentalSettingsCallbacks = 2900 }; +enum { k_iClientDeviceAuthCallbacks = 3000 }; +enum { k_iClientNetworkDeviceManagerCallbacks = 3100 }; +enum { k_iClientMusicCallbacks = 3200 }; +enum { k_iClientRemoteClientManagerCallbacks = 3300 }; +enum { k_iClientUGCCallbacks = 3400 }; +enum { k_iSteamStreamClientCallbacks = 3500 }; +enum { k_IClientProductBuilderCallbacks = 3600 }; +enum { k_iClientShortcutsCallbacks = 3700 }; +enum { k_iClientRemoteControlManagerCallbacks = 3800 }; +enum { k_iSteamAppListCallbacks = 3900 }; +enum { k_iSteamMusicCallbacks = 4000 }; +enum { k_iSteamMusicRemoteCallbacks = 4100 }; +enum { k_iClientVRCallbacks = 4200 }; +enum { k_iClientGameNotificationCallbacks = 4300 }; +enum { k_iSteamGameNotificationCallbacks = 4400 }; +enum { k_iSteamHTMLSurfaceCallbacks = 4500 }; +enum { k_iClientVideoCallbacks = 4600 }; +enum { k_iClientInventoryCallbacks = 4700 }; +enum { k_iClientBluetoothManagerCallbacks = 4800 }; +enum { k_iClientSharedConnectionCallbacks = 4900 }; +enum { k_ISteamParentalSettingsCallbacks = 5000 }; +enum { k_iClientShaderCallbacks = 5100 }; +enum { k_iSteamGameSearchCallbacks = 5200 }; +enum { k_iSteamPartiesCallbacks = 5300 }; +enum { k_iClientPartiesCallbacks = 5400 }; +enum { k_iSteamSTARCallbacks = 5500 }; +enum { k_iClientSTARCallbacks = 5600 }; +enum { k_iSteamRemotePlayCallbacks = 5700 }; +enum { k_iClientCompatCallbacks = 5800 }; +enum { k_iSteamChatCallbacks = 5900 }; + +#ifdef _MSVC_VER +#pragma warning( pop ) +#endif + +// CSteamAPIContext encapsulates the Steamworks API global accessors into +// a single object. +// +// DEPRECATED: Used the global interface accessors instead! +// +// This will be removed in a future iteration of the SDK +class CSteamAPIContext +{ +public: + CSteamAPIContext() { Clear(); } + inline void Clear() { memset( this, 0, sizeof(*this) ); } + inline bool Init(); // NOTE: This is defined in steam_api.h, to avoid this file having to include everything + ISteamClient* SteamClient() const { return m_pSteamClient; } + ISteamUser* SteamUser() const { return m_pSteamUser; } + ISteamFriends* SteamFriends() const { return m_pSteamFriends; } + ISteamUtils* SteamUtils() const { return m_pSteamUtils; } + ISteamMatchmaking* SteamMatchmaking() const { return m_pSteamMatchmaking; } + ISteamGameSearch* SteamGameSearch() const { return m_pSteamGameSearch; } + ISteamUserStats* SteamUserStats() const { return m_pSteamUserStats; } + ISteamApps* SteamApps() const { return m_pSteamApps; } + ISteamMatchmakingServers* SteamMatchmakingServers() const { return m_pSteamMatchmakingServers; } + ISteamNetworking* SteamNetworking() const { return m_pSteamNetworking; } + ISteamRemoteStorage* SteamRemoteStorage() const { return m_pSteamRemoteStorage; } + ISteamScreenshots* SteamScreenshots() const { return m_pSteamScreenshots; } + ISteamHTTP* SteamHTTP() const { return m_pSteamHTTP; } + ISteamController* SteamController() const { return m_pController; } + ISteamUGC* SteamUGC() const { return m_pSteamUGC; } + ISteamAppList* SteamAppList() const { return m_pSteamAppList; } + ISteamMusic* SteamMusic() const { return m_pSteamMusic; } + ISteamMusicRemote* SteamMusicRemote() const { return m_pSteamMusicRemote; } + ISteamHTMLSurface* SteamHTMLSurface() const { return m_pSteamHTMLSurface; } + ISteamInventory* SteamInventory() const { return m_pSteamInventory; } + ISteamVideo* SteamVideo() const { return m_pSteamVideo; } + ISteamParentalSettings* SteamParentalSettings() const { return m_pSteamParentalSettings; } + ISteamInput* SteamInput() const { return m_pSteamInput; } +private: + ISteamClient *m_pSteamClient; + ISteamUser *m_pSteamUser; + ISteamFriends *m_pSteamFriends; + ISteamUtils *m_pSteamUtils; + ISteamMatchmaking *m_pSteamMatchmaking; + ISteamGameSearch *m_pSteamGameSearch; + ISteamUserStats *m_pSteamUserStats; + ISteamApps *m_pSteamApps; + ISteamMatchmakingServers *m_pSteamMatchmakingServers; + ISteamNetworking *m_pSteamNetworking; + ISteamRemoteStorage *m_pSteamRemoteStorage; + ISteamScreenshots *m_pSteamScreenshots; + ISteamHTTP *m_pSteamHTTP; + ISteamController *m_pController; + ISteamUGC *m_pSteamUGC; + ISteamAppList *m_pSteamAppList; + ISteamMusic *m_pSteamMusic; + ISteamMusicRemote *m_pSteamMusicRemote; + ISteamHTMLSurface *m_pSteamHTMLSurface; + ISteamInventory *m_pSteamInventory; + ISteamVideo *m_pSteamVideo; + ISteamParentalSettings *m_pSteamParentalSettings; + ISteamInput *m_pSteamInput; +}; + +class CSteamGameServerAPIContext +{ +public: + CSteamGameServerAPIContext() { Clear(); } + inline void Clear() { memset( this, 0, sizeof(*this) ); } + inline bool Init(); // NOTE: This is defined in steam_gameserver.h, to avoid this file having to include everything + + ISteamClient *SteamClient() const { return m_pSteamClient; } + ISteamGameServer *SteamGameServer() const { return m_pSteamGameServer; } + ISteamUtils *SteamGameServerUtils() const { return m_pSteamGameServerUtils; } + ISteamNetworking *SteamGameServerNetworking() const { return m_pSteamGameServerNetworking; } + ISteamGameServerStats *SteamGameServerStats() const { return m_pSteamGameServerStats; } + ISteamHTTP *SteamHTTP() const { return m_pSteamHTTP; } + ISteamInventory *SteamInventory() const { return m_pSteamInventory; } + ISteamUGC *SteamUGC() const { return m_pSteamUGC; } + ISteamApps *SteamApps() const { return m_pSteamApps; } + +private: + ISteamClient *m_pSteamClient; + ISteamGameServer *m_pSteamGameServer; + ISteamUtils *m_pSteamGameServerUtils; + ISteamNetworking *m_pSteamGameServerNetworking; + ISteamGameServerStats *m_pSteamGameServerStats; + ISteamHTTP *m_pSteamHTTP; + ISteamInventory *m_pSteamInventory; + ISteamUGC *m_pSteamUGC; + ISteamApps *m_pSteamApps; +}; + + diff --git a/CodeGen/steam/steam_gameserver.h b/CodeGen/steam/steam_gameserver.h index abd8b57e..71f681e1 100644 --- a/CodeGen/steam/steam_gameserver.h +++ b/CodeGen/steam/steam_gameserver.h @@ -1,114 +1,114 @@ -//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= -// -// Purpose: -// -//============================================================================= - -#ifndef STEAM_GAMESERVER_H -#define STEAM_GAMESERVER_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api.h" -#include "isteamgameserver.h" -#include "isteamgameserverstats.h" - -enum EServerMode -{ - eServerModeInvalid = 0, // DO NOT USE - eServerModeNoAuthentication = 1, // Don't authenticate user logins and don't list on the server list - eServerModeAuthentication = 2, // Authenticate users, list on the server list, don't run VAC on clients that connect - eServerModeAuthenticationAndSecure = 3, // Authenticate users, list on the server list and VAC protect clients -}; - -/// Pass to SteamGameServer_Init to indicate that the same UDP port will be used for game traffic -/// UDP queries. In this case, Steam will not open up a socket to handle server browser queries, -/// and you must use ISteamGameServer::HandleIncomingPacket and ISteamGameServer::GetNextOutgoingPacket -/// to handle packets related to server discovery on your socket. -#define MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE ((uint16)-1) - -// Initialize SteamGameServer client and interface objects, and set server properties which may not be changed. -// -// After calling this function, you should set any additional server parameters, and then -// call ISteamGameServer::LogOnAnonymous() or ISteamGameServer::LogOn() -// -// - unIP will usually be zero. If you are on a machine with multiple IP addresses, you can pass a non-zero -// value here and the relevant sockets will be bound to that IP. This can be used to ensure that -// the IP you desire is the one used in the server browser. -// - usGamePort is the port that clients will connect to for gameplay. You will usually open up your -// own socket bound to this port. -// - usQueryPort is the port that will manage server browser related duties and info -// pings from clients. If you pass MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE for usQueryPort, then it -// will use "GameSocketShare" mode, which means that the game is responsible for sending and receiving -// UDP packets for the master server updater. See references to GameSocketShare in isteamgameserver.h. -// - The version string should be in the form x.x.x.x, and is used by the master server to detect when the -// server is out of date. (Only servers with the latest version will be listed.) -inline bool SteamGameServer_Init( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); - -// Shutdown SteamGameSeverXxx interfaces, log out, and free resources. -S_API void SteamGameServer_Shutdown(); - -// Most Steam API functions allocate some amount of thread-local memory for -// parameter storage. Calling SteamGameServer_ReleaseCurrentThreadMemory() -// will free all API-related memory associated with the calling thread. -// This memory is released automatically by SteamGameServer_RunCallbacks(), -// so single-threaded servers do not need to explicitly call this function. -inline void SteamGameServer_ReleaseCurrentThreadMemory(); - -S_API bool SteamGameServer_BSecure(); -S_API uint64 SteamGameServer_GetSteamID(); - -// Older SDKs exported this global pointer, but it is no longer supported. -// You should use SteamGameServerClient() or CSteamGameServerAPIContext to -// safely access the ISteamClient APIs from your game server application. -//S_API ISteamClient *g_pSteamClientGameServer; - -// SteamGameServer_InitSafe has been replaced with SteamGameServer_Init and -// is no longer supported. Use SteamGameServer_Init instead. -//S_API void S_CALLTYPE SteamGameServer_InitSafe(); - -//============================================================================= -// -// Internal implementation details below -// -//============================================================================= - -#ifndef STEAM_API_EXPORTS -// This function must be declared inline in the header so the module using steam_api.dll gets the version names they want. -inline bool CSteamGameServerAPIContext::Init() -{ - m_pSteamClient = ::SteamGameServerClient(); - if ( !m_pSteamClient ) - return false; - - m_pSteamGameServer = ::SteamGameServer(); - m_pSteamGameServerUtils = ::SteamGameServerUtils(); - m_pSteamGameServerNetworking = ::SteamGameServerNetworking(); - m_pSteamGameServerStats = ::SteamGameServerStats(); - m_pSteamHTTP = ::SteamGameServerHTTP(); - m_pSteamInventory = ::SteamGameServerInventory(); - m_pSteamUGC = ::SteamGameServerUGC(); - m_pSteamApps = ::SteamGameServerApps(); - if ( !m_pSteamGameServer || !m_pSteamGameServerUtils || !m_pSteamGameServerNetworking || !m_pSteamGameServerStats - || !m_pSteamHTTP || !m_pSteamInventory || !m_pSteamUGC || !m_pSteamApps ) - return false; - - return true; -} -#endif - -S_API bool S_CALLTYPE SteamInternal_GameServer_Init( uint32 unIP, uint16 usLegacySteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); -inline bool SteamGameServer_Init( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ) -{ - if ( !SteamInternal_GameServer_Init( unIP, 0, usGamePort, usQueryPort, eServerMode, pchVersionString ) ) - return false; - - return true; -} -inline void SteamGameServer_ReleaseCurrentThreadMemory() -{ - SteamAPI_ReleaseCurrentThreadMemory(); -} - -#endif // STEAM_GAMESERVER_H +//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: +// +//============================================================================= + +#ifndef STEAM_GAMESERVER_H +#define STEAM_GAMESERVER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api.h" +#include "isteamgameserver.h" +#include "isteamgameserverstats.h" + +enum EServerMode +{ + eServerModeInvalid = 0, // DO NOT USE + eServerModeNoAuthentication = 1, // Don't authenticate user logins and don't list on the server list + eServerModeAuthentication = 2, // Authenticate users, list on the server list, don't run VAC on clients that connect + eServerModeAuthenticationAndSecure = 3, // Authenticate users, list on the server list and VAC protect clients +}; + +/// Pass to SteamGameServer_Init to indicate that the same UDP port will be used for game traffic +/// UDP queries. In this case, Steam will not open up a socket to handle server browser queries, +/// and you must use ISteamGameServer::HandleIncomingPacket and ISteamGameServer::GetNextOutgoingPacket +/// to handle packets related to server discovery on your socket. +#define MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE ((uint16)-1) + +// Initialize SteamGameServer client and interface objects, and set server properties which may not be changed. +// +// After calling this function, you should set any additional server parameters, and then +// call ISteamGameServer::LogOnAnonymous() or ISteamGameServer::LogOn() +// +// - unIP will usually be zero. If you are on a machine with multiple IP addresses, you can pass a non-zero +// value here and the relevant sockets will be bound to that IP. This can be used to ensure that +// the IP you desire is the one used in the server browser. +// - usGamePort is the port that clients will connect to for gameplay. You will usually open up your +// own socket bound to this port. +// - usQueryPort is the port that will manage server browser related duties and info +// pings from clients. If you pass MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE for usQueryPort, then it +// will use "GameSocketShare" mode, which means that the game is responsible for sending and receiving +// UDP packets for the master server updater. See references to GameSocketShare in isteamgameserver.h. +// - The version string should be in the form x.x.x.x, and is used by the master server to detect when the +// server is out of date. (Only servers with the latest version will be listed.) +inline bool SteamGameServer_Init( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); + +// Shutdown SteamGameSeverXxx interfaces, log out, and free resources. +S_API void SteamGameServer_Shutdown(); + +// Most Steam API functions allocate some amount of thread-local memory for +// parameter storage. Calling SteamGameServer_ReleaseCurrentThreadMemory() +// will free all API-related memory associated with the calling thread. +// This memory is released automatically by SteamGameServer_RunCallbacks(), +// so single-threaded servers do not need to explicitly call this function. +inline void SteamGameServer_ReleaseCurrentThreadMemory(); + +S_API bool SteamGameServer_BSecure(); +S_API uint64 SteamGameServer_GetSteamID(); + +// Older SDKs exported this global pointer, but it is no longer supported. +// You should use SteamGameServerClient() or CSteamGameServerAPIContext to +// safely access the ISteamClient APIs from your game server application. +//S_API ISteamClient *g_pSteamClientGameServer; + +// SteamGameServer_InitSafe has been replaced with SteamGameServer_Init and +// is no longer supported. Use SteamGameServer_Init instead. +//S_API void S_CALLTYPE SteamGameServer_InitSafe(); + +//============================================================================= +// +// Internal implementation details below +// +//============================================================================= + +#ifndef STEAM_API_EXPORTS +// This function must be declared inline in the header so the module using steam_api.dll gets the version names they want. +inline bool CSteamGameServerAPIContext::Init() +{ + m_pSteamClient = ::SteamGameServerClient(); + if ( !m_pSteamClient ) + return false; + + m_pSteamGameServer = ::SteamGameServer(); + m_pSteamGameServerUtils = ::SteamGameServerUtils(); + m_pSteamGameServerNetworking = ::SteamGameServerNetworking(); + m_pSteamGameServerStats = ::SteamGameServerStats(); + m_pSteamHTTP = ::SteamGameServerHTTP(); + m_pSteamInventory = ::SteamGameServerInventory(); + m_pSteamUGC = ::SteamGameServerUGC(); + m_pSteamApps = ::SteamGameServerApps(); + if ( !m_pSteamGameServer || !m_pSteamGameServerUtils || !m_pSteamGameServerNetworking || !m_pSteamGameServerStats + || !m_pSteamHTTP || !m_pSteamInventory || !m_pSteamUGC || !m_pSteamApps ) + return false; + + return true; +} +#endif + +S_API bool S_CALLTYPE SteamInternal_GameServer_Init( uint32 unIP, uint16 usLegacySteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); +inline bool SteamGameServer_Init( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ) +{ + if ( !SteamInternal_GameServer_Init( unIP, 0, usGamePort, usQueryPort, eServerMode, pchVersionString ) ) + return false; + + return true; +} +inline void SteamGameServer_ReleaseCurrentThreadMemory() +{ + SteamAPI_ReleaseCurrentThreadMemory(); +} + +#endif // STEAM_GAMESERVER_H diff --git a/CodeGen/steam/steamclientpublic.h b/CodeGen/steam/steamclientpublic.h index 981fd7eb..695bb9ce 100644 --- a/CodeGen/steam/steamclientpublic.h +++ b/CodeGen/steam/steamclientpublic.h @@ -1,1519 +1,1519 @@ -//========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ -// -// Purpose: -// -//============================================================================= - -#ifndef STEAMCLIENTPUBLIC_H -#define STEAMCLIENTPUBLIC_H -#ifdef _WIN32 -#pragma once -#endif -//lint -save -e1931 -e1927 -e1924 -e613 -e726 - -// This header file defines the interface between the calling application and the code that -// knows how to communicate with the connection manager (CM) from the Steam service - -// This header file is intended to be portable; ideally this 1 header file plus a lib or dll -// is all you need to integrate the client library into some other tree. So please avoid -// including or requiring other header files if possible. This header should only describe the -// interface layer, no need to include anything about the implementation. - -#include "steamtypes.h" -#include "steamuniverse.h" - -// General result codes -enum EResult -{ - k_EResultNone = 0, // no result - k_EResultOK = 1, // success - k_EResultFail = 2, // generic failure - k_EResultNoConnection = 3, // no/failed network connection -// k_EResultNoConnectionRetry = 4, // OBSOLETE - removed - k_EResultInvalidPassword = 5, // password/ticket is invalid - k_EResultLoggedInElsewhere = 6, // same user logged in elsewhere - k_EResultInvalidProtocolVer = 7, // protocol version is incorrect - k_EResultInvalidParam = 8, // a parameter is incorrect - k_EResultFileNotFound = 9, // file was not found - k_EResultBusy = 10, // called method busy - action not taken - k_EResultInvalidState = 11, // called object was in an invalid state - k_EResultInvalidName = 12, // name is invalid - k_EResultInvalidEmail = 13, // email is invalid - k_EResultDuplicateName = 14, // name is not unique - k_EResultAccessDenied = 15, // access is denied - k_EResultTimeout = 16, // operation timed out - k_EResultBanned = 17, // VAC2 banned - k_EResultAccountNotFound = 18, // account not found - k_EResultInvalidSteamID = 19, // steamID is invalid - k_EResultServiceUnavailable = 20, // The requested service is currently unavailable - k_EResultNotLoggedOn = 21, // The user is not logged on - k_EResultPending = 22, // Request is pending (may be in process, or waiting on third party) - k_EResultEncryptionFailure = 23, // Encryption or Decryption failed - k_EResultInsufficientPrivilege = 24, // Insufficient privilege - k_EResultLimitExceeded = 25, // Too much of a good thing - k_EResultRevoked = 26, // Access has been revoked (used for revoked guest passes) - k_EResultExpired = 27, // License/Guest pass the user is trying to access is expired - k_EResultAlreadyRedeemed = 28, // Guest pass has already been redeemed by account, cannot be acked again - k_EResultDuplicateRequest = 29, // The request is a duplicate and the action has already occurred in the past, ignored this time - k_EResultAlreadyOwned = 30, // All the games in this guest pass redemption request are already owned by the user - k_EResultIPNotFound = 31, // IP address not found - k_EResultPersistFailed = 32, // failed to write change to the data store - k_EResultLockingFailed = 33, // failed to acquire access lock for this operation - k_EResultLogonSessionReplaced = 34, - k_EResultConnectFailed = 35, - k_EResultHandshakeFailed = 36, - k_EResultIOFailure = 37, - k_EResultRemoteDisconnect = 38, - k_EResultShoppingCartNotFound = 39, // failed to find the shopping cart requested - k_EResultBlocked = 40, // a user didn't allow it - k_EResultIgnored = 41, // target is ignoring sender - k_EResultNoMatch = 42, // nothing matching the request found - k_EResultAccountDisabled = 43, - k_EResultServiceReadOnly = 44, // this service is not accepting content changes right now - k_EResultAccountNotFeatured = 45, // account doesn't have value, so this feature isn't available - k_EResultAdministratorOK = 46, // allowed to take this action, but only because requester is admin - k_EResultContentVersion = 47, // A Version mismatch in content transmitted within the Steam protocol. - k_EResultTryAnotherCM = 48, // The current CM can't service the user making a request, user should try another. - k_EResultPasswordRequiredToKickSession = 49,// You are already logged in elsewhere, this cached credential login has failed. - k_EResultAlreadyLoggedInElsewhere = 50, // You are already logged in elsewhere, you must wait - k_EResultSuspended = 51, // Long running operation (content download) suspended/paused - k_EResultCancelled = 52, // Operation canceled (typically by user: content download) - k_EResultDataCorruption = 53, // Operation canceled because data is ill formed or unrecoverable - k_EResultDiskFull = 54, // Operation canceled - not enough disk space. - k_EResultRemoteCallFailed = 55, // an remote call or IPC call failed - k_EResultPasswordUnset = 56, // Password could not be verified as it's unset server side - k_EResultExternalAccountUnlinked = 57, // External account (PSN, Facebook...) is not linked to a Steam account - k_EResultPSNTicketInvalid = 58, // PSN ticket was invalid - k_EResultExternalAccountAlreadyLinked = 59, // External account (PSN, Facebook...) is already linked to some other account, must explicitly request to replace/delete the link first - k_EResultRemoteFileConflict = 60, // The sync cannot resume due to a conflict between the local and remote files - k_EResultIllegalPassword = 61, // The requested new password is not legal - k_EResultSameAsPreviousValue = 62, // new value is the same as the old one ( secret question and answer ) - k_EResultAccountLogonDenied = 63, // account login denied due to 2nd factor authentication failure - k_EResultCannotUseOldPassword = 64, // The requested new password is not legal - k_EResultInvalidLoginAuthCode = 65, // account login denied due to auth code invalid - k_EResultAccountLogonDeniedNoMail = 66, // account login denied due to 2nd factor auth failure - and no mail has been sent - k_EResultHardwareNotCapableOfIPT = 67, // - k_EResultIPTInitError = 68, // - k_EResultParentalControlRestricted = 69, // operation failed due to parental control restrictions for current user - k_EResultFacebookQueryError = 70, // Facebook query returned an error - k_EResultExpiredLoginAuthCode = 71, // account login denied due to auth code expired - k_EResultIPLoginRestrictionFailed = 72, - k_EResultAccountLockedDown = 73, - k_EResultAccountLogonDeniedVerifiedEmailRequired = 74, - k_EResultNoMatchingURL = 75, - k_EResultBadResponse = 76, // parse failure, missing field, etc. - k_EResultRequirePasswordReEntry = 77, // The user cannot complete the action until they re-enter their password - k_EResultValueOutOfRange = 78, // the value entered is outside the acceptable range - k_EResultUnexpectedError = 79, // something happened that we didn't expect to ever happen - k_EResultDisabled = 80, // The requested service has been configured to be unavailable - k_EResultInvalidCEGSubmission = 81, // The set of files submitted to the CEG server are not valid ! - k_EResultRestrictedDevice = 82, // The device being used is not allowed to perform this action - k_EResultRegionLocked = 83, // The action could not be complete because it is region restricted - k_EResultRateLimitExceeded = 84, // Temporary rate limit exceeded, try again later, different from k_EResultLimitExceeded which may be permanent - k_EResultAccountLoginDeniedNeedTwoFactor = 85, // Need two-factor code to login - k_EResultItemDeleted = 86, // The thing we're trying to access has been deleted - k_EResultAccountLoginDeniedThrottle = 87, // login attempt failed, try to throttle response to possible attacker - k_EResultTwoFactorCodeMismatch = 88, // two factor code mismatch - k_EResultTwoFactorActivationCodeMismatch = 89, // activation code for two-factor didn't match - k_EResultAccountAssociatedToMultiplePartners = 90, // account has been associated with multiple partners - k_EResultNotModified = 91, // data not modified - k_EResultNoMobileDevice = 92, // the account does not have a mobile device associated with it - k_EResultTimeNotSynced = 93, // the time presented is out of range or tolerance - k_EResultSmsCodeFailed = 94, // SMS code failure (no match, none pending, etc.) - k_EResultAccountLimitExceeded = 95, // Too many accounts access this resource - k_EResultAccountActivityLimitExceeded = 96, // Too many changes to this account - k_EResultPhoneActivityLimitExceeded = 97, // Too many changes to this phone - k_EResultRefundToWallet = 98, // Cannot refund to payment method, must use wallet - k_EResultEmailSendFailure = 99, // Cannot send an email - k_EResultNotSettled = 100, // Can't perform operation till payment has settled - k_EResultNeedCaptcha = 101, // Needs to provide a valid captcha - k_EResultGSLTDenied = 102, // a game server login token owned by this token's owner has been banned - k_EResultGSOwnerDenied = 103, // game server owner is denied for other reason (account lock, community ban, vac ban, missing phone) - k_EResultInvalidItemType = 104, // the type of thing we were requested to act on is invalid - k_EResultIPBanned = 105, // the ip address has been banned from taking this action - k_EResultGSLTExpired = 106, // this token has expired from disuse; can be reset for use - k_EResultInsufficientFunds = 107, // user doesn't have enough wallet funds to complete the action - k_EResultTooManyPending = 108, // There are too many of this thing pending already - k_EResultNoSiteLicensesFound = 109, // No site licenses found - k_EResultWGNetworkSendExceeded = 110, // the WG couldn't send a response because we exceeded max network send size - k_EResultAccountNotFriends = 111, // the user is not mutually friends - k_EResultLimitedUserAccount = 112, // the user is limited - k_EResultCantRemoveItem = 113, // item can't be removed - k_EResultAccountDeleted = 114, // account has been deleted - k_EResultExistingUserCancelledLicense = 115, // A license for this already exists, but cancelled - k_EResultCommunityCooldown = 116, // access is denied because of a community cooldown (probably from support profile data resets) - k_EResultNoLauncherSpecified = 117, // No launcher was specified, but a launcher was needed to choose correct realm for operation. - k_EResultMustAgreeToSSA = 118, // User must agree to china SSA or global SSA before login - k_EResultLauncherMigrated = 119, // The specified launcher type is no longer supported; the user should be directed elsewhere -}; - -// Error codes for use with the voice functions -enum EVoiceResult -{ - k_EVoiceResultOK = 0, - k_EVoiceResultNotInitialized = 1, - k_EVoiceResultNotRecording = 2, - k_EVoiceResultNoData = 3, - k_EVoiceResultBufferTooSmall = 4, - k_EVoiceResultDataCorrupted = 5, - k_EVoiceResultRestricted = 6, - k_EVoiceResultUnsupportedCodec = 7, - k_EVoiceResultReceiverOutOfDate = 8, - k_EVoiceResultReceiverDidNotAnswer = 9, - -}; - -// Result codes to GSHandleClientDeny/Kick -enum EDenyReason -{ - k_EDenyInvalid = 0, - k_EDenyInvalidVersion = 1, - k_EDenyGeneric = 2, - k_EDenyNotLoggedOn = 3, - k_EDenyNoLicense = 4, - k_EDenyCheater = 5, - k_EDenyLoggedInElseWhere = 6, - k_EDenyUnknownText = 7, - k_EDenyIncompatibleAnticheat = 8, - k_EDenyMemoryCorruption = 9, - k_EDenyIncompatibleSoftware = 10, - k_EDenySteamConnectionLost = 11, - k_EDenySteamConnectionError = 12, - k_EDenySteamResponseTimedOut = 13, - k_EDenySteamValidationStalled = 14, - k_EDenySteamOwnerLeftGuestUser = 15, -}; - -// return type of GetAuthSessionTicket -typedef uint32 HAuthTicket; -const HAuthTicket k_HAuthTicketInvalid = 0; - -// results from BeginAuthSession -enum EBeginAuthSessionResult -{ - k_EBeginAuthSessionResultOK = 0, // Ticket is valid for this game and this steamID. - k_EBeginAuthSessionResultInvalidTicket = 1, // Ticket is not valid. - k_EBeginAuthSessionResultDuplicateRequest = 2, // A ticket has already been submitted for this steamID - k_EBeginAuthSessionResultInvalidVersion = 3, // Ticket is from an incompatible interface version - k_EBeginAuthSessionResultGameMismatch = 4, // Ticket is not for this game - k_EBeginAuthSessionResultExpiredTicket = 5, // Ticket has expired -}; - -// Callback values for callback ValidateAuthTicketResponse_t which is a response to BeginAuthSession -enum EAuthSessionResponse -{ - k_EAuthSessionResponseOK = 0, // Steam has verified the user is online, the ticket is valid and ticket has not been reused. - k_EAuthSessionResponseUserNotConnectedToSteam = 1, // The user in question is not connected to steam - k_EAuthSessionResponseNoLicenseOrExpired = 2, // The license has expired. - k_EAuthSessionResponseVACBanned = 3, // The user is VAC banned for this game. - k_EAuthSessionResponseLoggedInElseWhere = 4, // The user account has logged in elsewhere and the session containing the game instance has been disconnected. - k_EAuthSessionResponseVACCheckTimedOut = 5, // VAC has been unable to perform anti-cheat checks on this user - k_EAuthSessionResponseAuthTicketCanceled = 6, // The ticket has been canceled by the issuer - k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed = 7, // This ticket has already been used, it is not valid. - k_EAuthSessionResponseAuthTicketInvalid = 8, // This ticket is not from a user instance currently connected to steam. - k_EAuthSessionResponsePublisherIssuedBan = 9, // The user is banned for this game. The ban came via the web api and not VAC -}; - -// results from UserHasLicenseForApp -enum EUserHasLicenseForAppResult -{ - k_EUserHasLicenseResultHasLicense = 0, // User has a license for specified app - k_EUserHasLicenseResultDoesNotHaveLicense = 1, // User does not have a license for the specified app - k_EUserHasLicenseResultNoAuth = 2, // User has not been authenticated -}; - - -// Steam account types -enum EAccountType -{ - k_EAccountTypeInvalid = 0, - k_EAccountTypeIndividual = 1, // single user account - k_EAccountTypeMultiseat = 2, // multiseat (e.g. cybercafe) account - k_EAccountTypeGameServer = 3, // game server account - k_EAccountTypeAnonGameServer = 4, // anonymous game server account - k_EAccountTypePending = 5, // pending - k_EAccountTypeContentServer = 6, // content server - k_EAccountTypeClan = 7, - k_EAccountTypeChat = 8, - k_EAccountTypeConsoleUser = 9, // Fake SteamID for local PSN account on PS3 or Live account on 360, etc. - k_EAccountTypeAnonUser = 10, - - // Max of 16 items in this field - k_EAccountTypeMax -}; - - - -//----------------------------------------------------------------------------- -// Purpose: -//----------------------------------------------------------------------------- -enum EAppReleaseState -{ - k_EAppReleaseState_Unknown = 0, // unknown, required appinfo or license info is missing - k_EAppReleaseState_Unavailable = 1, // even owners can't see game in library yet, no AppInfo released - k_EAppReleaseState_Prerelease = 2, // app can be purchased and is visible in library, nothing else. Only Common AppInfo section released - k_EAppReleaseState_PreloadOnly = 3, // owners can preload app, but not play it. All AppInfo sections fully released - k_EAppReleaseState_Released = 4, // owners can download and play app. -}; - - -//----------------------------------------------------------------------------- -// Purpose: -//----------------------------------------------------------------------------- -enum EAppOwnershipFlags -{ - k_EAppOwnershipFlags_None = 0x0000, // unknown - k_EAppOwnershipFlags_OwnsLicense = 0x0001, // owns license for this game - k_EAppOwnershipFlags_FreeLicense = 0x0002, // not paid for game - k_EAppOwnershipFlags_RegionRestricted = 0x0004, // owns app, but not allowed to play in current region - k_EAppOwnershipFlags_LowViolence = 0x0008, // only low violence version - k_EAppOwnershipFlags_InvalidPlatform = 0x0010, // app not supported on current platform - k_EAppOwnershipFlags_SharedLicense = 0x0020, // license was granted by authorized local device - k_EAppOwnershipFlags_FreeWeekend = 0x0040, // owned by a free weekend licenses - k_EAppOwnershipFlags_RetailLicense = 0x0080, // has a retail license for game, (CD-Key etc) - k_EAppOwnershipFlags_LicenseLocked = 0x0100, // shared license is locked (in use) by other user - k_EAppOwnershipFlags_LicensePending = 0x0200, // owns app, but transaction is still pending. Can't install or play - k_EAppOwnershipFlags_LicenseExpired = 0x0400, // doesn't own app anymore since license expired - k_EAppOwnershipFlags_LicensePermanent = 0x0800, // permanent license, not borrowed, or guest or freeweekend etc - k_EAppOwnershipFlags_LicenseRecurring = 0x1000, // Recurring license, user is charged periodically - k_EAppOwnershipFlags_LicenseCanceled = 0x2000, // Mark as canceled, but might be still active if recurring - k_EAppOwnershipFlags_AutoGrant = 0x4000, // Ownership is based on any kind of autogrant license - k_EAppOwnershipFlags_PendingGift = 0x8000, // user has pending gift to redeem - k_EAppOwnershipFlags_RentalNotActivated = 0x10000, // Rental hasn't been activated yet - k_EAppOwnershipFlags_Rental = 0x20000, // Is a rental - k_EAppOwnershipFlags_SiteLicense = 0x40000, // Is from a site license - k_EAppOwnershipFlags_LegacyFreeSub = 0x80000, // App only owned through Steam's legacy free sub - k_EAppOwnershipFlags_InvalidOSType = 0x100000, // app not supported on current OS version, used to indicate a game is 32-bit on post-catalina. Currently it's own flag so the library will display a notice. - k_EAppOwnershipFlags_TimedTrial = 0x200000, // App is playable only for limited time -}; - - -//----------------------------------------------------------------------------- -// Purpose: designed as flags to allow filters masks -// NOTE: If you add to this, please update PackageAppType (SteamConfig) as well as populatePackageAppType -//----------------------------------------------------------------------------- -enum EAppType -{ - k_EAppType_Invalid = 0x000, // unknown / invalid - k_EAppType_Game = 0x001, // playable game, default type - k_EAppType_Application = 0x002, // software application - k_EAppType_Tool = 0x004, // SDKs, editors & dedicated servers - k_EAppType_Demo = 0x008, // game demo - k_EAppType_Media_DEPRECATED = 0x010, // legacy - was used for game trailers, which are now just videos on the web - k_EAppType_DLC = 0x020, // down loadable content - k_EAppType_Guide = 0x040, // game guide, PDF etc - k_EAppType_Driver = 0x080, // hardware driver updater (ATI, Razor etc) - k_EAppType_Config = 0x100, // hidden app used to config Steam features (backpack, sales, etc) - k_EAppType_Hardware = 0x200, // a hardware device (Steam Machine, Steam Controller, Steam Link, etc.) - k_EAppType_Franchise = 0x400, // A hub for collections of multiple apps, eg films, series, games - k_EAppType_Video = 0x800, // A video component of either a Film or TVSeries (may be the feature, an episode, preview, making-of, etc) - k_EAppType_Plugin = 0x1000, // Plug-in types for other Apps - k_EAppType_MusicAlbum = 0x2000, // "Video game soundtrack album" - k_EAppType_Series = 0x4000, // Container app for video series - k_EAppType_Comic_UNUSED = 0x8000, // Comic Book - k_EAppType_Beta = 0x10000, // this is a beta version of a game - - k_EAppType_Shortcut = 0x40000000, // just a shortcut, client side only - k_EAppType_DepotOnly_DEPRECATED = 0x80000000, // there shouldn't be any appinfo for depots -}; - - - -//----------------------------------------------------------------------------- -// types of user game stats fields -// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN DATABASE -//----------------------------------------------------------------------------- -enum ESteamUserStatType -{ - k_ESteamUserStatTypeINVALID = 0, - k_ESteamUserStatTypeINT = 1, - k_ESteamUserStatTypeFLOAT = 2, - // Read as FLOAT, set with count / session length - k_ESteamUserStatTypeAVGRATE = 3, - k_ESteamUserStatTypeACHIEVEMENTS = 4, - k_ESteamUserStatTypeGROUPACHIEVEMENTS = 5, - - // max, for sanity checks - k_ESteamUserStatTypeMAX -}; - - -//----------------------------------------------------------------------------- -// Purpose: Chat Entry Types (previously was only friend-to-friend message types) -//----------------------------------------------------------------------------- -enum EChatEntryType -{ - k_EChatEntryTypeInvalid = 0, - k_EChatEntryTypeChatMsg = 1, // Normal text message from another user - k_EChatEntryTypeTyping = 2, // Another user is typing (not used in multi-user chat) - k_EChatEntryTypeInviteGame = 3, // Invite from other user into that users current game - k_EChatEntryTypeEmote = 4, // text emote message (deprecated, should be treated as ChatMsg) - //k_EChatEntryTypeLobbyGameStart = 5, // lobby game is starting (dead - listen for LobbyGameCreated_t callback instead) - k_EChatEntryTypeLeftConversation = 6, // user has left the conversation ( closed chat window ) - // Above are previous FriendMsgType entries, now merged into more generic chat entry types - k_EChatEntryTypeEntered = 7, // user has entered the conversation (used in multi-user chat and group chat) - k_EChatEntryTypeWasKicked = 8, // user was kicked (data: 64-bit steamid of actor performing the kick) - k_EChatEntryTypeWasBanned = 9, // user was banned (data: 64-bit steamid of actor performing the ban) - k_EChatEntryTypeDisconnected = 10, // user disconnected - k_EChatEntryTypeHistoricalChat = 11, // a chat message from user's chat history or offilne message - //k_EChatEntryTypeReserved1 = 12, // No longer used - //k_EChatEntryTypeReserved2 = 13, // No longer used - k_EChatEntryTypeLinkBlocked = 14, // a link was removed by the chat filter. -}; - - -//----------------------------------------------------------------------------- -// Purpose: Chat Room Enter Responses -//----------------------------------------------------------------------------- -enum EChatRoomEnterResponse -{ - k_EChatRoomEnterResponseSuccess = 1, // Success - k_EChatRoomEnterResponseDoesntExist = 2, // Chat doesn't exist (probably closed) - k_EChatRoomEnterResponseNotAllowed = 3, // General Denied - You don't have the permissions needed to join the chat - k_EChatRoomEnterResponseFull = 4, // Chat room has reached its maximum size - k_EChatRoomEnterResponseError = 5, // Unexpected Error - k_EChatRoomEnterResponseBanned = 6, // You are banned from this chat room and may not join - k_EChatRoomEnterResponseLimited = 7, // Joining this chat is not allowed because you are a limited user (no value on account) - k_EChatRoomEnterResponseClanDisabled = 8, // Attempt to join a clan chat when the clan is locked or disabled - k_EChatRoomEnterResponseCommunityBan = 9, // Attempt to join a chat when the user has a community lock on their account - k_EChatRoomEnterResponseMemberBlockedYou = 10, // Join failed - some member in the chat has blocked you from joining - k_EChatRoomEnterResponseYouBlockedMember = 11, // Join failed - you have blocked some member already in the chat - // k_EChatRoomEnterResponseNoRankingDataLobby = 12, // No longer used - // k_EChatRoomEnterResponseNoRankingDataUser = 13, // No longer used - // k_EChatRoomEnterResponseRankOutOfRange = 14, // No longer used - k_EChatRoomEnterResponseRatelimitExceeded = 15, // Join failed - to many join attempts in a very short period of time -}; - - -typedef void (*PFNLegacyKeyRegistration)( const char *pchCDKey, const char *pchInstallPath ); -typedef bool (*PFNLegacyKeyInstalled)(); - -const unsigned int k_unSteamAccountIDMask = 0xFFFFFFFF; -const unsigned int k_unSteamAccountInstanceMask = 0x000FFFFF; -const unsigned int k_unSteamUserDefaultInstance = 1; // fixed instance for all individual users - -// Special flags for Chat accounts - they go in the top 8 bits -// of the steam ID's "instance", leaving 12 for the actual instances -enum EChatSteamIDInstanceFlags -{ - k_EChatAccountInstanceMask = 0x00000FFF, // top 8 bits are flags - - k_EChatInstanceFlagClan = ( k_unSteamAccountInstanceMask + 1 ) >> 1, // top bit - k_EChatInstanceFlagLobby = ( k_unSteamAccountInstanceMask + 1 ) >> 2, // next one down, etc - k_EChatInstanceFlagMMSLobby = ( k_unSteamAccountInstanceMask + 1 ) >> 3, // next one down, etc - - // Max of 8 flags -}; - - -//----------------------------------------------------------------------------- -// Purpose: Marketing message flags that change how a client should handle them -//----------------------------------------------------------------------------- -enum EMarketingMessageFlags -{ - k_EMarketingMessageFlagsNone = 0, - k_EMarketingMessageFlagsHighPriority = 1 << 0, - k_EMarketingMessageFlagsPlatformWindows = 1 << 1, - k_EMarketingMessageFlagsPlatformMac = 1 << 2, - k_EMarketingMessageFlagsPlatformLinux = 1 << 3, - - //aggregate flags - k_EMarketingMessageFlagsPlatformRestrictions = - k_EMarketingMessageFlagsPlatformWindows | - k_EMarketingMessageFlagsPlatformMac | - k_EMarketingMessageFlagsPlatformLinux, -}; - - - -//----------------------------------------------------------------------------- -// Purpose: Possible positions to tell the overlay to show notifications in -//----------------------------------------------------------------------------- -enum ENotificationPosition -{ - k_EPositionTopLeft = 0, - k_EPositionTopRight = 1, - k_EPositionBottomLeft = 2, - k_EPositionBottomRight = 3, -}; - - -//----------------------------------------------------------------------------- -// Purpose: Broadcast upload result details -//----------------------------------------------------------------------------- -enum EBroadcastUploadResult -{ - k_EBroadcastUploadResultNone = 0, // broadcast state unknown - k_EBroadcastUploadResultOK = 1, // broadcast was good, no problems - k_EBroadcastUploadResultInitFailed = 2, // broadcast init failed - k_EBroadcastUploadResultFrameFailed = 3, // broadcast frame upload failed - k_EBroadcastUploadResultTimeout = 4, // broadcast upload timed out - k_EBroadcastUploadResultBandwidthExceeded = 5, // broadcast send too much data - k_EBroadcastUploadResultLowFPS = 6, // broadcast FPS too low - k_EBroadcastUploadResultMissingKeyFrames = 7, // broadcast sending not enough key frames - k_EBroadcastUploadResultNoConnection = 8, // broadcast client failed to connect to relay - k_EBroadcastUploadResultRelayFailed = 9, // relay dropped the upload - k_EBroadcastUploadResultSettingsChanged = 10, // the client changed broadcast settings - k_EBroadcastUploadResultMissingAudio = 11, // client failed to send audio data - k_EBroadcastUploadResultTooFarBehind = 12, // clients was too slow uploading - k_EBroadcastUploadResultTranscodeBehind = 13, // server failed to keep up with transcode - k_EBroadcastUploadResultNotAllowedToPlay = 14, // Broadcast does not have permissions to play game - k_EBroadcastUploadResultBusy = 15, // RTMP host to busy to take new broadcast stream, choose another - k_EBroadcastUploadResultBanned = 16, // Account banned from community broadcast - k_EBroadcastUploadResultAlreadyActive = 17, // We already already have an stream running. - k_EBroadcastUploadResultForcedOff = 18, // We explicitly shutting down a broadcast - k_EBroadcastUploadResultAudioBehind = 19, // Audio stream was too far behind video - k_EBroadcastUploadResultShutdown = 20, // Broadcast Server was shut down - k_EBroadcastUploadResultDisconnect = 21, // broadcast uploader TCP disconnected - k_EBroadcastUploadResultVideoInitFailed = 22, // invalid video settings - k_EBroadcastUploadResultAudioInitFailed = 23, // invalid audio settings -}; - - -//----------------------------------------------------------------------------- -// Purpose: codes for well defined launch options -//----------------------------------------------------------------------------- -enum ELaunchOptionType -{ - k_ELaunchOptionType_None = 0, // unknown what launch option does - k_ELaunchOptionType_Default = 1, // runs the game, app, whatever in default mode - k_ELaunchOptionType_SafeMode = 2, // runs the game in safe mode - k_ELaunchOptionType_Multiplayer = 3, // runs the game in multiplayer mode - k_ELaunchOptionType_Config = 4, // runs config tool for this game - k_ELaunchOptionType_OpenVR = 5, // runs game in VR mode using OpenVR - k_ELaunchOptionType_Server = 6, // runs dedicated server for this game - k_ELaunchOptionType_Editor = 7, // runs game editor - k_ELaunchOptionType_Manual = 8, // shows game manual - k_ELaunchOptionType_Benchmark = 9, // runs game benchmark - k_ELaunchOptionType_Option1 = 10, // generic run option, uses description field for game name - k_ELaunchOptionType_Option2 = 11, // generic run option, uses description field for game name - k_ELaunchOptionType_Option3 = 12, // generic run option, uses description field for game name - k_ELaunchOptionType_OculusVR = 13, // runs game in VR mode using the Oculus SDK - k_ELaunchOptionType_OpenVROverlay = 14, // runs an OpenVR dashboard overlay - k_ELaunchOptionType_OSVR = 15, // runs game in VR mode using the OSVR SDK - - - k_ELaunchOptionType_Dialog = 1000, // show launch options dialog -}; - - -//----------------------------------------------------------------------------- -// Purpose: true if this launch option is any of the vr launching types -//----------------------------------------------------------------------------- -static inline bool BIsVRLaunchOptionType( const ELaunchOptionType eType ) -{ - return eType == k_ELaunchOptionType_OpenVR - || eType == k_ELaunchOptionType_OpenVROverlay - || eType == k_ELaunchOptionType_OculusVR - || eType == k_ELaunchOptionType_OSVR; -} - - -//----------------------------------------------------------------------------- -// Purpose: true if this launch option is any of the vr launching types -//----------------------------------------------------------------------------- -static inline bool BIsLaunchOptionTypeExemptFromGameTheater( const ELaunchOptionType eType ) -{ - return eType == k_ELaunchOptionType_Config - || eType == k_ELaunchOptionType_Server - || eType == k_ELaunchOptionType_Editor - || eType == k_ELaunchOptionType_Manual; -} - - -//----------------------------------------------------------------------------- -// Purpose: code points for VR HMD vendors and models -// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN A DATABASE -//----------------------------------------------------------------------------- -enum EVRHMDType -{ - k_eEVRHMDType_None = -1, // unknown vendor and model - - k_eEVRHMDType_Unknown = 0, // unknown vendor and model - - k_eEVRHMDType_HTC_Dev = 1, // original HTC dev kits - k_eEVRHMDType_HTC_VivePre = 2, // htc vive pre - k_eEVRHMDType_HTC_Vive = 3, // htc vive consumer release - k_eEVRHMDType_HTC_VivePro = 4, // htc vive pro release - k_eEVRHMDType_HTC_ViveCosmos = 5, // HTC Vive Cosmos - - k_eEVRHMDType_HTC_Unknown = 20, // unknown htc hmd - - k_eEVRHMDType_Oculus_DK1 = 21, // Oculus DK1 - k_eEVRHMDType_Oculus_DK2 = 22, // Oculus DK2 - k_eEVRHMDType_Oculus_Rift = 23, // Oculus Rift - k_eEVRHMDType_Oculus_RiftS = 24, // Oculus Rift S - k_eEVRHMDType_Oculus_Quest = 25, // Oculus Quest - - k_eEVRHMDType_Oculus_Unknown = 40, // // Oculus unknown HMD - - k_eEVRHMDType_Acer_Unknown = 50, // Acer unknown HMD - k_eEVRHMDType_Acer_WindowsMR = 51, // Acer QHMD Windows MR headset - - k_eEVRHMDType_Dell_Unknown = 60, // Dell unknown HMD - k_eEVRHMDType_Dell_Visor = 61, // Dell Visor Windows MR headset - - k_eEVRHMDType_Lenovo_Unknown = 70, // Lenovo unknown HMD - k_eEVRHMDType_Lenovo_Explorer = 71, // Lenovo Explorer Windows MR headset - - k_eEVRHMDType_HP_Unknown = 80, // HP unknown HMD - k_eEVRHMDType_HP_WindowsMR = 81, // HP Windows MR headset - k_eEVRHMDType_HP_Reverb = 82, // HP Reverb Windows MR headset - k_eEVRHMDType_HP_ReverbG2 = 1463, // HP Reverb G2 Windows MR headset - - k_eEVRHMDType_Samsung_Unknown = 90, // Samsung unknown HMD - k_eEVRHMDType_Samsung_Odyssey = 91, // Samsung Odyssey Windows MR headset - - k_eEVRHMDType_Unannounced_Unknown = 100, // Unannounced unknown HMD - k_eEVRHMDType_Unannounced_WindowsMR = 101, // Unannounced Windows MR headset - - k_eEVRHMDType_vridge = 110, // VRIDGE tool - - k_eEVRHMDType_Huawei_Unknown = 120, // Huawei unknown HMD - k_eEVRHMDType_Huawei_VR2 = 121, // Huawei VR2 3DOF headset - k_eEVRHMDType_Huawei_EndOfRange = 129, // end of Huawei HMD range - - k_eEVRHmdType_Valve_Unknown = 130, // Valve Unknown HMD - k_eEVRHmdType_Valve_Index = 131, // Valve Index HMD - -}; - - -//----------------------------------------------------------------------------- -// Purpose: true if this is from an Oculus HMD -//----------------------------------------------------------------------------- -static inline bool BIsOculusHMD( EVRHMDType eType ) -{ - return eType == k_eEVRHMDType_Oculus_DK1 || eType == k_eEVRHMDType_Oculus_DK2 || eType == k_eEVRHMDType_Oculus_Rift || eType == k_eEVRHMDType_Oculus_RiftS || eType == k_eEVRHMDType_Oculus_Quest || eType == k_eEVRHMDType_Oculus_Unknown; -} - - -//----------------------------------------------------------------------------- -// Purpose: true if this is from a Windows MR HMD -//----------------------------------------------------------------------------- -static inline bool BIsWindowsMRHeadset( EVRHMDType eType ) -{ - return eType >= k_eEVRHMDType_Acer_WindowsMR && eType <= k_eEVRHMDType_Unannounced_WindowsMR; -} - - -//----------------------------------------------------------------------------- -// Purpose: true if this is from a Hauwei HMD -//----------------------------------------------------------------------------- -static inline bool BIsHuaweiHeadset( EVRHMDType eType ) -{ - return eType >= k_eEVRHMDType_Huawei_Unknown && eType <= k_eEVRHMDType_Huawei_EndOfRange; -} - - -//----------------------------------------------------------------------------- -// Purpose: true if this is from an Vive HMD -//----------------------------------------------------------------------------- -static inline bool BIsViveHMD( EVRHMDType eType ) -{ - return eType == k_eEVRHMDType_HTC_Dev || eType == k_eEVRHMDType_HTC_VivePre || eType == k_eEVRHMDType_HTC_Vive || eType == k_eEVRHMDType_HTC_Unknown || eType == k_eEVRHMDType_HTC_VivePro; -} - - -//----------------------------------------------------------------------------- -// Purpose: Reasons a user may not use the Community Market. -// Used in MarketEligibilityResponse_t. -//----------------------------------------------------------------------------- -enum EMarketNotAllowedReasonFlags -{ - k_EMarketNotAllowedReason_None = 0, - - // A back-end call failed or something that might work again on retry - k_EMarketNotAllowedReason_TemporaryFailure = (1 << 0), - - // Disabled account - k_EMarketNotAllowedReason_AccountDisabled = (1 << 1), - - // Locked account - k_EMarketNotAllowedReason_AccountLockedDown = (1 << 2), - - // Limited account (no purchases) - k_EMarketNotAllowedReason_AccountLimited = (1 << 3), - - // The account is banned from trading items - k_EMarketNotAllowedReason_TradeBanned = (1 << 4), - - // Wallet funds aren't tradable because the user has had no purchase - // activity in the last year or has had no purchases prior to last month - k_EMarketNotAllowedReason_AccountNotTrusted = (1 << 5), - - // The user doesn't have Steam Guard enabled - k_EMarketNotAllowedReason_SteamGuardNotEnabled = (1 << 6), - - // The user has Steam Guard, but it hasn't been enabled for the required - // number of days - k_EMarketNotAllowedReason_SteamGuardOnlyRecentlyEnabled = (1 << 7), - - // The user has recently forgotten their password and reset it - k_EMarketNotAllowedReason_RecentPasswordReset = (1 << 8), - - // The user has recently funded his or her wallet with a new payment method - k_EMarketNotAllowedReason_NewPaymentMethod = (1 << 9), - - // An invalid cookie was sent by the user - k_EMarketNotAllowedReason_InvalidCookie = (1 << 10), - - // The user has Steam Guard, but is using a new computer or web browser - k_EMarketNotAllowedReason_UsingNewDevice = (1 << 11), - - // The user has recently refunded a store purchase by his or herself - k_EMarketNotAllowedReason_RecentSelfRefund = (1 << 12), - - // The user has recently funded his or her wallet with a new payment method that cannot be verified - k_EMarketNotAllowedReason_NewPaymentMethodCannotBeVerified = (1 << 13), - - // Not only is the account not trusted, but they have no recent purchases at all - k_EMarketNotAllowedReason_NoRecentPurchases = (1 << 14), - - // User accepted a wallet gift that was recently purchased - k_EMarketNotAllowedReason_AcceptedWalletGift = (1 << 15), -}; - - -// -// describes XP / progress restrictions to apply for games with duration control / -// anti-indulgence enabled for minor Steam China users. -// -// WARNING: DO NOT RENUMBER -enum EDurationControlProgress -{ - k_EDurationControlProgress_Full = 0, // Full progress - k_EDurationControlProgress_Half = 1, // deprecated - XP or persistent rewards should be halved - k_EDurationControlProgress_None = 2, // deprecated - XP or persistent rewards should be stopped - - k_EDurationControl_ExitSoon_3h = 3, // allowed 3h time since 5h gap/break has elapsed, game should exit - steam will terminate the game soon - k_EDurationControl_ExitSoon_5h = 4, // allowed 5h time in calendar day has elapsed, game should exit - steam will terminate the game soon - k_EDurationControl_ExitSoon_Night = 5, // game running after day period, game should exit - steam will terminate the game soon -}; - - -// -// describes which notification timer has expired, for steam china duration control feature -// -// WARNING: DO NOT RENUMBER -enum EDurationControlNotification -{ - k_EDurationControlNotification_None = 0, // just informing you about progress, no notification to show - k_EDurationControlNotification_1Hour = 1, // "you've been playing for N hours" - - k_EDurationControlNotification_3Hours = 2, // deprecated - "you've been playing for 3 hours; take a break" - k_EDurationControlNotification_HalfProgress = 3,// deprecated - "your XP / progress is half normal" - k_EDurationControlNotification_NoProgress = 4, // deprecated - "your XP / progress is zero" - - k_EDurationControlNotification_ExitSoon_3h = 5, // allowed 3h time since 5h gap/break has elapsed, game should exit - steam will terminate the game soon - k_EDurationControlNotification_ExitSoon_5h = 6, // allowed 5h time in calendar day has elapsed, game should exit - steam will terminate the game soon - k_EDurationControlNotification_ExitSoon_Night = 7,// game running after day period, game should exit - steam will terminate the game soon -}; - - -// -// Specifies a game's online state in relation to duration control -// -enum EDurationControlOnlineState -{ - k_EDurationControlOnlineState_Invalid = 0, // nil value - k_EDurationControlOnlineState_Offline = 1, // currently in offline play - single-player, offline co-op, etc. - k_EDurationControlOnlineState_Online = 2, // currently in online play - k_EDurationControlOnlineState_OnlineHighPri = 3, // currently in online play and requests not to be interrupted -}; - - -#pragma pack( push, 1 ) - -#define CSTEAMID_DEFINED - -// Steam ID structure (64 bits total) -class CSteamID -{ -public: - - //----------------------------------------------------------------------------- - // Purpose: Constructor - //----------------------------------------------------------------------------- - CSteamID() - { - m_steamid.m_comp.m_unAccountID = 0; - m_steamid.m_comp.m_EAccountType = k_EAccountTypeInvalid; - m_steamid.m_comp.m_EUniverse = k_EUniverseInvalid; - m_steamid.m_comp.m_unAccountInstance = 0; - } - - - //----------------------------------------------------------------------------- - // Purpose: Constructor - // Input : unAccountID - 32-bit account ID - // eUniverse - Universe this account belongs to - // eAccountType - Type of account - //----------------------------------------------------------------------------- - CSteamID( uint32 unAccountID, EUniverse eUniverse, EAccountType eAccountType ) - { - Set( unAccountID, eUniverse, eAccountType ); - } - - - //----------------------------------------------------------------------------- - // Purpose: Constructor - // Input : unAccountID - 32-bit account ID - // unAccountInstance - instance - // eUniverse - Universe this account belongs to - // eAccountType - Type of account - //----------------------------------------------------------------------------- - CSteamID( uint32 unAccountID, unsigned int unAccountInstance, EUniverse eUniverse, EAccountType eAccountType ) - { -#if defined(_SERVER) && defined(Assert) - Assert( ( k_EAccountTypeIndividual != eAccountType ) || ( unAccountInstance == k_unSteamUserDefaultInstance ) ); // enforce that for individual accounts, instance is always 1 -#endif // _SERVER - InstancedSet( unAccountID, unAccountInstance, eUniverse, eAccountType ); - } - - - //----------------------------------------------------------------------------- - // Purpose: Constructor - // Input : ulSteamID - 64-bit representation of a Steam ID - // Note: Will not accept a uint32 or int32 as input, as that is a probable mistake. - // See the stubbed out overloads in the private: section for more info. - //----------------------------------------------------------------------------- - CSteamID( uint64 ulSteamID ) - { - SetFromUint64( ulSteamID ); - } -#ifdef INT64_DIFFERENT_FROM_INT64_T - CSteamID( uint64_t ulSteamID ) - { - SetFromUint64( (uint64)ulSteamID ); - } -#endif - - - //----------------------------------------------------------------------------- - // Purpose: Sets parameters for steam ID - // Input : unAccountID - 32-bit account ID - // eUniverse - Universe this account belongs to - // eAccountType - Type of account - //----------------------------------------------------------------------------- - void Set( uint32 unAccountID, EUniverse eUniverse, EAccountType eAccountType ) - { - m_steamid.m_comp.m_unAccountID = unAccountID; - m_steamid.m_comp.m_EUniverse = eUniverse; - m_steamid.m_comp.m_EAccountType = eAccountType; - - if ( eAccountType == k_EAccountTypeClan || eAccountType == k_EAccountTypeGameServer ) - { - m_steamid.m_comp.m_unAccountInstance = 0; - } - else - { - m_steamid.m_comp.m_unAccountInstance = k_unSteamUserDefaultInstance; - } - } - - - //----------------------------------------------------------------------------- - // Purpose: Sets parameters for steam ID - // Input : unAccountID - 32-bit account ID - // eUniverse - Universe this account belongs to - // eAccountType - Type of account - //----------------------------------------------------------------------------- - void InstancedSet( uint32 unAccountID, uint32 unInstance, EUniverse eUniverse, EAccountType eAccountType ) - { - m_steamid.m_comp.m_unAccountID = unAccountID; - m_steamid.m_comp.m_EUniverse = eUniverse; - m_steamid.m_comp.m_EAccountType = eAccountType; - m_steamid.m_comp.m_unAccountInstance = unInstance; - } - - - //----------------------------------------------------------------------------- - // Purpose: Initializes a steam ID from its 52 bit parts and universe/type - // Input : ulIdentifier - 52 bits of goodness - //----------------------------------------------------------------------------- - void FullSet( uint64 ulIdentifier, EUniverse eUniverse, EAccountType eAccountType ) - { - m_steamid.m_comp.m_unAccountID = ( ulIdentifier & k_unSteamAccountIDMask ); // account ID is low 32 bits - m_steamid.m_comp.m_unAccountInstance = ( ( ulIdentifier >> 32 ) & k_unSteamAccountInstanceMask ); // account instance is next 20 bits - m_steamid.m_comp.m_EUniverse = eUniverse; - m_steamid.m_comp.m_EAccountType = eAccountType; - } - - - //----------------------------------------------------------------------------- - // Purpose: Initializes a steam ID from its 64-bit representation - // Input : ulSteamID - 64-bit representation of a Steam ID - //----------------------------------------------------------------------------- - void SetFromUint64( uint64 ulSteamID ) - { - m_steamid.m_unAll64Bits = ulSteamID; - } - - - //----------------------------------------------------------------------------- - // Purpose: Clear all fields, leaving an invalid ID. - //----------------------------------------------------------------------------- - void Clear() - { - m_steamid.m_comp.m_unAccountID = 0; - m_steamid.m_comp.m_EAccountType = k_EAccountTypeInvalid; - m_steamid.m_comp.m_EUniverse = k_EUniverseInvalid; - m_steamid.m_comp.m_unAccountInstance = 0; - } - - -#if defined( INCLUDED_STEAM2_USERID_STRUCTS ) - //----------------------------------------------------------------------------- - // Purpose: Initializes a steam ID from a Steam2 ID structure - // Input: pTSteamGlobalUserID - Steam2 ID to convert - // eUniverse - universe this ID belongs to - //----------------------------------------------------------------------------- - void SetFromSteam2( TSteamGlobalUserID *pTSteamGlobalUserID, EUniverse eUniverse ) - { - m_steamid.m_comp.m_unAccountID = pTSteamGlobalUserID->m_SteamLocalUserID.Split.Low32bits * 2 + - pTSteamGlobalUserID->m_SteamLocalUserID.Split.High32bits; - m_steamid.m_comp.m_EUniverse = eUniverse; // set the universe - m_steamid.m_comp.m_EAccountType = k_EAccountTypeIndividual; // Steam 2 accounts always map to account type of individual - m_steamid.m_comp.m_unAccountInstance = k_unSteamUserDefaultInstance; // Steam2 only knew one instance - } - - //----------------------------------------------------------------------------- - // Purpose: Fills out a Steam2 ID structure - // Input: pTSteamGlobalUserID - Steam2 ID to write to - //----------------------------------------------------------------------------- - void ConvertToSteam2( TSteamGlobalUserID *pTSteamGlobalUserID ) const - { - // only individual accounts have any meaning in Steam 2, only they can be mapped - // Assert( m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual ); - - pTSteamGlobalUserID->m_SteamInstanceID = 0; - pTSteamGlobalUserID->m_SteamLocalUserID.Split.High32bits = m_steamid.m_comp.m_unAccountID % 2; - pTSteamGlobalUserID->m_SteamLocalUserID.Split.Low32bits = m_steamid.m_comp.m_unAccountID / 2; - } -#endif // defined( INCLUDED_STEAM_COMMON_STEAMCOMMON_H ) - - //----------------------------------------------------------------------------- - // Purpose: Converts steam ID to its 64-bit representation - // Output : 64-bit representation of a Steam ID - //----------------------------------------------------------------------------- - uint64 ConvertToUint64() const - { - return m_steamid.m_unAll64Bits; - } - - - //----------------------------------------------------------------------------- - // Purpose: Converts the static parts of a steam ID to a 64-bit representation. - // For multiseat accounts, all instances of that account will have the - // same static account key, so they can be grouped together by the static - // account key. - // Output : 64-bit static account key - //----------------------------------------------------------------------------- - uint64 GetStaticAccountKey() const - { - // note we do NOT include the account instance (which is a dynamic property) in the static account key - return (uint64) ( ( ( (uint64) m_steamid.m_comp.m_EUniverse ) << 56 ) + ((uint64) m_steamid.m_comp.m_EAccountType << 52 ) + m_steamid.m_comp.m_unAccountID ); - } - - - //----------------------------------------------------------------------------- - // Purpose: create an anonymous game server login to be filled in by the AM - //----------------------------------------------------------------------------- - void CreateBlankAnonLogon( EUniverse eUniverse ) - { - m_steamid.m_comp.m_unAccountID = 0; - m_steamid.m_comp.m_EAccountType = k_EAccountTypeAnonGameServer; - m_steamid.m_comp.m_EUniverse = eUniverse; - m_steamid.m_comp.m_unAccountInstance = 0; - } - - - //----------------------------------------------------------------------------- - // Purpose: create an anonymous game server login to be filled in by the AM - //----------------------------------------------------------------------------- - void CreateBlankAnonUserLogon( EUniverse eUniverse ) - { - m_steamid.m_comp.m_unAccountID = 0; - m_steamid.m_comp.m_EAccountType = k_EAccountTypeAnonUser; - m_steamid.m_comp.m_EUniverse = eUniverse; - m_steamid.m_comp.m_unAccountInstance = 0; - } - - //----------------------------------------------------------------------------- - // Purpose: Is this an anonymous game server login that will be filled in? - //----------------------------------------------------------------------------- - bool BBlankAnonAccount() const - { - return m_steamid.m_comp.m_unAccountID == 0 && BAnonAccount() && m_steamid.m_comp.m_unAccountInstance == 0; - } - - //----------------------------------------------------------------------------- - // Purpose: Is this a game server account id? (Either persistent or anonymous) - //----------------------------------------------------------------------------- - bool BGameServerAccount() const - { - return m_steamid.m_comp.m_EAccountType == k_EAccountTypeGameServer || m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonGameServer; - } - - //----------------------------------------------------------------------------- - // Purpose: Is this a persistent (not anonymous) game server account id? - //----------------------------------------------------------------------------- - bool BPersistentGameServerAccount() const - { - return m_steamid.m_comp.m_EAccountType == k_EAccountTypeGameServer; - } - - //----------------------------------------------------------------------------- - // Purpose: Is this an anonymous game server account id? - //----------------------------------------------------------------------------- - bool BAnonGameServerAccount() const - { - return m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonGameServer; - } - - //----------------------------------------------------------------------------- - // Purpose: Is this a content server account id? - //----------------------------------------------------------------------------- - bool BContentServerAccount() const - { - return m_steamid.m_comp.m_EAccountType == k_EAccountTypeContentServer; - } - - - //----------------------------------------------------------------------------- - // Purpose: Is this a clan account id? - //----------------------------------------------------------------------------- - bool BClanAccount() const - { - return m_steamid.m_comp.m_EAccountType == k_EAccountTypeClan; - } - - - //----------------------------------------------------------------------------- - // Purpose: Is this a chat account id? - //----------------------------------------------------------------------------- - bool BChatAccount() const - { - return m_steamid.m_comp.m_EAccountType == k_EAccountTypeChat; - } - - //----------------------------------------------------------------------------- - // Purpose: Is this a chat account id? - //----------------------------------------------------------------------------- - bool IsLobby() const - { - return ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeChat ) - && ( m_steamid.m_comp.m_unAccountInstance & k_EChatInstanceFlagLobby ); - } - - - //----------------------------------------------------------------------------- - // Purpose: Is this an individual user account id? - //----------------------------------------------------------------------------- - bool BIndividualAccount() const - { - return m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual || m_steamid.m_comp.m_EAccountType == k_EAccountTypeConsoleUser; - } - - - //----------------------------------------------------------------------------- - // Purpose: Is this an anonymous account? - //----------------------------------------------------------------------------- - bool BAnonAccount() const - { - return m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonUser || m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonGameServer; - } - - //----------------------------------------------------------------------------- - // Purpose: Is this an anonymous user account? ( used to create an account or reset a password ) - //----------------------------------------------------------------------------- - bool BAnonUserAccount() const - { - return m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonUser; - } - - //----------------------------------------------------------------------------- - // Purpose: Is this a faked up Steam ID for a PSN friend account? - //----------------------------------------------------------------------------- - bool BConsoleUserAccount() const - { - return m_steamid.m_comp.m_EAccountType == k_EAccountTypeConsoleUser; - } - - // simple accessors - void SetAccountID( uint32 unAccountID ) { m_steamid.m_comp.m_unAccountID = unAccountID; } - void SetAccountInstance( uint32 unInstance ){ m_steamid.m_comp.m_unAccountInstance = unInstance; } - - AccountID_t GetAccountID() const { return m_steamid.m_comp.m_unAccountID; } - uint32 GetUnAccountInstance() const { return m_steamid.m_comp.m_unAccountInstance; } - EAccountType GetEAccountType() const { return ( EAccountType ) m_steamid.m_comp.m_EAccountType; } - EUniverse GetEUniverse() const { return m_steamid.m_comp.m_EUniverse; } - void SetEUniverse( EUniverse eUniverse ) { m_steamid.m_comp.m_EUniverse = eUniverse; } - bool IsValid() const; - - // this set of functions is hidden, will be moved out of class - explicit CSteamID( const char *pchSteamID, EUniverse eDefaultUniverse = k_EUniverseInvalid ); - const char * Render() const; // renders this steam ID to string - static const char * Render( uint64 ulSteamID ); // static method to render a uint64 representation of a steam ID to a string - - void SetFromString( const char *pchSteamID, EUniverse eDefaultUniverse ); - // SetFromString allows many partially-correct strings, constraining how - // we might be able to change things in the future. - // SetFromStringStrict requires the exact string forms that we support - // and is preferred when the caller knows it's safe to be strict. - // Returns whether the string parsed correctly. - bool SetFromStringStrict( const char *pchSteamID, EUniverse eDefaultUniverse ); - bool SetFromSteam2String( const char *pchSteam2ID, EUniverse eUniverse ); - - inline bool operator==( const CSteamID &val ) const { return m_steamid.m_unAll64Bits == val.m_steamid.m_unAll64Bits; } - inline bool operator!=( const CSteamID &val ) const { return !operator==( val ); } - inline bool operator<( const CSteamID &val ) const { return m_steamid.m_unAll64Bits < val.m_steamid.m_unAll64Bits; } - inline bool operator>( const CSteamID &val ) const { return m_steamid.m_unAll64Bits > val.m_steamid.m_unAll64Bits; } - - // DEBUG function - bool BValidExternalSteamID() const; - -private: - // These are defined here to prevent accidental implicit conversion of a u32AccountID to a CSteamID. - // If you get a compiler error about an ambiguous constructor/function then it may be because you're - // passing a 32-bit int to a function that takes a CSteamID. You should explicitly create the SteamID - // using the correct Universe and account Type/Instance values. - CSteamID( uint32 ); - CSteamID( int32 ); - - // 64 bits total - union SteamID_t - { - struct SteamIDComponent_t - { -#ifdef VALVE_BIG_ENDIAN - EUniverse m_EUniverse : 8; // universe this account belongs to - unsigned int m_EAccountType : 4; // type of account - can't show as EAccountType, due to signed / unsigned difference - unsigned int m_unAccountInstance : 20; // dynamic instance ID - uint32 m_unAccountID : 32; // unique account identifier -#else - uint32 m_unAccountID : 32; // unique account identifier - unsigned int m_unAccountInstance : 20; // dynamic instance ID - unsigned int m_EAccountType : 4; // type of account - can't show as EAccountType, due to signed / unsigned difference - EUniverse m_EUniverse : 8; // universe this account belongs to -#endif - } m_comp; - - uint64 m_unAll64Bits; - } m_steamid; -}; - -inline bool CSteamID::IsValid() const -{ - if ( m_steamid.m_comp.m_EAccountType <= k_EAccountTypeInvalid || m_steamid.m_comp.m_EAccountType >= k_EAccountTypeMax ) - return false; - - if ( m_steamid.m_comp.m_EUniverse <= k_EUniverseInvalid || m_steamid.m_comp.m_EUniverse >= k_EUniverseMax ) - return false; - - if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual ) - { - if ( m_steamid.m_comp.m_unAccountID == 0 || m_steamid.m_comp.m_unAccountInstance != k_unSteamUserDefaultInstance ) - return false; - } - - if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeClan ) - { - if ( m_steamid.m_comp.m_unAccountID == 0 || m_steamid.m_comp.m_unAccountInstance != 0 ) - return false; - } - - if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeGameServer ) - { - if ( m_steamid.m_comp.m_unAccountID == 0 ) - return false; - // Any limit on instances? We use them for local users and bots - } - return true; -} - -// generic invalid CSteamID -#define k_steamIDNil CSteamID() - -// This steamID comes from a user game connection to an out of date GS that hasnt implemented the protocol -// to provide its steamID -#define k_steamIDOutofDateGS CSteamID( 0, 0, k_EUniverseInvalid, k_EAccountTypeInvalid ) -// This steamID comes from a user game connection to an sv_lan GS -#define k_steamIDLanModeGS CSteamID( 0, 0, k_EUniversePublic, k_EAccountTypeInvalid ) -// This steamID can come from a user game connection to a GS that has just booted but hasnt yet even initialized -// its steam3 component and started logging on. -#define k_steamIDNotInitYetGS CSteamID( 1, 0, k_EUniverseInvalid, k_EAccountTypeInvalid ) -// This steamID can come from a user game connection to a GS that isn't using the steam authentication system but still -// wants to support the "Join Game" option in the friends list -#define k_steamIDNonSteamGS CSteamID( 2, 0, k_EUniverseInvalid, k_EAccountTypeInvalid ) - - -#ifdef STEAM -// Returns the matching chat steamID, with the default instance of 0 -// If the steamID passed in is already of type k_EAccountTypeChat it will be returned with the same instance -CSteamID ChatIDFromSteamID( const CSteamID &steamID ); -// Returns the matching clan steamID, with the default instance of 0 -// If the steamID passed in is already of type k_EAccountTypeClan it will be returned with the same instance -CSteamID ClanIDFromSteamID( const CSteamID &steamID ); -// Asserts steamID type before conversion -CSteamID ChatIDFromClanID( const CSteamID &steamIDClan ); -// Asserts steamID type before conversion -CSteamID ClanIDFromChatID( const CSteamID &steamIDChat ); - -#endif // _STEAM - - -//----------------------------------------------------------------------------- -// Purpose: encapsulates an appID/modID pair -//----------------------------------------------------------------------------- -class CGameID -{ -public: - - CGameID() - { - m_gameID.m_nType = k_EGameIDTypeApp; - m_gameID.m_nAppID = k_uAppIdInvalid; - m_gameID.m_nModID = 0; - } - - explicit CGameID( uint64 ulGameID ) - { - m_ulGameID = ulGameID; - } -#ifdef INT64_DIFFERENT_FROM_INT64_T - CGameID( uint64_t ulGameID ) - { - m_ulGameID = (uint64)ulGameID; - } -#endif - - explicit CGameID( int32 nAppID ) - { - m_ulGameID = 0; - m_gameID.m_nAppID = nAppID; - } - - explicit CGameID( uint32 nAppID ) - { - m_ulGameID = 0; - m_gameID.m_nAppID = nAppID; - } - - CGameID( uint32 nAppID, uint32 nModID ) - { - m_ulGameID = 0; - m_gameID.m_nAppID = nAppID; - m_gameID.m_nModID = nModID; - m_gameID.m_nType = k_EGameIDTypeGameMod; - } - - CGameID( const CGameID &that ) - { - m_ulGameID = that.m_ulGameID; - } - - CGameID& operator=( const CGameID & that ) - { - m_ulGameID = that.m_ulGameID; - return *this; - } - - // Hidden functions used only by Steam - explicit CGameID( const char *pchGameID ); - const char *Render() const; // render this Game ID to string - static const char *Render( uint64 ulGameID ); // static method to render a uint64 representation of a Game ID to a string - - // must include checksum_crc.h first to get this functionality -#if defined( CHECKSUM_CRC_H ) - CGameID( uint32 nAppID, const char *pchModPath ) - { - m_ulGameID = 0; - m_gameID.m_nAppID = nAppID; - m_gameID.m_nType = k_EGameIDTypeGameMod; - - char rgchModDir[MAX_PATH]; - V_FileBase( pchModPath, rgchModDir, sizeof( rgchModDir ) ); - CRC32_t crc32; - CRC32_Init( &crc32 ); - CRC32_ProcessBuffer( &crc32, rgchModDir, V_strlen( rgchModDir ) ); - CRC32_Final( &crc32 ); - - // set the high-bit on the mod-id - // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique - // replacement for appID's - m_gameID.m_nModID = crc32 | (0x80000000); - } - - CGameID( const char *pchExePath, const char *pchAppName ) - { - m_ulGameID = 0; - m_gameID.m_nAppID = k_uAppIdInvalid; - m_gameID.m_nType = k_EGameIDTypeShortcut; - - CRC32_t crc32; - CRC32_Init( &crc32 ); - if ( pchExePath ) - CRC32_ProcessBuffer( &crc32, pchExePath, V_strlen( pchExePath ) ); - if ( pchAppName ) - CRC32_ProcessBuffer( &crc32, pchAppName, V_strlen( pchAppName ) ); - CRC32_Final( &crc32 ); - - // set the high-bit on the mod-id - // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique - // replacement for appID's - m_gameID.m_nModID = crc32 | (0x80000000); - } - -#if defined( VSTFILEID_H ) - - CGameID( VstFileID vstFileID ) - { - m_ulGameID = 0; - m_gameID.m_nAppID = k_uAppIdInvalid; - m_gameID.m_nType = k_EGameIDTypeP2P; - - CRC32_t crc32; - CRC32_Init( &crc32 ); - const char *pchFileId = vstFileID.Render(); - CRC32_ProcessBuffer( &crc32, pchFileId, V_strlen( pchFileId ) ); - CRC32_Final( &crc32 ); - - // set the high-bit on the mod-id - // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique - // replacement for appID's - m_gameID.m_nModID = crc32 | (0x80000000); - } - -#endif /* VSTFILEID_H */ - -#endif /* CHECKSUM_CRC_H */ - - - uint64 ToUint64() const - { - return m_ulGameID; - } - - uint64 *GetUint64Ptr() - { - return &m_ulGameID; - } - - void Set( uint64 ulGameID ) - { - m_ulGameID = ulGameID; - } - - bool IsMod() const - { - return ( m_gameID.m_nType == k_EGameIDTypeGameMod ); - } - - bool IsShortcut() const - { - return ( m_gameID.m_nType == k_EGameIDTypeShortcut ); - } - - bool IsP2PFile() const - { - return ( m_gameID.m_nType == k_EGameIDTypeP2P ); - } - - bool IsSteamApp() const - { - return ( m_gameID.m_nType == k_EGameIDTypeApp ); - } - - uint32 ModID() const - { - return m_gameID.m_nModID; - } - - uint32 AppID() const - { - return m_gameID.m_nAppID; - } - - bool operator == ( const CGameID &rhs ) const - { - return m_ulGameID == rhs.m_ulGameID; - } - - bool operator != ( const CGameID &rhs ) const - { - return !(*this == rhs); - } - - bool operator < ( const CGameID &rhs ) const - { - return ( m_ulGameID < rhs.m_ulGameID ); - } - - bool IsValid() const - { - // each type has it's own invalid fixed point: - switch( m_gameID.m_nType ) - { - case k_EGameIDTypeApp: - return m_gameID.m_nAppID != k_uAppIdInvalid; - - case k_EGameIDTypeGameMod: - return m_gameID.m_nAppID != k_uAppIdInvalid && m_gameID.m_nModID & 0x80000000; - - case k_EGameIDTypeShortcut: - return (m_gameID.m_nModID & 0x80000000) != 0; - - case k_EGameIDTypeP2P: - return m_gameID.m_nAppID == k_uAppIdInvalid && m_gameID.m_nModID & 0x80000000; - - default: - return false; - } - - } - - void Reset() - { - m_ulGameID = 0; - } - - - -private: - - enum EGameIDType - { - k_EGameIDTypeApp = 0, - k_EGameIDTypeGameMod = 1, - k_EGameIDTypeShortcut = 2, - k_EGameIDTypeP2P = 3, - }; - - struct GameID_t - { -#ifdef VALVE_BIG_ENDIAN - unsigned int m_nModID : 32; - unsigned int m_nType : 8; - unsigned int m_nAppID : 24; -#else - unsigned int m_nAppID : 24; - unsigned int m_nType : 8; - unsigned int m_nModID : 32; -#endif - }; - - union - { - uint64 m_ulGameID; - GameID_t m_gameID; - }; -}; - -#pragma pack( pop ) - -const int k_cchGameExtraInfoMax = 64; - - -//----------------------------------------------------------------------------- -// Constants used for query ports. -//----------------------------------------------------------------------------- - -#define QUERY_PORT_NOT_INITIALIZED 0xFFFF // We haven't asked the GS for this query port's actual value yet. -#define QUERY_PORT_ERROR 0xFFFE // We were unable to get the query port for this server. - - -//----------------------------------------------------------------------------- -// Purpose: Passed as argument to SteamAPI_UseBreakpadCrashHandler to enable optional callback -// just before minidump file is captured after a crash has occurred. (Allows app to append additional comment data to the dump, etc.) -//----------------------------------------------------------------------------- -typedef void (*PFNPreMinidumpCallback)(void *context); - -//----------------------------------------------------------------------------- -// Purpose: Used by ICrashHandler interfaces to reference particular installed crash handlers -//----------------------------------------------------------------------------- -typedef void *BREAKPAD_HANDLE; -#define BREAKPAD_INVALID_HANDLE (BREAKPAD_HANDLE)0 - -enum EGameSearchErrorCode_t -{ - k_EGameSearchErrorCode_OK = 1, - k_EGameSearchErrorCode_Failed_Search_Already_In_Progress = 2, - k_EGameSearchErrorCode_Failed_No_Search_In_Progress = 3, - k_EGameSearchErrorCode_Failed_Not_Lobby_Leader = 4, // if not the lobby leader can not call SearchForGameWithLobby - k_EGameSearchErrorCode_Failed_No_Host_Available = 5, // no host is available that matches those search params - k_EGameSearchErrorCode_Failed_Search_Params_Invalid = 6, // search params are invalid - k_EGameSearchErrorCode_Failed_Offline = 7, // offline, could not communicate with server - k_EGameSearchErrorCode_Failed_NotAuthorized = 8, // either the user or the application does not have priveledges to do this - k_EGameSearchErrorCode_Failed_Unknown_Error = 9, // unknown error -}; - -enum EPlayerResult_t -{ - k_EPlayerResultFailedToConnect = 1, // failed to connect after confirming - k_EPlayerResultAbandoned = 2, // quit game without completing it - k_EPlayerResultKicked = 3, // kicked by other players/moderator/server rules - k_EPlayerResultIncomplete = 4, // player stayed to end but game did not conclude successfully ( nofault to player ) - k_EPlayerResultCompleted = 5, // player completed game -}; - - -enum ESteamIPv6ConnectivityProtocol -{ - k_ESteamIPv6ConnectivityProtocol_Invalid = 0, - k_ESteamIPv6ConnectivityProtocol_HTTP = 1, // because a proxy may make this different than other protocols - k_ESteamIPv6ConnectivityProtocol_UDP = 2, // test UDP connectivity. Uses a port that is commonly needed for other Steam stuff. If UDP works, TCP probably works. -}; - -// For the above transport protocol, what do we think the local machine's connectivity to the internet over ipv6 is like -enum ESteamIPv6ConnectivityState -{ - k_ESteamIPv6ConnectivityState_Unknown = 0, // We haven't run a test yet - k_ESteamIPv6ConnectivityState_Good = 1, // We have recently been able to make a request on ipv6 for the given protocol - k_ESteamIPv6ConnectivityState_Bad = 2, // We failed to make a request, either because this machine has no ipv6 address assigned, or it has no upstream connectivity -}; - - -// Define compile time assert macros to let us validate the structure sizes. -#define VALVE_COMPILE_TIME_ASSERT( pred ) typedef char compile_time_assert_type[(pred) ? 1 : -1]; - -#if defined(__linux__) || defined(__APPLE__) -// The 32-bit version of gcc has the alignment requirement for uint64 and double set to -// 4 meaning that even with #pragma pack(8) these types will only be four-byte aligned. -// The 64-bit version of gcc has the alignment requirement for these types set to -// 8 meaning that unless we use #pragma pack(4) our structures will get bigger. -// The 64-bit structure packing has to match the 32-bit structure packing for each platform. -#define VALVE_CALLBACK_PACK_SMALL -#else -#define VALVE_CALLBACK_PACK_LARGE -#endif - -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error ??? -#endif - -typedef struct ValvePackingSentinel_t -{ - uint32 m_u32; - uint64 m_u64; - uint16 m_u16; - double m_d; -} ValvePackingSentinel_t; - -#pragma pack( pop ) - - -#if defined(VALVE_CALLBACK_PACK_SMALL) -VALVE_COMPILE_TIME_ASSERT( sizeof(ValvePackingSentinel_t) == 24 ) -#elif defined(VALVE_CALLBACK_PACK_LARGE) -VALVE_COMPILE_TIME_ASSERT( sizeof(ValvePackingSentinel_t) == 32 ) -#else -#error ??? -#endif - -#endif // STEAMCLIENTPUBLIC_H +//========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMCLIENTPUBLIC_H +#define STEAMCLIENTPUBLIC_H +#ifdef _WIN32 +#pragma once +#endif +//lint -save -e1931 -e1927 -e1924 -e613 -e726 + +// This header file defines the interface between the calling application and the code that +// knows how to communicate with the connection manager (CM) from the Steam service + +// This header file is intended to be portable; ideally this 1 header file plus a lib or dll +// is all you need to integrate the client library into some other tree. So please avoid +// including or requiring other header files if possible. This header should only describe the +// interface layer, no need to include anything about the implementation. + +#include "steamtypes.h" +#include "steamuniverse.h" + +// General result codes +enum EResult +{ + k_EResultNone = 0, // no result + k_EResultOK = 1, // success + k_EResultFail = 2, // generic failure + k_EResultNoConnection = 3, // no/failed network connection +// k_EResultNoConnectionRetry = 4, // OBSOLETE - removed + k_EResultInvalidPassword = 5, // password/ticket is invalid + k_EResultLoggedInElsewhere = 6, // same user logged in elsewhere + k_EResultInvalidProtocolVer = 7, // protocol version is incorrect + k_EResultInvalidParam = 8, // a parameter is incorrect + k_EResultFileNotFound = 9, // file was not found + k_EResultBusy = 10, // called method busy - action not taken + k_EResultInvalidState = 11, // called object was in an invalid state + k_EResultInvalidName = 12, // name is invalid + k_EResultInvalidEmail = 13, // email is invalid + k_EResultDuplicateName = 14, // name is not unique + k_EResultAccessDenied = 15, // access is denied + k_EResultTimeout = 16, // operation timed out + k_EResultBanned = 17, // VAC2 banned + k_EResultAccountNotFound = 18, // account not found + k_EResultInvalidSteamID = 19, // steamID is invalid + k_EResultServiceUnavailable = 20, // The requested service is currently unavailable + k_EResultNotLoggedOn = 21, // The user is not logged on + k_EResultPending = 22, // Request is pending (may be in process, or waiting on third party) + k_EResultEncryptionFailure = 23, // Encryption or Decryption failed + k_EResultInsufficientPrivilege = 24, // Insufficient privilege + k_EResultLimitExceeded = 25, // Too much of a good thing + k_EResultRevoked = 26, // Access has been revoked (used for revoked guest passes) + k_EResultExpired = 27, // License/Guest pass the user is trying to access is expired + k_EResultAlreadyRedeemed = 28, // Guest pass has already been redeemed by account, cannot be acked again + k_EResultDuplicateRequest = 29, // The request is a duplicate and the action has already occurred in the past, ignored this time + k_EResultAlreadyOwned = 30, // All the games in this guest pass redemption request are already owned by the user + k_EResultIPNotFound = 31, // IP address not found + k_EResultPersistFailed = 32, // failed to write change to the data store + k_EResultLockingFailed = 33, // failed to acquire access lock for this operation + k_EResultLogonSessionReplaced = 34, + k_EResultConnectFailed = 35, + k_EResultHandshakeFailed = 36, + k_EResultIOFailure = 37, + k_EResultRemoteDisconnect = 38, + k_EResultShoppingCartNotFound = 39, // failed to find the shopping cart requested + k_EResultBlocked = 40, // a user didn't allow it + k_EResultIgnored = 41, // target is ignoring sender + k_EResultNoMatch = 42, // nothing matching the request found + k_EResultAccountDisabled = 43, + k_EResultServiceReadOnly = 44, // this service is not accepting content changes right now + k_EResultAccountNotFeatured = 45, // account doesn't have value, so this feature isn't available + k_EResultAdministratorOK = 46, // allowed to take this action, but only because requester is admin + k_EResultContentVersion = 47, // A Version mismatch in content transmitted within the Steam protocol. + k_EResultTryAnotherCM = 48, // The current CM can't service the user making a request, user should try another. + k_EResultPasswordRequiredToKickSession = 49,// You are already logged in elsewhere, this cached credential login has failed. + k_EResultAlreadyLoggedInElsewhere = 50, // You are already logged in elsewhere, you must wait + k_EResultSuspended = 51, // Long running operation (content download) suspended/paused + k_EResultCancelled = 52, // Operation canceled (typically by user: content download) + k_EResultDataCorruption = 53, // Operation canceled because data is ill formed or unrecoverable + k_EResultDiskFull = 54, // Operation canceled - not enough disk space. + k_EResultRemoteCallFailed = 55, // an remote call or IPC call failed + k_EResultPasswordUnset = 56, // Password could not be verified as it's unset server side + k_EResultExternalAccountUnlinked = 57, // External account (PSN, Facebook...) is not linked to a Steam account + k_EResultPSNTicketInvalid = 58, // PSN ticket was invalid + k_EResultExternalAccountAlreadyLinked = 59, // External account (PSN, Facebook...) is already linked to some other account, must explicitly request to replace/delete the link first + k_EResultRemoteFileConflict = 60, // The sync cannot resume due to a conflict between the local and remote files + k_EResultIllegalPassword = 61, // The requested new password is not legal + k_EResultSameAsPreviousValue = 62, // new value is the same as the old one ( secret question and answer ) + k_EResultAccountLogonDenied = 63, // account login denied due to 2nd factor authentication failure + k_EResultCannotUseOldPassword = 64, // The requested new password is not legal + k_EResultInvalidLoginAuthCode = 65, // account login denied due to auth code invalid + k_EResultAccountLogonDeniedNoMail = 66, // account login denied due to 2nd factor auth failure - and no mail has been sent + k_EResultHardwareNotCapableOfIPT = 67, // + k_EResultIPTInitError = 68, // + k_EResultParentalControlRestricted = 69, // operation failed due to parental control restrictions for current user + k_EResultFacebookQueryError = 70, // Facebook query returned an error + k_EResultExpiredLoginAuthCode = 71, // account login denied due to auth code expired + k_EResultIPLoginRestrictionFailed = 72, + k_EResultAccountLockedDown = 73, + k_EResultAccountLogonDeniedVerifiedEmailRequired = 74, + k_EResultNoMatchingURL = 75, + k_EResultBadResponse = 76, // parse failure, missing field, etc. + k_EResultRequirePasswordReEntry = 77, // The user cannot complete the action until they re-enter their password + k_EResultValueOutOfRange = 78, // the value entered is outside the acceptable range + k_EResultUnexpectedError = 79, // something happened that we didn't expect to ever happen + k_EResultDisabled = 80, // The requested service has been configured to be unavailable + k_EResultInvalidCEGSubmission = 81, // The set of files submitted to the CEG server are not valid ! + k_EResultRestrictedDevice = 82, // The device being used is not allowed to perform this action + k_EResultRegionLocked = 83, // The action could not be complete because it is region restricted + k_EResultRateLimitExceeded = 84, // Temporary rate limit exceeded, try again later, different from k_EResultLimitExceeded which may be permanent + k_EResultAccountLoginDeniedNeedTwoFactor = 85, // Need two-factor code to login + k_EResultItemDeleted = 86, // The thing we're trying to access has been deleted + k_EResultAccountLoginDeniedThrottle = 87, // login attempt failed, try to throttle response to possible attacker + k_EResultTwoFactorCodeMismatch = 88, // two factor code mismatch + k_EResultTwoFactorActivationCodeMismatch = 89, // activation code for two-factor didn't match + k_EResultAccountAssociatedToMultiplePartners = 90, // account has been associated with multiple partners + k_EResultNotModified = 91, // data not modified + k_EResultNoMobileDevice = 92, // the account does not have a mobile device associated with it + k_EResultTimeNotSynced = 93, // the time presented is out of range or tolerance + k_EResultSmsCodeFailed = 94, // SMS code failure (no match, none pending, etc.) + k_EResultAccountLimitExceeded = 95, // Too many accounts access this resource + k_EResultAccountActivityLimitExceeded = 96, // Too many changes to this account + k_EResultPhoneActivityLimitExceeded = 97, // Too many changes to this phone + k_EResultRefundToWallet = 98, // Cannot refund to payment method, must use wallet + k_EResultEmailSendFailure = 99, // Cannot send an email + k_EResultNotSettled = 100, // Can't perform operation till payment has settled + k_EResultNeedCaptcha = 101, // Needs to provide a valid captcha + k_EResultGSLTDenied = 102, // a game server login token owned by this token's owner has been banned + k_EResultGSOwnerDenied = 103, // game server owner is denied for other reason (account lock, community ban, vac ban, missing phone) + k_EResultInvalidItemType = 104, // the type of thing we were requested to act on is invalid + k_EResultIPBanned = 105, // the ip address has been banned from taking this action + k_EResultGSLTExpired = 106, // this token has expired from disuse; can be reset for use + k_EResultInsufficientFunds = 107, // user doesn't have enough wallet funds to complete the action + k_EResultTooManyPending = 108, // There are too many of this thing pending already + k_EResultNoSiteLicensesFound = 109, // No site licenses found + k_EResultWGNetworkSendExceeded = 110, // the WG couldn't send a response because we exceeded max network send size + k_EResultAccountNotFriends = 111, // the user is not mutually friends + k_EResultLimitedUserAccount = 112, // the user is limited + k_EResultCantRemoveItem = 113, // item can't be removed + k_EResultAccountDeleted = 114, // account has been deleted + k_EResultExistingUserCancelledLicense = 115, // A license for this already exists, but cancelled + k_EResultCommunityCooldown = 116, // access is denied because of a community cooldown (probably from support profile data resets) + k_EResultNoLauncherSpecified = 117, // No launcher was specified, but a launcher was needed to choose correct realm for operation. + k_EResultMustAgreeToSSA = 118, // User must agree to china SSA or global SSA before login + k_EResultLauncherMigrated = 119, // The specified launcher type is no longer supported; the user should be directed elsewhere +}; + +// Error codes for use with the voice functions +enum EVoiceResult +{ + k_EVoiceResultOK = 0, + k_EVoiceResultNotInitialized = 1, + k_EVoiceResultNotRecording = 2, + k_EVoiceResultNoData = 3, + k_EVoiceResultBufferTooSmall = 4, + k_EVoiceResultDataCorrupted = 5, + k_EVoiceResultRestricted = 6, + k_EVoiceResultUnsupportedCodec = 7, + k_EVoiceResultReceiverOutOfDate = 8, + k_EVoiceResultReceiverDidNotAnswer = 9, + +}; + +// Result codes to GSHandleClientDeny/Kick +enum EDenyReason +{ + k_EDenyInvalid = 0, + k_EDenyInvalidVersion = 1, + k_EDenyGeneric = 2, + k_EDenyNotLoggedOn = 3, + k_EDenyNoLicense = 4, + k_EDenyCheater = 5, + k_EDenyLoggedInElseWhere = 6, + k_EDenyUnknownText = 7, + k_EDenyIncompatibleAnticheat = 8, + k_EDenyMemoryCorruption = 9, + k_EDenyIncompatibleSoftware = 10, + k_EDenySteamConnectionLost = 11, + k_EDenySteamConnectionError = 12, + k_EDenySteamResponseTimedOut = 13, + k_EDenySteamValidationStalled = 14, + k_EDenySteamOwnerLeftGuestUser = 15, +}; + +// return type of GetAuthSessionTicket +typedef uint32 HAuthTicket; +const HAuthTicket k_HAuthTicketInvalid = 0; + +// results from BeginAuthSession +enum EBeginAuthSessionResult +{ + k_EBeginAuthSessionResultOK = 0, // Ticket is valid for this game and this steamID. + k_EBeginAuthSessionResultInvalidTicket = 1, // Ticket is not valid. + k_EBeginAuthSessionResultDuplicateRequest = 2, // A ticket has already been submitted for this steamID + k_EBeginAuthSessionResultInvalidVersion = 3, // Ticket is from an incompatible interface version + k_EBeginAuthSessionResultGameMismatch = 4, // Ticket is not for this game + k_EBeginAuthSessionResultExpiredTicket = 5, // Ticket has expired +}; + +// Callback values for callback ValidateAuthTicketResponse_t which is a response to BeginAuthSession +enum EAuthSessionResponse +{ + k_EAuthSessionResponseOK = 0, // Steam has verified the user is online, the ticket is valid and ticket has not been reused. + k_EAuthSessionResponseUserNotConnectedToSteam = 1, // The user in question is not connected to steam + k_EAuthSessionResponseNoLicenseOrExpired = 2, // The license has expired. + k_EAuthSessionResponseVACBanned = 3, // The user is VAC banned for this game. + k_EAuthSessionResponseLoggedInElseWhere = 4, // The user account has logged in elsewhere and the session containing the game instance has been disconnected. + k_EAuthSessionResponseVACCheckTimedOut = 5, // VAC has been unable to perform anti-cheat checks on this user + k_EAuthSessionResponseAuthTicketCanceled = 6, // The ticket has been canceled by the issuer + k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed = 7, // This ticket has already been used, it is not valid. + k_EAuthSessionResponseAuthTicketInvalid = 8, // This ticket is not from a user instance currently connected to steam. + k_EAuthSessionResponsePublisherIssuedBan = 9, // The user is banned for this game. The ban came via the web api and not VAC +}; + +// results from UserHasLicenseForApp +enum EUserHasLicenseForAppResult +{ + k_EUserHasLicenseResultHasLicense = 0, // User has a license for specified app + k_EUserHasLicenseResultDoesNotHaveLicense = 1, // User does not have a license for the specified app + k_EUserHasLicenseResultNoAuth = 2, // User has not been authenticated +}; + + +// Steam account types +enum EAccountType +{ + k_EAccountTypeInvalid = 0, + k_EAccountTypeIndividual = 1, // single user account + k_EAccountTypeMultiseat = 2, // multiseat (e.g. cybercafe) account + k_EAccountTypeGameServer = 3, // game server account + k_EAccountTypeAnonGameServer = 4, // anonymous game server account + k_EAccountTypePending = 5, // pending + k_EAccountTypeContentServer = 6, // content server + k_EAccountTypeClan = 7, + k_EAccountTypeChat = 8, + k_EAccountTypeConsoleUser = 9, // Fake SteamID for local PSN account on PS3 or Live account on 360, etc. + k_EAccountTypeAnonUser = 10, + + // Max of 16 items in this field + k_EAccountTypeMax +}; + + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +enum EAppReleaseState +{ + k_EAppReleaseState_Unknown = 0, // unknown, required appinfo or license info is missing + k_EAppReleaseState_Unavailable = 1, // even owners can't see game in library yet, no AppInfo released + k_EAppReleaseState_Prerelease = 2, // app can be purchased and is visible in library, nothing else. Only Common AppInfo section released + k_EAppReleaseState_PreloadOnly = 3, // owners can preload app, but not play it. All AppInfo sections fully released + k_EAppReleaseState_Released = 4, // owners can download and play app. +}; + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +enum EAppOwnershipFlags +{ + k_EAppOwnershipFlags_None = 0x0000, // unknown + k_EAppOwnershipFlags_OwnsLicense = 0x0001, // owns license for this game + k_EAppOwnershipFlags_FreeLicense = 0x0002, // not paid for game + k_EAppOwnershipFlags_RegionRestricted = 0x0004, // owns app, but not allowed to play in current region + k_EAppOwnershipFlags_LowViolence = 0x0008, // only low violence version + k_EAppOwnershipFlags_InvalidPlatform = 0x0010, // app not supported on current platform + k_EAppOwnershipFlags_SharedLicense = 0x0020, // license was granted by authorized local device + k_EAppOwnershipFlags_FreeWeekend = 0x0040, // owned by a free weekend licenses + k_EAppOwnershipFlags_RetailLicense = 0x0080, // has a retail license for game, (CD-Key etc) + k_EAppOwnershipFlags_LicenseLocked = 0x0100, // shared license is locked (in use) by other user + k_EAppOwnershipFlags_LicensePending = 0x0200, // owns app, but transaction is still pending. Can't install or play + k_EAppOwnershipFlags_LicenseExpired = 0x0400, // doesn't own app anymore since license expired + k_EAppOwnershipFlags_LicensePermanent = 0x0800, // permanent license, not borrowed, or guest or freeweekend etc + k_EAppOwnershipFlags_LicenseRecurring = 0x1000, // Recurring license, user is charged periodically + k_EAppOwnershipFlags_LicenseCanceled = 0x2000, // Mark as canceled, but might be still active if recurring + k_EAppOwnershipFlags_AutoGrant = 0x4000, // Ownership is based on any kind of autogrant license + k_EAppOwnershipFlags_PendingGift = 0x8000, // user has pending gift to redeem + k_EAppOwnershipFlags_RentalNotActivated = 0x10000, // Rental hasn't been activated yet + k_EAppOwnershipFlags_Rental = 0x20000, // Is a rental + k_EAppOwnershipFlags_SiteLicense = 0x40000, // Is from a site license + k_EAppOwnershipFlags_LegacyFreeSub = 0x80000, // App only owned through Steam's legacy free sub + k_EAppOwnershipFlags_InvalidOSType = 0x100000, // app not supported on current OS version, used to indicate a game is 32-bit on post-catalina. Currently it's own flag so the library will display a notice. + k_EAppOwnershipFlags_TimedTrial = 0x200000, // App is playable only for limited time +}; + + +//----------------------------------------------------------------------------- +// Purpose: designed as flags to allow filters masks +// NOTE: If you add to this, please update PackageAppType (SteamConfig) as well as populatePackageAppType +//----------------------------------------------------------------------------- +enum EAppType +{ + k_EAppType_Invalid = 0x000, // unknown / invalid + k_EAppType_Game = 0x001, // playable game, default type + k_EAppType_Application = 0x002, // software application + k_EAppType_Tool = 0x004, // SDKs, editors & dedicated servers + k_EAppType_Demo = 0x008, // game demo + k_EAppType_Media_DEPRECATED = 0x010, // legacy - was used for game trailers, which are now just videos on the web + k_EAppType_DLC = 0x020, // down loadable content + k_EAppType_Guide = 0x040, // game guide, PDF etc + k_EAppType_Driver = 0x080, // hardware driver updater (ATI, Razor etc) + k_EAppType_Config = 0x100, // hidden app used to config Steam features (backpack, sales, etc) + k_EAppType_Hardware = 0x200, // a hardware device (Steam Machine, Steam Controller, Steam Link, etc.) + k_EAppType_Franchise = 0x400, // A hub for collections of multiple apps, eg films, series, games + k_EAppType_Video = 0x800, // A video component of either a Film or TVSeries (may be the feature, an episode, preview, making-of, etc) + k_EAppType_Plugin = 0x1000, // Plug-in types for other Apps + k_EAppType_MusicAlbum = 0x2000, // "Video game soundtrack album" + k_EAppType_Series = 0x4000, // Container app for video series + k_EAppType_Comic_UNUSED = 0x8000, // Comic Book + k_EAppType_Beta = 0x10000, // this is a beta version of a game + + k_EAppType_Shortcut = 0x40000000, // just a shortcut, client side only + k_EAppType_DepotOnly_DEPRECATED = 0x80000000, // there shouldn't be any appinfo for depots +}; + + + +//----------------------------------------------------------------------------- +// types of user game stats fields +// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN DATABASE +//----------------------------------------------------------------------------- +enum ESteamUserStatType +{ + k_ESteamUserStatTypeINVALID = 0, + k_ESteamUserStatTypeINT = 1, + k_ESteamUserStatTypeFLOAT = 2, + // Read as FLOAT, set with count / session length + k_ESteamUserStatTypeAVGRATE = 3, + k_ESteamUserStatTypeACHIEVEMENTS = 4, + k_ESteamUserStatTypeGROUPACHIEVEMENTS = 5, + + // max, for sanity checks + k_ESteamUserStatTypeMAX +}; + + +//----------------------------------------------------------------------------- +// Purpose: Chat Entry Types (previously was only friend-to-friend message types) +//----------------------------------------------------------------------------- +enum EChatEntryType +{ + k_EChatEntryTypeInvalid = 0, + k_EChatEntryTypeChatMsg = 1, // Normal text message from another user + k_EChatEntryTypeTyping = 2, // Another user is typing (not used in multi-user chat) + k_EChatEntryTypeInviteGame = 3, // Invite from other user into that users current game + k_EChatEntryTypeEmote = 4, // text emote message (deprecated, should be treated as ChatMsg) + //k_EChatEntryTypeLobbyGameStart = 5, // lobby game is starting (dead - listen for LobbyGameCreated_t callback instead) + k_EChatEntryTypeLeftConversation = 6, // user has left the conversation ( closed chat window ) + // Above are previous FriendMsgType entries, now merged into more generic chat entry types + k_EChatEntryTypeEntered = 7, // user has entered the conversation (used in multi-user chat and group chat) + k_EChatEntryTypeWasKicked = 8, // user was kicked (data: 64-bit steamid of actor performing the kick) + k_EChatEntryTypeWasBanned = 9, // user was banned (data: 64-bit steamid of actor performing the ban) + k_EChatEntryTypeDisconnected = 10, // user disconnected + k_EChatEntryTypeHistoricalChat = 11, // a chat message from user's chat history or offilne message + //k_EChatEntryTypeReserved1 = 12, // No longer used + //k_EChatEntryTypeReserved2 = 13, // No longer used + k_EChatEntryTypeLinkBlocked = 14, // a link was removed by the chat filter. +}; + + +//----------------------------------------------------------------------------- +// Purpose: Chat Room Enter Responses +//----------------------------------------------------------------------------- +enum EChatRoomEnterResponse +{ + k_EChatRoomEnterResponseSuccess = 1, // Success + k_EChatRoomEnterResponseDoesntExist = 2, // Chat doesn't exist (probably closed) + k_EChatRoomEnterResponseNotAllowed = 3, // General Denied - You don't have the permissions needed to join the chat + k_EChatRoomEnterResponseFull = 4, // Chat room has reached its maximum size + k_EChatRoomEnterResponseError = 5, // Unexpected Error + k_EChatRoomEnterResponseBanned = 6, // You are banned from this chat room and may not join + k_EChatRoomEnterResponseLimited = 7, // Joining this chat is not allowed because you are a limited user (no value on account) + k_EChatRoomEnterResponseClanDisabled = 8, // Attempt to join a clan chat when the clan is locked or disabled + k_EChatRoomEnterResponseCommunityBan = 9, // Attempt to join a chat when the user has a community lock on their account + k_EChatRoomEnterResponseMemberBlockedYou = 10, // Join failed - some member in the chat has blocked you from joining + k_EChatRoomEnterResponseYouBlockedMember = 11, // Join failed - you have blocked some member already in the chat + // k_EChatRoomEnterResponseNoRankingDataLobby = 12, // No longer used + // k_EChatRoomEnterResponseNoRankingDataUser = 13, // No longer used + // k_EChatRoomEnterResponseRankOutOfRange = 14, // No longer used + k_EChatRoomEnterResponseRatelimitExceeded = 15, // Join failed - to many join attempts in a very short period of time +}; + + +typedef void (*PFNLegacyKeyRegistration)( const char *pchCDKey, const char *pchInstallPath ); +typedef bool (*PFNLegacyKeyInstalled)(); + +const unsigned int k_unSteamAccountIDMask = 0xFFFFFFFF; +const unsigned int k_unSteamAccountInstanceMask = 0x000FFFFF; +const unsigned int k_unSteamUserDefaultInstance = 1; // fixed instance for all individual users + +// Special flags for Chat accounts - they go in the top 8 bits +// of the steam ID's "instance", leaving 12 for the actual instances +enum EChatSteamIDInstanceFlags +{ + k_EChatAccountInstanceMask = 0x00000FFF, // top 8 bits are flags + + k_EChatInstanceFlagClan = ( k_unSteamAccountInstanceMask + 1 ) >> 1, // top bit + k_EChatInstanceFlagLobby = ( k_unSteamAccountInstanceMask + 1 ) >> 2, // next one down, etc + k_EChatInstanceFlagMMSLobby = ( k_unSteamAccountInstanceMask + 1 ) >> 3, // next one down, etc + + // Max of 8 flags +}; + + +//----------------------------------------------------------------------------- +// Purpose: Marketing message flags that change how a client should handle them +//----------------------------------------------------------------------------- +enum EMarketingMessageFlags +{ + k_EMarketingMessageFlagsNone = 0, + k_EMarketingMessageFlagsHighPriority = 1 << 0, + k_EMarketingMessageFlagsPlatformWindows = 1 << 1, + k_EMarketingMessageFlagsPlatformMac = 1 << 2, + k_EMarketingMessageFlagsPlatformLinux = 1 << 3, + + //aggregate flags + k_EMarketingMessageFlagsPlatformRestrictions = + k_EMarketingMessageFlagsPlatformWindows | + k_EMarketingMessageFlagsPlatformMac | + k_EMarketingMessageFlagsPlatformLinux, +}; + + + +//----------------------------------------------------------------------------- +// Purpose: Possible positions to tell the overlay to show notifications in +//----------------------------------------------------------------------------- +enum ENotificationPosition +{ + k_EPositionTopLeft = 0, + k_EPositionTopRight = 1, + k_EPositionBottomLeft = 2, + k_EPositionBottomRight = 3, +}; + + +//----------------------------------------------------------------------------- +// Purpose: Broadcast upload result details +//----------------------------------------------------------------------------- +enum EBroadcastUploadResult +{ + k_EBroadcastUploadResultNone = 0, // broadcast state unknown + k_EBroadcastUploadResultOK = 1, // broadcast was good, no problems + k_EBroadcastUploadResultInitFailed = 2, // broadcast init failed + k_EBroadcastUploadResultFrameFailed = 3, // broadcast frame upload failed + k_EBroadcastUploadResultTimeout = 4, // broadcast upload timed out + k_EBroadcastUploadResultBandwidthExceeded = 5, // broadcast send too much data + k_EBroadcastUploadResultLowFPS = 6, // broadcast FPS too low + k_EBroadcastUploadResultMissingKeyFrames = 7, // broadcast sending not enough key frames + k_EBroadcastUploadResultNoConnection = 8, // broadcast client failed to connect to relay + k_EBroadcastUploadResultRelayFailed = 9, // relay dropped the upload + k_EBroadcastUploadResultSettingsChanged = 10, // the client changed broadcast settings + k_EBroadcastUploadResultMissingAudio = 11, // client failed to send audio data + k_EBroadcastUploadResultTooFarBehind = 12, // clients was too slow uploading + k_EBroadcastUploadResultTranscodeBehind = 13, // server failed to keep up with transcode + k_EBroadcastUploadResultNotAllowedToPlay = 14, // Broadcast does not have permissions to play game + k_EBroadcastUploadResultBusy = 15, // RTMP host to busy to take new broadcast stream, choose another + k_EBroadcastUploadResultBanned = 16, // Account banned from community broadcast + k_EBroadcastUploadResultAlreadyActive = 17, // We already already have an stream running. + k_EBroadcastUploadResultForcedOff = 18, // We explicitly shutting down a broadcast + k_EBroadcastUploadResultAudioBehind = 19, // Audio stream was too far behind video + k_EBroadcastUploadResultShutdown = 20, // Broadcast Server was shut down + k_EBroadcastUploadResultDisconnect = 21, // broadcast uploader TCP disconnected + k_EBroadcastUploadResultVideoInitFailed = 22, // invalid video settings + k_EBroadcastUploadResultAudioInitFailed = 23, // invalid audio settings +}; + + +//----------------------------------------------------------------------------- +// Purpose: codes for well defined launch options +//----------------------------------------------------------------------------- +enum ELaunchOptionType +{ + k_ELaunchOptionType_None = 0, // unknown what launch option does + k_ELaunchOptionType_Default = 1, // runs the game, app, whatever in default mode + k_ELaunchOptionType_SafeMode = 2, // runs the game in safe mode + k_ELaunchOptionType_Multiplayer = 3, // runs the game in multiplayer mode + k_ELaunchOptionType_Config = 4, // runs config tool for this game + k_ELaunchOptionType_OpenVR = 5, // runs game in VR mode using OpenVR + k_ELaunchOptionType_Server = 6, // runs dedicated server for this game + k_ELaunchOptionType_Editor = 7, // runs game editor + k_ELaunchOptionType_Manual = 8, // shows game manual + k_ELaunchOptionType_Benchmark = 9, // runs game benchmark + k_ELaunchOptionType_Option1 = 10, // generic run option, uses description field for game name + k_ELaunchOptionType_Option2 = 11, // generic run option, uses description field for game name + k_ELaunchOptionType_Option3 = 12, // generic run option, uses description field for game name + k_ELaunchOptionType_OculusVR = 13, // runs game in VR mode using the Oculus SDK + k_ELaunchOptionType_OpenVROverlay = 14, // runs an OpenVR dashboard overlay + k_ELaunchOptionType_OSVR = 15, // runs game in VR mode using the OSVR SDK + + + k_ELaunchOptionType_Dialog = 1000, // show launch options dialog +}; + + +//----------------------------------------------------------------------------- +// Purpose: true if this launch option is any of the vr launching types +//----------------------------------------------------------------------------- +static inline bool BIsVRLaunchOptionType( const ELaunchOptionType eType ) +{ + return eType == k_ELaunchOptionType_OpenVR + || eType == k_ELaunchOptionType_OpenVROverlay + || eType == k_ELaunchOptionType_OculusVR + || eType == k_ELaunchOptionType_OSVR; +} + + +//----------------------------------------------------------------------------- +// Purpose: true if this launch option is any of the vr launching types +//----------------------------------------------------------------------------- +static inline bool BIsLaunchOptionTypeExemptFromGameTheater( const ELaunchOptionType eType ) +{ + return eType == k_ELaunchOptionType_Config + || eType == k_ELaunchOptionType_Server + || eType == k_ELaunchOptionType_Editor + || eType == k_ELaunchOptionType_Manual; +} + + +//----------------------------------------------------------------------------- +// Purpose: code points for VR HMD vendors and models +// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN A DATABASE +//----------------------------------------------------------------------------- +enum EVRHMDType +{ + k_eEVRHMDType_None = -1, // unknown vendor and model + + k_eEVRHMDType_Unknown = 0, // unknown vendor and model + + k_eEVRHMDType_HTC_Dev = 1, // original HTC dev kits + k_eEVRHMDType_HTC_VivePre = 2, // htc vive pre + k_eEVRHMDType_HTC_Vive = 3, // htc vive consumer release + k_eEVRHMDType_HTC_VivePro = 4, // htc vive pro release + k_eEVRHMDType_HTC_ViveCosmos = 5, // HTC Vive Cosmos + + k_eEVRHMDType_HTC_Unknown = 20, // unknown htc hmd + + k_eEVRHMDType_Oculus_DK1 = 21, // Oculus DK1 + k_eEVRHMDType_Oculus_DK2 = 22, // Oculus DK2 + k_eEVRHMDType_Oculus_Rift = 23, // Oculus Rift + k_eEVRHMDType_Oculus_RiftS = 24, // Oculus Rift S + k_eEVRHMDType_Oculus_Quest = 25, // Oculus Quest + + k_eEVRHMDType_Oculus_Unknown = 40, // // Oculus unknown HMD + + k_eEVRHMDType_Acer_Unknown = 50, // Acer unknown HMD + k_eEVRHMDType_Acer_WindowsMR = 51, // Acer QHMD Windows MR headset + + k_eEVRHMDType_Dell_Unknown = 60, // Dell unknown HMD + k_eEVRHMDType_Dell_Visor = 61, // Dell Visor Windows MR headset + + k_eEVRHMDType_Lenovo_Unknown = 70, // Lenovo unknown HMD + k_eEVRHMDType_Lenovo_Explorer = 71, // Lenovo Explorer Windows MR headset + + k_eEVRHMDType_HP_Unknown = 80, // HP unknown HMD + k_eEVRHMDType_HP_WindowsMR = 81, // HP Windows MR headset + k_eEVRHMDType_HP_Reverb = 82, // HP Reverb Windows MR headset + k_eEVRHMDType_HP_ReverbG2 = 1463, // HP Reverb G2 Windows MR headset + + k_eEVRHMDType_Samsung_Unknown = 90, // Samsung unknown HMD + k_eEVRHMDType_Samsung_Odyssey = 91, // Samsung Odyssey Windows MR headset + + k_eEVRHMDType_Unannounced_Unknown = 100, // Unannounced unknown HMD + k_eEVRHMDType_Unannounced_WindowsMR = 101, // Unannounced Windows MR headset + + k_eEVRHMDType_vridge = 110, // VRIDGE tool + + k_eEVRHMDType_Huawei_Unknown = 120, // Huawei unknown HMD + k_eEVRHMDType_Huawei_VR2 = 121, // Huawei VR2 3DOF headset + k_eEVRHMDType_Huawei_EndOfRange = 129, // end of Huawei HMD range + + k_eEVRHmdType_Valve_Unknown = 130, // Valve Unknown HMD + k_eEVRHmdType_Valve_Index = 131, // Valve Index HMD + +}; + + +//----------------------------------------------------------------------------- +// Purpose: true if this is from an Oculus HMD +//----------------------------------------------------------------------------- +static inline bool BIsOculusHMD( EVRHMDType eType ) +{ + return eType == k_eEVRHMDType_Oculus_DK1 || eType == k_eEVRHMDType_Oculus_DK2 || eType == k_eEVRHMDType_Oculus_Rift || eType == k_eEVRHMDType_Oculus_RiftS || eType == k_eEVRHMDType_Oculus_Quest || eType == k_eEVRHMDType_Oculus_Unknown; +} + + +//----------------------------------------------------------------------------- +// Purpose: true if this is from a Windows MR HMD +//----------------------------------------------------------------------------- +static inline bool BIsWindowsMRHeadset( EVRHMDType eType ) +{ + return eType >= k_eEVRHMDType_Acer_WindowsMR && eType <= k_eEVRHMDType_Unannounced_WindowsMR; +} + + +//----------------------------------------------------------------------------- +// Purpose: true if this is from a Hauwei HMD +//----------------------------------------------------------------------------- +static inline bool BIsHuaweiHeadset( EVRHMDType eType ) +{ + return eType >= k_eEVRHMDType_Huawei_Unknown && eType <= k_eEVRHMDType_Huawei_EndOfRange; +} + + +//----------------------------------------------------------------------------- +// Purpose: true if this is from an Vive HMD +//----------------------------------------------------------------------------- +static inline bool BIsViveHMD( EVRHMDType eType ) +{ + return eType == k_eEVRHMDType_HTC_Dev || eType == k_eEVRHMDType_HTC_VivePre || eType == k_eEVRHMDType_HTC_Vive || eType == k_eEVRHMDType_HTC_Unknown || eType == k_eEVRHMDType_HTC_VivePro; +} + + +//----------------------------------------------------------------------------- +// Purpose: Reasons a user may not use the Community Market. +// Used in MarketEligibilityResponse_t. +//----------------------------------------------------------------------------- +enum EMarketNotAllowedReasonFlags +{ + k_EMarketNotAllowedReason_None = 0, + + // A back-end call failed or something that might work again on retry + k_EMarketNotAllowedReason_TemporaryFailure = (1 << 0), + + // Disabled account + k_EMarketNotAllowedReason_AccountDisabled = (1 << 1), + + // Locked account + k_EMarketNotAllowedReason_AccountLockedDown = (1 << 2), + + // Limited account (no purchases) + k_EMarketNotAllowedReason_AccountLimited = (1 << 3), + + // The account is banned from trading items + k_EMarketNotAllowedReason_TradeBanned = (1 << 4), + + // Wallet funds aren't tradable because the user has had no purchase + // activity in the last year or has had no purchases prior to last month + k_EMarketNotAllowedReason_AccountNotTrusted = (1 << 5), + + // The user doesn't have Steam Guard enabled + k_EMarketNotAllowedReason_SteamGuardNotEnabled = (1 << 6), + + // The user has Steam Guard, but it hasn't been enabled for the required + // number of days + k_EMarketNotAllowedReason_SteamGuardOnlyRecentlyEnabled = (1 << 7), + + // The user has recently forgotten their password and reset it + k_EMarketNotAllowedReason_RecentPasswordReset = (1 << 8), + + // The user has recently funded his or her wallet with a new payment method + k_EMarketNotAllowedReason_NewPaymentMethod = (1 << 9), + + // An invalid cookie was sent by the user + k_EMarketNotAllowedReason_InvalidCookie = (1 << 10), + + // The user has Steam Guard, but is using a new computer or web browser + k_EMarketNotAllowedReason_UsingNewDevice = (1 << 11), + + // The user has recently refunded a store purchase by his or herself + k_EMarketNotAllowedReason_RecentSelfRefund = (1 << 12), + + // The user has recently funded his or her wallet with a new payment method that cannot be verified + k_EMarketNotAllowedReason_NewPaymentMethodCannotBeVerified = (1 << 13), + + // Not only is the account not trusted, but they have no recent purchases at all + k_EMarketNotAllowedReason_NoRecentPurchases = (1 << 14), + + // User accepted a wallet gift that was recently purchased + k_EMarketNotAllowedReason_AcceptedWalletGift = (1 << 15), +}; + + +// +// describes XP / progress restrictions to apply for games with duration control / +// anti-indulgence enabled for minor Steam China users. +// +// WARNING: DO NOT RENUMBER +enum EDurationControlProgress +{ + k_EDurationControlProgress_Full = 0, // Full progress + k_EDurationControlProgress_Half = 1, // deprecated - XP or persistent rewards should be halved + k_EDurationControlProgress_None = 2, // deprecated - XP or persistent rewards should be stopped + + k_EDurationControl_ExitSoon_3h = 3, // allowed 3h time since 5h gap/break has elapsed, game should exit - steam will terminate the game soon + k_EDurationControl_ExitSoon_5h = 4, // allowed 5h time in calendar day has elapsed, game should exit - steam will terminate the game soon + k_EDurationControl_ExitSoon_Night = 5, // game running after day period, game should exit - steam will terminate the game soon +}; + + +// +// describes which notification timer has expired, for steam china duration control feature +// +// WARNING: DO NOT RENUMBER +enum EDurationControlNotification +{ + k_EDurationControlNotification_None = 0, // just informing you about progress, no notification to show + k_EDurationControlNotification_1Hour = 1, // "you've been playing for N hours" + + k_EDurationControlNotification_3Hours = 2, // deprecated - "you've been playing for 3 hours; take a break" + k_EDurationControlNotification_HalfProgress = 3,// deprecated - "your XP / progress is half normal" + k_EDurationControlNotification_NoProgress = 4, // deprecated - "your XP / progress is zero" + + k_EDurationControlNotification_ExitSoon_3h = 5, // allowed 3h time since 5h gap/break has elapsed, game should exit - steam will terminate the game soon + k_EDurationControlNotification_ExitSoon_5h = 6, // allowed 5h time in calendar day has elapsed, game should exit - steam will terminate the game soon + k_EDurationControlNotification_ExitSoon_Night = 7,// game running after day period, game should exit - steam will terminate the game soon +}; + + +// +// Specifies a game's online state in relation to duration control +// +enum EDurationControlOnlineState +{ + k_EDurationControlOnlineState_Invalid = 0, // nil value + k_EDurationControlOnlineState_Offline = 1, // currently in offline play - single-player, offline co-op, etc. + k_EDurationControlOnlineState_Online = 2, // currently in online play + k_EDurationControlOnlineState_OnlineHighPri = 3, // currently in online play and requests not to be interrupted +}; + + +#pragma pack( push, 1 ) + +#define CSTEAMID_DEFINED + +// Steam ID structure (64 bits total) +class CSteamID +{ +public: + + //----------------------------------------------------------------------------- + // Purpose: Constructor + //----------------------------------------------------------------------------- + CSteamID() + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeInvalid; + m_steamid.m_comp.m_EUniverse = k_EUniverseInvalid; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + + //----------------------------------------------------------------------------- + // Purpose: Constructor + // Input : unAccountID - 32-bit account ID + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + CSteamID( uint32 unAccountID, EUniverse eUniverse, EAccountType eAccountType ) + { + Set( unAccountID, eUniverse, eAccountType ); + } + + + //----------------------------------------------------------------------------- + // Purpose: Constructor + // Input : unAccountID - 32-bit account ID + // unAccountInstance - instance + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + CSteamID( uint32 unAccountID, unsigned int unAccountInstance, EUniverse eUniverse, EAccountType eAccountType ) + { +#if defined(_SERVER) && defined(Assert) + Assert( ( k_EAccountTypeIndividual != eAccountType ) || ( unAccountInstance == k_unSteamUserDefaultInstance ) ); // enforce that for individual accounts, instance is always 1 +#endif // _SERVER + InstancedSet( unAccountID, unAccountInstance, eUniverse, eAccountType ); + } + + + //----------------------------------------------------------------------------- + // Purpose: Constructor + // Input : ulSteamID - 64-bit representation of a Steam ID + // Note: Will not accept a uint32 or int32 as input, as that is a probable mistake. + // See the stubbed out overloads in the private: section for more info. + //----------------------------------------------------------------------------- + CSteamID( uint64 ulSteamID ) + { + SetFromUint64( ulSteamID ); + } +#ifdef INT64_DIFFERENT_FROM_INT64_T + CSteamID( uint64_t ulSteamID ) + { + SetFromUint64( (uint64)ulSteamID ); + } +#endif + + + //----------------------------------------------------------------------------- + // Purpose: Sets parameters for steam ID + // Input : unAccountID - 32-bit account ID + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + void Set( uint32 unAccountID, EUniverse eUniverse, EAccountType eAccountType ) + { + m_steamid.m_comp.m_unAccountID = unAccountID; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_EAccountType = eAccountType; + + if ( eAccountType == k_EAccountTypeClan || eAccountType == k_EAccountTypeGameServer ) + { + m_steamid.m_comp.m_unAccountInstance = 0; + } + else + { + m_steamid.m_comp.m_unAccountInstance = k_unSteamUserDefaultInstance; + } + } + + + //----------------------------------------------------------------------------- + // Purpose: Sets parameters for steam ID + // Input : unAccountID - 32-bit account ID + // eUniverse - Universe this account belongs to + // eAccountType - Type of account + //----------------------------------------------------------------------------- + void InstancedSet( uint32 unAccountID, uint32 unInstance, EUniverse eUniverse, EAccountType eAccountType ) + { + m_steamid.m_comp.m_unAccountID = unAccountID; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_EAccountType = eAccountType; + m_steamid.m_comp.m_unAccountInstance = unInstance; + } + + + //----------------------------------------------------------------------------- + // Purpose: Initializes a steam ID from its 52 bit parts and universe/type + // Input : ulIdentifier - 52 bits of goodness + //----------------------------------------------------------------------------- + void FullSet( uint64 ulIdentifier, EUniverse eUniverse, EAccountType eAccountType ) + { + m_steamid.m_comp.m_unAccountID = ( ulIdentifier & k_unSteamAccountIDMask ); // account ID is low 32 bits + m_steamid.m_comp.m_unAccountInstance = ( ( ulIdentifier >> 32 ) & k_unSteamAccountInstanceMask ); // account instance is next 20 bits + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_EAccountType = eAccountType; + } + + + //----------------------------------------------------------------------------- + // Purpose: Initializes a steam ID from its 64-bit representation + // Input : ulSteamID - 64-bit representation of a Steam ID + //----------------------------------------------------------------------------- + void SetFromUint64( uint64 ulSteamID ) + { + m_steamid.m_unAll64Bits = ulSteamID; + } + + + //----------------------------------------------------------------------------- + // Purpose: Clear all fields, leaving an invalid ID. + //----------------------------------------------------------------------------- + void Clear() + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeInvalid; + m_steamid.m_comp.m_EUniverse = k_EUniverseInvalid; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + +#if defined( INCLUDED_STEAM2_USERID_STRUCTS ) + //----------------------------------------------------------------------------- + // Purpose: Initializes a steam ID from a Steam2 ID structure + // Input: pTSteamGlobalUserID - Steam2 ID to convert + // eUniverse - universe this ID belongs to + //----------------------------------------------------------------------------- + void SetFromSteam2( TSteamGlobalUserID *pTSteamGlobalUserID, EUniverse eUniverse ) + { + m_steamid.m_comp.m_unAccountID = pTSteamGlobalUserID->m_SteamLocalUserID.Split.Low32bits * 2 + + pTSteamGlobalUserID->m_SteamLocalUserID.Split.High32bits; + m_steamid.m_comp.m_EUniverse = eUniverse; // set the universe + m_steamid.m_comp.m_EAccountType = k_EAccountTypeIndividual; // Steam 2 accounts always map to account type of individual + m_steamid.m_comp.m_unAccountInstance = k_unSteamUserDefaultInstance; // Steam2 only knew one instance + } + + //----------------------------------------------------------------------------- + // Purpose: Fills out a Steam2 ID structure + // Input: pTSteamGlobalUserID - Steam2 ID to write to + //----------------------------------------------------------------------------- + void ConvertToSteam2( TSteamGlobalUserID *pTSteamGlobalUserID ) const + { + // only individual accounts have any meaning in Steam 2, only they can be mapped + // Assert( m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual ); + + pTSteamGlobalUserID->m_SteamInstanceID = 0; + pTSteamGlobalUserID->m_SteamLocalUserID.Split.High32bits = m_steamid.m_comp.m_unAccountID % 2; + pTSteamGlobalUserID->m_SteamLocalUserID.Split.Low32bits = m_steamid.m_comp.m_unAccountID / 2; + } +#endif // defined( INCLUDED_STEAM_COMMON_STEAMCOMMON_H ) + + //----------------------------------------------------------------------------- + // Purpose: Converts steam ID to its 64-bit representation + // Output : 64-bit representation of a Steam ID + //----------------------------------------------------------------------------- + uint64 ConvertToUint64() const + { + return m_steamid.m_unAll64Bits; + } + + + //----------------------------------------------------------------------------- + // Purpose: Converts the static parts of a steam ID to a 64-bit representation. + // For multiseat accounts, all instances of that account will have the + // same static account key, so they can be grouped together by the static + // account key. + // Output : 64-bit static account key + //----------------------------------------------------------------------------- + uint64 GetStaticAccountKey() const + { + // note we do NOT include the account instance (which is a dynamic property) in the static account key + return (uint64) ( ( ( (uint64) m_steamid.m_comp.m_EUniverse ) << 56 ) + ((uint64) m_steamid.m_comp.m_EAccountType << 52 ) + m_steamid.m_comp.m_unAccountID ); + } + + + //----------------------------------------------------------------------------- + // Purpose: create an anonymous game server login to be filled in by the AM + //----------------------------------------------------------------------------- + void CreateBlankAnonLogon( EUniverse eUniverse ) + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeAnonGameServer; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + + //----------------------------------------------------------------------------- + // Purpose: create an anonymous game server login to be filled in by the AM + //----------------------------------------------------------------------------- + void CreateBlankAnonUserLogon( EUniverse eUniverse ) + { + m_steamid.m_comp.m_unAccountID = 0; + m_steamid.m_comp.m_EAccountType = k_EAccountTypeAnonUser; + m_steamid.m_comp.m_EUniverse = eUniverse; + m_steamid.m_comp.m_unAccountInstance = 0; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous game server login that will be filled in? + //----------------------------------------------------------------------------- + bool BBlankAnonAccount() const + { + return m_steamid.m_comp.m_unAccountID == 0 && BAnonAccount() && m_steamid.m_comp.m_unAccountInstance == 0; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a game server account id? (Either persistent or anonymous) + //----------------------------------------------------------------------------- + bool BGameServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeGameServer || m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a persistent (not anonymous) game server account id? + //----------------------------------------------------------------------------- + bool BPersistentGameServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous game server account id? + //----------------------------------------------------------------------------- + bool BAnonGameServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a content server account id? + //----------------------------------------------------------------------------- + bool BContentServerAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeContentServer; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this a clan account id? + //----------------------------------------------------------------------------- + bool BClanAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeClan; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this a chat account id? + //----------------------------------------------------------------------------- + bool BChatAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeChat; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a chat account id? + //----------------------------------------------------------------------------- + bool IsLobby() const + { + return ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeChat ) + && ( m_steamid.m_comp.m_unAccountInstance & k_EChatInstanceFlagLobby ); + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this an individual user account id? + //----------------------------------------------------------------------------- + bool BIndividualAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual || m_steamid.m_comp.m_EAccountType == k_EAccountTypeConsoleUser; + } + + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous account? + //----------------------------------------------------------------------------- + bool BAnonAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonUser || m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonGameServer; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this an anonymous user account? ( used to create an account or reset a password ) + //----------------------------------------------------------------------------- + bool BAnonUserAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeAnonUser; + } + + //----------------------------------------------------------------------------- + // Purpose: Is this a faked up Steam ID for a PSN friend account? + //----------------------------------------------------------------------------- + bool BConsoleUserAccount() const + { + return m_steamid.m_comp.m_EAccountType == k_EAccountTypeConsoleUser; + } + + // simple accessors + void SetAccountID( uint32 unAccountID ) { m_steamid.m_comp.m_unAccountID = unAccountID; } + void SetAccountInstance( uint32 unInstance ){ m_steamid.m_comp.m_unAccountInstance = unInstance; } + + AccountID_t GetAccountID() const { return m_steamid.m_comp.m_unAccountID; } + uint32 GetUnAccountInstance() const { return m_steamid.m_comp.m_unAccountInstance; } + EAccountType GetEAccountType() const { return ( EAccountType ) m_steamid.m_comp.m_EAccountType; } + EUniverse GetEUniverse() const { return m_steamid.m_comp.m_EUniverse; } + void SetEUniverse( EUniverse eUniverse ) { m_steamid.m_comp.m_EUniverse = eUniverse; } + bool IsValid() const; + + // this set of functions is hidden, will be moved out of class + explicit CSteamID( const char *pchSteamID, EUniverse eDefaultUniverse = k_EUniverseInvalid ); + const char * Render() const; // renders this steam ID to string + static const char * Render( uint64 ulSteamID ); // static method to render a uint64 representation of a steam ID to a string + + void SetFromString( const char *pchSteamID, EUniverse eDefaultUniverse ); + // SetFromString allows many partially-correct strings, constraining how + // we might be able to change things in the future. + // SetFromStringStrict requires the exact string forms that we support + // and is preferred when the caller knows it's safe to be strict. + // Returns whether the string parsed correctly. + bool SetFromStringStrict( const char *pchSteamID, EUniverse eDefaultUniverse ); + bool SetFromSteam2String( const char *pchSteam2ID, EUniverse eUniverse ); + + inline bool operator==( const CSteamID &val ) const { return m_steamid.m_unAll64Bits == val.m_steamid.m_unAll64Bits; } + inline bool operator!=( const CSteamID &val ) const { return !operator==( val ); } + inline bool operator<( const CSteamID &val ) const { return m_steamid.m_unAll64Bits < val.m_steamid.m_unAll64Bits; } + inline bool operator>( const CSteamID &val ) const { return m_steamid.m_unAll64Bits > val.m_steamid.m_unAll64Bits; } + + // DEBUG function + bool BValidExternalSteamID() const; + +private: + // These are defined here to prevent accidental implicit conversion of a u32AccountID to a CSteamID. + // If you get a compiler error about an ambiguous constructor/function then it may be because you're + // passing a 32-bit int to a function that takes a CSteamID. You should explicitly create the SteamID + // using the correct Universe and account Type/Instance values. + CSteamID( uint32 ); + CSteamID( int32 ); + + // 64 bits total + union SteamID_t + { + struct SteamIDComponent_t + { +#ifdef VALVE_BIG_ENDIAN + EUniverse m_EUniverse : 8; // universe this account belongs to + unsigned int m_EAccountType : 4; // type of account - can't show as EAccountType, due to signed / unsigned difference + unsigned int m_unAccountInstance : 20; // dynamic instance ID + uint32 m_unAccountID : 32; // unique account identifier +#else + uint32 m_unAccountID : 32; // unique account identifier + unsigned int m_unAccountInstance : 20; // dynamic instance ID + unsigned int m_EAccountType : 4; // type of account - can't show as EAccountType, due to signed / unsigned difference + EUniverse m_EUniverse : 8; // universe this account belongs to +#endif + } m_comp; + + uint64 m_unAll64Bits; + } m_steamid; +}; + +inline bool CSteamID::IsValid() const +{ + if ( m_steamid.m_comp.m_EAccountType <= k_EAccountTypeInvalid || m_steamid.m_comp.m_EAccountType >= k_EAccountTypeMax ) + return false; + + if ( m_steamid.m_comp.m_EUniverse <= k_EUniverseInvalid || m_steamid.m_comp.m_EUniverse >= k_EUniverseMax ) + return false; + + if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual ) + { + if ( m_steamid.m_comp.m_unAccountID == 0 || m_steamid.m_comp.m_unAccountInstance != k_unSteamUserDefaultInstance ) + return false; + } + + if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeClan ) + { + if ( m_steamid.m_comp.m_unAccountID == 0 || m_steamid.m_comp.m_unAccountInstance != 0 ) + return false; + } + + if ( m_steamid.m_comp.m_EAccountType == k_EAccountTypeGameServer ) + { + if ( m_steamid.m_comp.m_unAccountID == 0 ) + return false; + // Any limit on instances? We use them for local users and bots + } + return true; +} + +// generic invalid CSteamID +#define k_steamIDNil CSteamID() + +// This steamID comes from a user game connection to an out of date GS that hasnt implemented the protocol +// to provide its steamID +#define k_steamIDOutofDateGS CSteamID( 0, 0, k_EUniverseInvalid, k_EAccountTypeInvalid ) +// This steamID comes from a user game connection to an sv_lan GS +#define k_steamIDLanModeGS CSteamID( 0, 0, k_EUniversePublic, k_EAccountTypeInvalid ) +// This steamID can come from a user game connection to a GS that has just booted but hasnt yet even initialized +// its steam3 component and started logging on. +#define k_steamIDNotInitYetGS CSteamID( 1, 0, k_EUniverseInvalid, k_EAccountTypeInvalid ) +// This steamID can come from a user game connection to a GS that isn't using the steam authentication system but still +// wants to support the "Join Game" option in the friends list +#define k_steamIDNonSteamGS CSteamID( 2, 0, k_EUniverseInvalid, k_EAccountTypeInvalid ) + + +#ifdef STEAM +// Returns the matching chat steamID, with the default instance of 0 +// If the steamID passed in is already of type k_EAccountTypeChat it will be returned with the same instance +CSteamID ChatIDFromSteamID( const CSteamID &steamID ); +// Returns the matching clan steamID, with the default instance of 0 +// If the steamID passed in is already of type k_EAccountTypeClan it will be returned with the same instance +CSteamID ClanIDFromSteamID( const CSteamID &steamID ); +// Asserts steamID type before conversion +CSteamID ChatIDFromClanID( const CSteamID &steamIDClan ); +// Asserts steamID type before conversion +CSteamID ClanIDFromChatID( const CSteamID &steamIDChat ); + +#endif // _STEAM + + +//----------------------------------------------------------------------------- +// Purpose: encapsulates an appID/modID pair +//----------------------------------------------------------------------------- +class CGameID +{ +public: + + CGameID() + { + m_gameID.m_nType = k_EGameIDTypeApp; + m_gameID.m_nAppID = k_uAppIdInvalid; + m_gameID.m_nModID = 0; + } + + explicit CGameID( uint64 ulGameID ) + { + m_ulGameID = ulGameID; + } +#ifdef INT64_DIFFERENT_FROM_INT64_T + CGameID( uint64_t ulGameID ) + { + m_ulGameID = (uint64)ulGameID; + } +#endif + + explicit CGameID( int32 nAppID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + } + + explicit CGameID( uint32 nAppID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + } + + CGameID( uint32 nAppID, uint32 nModID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + m_gameID.m_nModID = nModID; + m_gameID.m_nType = k_EGameIDTypeGameMod; + } + + CGameID( const CGameID &that ) + { + m_ulGameID = that.m_ulGameID; + } + + CGameID& operator=( const CGameID & that ) + { + m_ulGameID = that.m_ulGameID; + return *this; + } + + // Hidden functions used only by Steam + explicit CGameID( const char *pchGameID ); + const char *Render() const; // render this Game ID to string + static const char *Render( uint64 ulGameID ); // static method to render a uint64 representation of a Game ID to a string + + // must include checksum_crc.h first to get this functionality +#if defined( CHECKSUM_CRC_H ) + CGameID( uint32 nAppID, const char *pchModPath ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = nAppID; + m_gameID.m_nType = k_EGameIDTypeGameMod; + + char rgchModDir[MAX_PATH]; + V_FileBase( pchModPath, rgchModDir, sizeof( rgchModDir ) ); + CRC32_t crc32; + CRC32_Init( &crc32 ); + CRC32_ProcessBuffer( &crc32, rgchModDir, V_strlen( rgchModDir ) ); + CRC32_Final( &crc32 ); + + // set the high-bit on the mod-id + // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique + // replacement for appID's + m_gameID.m_nModID = crc32 | (0x80000000); + } + + CGameID( const char *pchExePath, const char *pchAppName ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = k_uAppIdInvalid; + m_gameID.m_nType = k_EGameIDTypeShortcut; + + CRC32_t crc32; + CRC32_Init( &crc32 ); + if ( pchExePath ) + CRC32_ProcessBuffer( &crc32, pchExePath, V_strlen( pchExePath ) ); + if ( pchAppName ) + CRC32_ProcessBuffer( &crc32, pchAppName, V_strlen( pchAppName ) ); + CRC32_Final( &crc32 ); + + // set the high-bit on the mod-id + // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique + // replacement for appID's + m_gameID.m_nModID = crc32 | (0x80000000); + } + +#if defined( VSTFILEID_H ) + + CGameID( VstFileID vstFileID ) + { + m_ulGameID = 0; + m_gameID.m_nAppID = k_uAppIdInvalid; + m_gameID.m_nType = k_EGameIDTypeP2P; + + CRC32_t crc32; + CRC32_Init( &crc32 ); + const char *pchFileId = vstFileID.Render(); + CRC32_ProcessBuffer( &crc32, pchFileId, V_strlen( pchFileId ) ); + CRC32_Final( &crc32 ); + + // set the high-bit on the mod-id + // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique + // replacement for appID's + m_gameID.m_nModID = crc32 | (0x80000000); + } + +#endif /* VSTFILEID_H */ + +#endif /* CHECKSUM_CRC_H */ + + + uint64 ToUint64() const + { + return m_ulGameID; + } + + uint64 *GetUint64Ptr() + { + return &m_ulGameID; + } + + void Set( uint64 ulGameID ) + { + m_ulGameID = ulGameID; + } + + bool IsMod() const + { + return ( m_gameID.m_nType == k_EGameIDTypeGameMod ); + } + + bool IsShortcut() const + { + return ( m_gameID.m_nType == k_EGameIDTypeShortcut ); + } + + bool IsP2PFile() const + { + return ( m_gameID.m_nType == k_EGameIDTypeP2P ); + } + + bool IsSteamApp() const + { + return ( m_gameID.m_nType == k_EGameIDTypeApp ); + } + + uint32 ModID() const + { + return m_gameID.m_nModID; + } + + uint32 AppID() const + { + return m_gameID.m_nAppID; + } + + bool operator == ( const CGameID &rhs ) const + { + return m_ulGameID == rhs.m_ulGameID; + } + + bool operator != ( const CGameID &rhs ) const + { + return !(*this == rhs); + } + + bool operator < ( const CGameID &rhs ) const + { + return ( m_ulGameID < rhs.m_ulGameID ); + } + + bool IsValid() const + { + // each type has it's own invalid fixed point: + switch( m_gameID.m_nType ) + { + case k_EGameIDTypeApp: + return m_gameID.m_nAppID != k_uAppIdInvalid; + + case k_EGameIDTypeGameMod: + return m_gameID.m_nAppID != k_uAppIdInvalid && m_gameID.m_nModID & 0x80000000; + + case k_EGameIDTypeShortcut: + return (m_gameID.m_nModID & 0x80000000) != 0; + + case k_EGameIDTypeP2P: + return m_gameID.m_nAppID == k_uAppIdInvalid && m_gameID.m_nModID & 0x80000000; + + default: + return false; + } + + } + + void Reset() + { + m_ulGameID = 0; + } + + + +private: + + enum EGameIDType + { + k_EGameIDTypeApp = 0, + k_EGameIDTypeGameMod = 1, + k_EGameIDTypeShortcut = 2, + k_EGameIDTypeP2P = 3, + }; + + struct GameID_t + { +#ifdef VALVE_BIG_ENDIAN + unsigned int m_nModID : 32; + unsigned int m_nType : 8; + unsigned int m_nAppID : 24; +#else + unsigned int m_nAppID : 24; + unsigned int m_nType : 8; + unsigned int m_nModID : 32; +#endif + }; + + union + { + uint64 m_ulGameID; + GameID_t m_gameID; + }; +}; + +#pragma pack( pop ) + +const int k_cchGameExtraInfoMax = 64; + + +//----------------------------------------------------------------------------- +// Constants used for query ports. +//----------------------------------------------------------------------------- + +#define QUERY_PORT_NOT_INITIALIZED 0xFFFF // We haven't asked the GS for this query port's actual value yet. +#define QUERY_PORT_ERROR 0xFFFE // We were unable to get the query port for this server. + + +//----------------------------------------------------------------------------- +// Purpose: Passed as argument to SteamAPI_UseBreakpadCrashHandler to enable optional callback +// just before minidump file is captured after a crash has occurred. (Allows app to append additional comment data to the dump, etc.) +//----------------------------------------------------------------------------- +typedef void (*PFNPreMinidumpCallback)(void *context); + +//----------------------------------------------------------------------------- +// Purpose: Used by ICrashHandler interfaces to reference particular installed crash handlers +//----------------------------------------------------------------------------- +typedef void *BREAKPAD_HANDLE; +#define BREAKPAD_INVALID_HANDLE (BREAKPAD_HANDLE)0 + +enum EGameSearchErrorCode_t +{ + k_EGameSearchErrorCode_OK = 1, + k_EGameSearchErrorCode_Failed_Search_Already_In_Progress = 2, + k_EGameSearchErrorCode_Failed_No_Search_In_Progress = 3, + k_EGameSearchErrorCode_Failed_Not_Lobby_Leader = 4, // if not the lobby leader can not call SearchForGameWithLobby + k_EGameSearchErrorCode_Failed_No_Host_Available = 5, // no host is available that matches those search params + k_EGameSearchErrorCode_Failed_Search_Params_Invalid = 6, // search params are invalid + k_EGameSearchErrorCode_Failed_Offline = 7, // offline, could not communicate with server + k_EGameSearchErrorCode_Failed_NotAuthorized = 8, // either the user or the application does not have priveledges to do this + k_EGameSearchErrorCode_Failed_Unknown_Error = 9, // unknown error +}; + +enum EPlayerResult_t +{ + k_EPlayerResultFailedToConnect = 1, // failed to connect after confirming + k_EPlayerResultAbandoned = 2, // quit game without completing it + k_EPlayerResultKicked = 3, // kicked by other players/moderator/server rules + k_EPlayerResultIncomplete = 4, // player stayed to end but game did not conclude successfully ( nofault to player ) + k_EPlayerResultCompleted = 5, // player completed game +}; + + +enum ESteamIPv6ConnectivityProtocol +{ + k_ESteamIPv6ConnectivityProtocol_Invalid = 0, + k_ESteamIPv6ConnectivityProtocol_HTTP = 1, // because a proxy may make this different than other protocols + k_ESteamIPv6ConnectivityProtocol_UDP = 2, // test UDP connectivity. Uses a port that is commonly needed for other Steam stuff. If UDP works, TCP probably works. +}; + +// For the above transport protocol, what do we think the local machine's connectivity to the internet over ipv6 is like +enum ESteamIPv6ConnectivityState +{ + k_ESteamIPv6ConnectivityState_Unknown = 0, // We haven't run a test yet + k_ESteamIPv6ConnectivityState_Good = 1, // We have recently been able to make a request on ipv6 for the given protocol + k_ESteamIPv6ConnectivityState_Bad = 2, // We failed to make a request, either because this machine has no ipv6 address assigned, or it has no upstream connectivity +}; + + +// Define compile time assert macros to let us validate the structure sizes. +#define VALVE_COMPILE_TIME_ASSERT( pred ) typedef char compile_time_assert_type[(pred) ? 1 : -1]; + +#if defined(__linux__) || defined(__APPLE__) +// The 32-bit version of gcc has the alignment requirement for uint64 and double set to +// 4 meaning that even with #pragma pack(8) these types will only be four-byte aligned. +// The 64-bit version of gcc has the alignment requirement for these types set to +// 8 meaning that unless we use #pragma pack(4) our structures will get bigger. +// The 64-bit structure packing has to match the 32-bit structure packing for each platform. +#define VALVE_CALLBACK_PACK_SMALL +#else +#define VALVE_CALLBACK_PACK_LARGE +#endif + +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error ??? +#endif + +typedef struct ValvePackingSentinel_t +{ + uint32 m_u32; + uint64 m_u64; + uint16 m_u16; + double m_d; +} ValvePackingSentinel_t; + +#pragma pack( pop ) + + +#if defined(VALVE_CALLBACK_PACK_SMALL) +VALVE_COMPILE_TIME_ASSERT( sizeof(ValvePackingSentinel_t) == 24 ) +#elif defined(VALVE_CALLBACK_PACK_LARGE) +VALVE_COMPILE_TIME_ASSERT( sizeof(ValvePackingSentinel_t) == 32 ) +#else +#error ??? +#endif + +#endif // STEAMCLIENTPUBLIC_H diff --git a/CodeGen/steam/steamencryptedappticket.h b/CodeGen/steam/steamencryptedappticket.h index 764c6838..4419a0be 100644 --- a/CodeGen/steam/steamencryptedappticket.h +++ b/CodeGen/steam/steamencryptedappticket.h @@ -1,40 +1,40 @@ -//========= Copyright © 1996-2010, Valve LLC, All rights reserved. ============ -// -// Purpose: utilities to decode/decrypt a ticket from the -// ISteamUser::RequestEncryptedAppTicket, ISteamUser::GetEncryptedAppTicket API -// -// To use: declare CSteamEncryptedAppTicket, then call BDecryptTicket -// if BDecryptTicket returns true, other accessors are valid -// -//============================================================================= - -#include "steam_api.h" - -static const int k_nSteamEncryptedAppTicketSymmetricKeyLen = 32; - - -S_API bool SteamEncryptedAppTicket_BDecryptTicket( const uint8 *rgubTicketEncrypted, uint32 cubTicketEncrypted, - uint8 *rgubTicketDecrypted, uint32 *pcubTicketDecrypted, - const uint8 rgubKey[k_nSteamEncryptedAppTicketSymmetricKeyLen], int cubKey ); - -S_API bool SteamEncryptedAppTicket_BIsTicketForApp( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, AppId_t nAppID ); - -S_API RTime32 SteamEncryptedAppTicket_GetTicketIssueTime( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); - -S_API void SteamEncryptedAppTicket_GetTicketSteamID( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, CSteamID *psteamID ); - -S_API AppId_t SteamEncryptedAppTicket_GetTicketAppID( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); - -S_API bool SteamEncryptedAppTicket_BUserOwnsAppInTicket( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, AppId_t nAppID ); - -S_API bool SteamEncryptedAppTicket_BUserIsVacBanned( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); - -S_API bool SteamEncryptedAppTicket_BGetAppDefinedValue( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, uint32 *pValue ); - -S_API const uint8 *SteamEncryptedAppTicket_GetUserVariableData( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, uint32 *pcubUserData ); - -S_API bool SteamEncryptedAppTicket_BIsTicketSigned( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, const uint8 *pubRSAKey, uint32 cubRSAKey ); - -S_API bool SteamEncryptedAppTicket_BIsLicenseBorrowed( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); - -S_API bool SteamEncryptedAppTicket_BIsLicenseTemporary( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); +//========= Copyright © 1996-2010, Valve LLC, All rights reserved. ============ +// +// Purpose: utilities to decode/decrypt a ticket from the +// ISteamUser::RequestEncryptedAppTicket, ISteamUser::GetEncryptedAppTicket API +// +// To use: declare CSteamEncryptedAppTicket, then call BDecryptTicket +// if BDecryptTicket returns true, other accessors are valid +// +//============================================================================= + +#include "steam_api.h" + +static const int k_nSteamEncryptedAppTicketSymmetricKeyLen = 32; + + +S_API bool SteamEncryptedAppTicket_BDecryptTicket( const uint8 *rgubTicketEncrypted, uint32 cubTicketEncrypted, + uint8 *rgubTicketDecrypted, uint32 *pcubTicketDecrypted, + const uint8 rgubKey[k_nSteamEncryptedAppTicketSymmetricKeyLen], int cubKey ); + +S_API bool SteamEncryptedAppTicket_BIsTicketForApp( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, AppId_t nAppID ); + +S_API RTime32 SteamEncryptedAppTicket_GetTicketIssueTime( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); + +S_API void SteamEncryptedAppTicket_GetTicketSteamID( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, CSteamID *psteamID ); + +S_API AppId_t SteamEncryptedAppTicket_GetTicketAppID( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); + +S_API bool SteamEncryptedAppTicket_BUserOwnsAppInTicket( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, AppId_t nAppID ); + +S_API bool SteamEncryptedAppTicket_BUserIsVacBanned( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); + +S_API bool SteamEncryptedAppTicket_BGetAppDefinedValue( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, uint32 *pValue ); + +S_API const uint8 *SteamEncryptedAppTicket_GetUserVariableData( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, uint32 *pcubUserData ); + +S_API bool SteamEncryptedAppTicket_BIsTicketSigned( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, const uint8 *pubRSAKey, uint32 cubRSAKey ); + +S_API bool SteamEncryptedAppTicket_BIsLicenseBorrowed( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); + +S_API bool SteamEncryptedAppTicket_BIsLicenseTemporary( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted ); diff --git a/CodeGen/steam/steamhttpenums.h b/CodeGen/steam/steamhttpenums.h index ff8551ef..056b0e5f 100644 --- a/CodeGen/steam/steamhttpenums.h +++ b/CodeGen/steam/steamhttpenums.h @@ -1,99 +1,99 @@ -//====== Copyright © 1996-2010, Valve Corporation, All rights reserved. ======= -// -// Purpose: HTTP related enums, stuff that is shared by both clients and servers, and our -// UI projects goes here. -// -//============================================================================= - -#ifndef STEAMHTTPENUMS_H -#define STEAMHTTPENUMS_H -#ifdef _WIN32 -#pragma once -#endif - -// HTTP related types - -// This enum is used in client API methods, do not re-number existing values. -enum EHTTPMethod -{ - k_EHTTPMethodInvalid = 0, - k_EHTTPMethodGET, - k_EHTTPMethodHEAD, - k_EHTTPMethodPOST, - k_EHTTPMethodPUT, - k_EHTTPMethodDELETE, - k_EHTTPMethodOPTIONS, - k_EHTTPMethodPATCH, - - // The remaining HTTP methods are not yet supported, per rfc2616 section 5.1.1 only GET and HEAD are required for - // a compliant general purpose server. We'll likely add more as we find uses for them. - - // k_EHTTPMethodTRACE, - // k_EHTTPMethodCONNECT -}; - - -// HTTP Status codes that the server can send in response to a request, see rfc2616 section 10.3 for descriptions -// of each of these. -enum EHTTPStatusCode -{ - // Invalid status code (this isn't defined in HTTP, used to indicate unset in our code) - k_EHTTPStatusCodeInvalid = 0, - - // Informational codes - k_EHTTPStatusCode100Continue = 100, - k_EHTTPStatusCode101SwitchingProtocols = 101, - - // Success codes - k_EHTTPStatusCode200OK = 200, - k_EHTTPStatusCode201Created = 201, - k_EHTTPStatusCode202Accepted = 202, - k_EHTTPStatusCode203NonAuthoritative = 203, - k_EHTTPStatusCode204NoContent = 204, - k_EHTTPStatusCode205ResetContent = 205, - k_EHTTPStatusCode206PartialContent = 206, - - // Redirection codes - k_EHTTPStatusCode300MultipleChoices = 300, - k_EHTTPStatusCode301MovedPermanently = 301, - k_EHTTPStatusCode302Found = 302, - k_EHTTPStatusCode303SeeOther = 303, - k_EHTTPStatusCode304NotModified = 304, - k_EHTTPStatusCode305UseProxy = 305, - //k_EHTTPStatusCode306Unused = 306, (used in old HTTP spec, now unused in 1.1) - k_EHTTPStatusCode307TemporaryRedirect = 307, - - // Error codes - k_EHTTPStatusCode400BadRequest = 400, - k_EHTTPStatusCode401Unauthorized = 401, // You probably want 403 or something else. 401 implies you're sending a WWW-Authenticate header and the client can sent an Authorization header in response. - k_EHTTPStatusCode402PaymentRequired = 402, // This is reserved for future HTTP specs, not really supported by clients - k_EHTTPStatusCode403Forbidden = 403, - k_EHTTPStatusCode404NotFound = 404, - k_EHTTPStatusCode405MethodNotAllowed = 405, - k_EHTTPStatusCode406NotAcceptable = 406, - k_EHTTPStatusCode407ProxyAuthRequired = 407, - k_EHTTPStatusCode408RequestTimeout = 408, - k_EHTTPStatusCode409Conflict = 409, - k_EHTTPStatusCode410Gone = 410, - k_EHTTPStatusCode411LengthRequired = 411, - k_EHTTPStatusCode412PreconditionFailed = 412, - k_EHTTPStatusCode413RequestEntityTooLarge = 413, - k_EHTTPStatusCode414RequestURITooLong = 414, - k_EHTTPStatusCode415UnsupportedMediaType = 415, - k_EHTTPStatusCode416RequestedRangeNotSatisfiable = 416, - k_EHTTPStatusCode417ExpectationFailed = 417, - k_EHTTPStatusCode4xxUnknown = 418, // 418 is reserved, so we'll use it to mean unknown - k_EHTTPStatusCode429TooManyRequests = 429, - k_EHTTPStatusCode444ConnectionClosed = 444, // nginx only? - - // Server error codes - k_EHTTPStatusCode500InternalServerError = 500, - k_EHTTPStatusCode501NotImplemented = 501, - k_EHTTPStatusCode502BadGateway = 502, - k_EHTTPStatusCode503ServiceUnavailable = 503, - k_EHTTPStatusCode504GatewayTimeout = 504, - k_EHTTPStatusCode505HTTPVersionNotSupported = 505, - k_EHTTPStatusCode5xxUnknown = 599, -}; - +//====== Copyright © 1996-2010, Valve Corporation, All rights reserved. ======= +// +// Purpose: HTTP related enums, stuff that is shared by both clients and servers, and our +// UI projects goes here. +// +//============================================================================= + +#ifndef STEAMHTTPENUMS_H +#define STEAMHTTPENUMS_H +#ifdef _WIN32 +#pragma once +#endif + +// HTTP related types + +// This enum is used in client API methods, do not re-number existing values. +enum EHTTPMethod +{ + k_EHTTPMethodInvalid = 0, + k_EHTTPMethodGET, + k_EHTTPMethodHEAD, + k_EHTTPMethodPOST, + k_EHTTPMethodPUT, + k_EHTTPMethodDELETE, + k_EHTTPMethodOPTIONS, + k_EHTTPMethodPATCH, + + // The remaining HTTP methods are not yet supported, per rfc2616 section 5.1.1 only GET and HEAD are required for + // a compliant general purpose server. We'll likely add more as we find uses for them. + + // k_EHTTPMethodTRACE, + // k_EHTTPMethodCONNECT +}; + + +// HTTP Status codes that the server can send in response to a request, see rfc2616 section 10.3 for descriptions +// of each of these. +enum EHTTPStatusCode +{ + // Invalid status code (this isn't defined in HTTP, used to indicate unset in our code) + k_EHTTPStatusCodeInvalid = 0, + + // Informational codes + k_EHTTPStatusCode100Continue = 100, + k_EHTTPStatusCode101SwitchingProtocols = 101, + + // Success codes + k_EHTTPStatusCode200OK = 200, + k_EHTTPStatusCode201Created = 201, + k_EHTTPStatusCode202Accepted = 202, + k_EHTTPStatusCode203NonAuthoritative = 203, + k_EHTTPStatusCode204NoContent = 204, + k_EHTTPStatusCode205ResetContent = 205, + k_EHTTPStatusCode206PartialContent = 206, + + // Redirection codes + k_EHTTPStatusCode300MultipleChoices = 300, + k_EHTTPStatusCode301MovedPermanently = 301, + k_EHTTPStatusCode302Found = 302, + k_EHTTPStatusCode303SeeOther = 303, + k_EHTTPStatusCode304NotModified = 304, + k_EHTTPStatusCode305UseProxy = 305, + //k_EHTTPStatusCode306Unused = 306, (used in old HTTP spec, now unused in 1.1) + k_EHTTPStatusCode307TemporaryRedirect = 307, + + // Error codes + k_EHTTPStatusCode400BadRequest = 400, + k_EHTTPStatusCode401Unauthorized = 401, // You probably want 403 or something else. 401 implies you're sending a WWW-Authenticate header and the client can sent an Authorization header in response. + k_EHTTPStatusCode402PaymentRequired = 402, // This is reserved for future HTTP specs, not really supported by clients + k_EHTTPStatusCode403Forbidden = 403, + k_EHTTPStatusCode404NotFound = 404, + k_EHTTPStatusCode405MethodNotAllowed = 405, + k_EHTTPStatusCode406NotAcceptable = 406, + k_EHTTPStatusCode407ProxyAuthRequired = 407, + k_EHTTPStatusCode408RequestTimeout = 408, + k_EHTTPStatusCode409Conflict = 409, + k_EHTTPStatusCode410Gone = 410, + k_EHTTPStatusCode411LengthRequired = 411, + k_EHTTPStatusCode412PreconditionFailed = 412, + k_EHTTPStatusCode413RequestEntityTooLarge = 413, + k_EHTTPStatusCode414RequestURITooLong = 414, + k_EHTTPStatusCode415UnsupportedMediaType = 415, + k_EHTTPStatusCode416RequestedRangeNotSatisfiable = 416, + k_EHTTPStatusCode417ExpectationFailed = 417, + k_EHTTPStatusCode4xxUnknown = 418, // 418 is reserved, so we'll use it to mean unknown + k_EHTTPStatusCode429TooManyRequests = 429, + k_EHTTPStatusCode444ConnectionClosed = 444, // nginx only? + + // Server error codes + k_EHTTPStatusCode500InternalServerError = 500, + k_EHTTPStatusCode501NotImplemented = 501, + k_EHTTPStatusCode502BadGateway = 502, + k_EHTTPStatusCode503ServiceUnavailable = 503, + k_EHTTPStatusCode504GatewayTimeout = 504, + k_EHTTPStatusCode505HTTPVersionNotSupported = 505, + k_EHTTPStatusCode5xxUnknown = 599, +}; + #endif // STEAMHTTPENUMS_H \ No newline at end of file diff --git a/CodeGen/steam/steamps3params.h b/CodeGen/steam/steamps3params.h index c7a659dc..c0741b4b 100644 --- a/CodeGen/steam/steamps3params.h +++ b/CodeGen/steam/steamps3params.h @@ -1,112 +1,112 @@ -//====== Copyright 1996-2008, Valve Corporation, All rights reserved. ======= -// -// Purpose: -// -//============================================================================= - -#ifndef STEAMPS3PARAMS_H -#define STEAMPS3PARAMS_H -#ifdef _WIN32 -#pragma once -#endif - -//----------------------------------------------------------------------------------------------------------------------------------------------------------// -// PlayStation 3 initialization parameters -// -// The following structure must be passed to when loading steam_api_ps3.prx -//----------------------------------------------------------------------------------------------------------------------------------------------------------// -#define STEAM_PS3_PATH_MAX 1055 -#define STEAM_PS3_SERVICE_ID_MAX 32 -#define STEAM_PS3_COMMUNICATION_ID_MAX 10 -#define STEAM_PS3_COMMUNICATION_SIG_MAX 160 -#define STEAM_PS3_LANGUAGE_MAX 64 -#define STEAM_PS3_REGION_CODE_MAX 16 -#define STEAM_PS3_CURRENT_PARAMS_VER 2 -struct SteamPS3Params_t -{ - uint32 m_unVersion; // set to STEAM_PS3_CURRENT_PARAMS_VER - - void *pReserved; - uint32 m_nAppId; // set to your game's appid - - char m_rgchInstallationPath[ STEAM_PS3_PATH_MAX ]; // directory containing latest steam prx's and sdata. Can be read only (BDVD) - char m_rgchSystemCache[ STEAM_PS3_PATH_MAX ]; // temp working cache, not persistent - char m_rgchGameData[ STEAM_PS3_PATH_MAX ]; // persistent game data path for storing user data - char m_rgchNpServiceID[ STEAM_PS3_SERVICE_ID_MAX ]; - char m_rgchNpCommunicationID[ STEAM_PS3_COMMUNICATION_ID_MAX ]; - char m_rgchNpCommunicationSig[ STEAM_PS3_COMMUNICATION_SIG_MAX ]; - - // Language should be one of the following. must be zero terminated - // danish - // dutch - // english - // finnish - // french - // german - // italian - // korean - // norwegian - // polish - // portuguese - // russian - // schinese - // spanish - // swedish - // tchinese - char m_rgchSteamLanguage[ STEAM_PS3_LANGUAGE_MAX ]; - - // region codes are "SCEA", "SCEE", "SCEJ". must be zero terminated - char m_rgchRegionCode[ STEAM_PS3_REGION_CODE_MAX ]; - - // Should be SYS_TTYP3 through SYS_TTYP10, if it's 0 then Steam won't spawn a - // thread to read console input at all. Using this let's you use Steam console commands - // like: profile_on, profile_off, profile_dump, mem_stats, mem_validate. - unsigned int m_cSteamInputTTY; - - struct Ps3netInit_t - { - bool m_bNeedInit; - void *m_pMemory; - int m_nMemorySize; - int m_flags; - } m_sysNetInitInfo; - - struct Ps3jpgInit_t - { - bool m_bNeedInit; - } m_sysJpgInitInfo; - - struct Ps3pngInit_t - { - bool m_bNeedInit; - } m_sysPngInitInfo; - - struct Ps3sysutilUserInfo_t - { - bool m_bNeedInit; - } m_sysSysUtilUserInfo; - - bool m_bIncludeNewsPage; -}; - - -//----------------------------------------------------------------------------------------------------------------------------------------------------------// -// PlayStation 3 memory structure -//----------------------------------------------------------------------------------------------------------------------------------------------------------// -#define STEAMPS3_MALLOC_INUSE 0x53D04A51 -#define STEAMPS3_MALLOC_SYSTEM 0x0D102C48 -#define STEAMPS3_MALLOC_OK 0xFFD04A51 -struct SteamPS3Memory_t -{ - bool m_bSingleAllocation; // If true, Steam will request one 6MB allocation and use the returned memory for all future allocations - // If false, Steam will make call malloc for each allocation - - // required function pointers - void* (*m_pfMalloc)(size_t); - void* (*m_pfRealloc)(void *, size_t); - void (*m_pfFree)(void *); - size_t (*m_pUsable_size)(void*); -}; - - -#endif // STEAMPS3PARAMS_H +//====== Copyright 1996-2008, Valve Corporation, All rights reserved. ======= +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMPS3PARAMS_H +#define STEAMPS3PARAMS_H +#ifdef _WIN32 +#pragma once +#endif + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// PlayStation 3 initialization parameters +// +// The following structure must be passed to when loading steam_api_ps3.prx +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#define STEAM_PS3_PATH_MAX 1055 +#define STEAM_PS3_SERVICE_ID_MAX 32 +#define STEAM_PS3_COMMUNICATION_ID_MAX 10 +#define STEAM_PS3_COMMUNICATION_SIG_MAX 160 +#define STEAM_PS3_LANGUAGE_MAX 64 +#define STEAM_PS3_REGION_CODE_MAX 16 +#define STEAM_PS3_CURRENT_PARAMS_VER 2 +struct SteamPS3Params_t +{ + uint32 m_unVersion; // set to STEAM_PS3_CURRENT_PARAMS_VER + + void *pReserved; + uint32 m_nAppId; // set to your game's appid + + char m_rgchInstallationPath[ STEAM_PS3_PATH_MAX ]; // directory containing latest steam prx's and sdata. Can be read only (BDVD) + char m_rgchSystemCache[ STEAM_PS3_PATH_MAX ]; // temp working cache, not persistent + char m_rgchGameData[ STEAM_PS3_PATH_MAX ]; // persistent game data path for storing user data + char m_rgchNpServiceID[ STEAM_PS3_SERVICE_ID_MAX ]; + char m_rgchNpCommunicationID[ STEAM_PS3_COMMUNICATION_ID_MAX ]; + char m_rgchNpCommunicationSig[ STEAM_PS3_COMMUNICATION_SIG_MAX ]; + + // Language should be one of the following. must be zero terminated + // danish + // dutch + // english + // finnish + // french + // german + // italian + // korean + // norwegian + // polish + // portuguese + // russian + // schinese + // spanish + // swedish + // tchinese + char m_rgchSteamLanguage[ STEAM_PS3_LANGUAGE_MAX ]; + + // region codes are "SCEA", "SCEE", "SCEJ". must be zero terminated + char m_rgchRegionCode[ STEAM_PS3_REGION_CODE_MAX ]; + + // Should be SYS_TTYP3 through SYS_TTYP10, if it's 0 then Steam won't spawn a + // thread to read console input at all. Using this let's you use Steam console commands + // like: profile_on, profile_off, profile_dump, mem_stats, mem_validate. + unsigned int m_cSteamInputTTY; + + struct Ps3netInit_t + { + bool m_bNeedInit; + void *m_pMemory; + int m_nMemorySize; + int m_flags; + } m_sysNetInitInfo; + + struct Ps3jpgInit_t + { + bool m_bNeedInit; + } m_sysJpgInitInfo; + + struct Ps3pngInit_t + { + bool m_bNeedInit; + } m_sysPngInitInfo; + + struct Ps3sysutilUserInfo_t + { + bool m_bNeedInit; + } m_sysSysUtilUserInfo; + + bool m_bIncludeNewsPage; +}; + + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// PlayStation 3 memory structure +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#define STEAMPS3_MALLOC_INUSE 0x53D04A51 +#define STEAMPS3_MALLOC_SYSTEM 0x0D102C48 +#define STEAMPS3_MALLOC_OK 0xFFD04A51 +struct SteamPS3Memory_t +{ + bool m_bSingleAllocation; // If true, Steam will request one 6MB allocation and use the returned memory for all future allocations + // If false, Steam will make call malloc for each allocation + + // required function pointers + void* (*m_pfMalloc)(size_t); + void* (*m_pfRealloc)(void *, size_t); + void (*m_pfFree)(void *); + size_t (*m_pUsable_size)(void*); +}; + + +#endif // STEAMPS3PARAMS_H diff --git a/CodeGen/steam/steamtypes.h b/CodeGen/steam/steamtypes.h index afef409a..77a484d2 100644 --- a/CodeGen/steam/steamtypes.h +++ b/CodeGen/steam/steamtypes.h @@ -1,263 +1,263 @@ -//========= Copyright © 1996-2008, Valve LLC, All rights reserved. ============ -// -// Purpose: -// -//============================================================================= - -#ifndef STEAMTYPES_H -#define STEAMTYPES_H -#ifdef _WIN32 -#pragma once -#endif - -#define S_CALLTYPE __cdecl - -// Steam-specific types. Defined here so this header file can be included in other code bases. -#ifndef WCHARTYPES_H -typedef unsigned char uint8; -#endif - -#if defined( __GNUC__ ) && !defined(POSIX) - #if __GNUC__ < 4 - #error "Steamworks requires GCC 4.X (4.2 or 4.4 have been tested)" - #endif - #define POSIX 1 -#endif - -#if defined(__x86_64__) || defined(_WIN64) || defined(__aarch64__) -#define X64BITS -#endif - -// Make sure VALVE_BIG_ENDIAN gets set on PS3, may already be set previously in Valve internal code. -#if !defined(VALVE_BIG_ENDIAN) && defined(_PS3) -#define VALVE_BIG_ENDIAN -#endif - -typedef unsigned char uint8; -typedef signed char int8; - -#if defined( _WIN32 ) - -typedef __int16 int16; -typedef unsigned __int16 uint16; -typedef __int32 int32; -typedef unsigned __int32 uint32; -typedef __int64 int64; -typedef unsigned __int64 uint64; - -typedef int64 lint64; -typedef uint64 ulint64; - -#ifdef X64BITS -typedef __int64 intp; // intp is an integer that can accomodate a pointer -typedef unsigned __int64 uintp; // (ie, sizeof(intp) >= sizeof(int) && sizeof(intp) >= sizeof(void *) -#else -typedef __int32 intp; -typedef unsigned __int32 uintp; -#endif - -#else // _WIN32 - -typedef short int16; -typedef unsigned short uint16; -typedef int int32; -typedef unsigned int uint32; -typedef long long int64; -typedef unsigned long long uint64; - -// [u]int64 are actually defined as 'long long' and gcc 64-bit -// doesn't automatically consider them the same as 'long int'. -// Changing the types for [u]int64 is complicated by -// there being many definitions, so we just -// define a 'long int' here and use it in places that would -// otherwise confuse the compiler. -typedef long int lint64; -typedef unsigned long int ulint64; - -#ifdef X64BITS -typedef long long intp; -typedef unsigned long long uintp; -#else -typedef int intp; -typedef unsigned int uintp; -#endif - -#endif // else _WIN32 - -#ifdef API_GEN -# define STEAM_CLANG_ATTR(ATTR) __attribute__((annotate( ATTR ))) -#else -# define STEAM_CLANG_ATTR(ATTR) -#endif - -#define STEAM_METHOD_DESC(DESC) STEAM_CLANG_ATTR( "desc:" #DESC ";" ) -#define STEAM_IGNOREATTR() STEAM_CLANG_ATTR( "ignore" ) -#define STEAM_OUT_STRUCT() STEAM_CLANG_ATTR( "out_struct: ;" ) -#define STEAM_OUT_STRING() STEAM_CLANG_ATTR( "out_string: ;" ) -#define STEAM_OUT_ARRAY_CALL(COUNTER,FUNCTION,PARAMS) STEAM_CLANG_ATTR( "out_array_call:" #COUNTER "," #FUNCTION "," #PARAMS ";" ) -#define STEAM_OUT_ARRAY_COUNT(COUNTER, DESC) STEAM_CLANG_ATTR( "out_array_count:" #COUNTER ";desc:" #DESC ) -#define STEAM_ARRAY_COUNT(COUNTER) STEAM_CLANG_ATTR( "array_count:" #COUNTER ";" ) -#define STEAM_ARRAY_COUNT_D(COUNTER, DESC) STEAM_CLANG_ATTR( "array_count:" #COUNTER ";desc:" #DESC ) -#define STEAM_BUFFER_COUNT(COUNTER) STEAM_CLANG_ATTR( "buffer_count:" #COUNTER ";" ) -#define STEAM_OUT_BUFFER_COUNT(COUNTER) STEAM_CLANG_ATTR( "out_buffer_count:" #COUNTER ";" ) -#define STEAM_OUT_STRING_COUNT(COUNTER) STEAM_CLANG_ATTR( "out_string_count:" #COUNTER ";" ) -#define STEAM_DESC(DESC) STEAM_CLANG_ATTR("desc:" #DESC ";") -#define STEAM_CALL_RESULT(RESULT_TYPE) STEAM_CLANG_ATTR("callresult:" #RESULT_TYPE ";") -#define STEAM_CALL_BACK(RESULT_TYPE) STEAM_CLANG_ATTR("callback:" #RESULT_TYPE ";") -#define STEAM_FLAT_NAME(NAME) STEAM_CLANG_ATTR("flat_name:" #NAME ";") - -const int k_cubSaltSize = 8; -typedef uint8 Salt_t[ k_cubSaltSize ]; - -//----------------------------------------------------------------------------- -// GID (GlobalID) stuff -// This is a globally unique identifier. It's guaranteed to be unique across all -// racks and servers for as long as a given universe persists. -//----------------------------------------------------------------------------- -// NOTE: for GID parsing/rendering and other utils, see gid.h -typedef uint64 GID_t; - -const GID_t k_GIDNil = 0xffffffffffffffffull; - -// For convenience, we define a number of types that are just new names for GIDs -typedef uint64 JobID_t; // Each Job has a unique ID -typedef GID_t TxnID_t; // Each financial transaction has a unique ID - -const GID_t k_TxnIDNil = k_GIDNil; -const GID_t k_TxnIDUnknown = 0; - -const JobID_t k_JobIDNil = 0xffffffffffffffffull; - -// this is baked into client messages and interfaces as an int, -// make sure we never break this. -typedef uint32 PackageId_t; -const PackageId_t k_uPackageIdInvalid = 0xFFFFFFFF; - -typedef uint32 BundleId_t; -const BundleId_t k_uBundleIdInvalid = 0; - -// this is baked into client messages and interfaces as an int, -// make sure we never break this. -typedef uint32 AppId_t; -const AppId_t k_uAppIdInvalid = 0x0; - -typedef uint64 AssetClassId_t; -const AssetClassId_t k_ulAssetClassIdInvalid = 0x0; - -typedef uint32 PhysicalItemId_t; -const PhysicalItemId_t k_uPhysicalItemIdInvalid = 0x0; - - -// this is baked into client messages and interfaces as an int, -// make sure we never break this. AppIds and DepotIDs also presently -// share the same namespace, but since we'd like to change that in the future -// I've defined it seperately here. -typedef uint32 DepotId_t; -const DepotId_t k_uDepotIdInvalid = 0x0; - -// RTime32 -// We use this 32 bit time representing real world time. -// It offers 1 second resolution beginning on January 1, 1970 (Unix time) -typedef uint32 RTime32; - -typedef uint32 CellID_t; -const CellID_t k_uCellIDInvalid = 0xFFFFFFFF; - -// handle to a Steam API call -typedef uint64 SteamAPICall_t; -const SteamAPICall_t k_uAPICallInvalid = 0x0; - -typedef uint32 AccountID_t; - -typedef uint32 PartnerId_t; -const PartnerId_t k_uPartnerIdInvalid = 0; - -// ID for a depot content manifest -typedef uint64 ManifestId_t; -const ManifestId_t k_uManifestIdInvalid = 0; - -// ID for cafe sites -typedef uint64 SiteId_t; -const SiteId_t k_ulSiteIdInvalid = 0; - -// Party Beacon ID -typedef uint64 PartyBeaconID_t; -const PartyBeaconID_t k_ulPartyBeaconIdInvalid = 0; - -enum ESteamIPType -{ - k_ESteamIPTypeIPv4 = 0, - k_ESteamIPTypeIPv6 = 1, -}; - -#pragma pack( push, 1 ) - -struct SteamIPAddress_t -{ - union { - - uint32 m_unIPv4; // Host order - uint8 m_rgubIPv6[16]; // Network order! Same as inaddr_in6. (0011:2233:4455:6677:8899:aabb:ccdd:eeff) - - // Internal use only - uint64 m_ipv6Qword[2]; // big endian - }; - - ESteamIPType m_eType; - - bool IsSet() const - { - if ( k_ESteamIPTypeIPv4 == m_eType ) - { - return m_unIPv4 != 0; - } - else - { - return m_ipv6Qword[0] !=0 || m_ipv6Qword[1] != 0; - } - } - - static SteamIPAddress_t IPv4Any() - { - SteamIPAddress_t ipOut; - ipOut.m_eType = k_ESteamIPTypeIPv4; - ipOut.m_unIPv4 = 0; - - return ipOut; - } - - static SteamIPAddress_t IPv6Any() - { - SteamIPAddress_t ipOut; - ipOut.m_eType = k_ESteamIPTypeIPv6; - ipOut.m_ipv6Qword[0] = 0; - ipOut.m_ipv6Qword[1] = 0; - - return ipOut; - } - - static SteamIPAddress_t IPv4Loopback() - { - SteamIPAddress_t ipOut; - ipOut.m_eType = k_ESteamIPTypeIPv4; - ipOut.m_unIPv4 = 0x7f000001; - - return ipOut; - } - - static SteamIPAddress_t IPv6Loopback() - { - SteamIPAddress_t ipOut; - ipOut.m_eType = k_ESteamIPTypeIPv6; - ipOut.m_ipv6Qword[0] = 0; - ipOut.m_ipv6Qword[1] = 0; - ipOut.m_rgubIPv6[15] = 1; - - return ipOut; - } -}; - -#pragma pack( pop ) - - -#endif // STEAMTYPES_H +//========= Copyright © 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMTYPES_H +#define STEAMTYPES_H +#ifdef _WIN32 +#pragma once +#endif + +#define S_CALLTYPE __cdecl + +// Steam-specific types. Defined here so this header file can be included in other code bases. +#ifndef WCHARTYPES_H +typedef unsigned char uint8; +#endif + +#if defined( __GNUC__ ) && !defined(POSIX) + #if __GNUC__ < 4 + #error "Steamworks requires GCC 4.X (4.2 or 4.4 have been tested)" + #endif + #define POSIX 1 +#endif + +#if defined(__x86_64__) || defined(_WIN64) || defined(__aarch64__) +#define X64BITS +#endif + +// Make sure VALVE_BIG_ENDIAN gets set on PS3, may already be set previously in Valve internal code. +#if !defined(VALVE_BIG_ENDIAN) && defined(_PS3) +#define VALVE_BIG_ENDIAN +#endif + +typedef unsigned char uint8; +typedef signed char int8; + +#if defined( _WIN32 ) + +typedef __int16 int16; +typedef unsigned __int16 uint16; +typedef __int32 int32; +typedef unsigned __int32 uint32; +typedef __int64 int64; +typedef unsigned __int64 uint64; + +typedef int64 lint64; +typedef uint64 ulint64; + +#ifdef X64BITS +typedef __int64 intp; // intp is an integer that can accomodate a pointer +typedef unsigned __int64 uintp; // (ie, sizeof(intp) >= sizeof(int) && sizeof(intp) >= sizeof(void *) +#else +typedef __int32 intp; +typedef unsigned __int32 uintp; +#endif + +#else // _WIN32 + +typedef short int16; +typedef unsigned short uint16; +typedef int int32; +typedef unsigned int uint32; +typedef long long int64; +typedef unsigned long long uint64; + +// [u]int64 are actually defined as 'long long' and gcc 64-bit +// doesn't automatically consider them the same as 'long int'. +// Changing the types for [u]int64 is complicated by +// there being many definitions, so we just +// define a 'long int' here and use it in places that would +// otherwise confuse the compiler. +typedef long int lint64; +typedef unsigned long int ulint64; + +#ifdef X64BITS +typedef long long intp; +typedef unsigned long long uintp; +#else +typedef int intp; +typedef unsigned int uintp; +#endif + +#endif // else _WIN32 + +#ifdef API_GEN +# define STEAM_CLANG_ATTR(ATTR) __attribute__((annotate( ATTR ))) +#else +# define STEAM_CLANG_ATTR(ATTR) +#endif + +#define STEAM_METHOD_DESC(DESC) STEAM_CLANG_ATTR( "desc:" #DESC ";" ) +#define STEAM_IGNOREATTR() STEAM_CLANG_ATTR( "ignore" ) +#define STEAM_OUT_STRUCT() STEAM_CLANG_ATTR( "out_struct: ;" ) +#define STEAM_OUT_STRING() STEAM_CLANG_ATTR( "out_string: ;" ) +#define STEAM_OUT_ARRAY_CALL(COUNTER,FUNCTION,PARAMS) STEAM_CLANG_ATTR( "out_array_call:" #COUNTER "," #FUNCTION "," #PARAMS ";" ) +#define STEAM_OUT_ARRAY_COUNT(COUNTER, DESC) STEAM_CLANG_ATTR( "out_array_count:" #COUNTER ";desc:" #DESC ) +#define STEAM_ARRAY_COUNT(COUNTER) STEAM_CLANG_ATTR( "array_count:" #COUNTER ";" ) +#define STEAM_ARRAY_COUNT_D(COUNTER, DESC) STEAM_CLANG_ATTR( "array_count:" #COUNTER ";desc:" #DESC ) +#define STEAM_BUFFER_COUNT(COUNTER) STEAM_CLANG_ATTR( "buffer_count:" #COUNTER ";" ) +#define STEAM_OUT_BUFFER_COUNT(COUNTER) STEAM_CLANG_ATTR( "out_buffer_count:" #COUNTER ";" ) +#define STEAM_OUT_STRING_COUNT(COUNTER) STEAM_CLANG_ATTR( "out_string_count:" #COUNTER ";" ) +#define STEAM_DESC(DESC) STEAM_CLANG_ATTR("desc:" #DESC ";") +#define STEAM_CALL_RESULT(RESULT_TYPE) STEAM_CLANG_ATTR("callresult:" #RESULT_TYPE ";") +#define STEAM_CALL_BACK(RESULT_TYPE) STEAM_CLANG_ATTR("callback:" #RESULT_TYPE ";") +#define STEAM_FLAT_NAME(NAME) STEAM_CLANG_ATTR("flat_name:" #NAME ";") + +const int k_cubSaltSize = 8; +typedef uint8 Salt_t[ k_cubSaltSize ]; + +//----------------------------------------------------------------------------- +// GID (GlobalID) stuff +// This is a globally unique identifier. It's guaranteed to be unique across all +// racks and servers for as long as a given universe persists. +//----------------------------------------------------------------------------- +// NOTE: for GID parsing/rendering and other utils, see gid.h +typedef uint64 GID_t; + +const GID_t k_GIDNil = 0xffffffffffffffffull; + +// For convenience, we define a number of types that are just new names for GIDs +typedef uint64 JobID_t; // Each Job has a unique ID +typedef GID_t TxnID_t; // Each financial transaction has a unique ID + +const GID_t k_TxnIDNil = k_GIDNil; +const GID_t k_TxnIDUnknown = 0; + +const JobID_t k_JobIDNil = 0xffffffffffffffffull; + +// this is baked into client messages and interfaces as an int, +// make sure we never break this. +typedef uint32 PackageId_t; +const PackageId_t k_uPackageIdInvalid = 0xFFFFFFFF; + +typedef uint32 BundleId_t; +const BundleId_t k_uBundleIdInvalid = 0; + +// this is baked into client messages and interfaces as an int, +// make sure we never break this. +typedef uint32 AppId_t; +const AppId_t k_uAppIdInvalid = 0x0; + +typedef uint64 AssetClassId_t; +const AssetClassId_t k_ulAssetClassIdInvalid = 0x0; + +typedef uint32 PhysicalItemId_t; +const PhysicalItemId_t k_uPhysicalItemIdInvalid = 0x0; + + +// this is baked into client messages and interfaces as an int, +// make sure we never break this. AppIds and DepotIDs also presently +// share the same namespace, but since we'd like to change that in the future +// I've defined it seperately here. +typedef uint32 DepotId_t; +const DepotId_t k_uDepotIdInvalid = 0x0; + +// RTime32 +// We use this 32 bit time representing real world time. +// It offers 1 second resolution beginning on January 1, 1970 (Unix time) +typedef uint32 RTime32; + +typedef uint32 CellID_t; +const CellID_t k_uCellIDInvalid = 0xFFFFFFFF; + +// handle to a Steam API call +typedef uint64 SteamAPICall_t; +const SteamAPICall_t k_uAPICallInvalid = 0x0; + +typedef uint32 AccountID_t; + +typedef uint32 PartnerId_t; +const PartnerId_t k_uPartnerIdInvalid = 0; + +// ID for a depot content manifest +typedef uint64 ManifestId_t; +const ManifestId_t k_uManifestIdInvalid = 0; + +// ID for cafe sites +typedef uint64 SiteId_t; +const SiteId_t k_ulSiteIdInvalid = 0; + +// Party Beacon ID +typedef uint64 PartyBeaconID_t; +const PartyBeaconID_t k_ulPartyBeaconIdInvalid = 0; + +enum ESteamIPType +{ + k_ESteamIPTypeIPv4 = 0, + k_ESteamIPTypeIPv6 = 1, +}; + +#pragma pack( push, 1 ) + +struct SteamIPAddress_t +{ + union { + + uint32 m_unIPv4; // Host order + uint8 m_rgubIPv6[16]; // Network order! Same as inaddr_in6. (0011:2233:4455:6677:8899:aabb:ccdd:eeff) + + // Internal use only + uint64 m_ipv6Qword[2]; // big endian + }; + + ESteamIPType m_eType; + + bool IsSet() const + { + if ( k_ESteamIPTypeIPv4 == m_eType ) + { + return m_unIPv4 != 0; + } + else + { + return m_ipv6Qword[0] !=0 || m_ipv6Qword[1] != 0; + } + } + + static SteamIPAddress_t IPv4Any() + { + SteamIPAddress_t ipOut; + ipOut.m_eType = k_ESteamIPTypeIPv4; + ipOut.m_unIPv4 = 0; + + return ipOut; + } + + static SteamIPAddress_t IPv6Any() + { + SteamIPAddress_t ipOut; + ipOut.m_eType = k_ESteamIPTypeIPv6; + ipOut.m_ipv6Qword[0] = 0; + ipOut.m_ipv6Qword[1] = 0; + + return ipOut; + } + + static SteamIPAddress_t IPv4Loopback() + { + SteamIPAddress_t ipOut; + ipOut.m_eType = k_ESteamIPTypeIPv4; + ipOut.m_unIPv4 = 0x7f000001; + + return ipOut; + } + + static SteamIPAddress_t IPv6Loopback() + { + SteamIPAddress_t ipOut; + ipOut.m_eType = k_ESteamIPTypeIPv6; + ipOut.m_ipv6Qword[0] = 0; + ipOut.m_ipv6Qword[1] = 0; + ipOut.m_rgubIPv6[15] = 1; + + return ipOut; + } +}; + +#pragma pack( pop ) + + +#endif // STEAMTYPES_H diff --git a/CodeGen/steam/steamuniverse.h b/CodeGen/steam/steamuniverse.h index 2318935f..dd384dcc 100644 --- a/CodeGen/steam/steamuniverse.h +++ b/CodeGen/steam/steamuniverse.h @@ -1,27 +1,27 @@ -//========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ -// -// Purpose: -// -//============================================================================= - -#ifndef STEAMUNIVERSE_H -#define STEAMUNIVERSE_H -#ifdef _WIN32 -#pragma once -#endif - - -// Steam universes. Each universe is a self-contained Steam instance. -enum EUniverse -{ - k_EUniverseInvalid = 0, - k_EUniversePublic = 1, - k_EUniverseBeta = 2, - k_EUniverseInternal = 3, - k_EUniverseDev = 4, - // k_EUniverseRC = 5, // no such universe anymore - k_EUniverseMax -}; - - -#endif // STEAMUNIVERSE_H +//========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ +// +// Purpose: +// +//============================================================================= + +#ifndef STEAMUNIVERSE_H +#define STEAMUNIVERSE_H +#ifdef _WIN32 +#pragma once +#endif + + +// Steam universes. Each universe is a self-contained Steam instance. +enum EUniverse +{ + k_EUniverseInvalid = 0, + k_EUniversePublic = 1, + k_EUniverseBeta = 2, + k_EUniverseInternal = 3, + k_EUniverseDev = 4, + // k_EUniverseRC = 5, // no such universe anymore + k_EUniverseMax +}; + + +#endif // STEAMUNIVERSE_H From 1f60545688de6fde90daaeb171fda4348b6c31a0 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sat, 5 Jun 2021 08:34:45 -0700 Subject: [PATCH 03/55] SteamNetworkingMessage_t: Implement a Release function which takes an IntPtr --- .../SteamNetworkingMessage_t.cs | 15 ++++++++++++++- .../SteamNetworkingMessage_t.cs | 15 ++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingMessage_t.cs b/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingMessage_t.cs index 4fff04cc..6a9beb56 100644 --- a/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingMessage_t.cs +++ b/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingMessage_t.cs @@ -79,7 +79,20 @@ public struct SteamNetworkingMessage_t /// You MUST call this when you're done with the object, /// to free up memory, etc. public void Release() { - NativeMethods.SteamAPI_SteamNetworkingMessage_t_Release(m_pfnRelease); + throw new System.NotImplementedException("Please use the static Release function instead which takes an IntPtr."); + } + + /// You MUST call this when you're done with the object, + /// to free up memory, etc. + /// This is a Steamworks.NET extension. + public static void Release(IntPtr pointer) { + NativeMethods.SteamAPI_SteamNetworkingMessage_t_Release(pointer); + } + + /// Convert an IntPtr received from ISteamNetworkingSockets.ReceiveMessagesOnPollGroup into our structure. + /// This is a Steamworks.NET extension. + public static SteamNetworkingMessage_t FromIntPtr(IntPtr pointer) { + return (SteamNetworkingMessage_t)Marshal.PtrToStructure(pointer, typeof(SteamNetworkingMessage_t)); } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs index 7335075f..84ac88ee 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs @@ -95,7 +95,20 @@ public struct SteamNetworkingMessage_t /// You MUST call this when you're done with the object, /// to free up memory, etc. public void Release() { - NativeMethods.SteamAPI_SteamNetworkingMessage_t_Release(m_pfnRelease); + throw new System.NotImplementedException("Please use the static Release function instead which takes an IntPtr."); + } + + /// You MUST call this when you're done with the object, + /// to free up memory, etc. + /// This is a Steamworks.NET extension. + public static void Release(IntPtr pointer) { + NativeMethods.SteamAPI_SteamNetworkingMessage_t_Release(pointer); + } + + /// Convert an IntPtr received from ISteamNetworkingSockets.ReceiveMessagesOnPollGroup into our structure. + /// This is a Steamworks.NET extension. + public static SteamNetworkingMessage_t FromIntPtr(IntPtr pointer) { + return (SteamNetworkingMessage_t)Marshal.PtrToStructure(pointer, typeof(SteamNetworkingMessage_t)); } } } From 353de9da3f59a56b7fc173aa2660571c95571bb8 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sat, 5 Jun 2021 08:35:08 -0700 Subject: [PATCH 04/55] SteamNetworkingMessage_t: Convert p_pfnFreeData from internal to public --- .../SteamNetworkingTypes/SteamNetworkingMessage_t.cs | 2 +- .../types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingMessage_t.cs b/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingMessage_t.cs index 6a9beb56..7bebdbb1 100644 --- a/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingMessage_t.cs +++ b/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingMessage_t.cs @@ -53,7 +53,7 @@ public struct SteamNetworkingMessage_t /// usually be something like: /// /// free( pMsg->m_pData ); - internal IntPtr m_pfnFreeData; + public IntPtr m_pfnFreeData; /// Function to used to decrement the internal reference count and, if /// it's zero, release the message. You should not set this function pointer, diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs index 84ac88ee..31b5f843 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs @@ -69,7 +69,7 @@ public struct SteamNetworkingMessage_t /// usually be something like: /// /// free( pMsg->m_pData ); - internal IntPtr m_pfnFreeData; + public IntPtr m_pfnFreeData; /// Function to used to decrement the internal reference count and, if /// it's zero, release the message. You should not set this function pointer, From b4dbd7fd4cd21c397abebf231bdb281e4d03c02c Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 30 May 2021 12:24:07 -0700 Subject: [PATCH 05/55] Update .gitignore --- .gitignore | 9 +++++---- CodeGen/.gitignore | 4 ---- 2 files changed, 5 insertions(+), 8 deletions(-) delete mode 100644 CodeGen/.gitignore diff --git a/.gitignore b/.gitignore index ea6f64f9..7b8f6834 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ -/Standalone/bin -/Standalone/obj -/Standalone/.vs -/.vs +bin/ +obj/ +.vs/ +__pycache__/ +/CodeGen/steam/lib/ diff --git a/CodeGen/.gitignore b/CodeGen/.gitignore deleted file mode 100644 index de72115d..00000000 --- a/CodeGen/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/__pycache__/ -/autogen/ -/types/ -/steam/lib/ \ No newline at end of file From 956d3031e8aa530c88ba6cc9d644c233974df8bd Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Mon, 12 Jul 2021 09:24:48 -0700 Subject: [PATCH 06/55] Fixup entrypoints for some SteamNetworkingSockets functions (Fixes #430) --- .../SteamNetworkingIPAddr.cs | 4 ++-- .../SteamNetworkingIdentity.cs | 4 ++-- CodeGen/templates/nativemethods.txt | 18 +++++++++--------- .../Runtime/autogen/NativeMethods.cs | 18 +++++++++--------- .../SteamNetworkingIPAddr.cs | 4 ++-- .../SteamNetworkingIdentity.cs | 4 ++-- 6 files changed, 26 insertions(+), 26 deletions(-) diff --git a/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingIPAddr.cs b/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingIPAddr.cs index 19655298..46c713d8 100644 --- a/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingIPAddr.cs +++ b/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingIPAddr.cs @@ -64,7 +64,7 @@ public bool IsLocalHost() { /// See also SteamNetworkingIdentityRender public void ToString(out string buf, bool bWithPort) { IntPtr buf2 = Marshal.AllocHGlobal(k_cchMaxString); - NativeMethods.SteamNetworkingIPAddr_ToString(ref this, buf2, k_cchMaxString, bWithPort); + NativeMethods.SteamAPI_SteamNetworkingIPAddr_ToString(ref this, buf2, k_cchMaxString, bWithPort); buf = InteropHelp.PtrToStringUTF8(buf2); Marshal.FreeHGlobal(buf2); } @@ -73,7 +73,7 @@ public void ToString(out string buf, bool bWithPort) { /// (This means that you cannot tell if a zero port was explicitly specified.) public bool ParseString(string pszStr) { using (var pszStr2 = new InteropHelp.UTF8StringHandle(pszStr)) { - return NativeMethods.SteamNetworkingIPAddr_ParseString(ref this, pszStr2); + return NativeMethods.SteamAPI_SteamNetworkingIPAddr_ParseString(ref this, pszStr2); } } diff --git a/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingIdentity.cs b/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingIdentity.cs index b8bc25bf..87eb0751 100644 --- a/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingIdentity.cs +++ b/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingIdentity.cs @@ -119,7 +119,7 @@ public bool Equals(SteamNetworkingIdentity x) { /// See also SteamNetworkingIPAddrRender public void ToString(out string buf) { IntPtr buf2 = Marshal.AllocHGlobal(k_cchMaxString); - NativeMethods.SteamNetworkingIdentity_ToString(ref this, buf2, k_cchMaxString); + NativeMethods.SteamAPI_SteamNetworkingIdentity_ToString(ref this, buf2, k_cchMaxString); buf = InteropHelp.PtrToStringUTF8(buf2); Marshal.FreeHGlobal(buf2); } @@ -131,7 +131,7 @@ public void ToString(out string buf) { /// looks invalid. public bool ParseString(string pszStr) { using (var pszStr2 = new InteropHelp.UTF8StringHandle(pszStr)) { - return NativeMethods.SteamNetworkingIdentity_ParseString(ref this, pszStr2); + return NativeMethods.SteamAPI_SteamNetworkingIdentity_ParseString(ref this, pszStr2); } } } diff --git a/CodeGen/templates/nativemethods.txt b/CodeGen/templates/nativemethods.txt index 6c9f6fd8..338a1cc8 100644 --- a/CodeGen/templates/nativemethods.txt +++ b/CodeGen/templates/nativemethods.txt @@ -196,12 +196,12 @@ namespace Steamworks { [return: MarshalAs(UnmanagedType.I1)] public static extern bool SteamAPI_SteamNetworkingIPAddr_IsLocalHost(ref SteamNetworkingIPAddr self); - [DllImport(NativeLibraryName, EntryPoint = "SteamNetworkingIPAddr_ToString", CallingConvention = CallingConvention.Cdecl)] - public static extern void SteamNetworkingIPAddr_ToString(ref SteamNetworkingIPAddr self, IntPtr buf, uint cbBuf, [MarshalAs(UnmanagedType.I1)] bool bWithPort); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_ToString", CallingConvention = CallingConvention.Cdecl)] + public static extern void SteamAPI_SteamNetworkingIPAddr_ToString(ref SteamNetworkingIPAddr self, IntPtr buf, uint cbBuf, [MarshalAs(UnmanagedType.I1)] bool bWithPort); - [DllImport(NativeLibraryName, EntryPoint = "SteamNetworkingIPAddr_ParseString", CallingConvention = CallingConvention.Cdecl)] + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_ParseString", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] - public static extern bool SteamNetworkingIPAddr_ParseString(ref SteamNetworkingIPAddr self, InteropHelp.UTF8StringHandle pszStr); + public static extern bool SteamAPI_SteamNetworkingIPAddr_ParseString(ref SteamNetworkingIPAddr self, InteropHelp.UTF8StringHandle pszStr); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_IsEqualTo", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] @@ -211,7 +211,7 @@ namespace Steamworks { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_Clear", CallingConvention = CallingConvention.Cdecl)] public static extern void SteamAPI_SteamNetworkingIdentity_Clear(ref SteamNetworkingIdentity self); - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_SetIPAddr", CallingConvention = CallingConvention.Cdecl)] + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_IsInvalid", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] public static extern bool SteamAPI_SteamNetworkingIdentity_IsInvalid(ref SteamNetworkingIdentity self); @@ -265,12 +265,12 @@ namespace Steamworks { [return: MarshalAs(UnmanagedType.I1)] public static extern bool SteamAPI_SteamNetworkingIdentity_IsEqualTo(ref SteamNetworkingIdentity self, ref SteamNetworkingIdentity x); - [DllImport(NativeLibraryName, EntryPoint = "SteamNetworkingIdentity_ToString", CallingConvention = CallingConvention.Cdecl)] - public static extern void SteamNetworkingIdentity_ToString(ref SteamNetworkingIdentity self, IntPtr buf, uint cbBuf); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_ToString", CallingConvention = CallingConvention.Cdecl)] + public static extern void SteamAPI_SteamNetworkingIdentity_ToString(ref SteamNetworkingIdentity self, IntPtr buf, uint cbBuf); - [DllImport(NativeLibraryName, EntryPoint = "SteamNetworkingIdentity_ParseString", CallingConvention = CallingConvention.Cdecl)] + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_ParseString", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] - public static extern bool SteamNetworkingIdentity_ParseString(ref SteamNetworkingIdentity self, InteropHelp.UTF8StringHandle pszStr); + public static extern bool SteamAPI_SteamNetworkingIdentity_ParseString(ref SteamNetworkingIdentity self, InteropHelp.UTF8StringHandle pszStr); #endregion #region SteamNetworkingMessage_t Accessors [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingMessage_t_Release", CallingConvention = CallingConvention.Cdecl)] diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs index 39ded328..3ab2a9d5 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs @@ -196,12 +196,12 @@ internal static class NativeMethods { [return: MarshalAs(UnmanagedType.I1)] public static extern bool SteamAPI_SteamNetworkingIPAddr_IsLocalHost(ref SteamNetworkingIPAddr self); - [DllImport(NativeLibraryName, EntryPoint = "SteamNetworkingIPAddr_ToString", CallingConvention = CallingConvention.Cdecl)] - public static extern void SteamNetworkingIPAddr_ToString(ref SteamNetworkingIPAddr self, IntPtr buf, uint cbBuf, [MarshalAs(UnmanagedType.I1)] bool bWithPort); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_ToString", CallingConvention = CallingConvention.Cdecl)] + public static extern void SteamAPI_SteamNetworkingIPAddr_ToString(ref SteamNetworkingIPAddr self, IntPtr buf, uint cbBuf, [MarshalAs(UnmanagedType.I1)] bool bWithPort); - [DllImport(NativeLibraryName, EntryPoint = "SteamNetworkingIPAddr_ParseString", CallingConvention = CallingConvention.Cdecl)] + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_ParseString", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] - public static extern bool SteamNetworkingIPAddr_ParseString(ref SteamNetworkingIPAddr self, InteropHelp.UTF8StringHandle pszStr); + public static extern bool SteamAPI_SteamNetworkingIPAddr_ParseString(ref SteamNetworkingIPAddr self, InteropHelp.UTF8StringHandle pszStr); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_IsEqualTo", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] @@ -211,7 +211,7 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_Clear", CallingConvention = CallingConvention.Cdecl)] public static extern void SteamAPI_SteamNetworkingIdentity_Clear(ref SteamNetworkingIdentity self); - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_SetIPAddr", CallingConvention = CallingConvention.Cdecl)] + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_IsInvalid", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] public static extern bool SteamAPI_SteamNetworkingIdentity_IsInvalid(ref SteamNetworkingIdentity self); @@ -265,12 +265,12 @@ internal static class NativeMethods { [return: MarshalAs(UnmanagedType.I1)] public static extern bool SteamAPI_SteamNetworkingIdentity_IsEqualTo(ref SteamNetworkingIdentity self, ref SteamNetworkingIdentity x); - [DllImport(NativeLibraryName, EntryPoint = "SteamNetworkingIdentity_ToString", CallingConvention = CallingConvention.Cdecl)] - public static extern void SteamNetworkingIdentity_ToString(ref SteamNetworkingIdentity self, IntPtr buf, uint cbBuf); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_ToString", CallingConvention = CallingConvention.Cdecl)] + public static extern void SteamAPI_SteamNetworkingIdentity_ToString(ref SteamNetworkingIdentity self, IntPtr buf, uint cbBuf); - [DllImport(NativeLibraryName, EntryPoint = "SteamNetworkingIdentity_ParseString", CallingConvention = CallingConvention.Cdecl)] + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_ParseString", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] - public static extern bool SteamNetworkingIdentity_ParseString(ref SteamNetworkingIdentity self, InteropHelp.UTF8StringHandle pszStr); + public static extern bool SteamAPI_SteamNetworkingIdentity_ParseString(ref SteamNetworkingIdentity self, InteropHelp.UTF8StringHandle pszStr); #endregion #region SteamNetworkingMessage_t Accessors [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingMessage_t_Release", CallingConvention = CallingConvention.Cdecl)] diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs index 7030f205..f1c1adca 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs @@ -80,7 +80,7 @@ public bool IsLocalHost() { /// See also SteamNetworkingIdentityRender public void ToString(out string buf, bool bWithPort) { IntPtr buf2 = Marshal.AllocHGlobal(k_cchMaxString); - NativeMethods.SteamNetworkingIPAddr_ToString(ref this, buf2, k_cchMaxString, bWithPort); + NativeMethods.SteamAPI_SteamNetworkingIPAddr_ToString(ref this, buf2, k_cchMaxString, bWithPort); buf = InteropHelp.PtrToStringUTF8(buf2); Marshal.FreeHGlobal(buf2); } @@ -89,7 +89,7 @@ public void ToString(out string buf, bool bWithPort) { /// (This means that you cannot tell if a zero port was explicitly specified.) public bool ParseString(string pszStr) { using (var pszStr2 = new InteropHelp.UTF8StringHandle(pszStr)) { - return NativeMethods.SteamNetworkingIPAddr_ParseString(ref this, pszStr2); + return NativeMethods.SteamAPI_SteamNetworkingIPAddr_ParseString(ref this, pszStr2); } } diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs index d44ad43e..56276e8c 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs @@ -135,7 +135,7 @@ public bool Equals(SteamNetworkingIdentity x) { /// See also SteamNetworkingIPAddrRender public void ToString(out string buf) { IntPtr buf2 = Marshal.AllocHGlobal(k_cchMaxString); - NativeMethods.SteamNetworkingIdentity_ToString(ref this, buf2, k_cchMaxString); + NativeMethods.SteamAPI_SteamNetworkingIdentity_ToString(ref this, buf2, k_cchMaxString); buf = InteropHelp.PtrToStringUTF8(buf2); Marshal.FreeHGlobal(buf2); } @@ -147,7 +147,7 @@ public void ToString(out string buf) { /// looks invalid. public bool ParseString(string pszStr) { using (var pszStr2 = new InteropHelp.UTF8StringHandle(pszStr)) { - return NativeMethods.SteamNetworkingIdentity_ParseString(ref this, pszStr2); + return NativeMethods.SteamAPI_SteamNetworkingIdentity_ParseString(ref this, pszStr2); } } } From 8446a2248e0b3e7de8875a91f8d57b0540699487 Mon Sep 17 00:00:00 2001 From: Chase <29675446+theace0296@users.noreply.github.com> Date: Wed, 18 Aug 2021 17:38:32 -0400 Subject: [PATCH 07/55] Add if statement to SteamParamStringArray deconstructor --- com.rlabrecque.steamworks.net/Runtime/InteropHelp.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/com.rlabrecque.steamworks.net/Runtime/InteropHelp.cs b/com.rlabrecque.steamworks.net/Runtime/InteropHelp.cs index e5ae79e9..ad305e32 100644 --- a/com.rlabrecque.steamworks.net/Runtime/InteropHelp.cs +++ b/com.rlabrecque.steamworks.net/Runtime/InteropHelp.cs @@ -149,9 +149,11 @@ public SteamParamStringArray(System.Collections.Generic.IList strings) { } ~SteamParamStringArray() { - foreach (IntPtr ptr in m_Strings) { - Marshal.FreeHGlobal(ptr); - } + if (m_Strings != null) { + foreach (IntPtr ptr in m_Strings) { + Marshal.FreeHGlobal(ptr); + } + } if (m_ptrStrings != IntPtr.Zero) { Marshal.FreeHGlobal(m_ptrStrings); From 9ab92309865402ea84cde82531aad1342c73db8f Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Mon, 30 Aug 2021 20:46:04 -0700 Subject: [PATCH 08/55] Fix ISteamNetworkingUtils_GetConfigValue parameter from out -> ref (#441) --- CodeGen/interfaces.py | 7 +++++++ .../Runtime/autogen/NativeMethods.cs | 2 +- .../Runtime/autogen/isteamgameservernetworkingutils.cs | 4 ++-- .../Runtime/autogen/isteamnetworkingutils.cs | 4 ++-- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/CodeGen/interfaces.py b/CodeGen/interfaces.py index 01ebee37..5b489bcb 100644 --- a/CodeGen/interfaces.py +++ b/CodeGen/interfaces.py @@ -409,6 +409,13 @@ "cbBuf": "uint", }, + "ISteamNetworkingUtils_GetConfigValue": { + "cbResult": "ref ulong", + }, + "ISteamGameServerNetworkingUtils_GetConfigValue": { + "cbResult": "ref ulong", + }, + "ISteamNetworkingSockets_SendMessages": { "pMessages": "SteamNetworkingMessage_t[]", "pOutMessageNumberOrResult": "long[]", diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs index 3ab2a9d5..f51d1b90 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs @@ -2176,7 +2176,7 @@ internal static class NativeMethods { public static extern bool ISteamNetworkingUtils_SetConfigValue(IntPtr instancePtr, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, IntPtr scopeObj, ESteamNetworkingConfigDataType eDataType, IntPtr pArg); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_GetConfigValue", CallingConvention = CallingConvention.Cdecl)] - public static extern ESteamNetworkingGetConfigValueResult ISteamNetworkingUtils_GetConfigValue(IntPtr instancePtr, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, IntPtr scopeObj, out ESteamNetworkingConfigDataType pOutDataType, IntPtr pResult, out ulong cbResult); + public static extern ESteamNetworkingGetConfigValueResult ISteamNetworkingUtils_GetConfigValue(IntPtr instancePtr, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, IntPtr scopeObj, out ESteamNetworkingConfigDataType pOutDataType, IntPtr pResult, ref ulong cbResult); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_GetConfigValueInfo", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs index 4dce6ca2..12f3327d 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs @@ -334,9 +334,9 @@ public static bool SetConfigValue(ESteamNetworkingConfigValue eValue, ESteamNetw /// / - pResult: Where to put the result. Pass NULL to query the required buffer size. (k_ESteamNetworkingGetConfigValue_BufferTooSmall will be returned.) /// / - cbResult: IN: the size of your buffer. OUT: the number of bytes filled in or required. /// - public static ESteamNetworkingGetConfigValueResult GetConfigValue(ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, IntPtr scopeObj, out ESteamNetworkingConfigDataType pOutDataType, IntPtr pResult, out ulong cbResult) { + public static ESteamNetworkingGetConfigValueResult GetConfigValue(ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, IntPtr scopeObj, out ESteamNetworkingConfigDataType pOutDataType, IntPtr pResult, ref ulong cbResult) { InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamNetworkingUtils_GetConfigValue(CSteamGameServerAPIContext.GetSteamNetworkingUtils(), eValue, eScopeType, scopeObj, out pOutDataType, pResult, out cbResult); + return NativeMethods.ISteamNetworkingUtils_GetConfigValue(CSteamGameServerAPIContext.GetSteamNetworkingUtils(), eValue, eScopeType, scopeObj, out pOutDataType, pResult, ref cbResult); } /// diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs index 3e8aa885..6e22a20b 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs @@ -334,9 +334,9 @@ public static bool SetConfigValue(ESteamNetworkingConfigValue eValue, ESteamNetw /// / - pResult: Where to put the result. Pass NULL to query the required buffer size. (k_ESteamNetworkingGetConfigValue_BufferTooSmall will be returned.) /// / - cbResult: IN: the size of your buffer. OUT: the number of bytes filled in or required. /// - public static ESteamNetworkingGetConfigValueResult GetConfigValue(ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, IntPtr scopeObj, out ESteamNetworkingConfigDataType pOutDataType, IntPtr pResult, out ulong cbResult) { + public static ESteamNetworkingGetConfigValueResult GetConfigValue(ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, IntPtr scopeObj, out ESteamNetworkingConfigDataType pOutDataType, IntPtr pResult, ref ulong cbResult) { InteropHelp.TestIfAvailableClient(); - return NativeMethods.ISteamNetworkingUtils_GetConfigValue(CSteamAPIContext.GetSteamNetworkingUtils(), eValue, eScopeType, scopeObj, out pOutDataType, pResult, out cbResult); + return NativeMethods.ISteamNetworkingUtils_GetConfigValue(CSteamAPIContext.GetSteamNetworkingUtils(), eValue, eScopeType, scopeObj, out pOutDataType, pResult, ref cbResult); } /// From 83b0d3658f44d9840bb8914d6bd646dc05267a7c Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Thu, 7 Oct 2021 22:15:58 -0700 Subject: [PATCH 09/55] Update to Steamworks SDK 1.52 --- .../SteamInputActionEventCallbackPointer.cs | 6 + .../SteamInput/SteamInputActionEvent_t.cs | 49 ++ CodeGen/SteamworksParser | 2 +- CodeGen/constants.py | 21 +- CodeGen/enums.py | 7 +- CodeGen/interfaces.py | 11 +- CodeGen/steam/isteamapplist.h | 11 +- CodeGen/steam/isteamapps.h | 4 - CodeGen/steam/isteamcontroller.h | 7 +- CodeGen/steam/isteamgameserver.h | 134 +-- CodeGen/steam/isteamhtmlsurface.h | 1 - CodeGen/steam/isteaminput.h | 213 ++++- CodeGen/steam/isteaminventory.h | 13 - CodeGen/steam/isteammasterserverupdater.h | 1 - CodeGen/steam/isteamnetworkingsockets.h | 41 +- CodeGen/steam/isteamnetworkingutils.h | 2 +- CodeGen/steam/isteamremotestorage.h | 112 +-- CodeGen/steam/isteamugc.h | 32 + CodeGen/steam/isteamuser.h | 10 +- CodeGen/steam/isteamuserstats.h | 3 +- CodeGen/steam/isteamutils.h | 37 +- CodeGen/steam/steam_api.json | 793 ++++++++++-------- CodeGen/steam/steam_api_flat.h | 65 +- CodeGen/steam/steam_api_internal.h | 27 +- CodeGen/steam/steam_gameserver.h | 19 +- CodeGen/steam/steamclientpublic.h | 365 +------- CodeGen/steam/steamdatagram_tickets.h | 286 ------- CodeGen/steam/steamnetworkingtypes.h | 167 ++-- CodeGen/steam/steamtypes.h | 101 +-- CodeGen/structs.py | 5 +- CodeGen/typedefs.py | 16 - README.md | 2 +- Standalone/Steamworks.NET.Standard.csproj | 208 ++--- Standalone/Steamworks.NET.csproj | 4 +- .../Plugins/libsteam_api.so | Bin 404759 -> 415926 bytes .../Contents/MacOS/libsteam_api.dylib | Bin 453312 -> 608768 bytes .../Plugins/steam_api.dll | Bin 239904 -> 260840 bytes .../Plugins/steam_api64.dll | Bin 265504 -> 290536 bytes com.rlabrecque.steamworks.net/README.md | 2 +- .../Runtime/Steam.cs | 11 +- .../Runtime/Version.cs | 8 +- .../Runtime/autogen/NativeMethods.cs | 158 ++-- .../Runtime/autogen/SteamCallbacks.cs | 165 ++-- .../Runtime/autogen/SteamConstants.cs | 41 +- .../Runtime/autogen/SteamEnums.cs | 428 ++++------ .../Runtime/autogen/SteamStructs.cs | 37 - .../Runtime/autogen/isteamgameserver.cs | 145 ++-- .../Runtime/autogen/isteamgameserverapps.cs | 269 ------ .../autogen/isteamgameserverapps.cs.meta | 11 - .../isteamgameservernetworkingsockets.cs | 26 +- .../isteamgameservernetworkingutils.cs | 2 +- .../Runtime/autogen/isteamgameserverugc.cs | 16 + .../Runtime/autogen/isteamgameserverutils.cs | 27 +- .../Runtime/autogen/isteaminput.cs | 155 +++- .../autogen/isteamnetworkingsockets.cs | 26 +- .../Runtime/autogen/isteamnetworkingutils.cs | 2 +- .../Runtime/autogen/isteamremotestorage.cs | 81 +- .../Runtime/autogen/isteamugc.cs | 16 + .../Runtime/autogen/isteamuser.cs | 12 +- .../Runtime/autogen/isteamutils.cs | 27 +- .../SteamInputActionEventCallbackPointer.cs | 22 + .../SteamInput/SteamInputActionEvent_t.cs | 65 ++ .../Runtime/types/SteamTypes/ManifestId_t.cs | 65 -- .../Runtime/types/SteamTypes/SiteId_t.cs | 65 -- 64 files changed, 2122 insertions(+), 2535 deletions(-) create mode 100644 CodeGen/CustomTypes/SteamInput/SteamInputActionEventCallbackPointer.cs create mode 100644 CodeGen/CustomTypes/SteamInput/SteamInputActionEvent_t.cs delete mode 100644 CodeGen/steam/isteammasterserverupdater.h delete mode 100644 CodeGen/steam/steamdatagram_tickets.h delete mode 100644 com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverapps.cs delete mode 100644 com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverapps.cs.meta create mode 100644 com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEventCallbackPointer.cs create mode 100644 com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs delete mode 100644 com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/ManifestId_t.cs delete mode 100644 com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SiteId_t.cs diff --git a/CodeGen/CustomTypes/SteamInput/SteamInputActionEventCallbackPointer.cs b/CodeGen/CustomTypes/SteamInput/SteamInputActionEventCallbackPointer.cs new file mode 100644 index 00000000..a9622a02 --- /dev/null +++ b/CodeGen/CustomTypes/SteamInput/SteamInputActionEventCallbackPointer.cs @@ -0,0 +1,6 @@ +namespace Steamworks { + [System.Runtime.InteropServices.UnmanagedFunctionPointer(System.Runtime.InteropServices.CallingConvention.Cdecl)] + public delegate void SteamInputActionEventCallbackPointer(IntPtr /* SteamInputActionEvent_t* */ SteamInputActionEvent); +} + +#endif // !DISABLESTEAMWORKS diff --git a/CodeGen/CustomTypes/SteamInput/SteamInputActionEvent_t.cs b/CodeGen/CustomTypes/SteamInput/SteamInputActionEvent_t.cs new file mode 100644 index 00000000..2b8de128 --- /dev/null +++ b/CodeGen/CustomTypes/SteamInput/SteamInputActionEvent_t.cs @@ -0,0 +1,49 @@ +namespace Steamworks +{ + //----------------------------------------------------------------------------- + // Purpose: when callbacks are enabled this fires each time a controller action + // state changes + //----------------------------------------------------------------------------- + [System.Serializable] + [StructLayout(LayoutKind.Sequential)] + public struct SteamInputActionEvent_t + { + public InputHandle_t controllerHandle; + + public ESteamInputActionEventType eEventType; + + /// Option value + public OptionValue m_val; + + [System.Serializable] + [StructLayout(LayoutKind.Sequential)] + public struct SteamInputAnalogActionEvent_t + { + public InputAnalogActionHandle_t actionHandle; + + public InputAnalogActionData_t analogActionData; + } + + [System.Serializable] + [StructLayout(LayoutKind.Sequential)] + public struct SteamInputDigitalActionEvent_t + { + public InputDigitalActionHandle_t actionHandle; + + public InputDigitalActionData_t digitalActionData; + } + + [System.Serializable] + [StructLayout(LayoutKind.Explicit)] + public struct OptionValue + { + [FieldOffset(0)] + public SteamInputAnalogActionEvent_t analogAction; + + [FieldOffset(0)] + public SteamInputDigitalActionEvent_t digitalAction; + } + } +} + +#endif // !DISABLESTEAMWORKS \ No newline at end of file diff --git a/CodeGen/SteamworksParser b/CodeGen/SteamworksParser index 948f95fc..59e460e3 160000 --- a/CodeGen/SteamworksParser +++ b/CodeGen/SteamworksParser @@ -1 +1 @@ -Subproject commit 948f95fc42ba72669271049759e1f0796cdad3d7 +Subproject commit 59e460e330800f3e5bc756c655b9dd1857b00430 diff --git a/CodeGen/constants.py b/CodeGen/constants.py index 1c822a3d..1add96bb 100644 --- a/CodeGen/constants.py +++ b/CodeGen/constants.py @@ -14,6 +14,8 @@ def __init__(self, name, value, type_, precomments, comment, spacing): g_TypeDict = { # Not a bug... But, it's a giant hack. # The issue is that most of these are used as the MarshalAs SizeConst in C# amongst other things and C# wont auto convert them. + "uint16": "ushort", + "uint32": "int", "unsigned int": "int", @@ -48,7 +50,6 @@ def __init__(self, name, value, type_, precomments, comment, spacing): "k_steamIDLanModeGS", "k_steamIDNotInitYetGS", "k_steamIDNonSteamGS", - "BREAKPAD_INVALID_HANDLE", "STEAM_PS3_PATH_MAX", "STEAM_PS3_SERVICE_ID_MAX", "STEAM_PS3_COMMUNICATION_ID_MAX", @@ -101,13 +102,9 @@ def __init__(self, name, value, type_, precomments, comment, spacing): "k_HAuthTicketInvalid", # SteamTypes - "k_JobIDNil", - "k_uBundleIdInvalid", "k_uAppIdInvalid", "k_uDepotIdInvalid", "k_uAPICallInvalid", - "k_uManifestIdInvalid", - "k_ulSiteIdInvalid", # steamnetworkingtypes.h "k_HSteamNetConnection_Invalid", @@ -115,21 +112,14 @@ def __init__(self, name, value, type_, precomments, comment, spacing): "k_HSteamNetPollGroup_Invalid", "k_SteamDatagramPOPID_dev", - #TODO: Skip all these once we have typedef autogen hooked up. - #public const ulong k_GIDNil = 0xffffffffffffffffull; - #public const ulong k_TxnIDNil = k_GIDNil; - #public const ulong k_TxnIDUnknown = 0; - #public const int k_uPackageIdFreeSub = 0x0; - #public const int k_uPackageIdInvalid = 0xFFFFFFFF; - #public const ulong k_ulAssetClassIdInvalid = 0x0; - #public const int k_uPhysicalItemIdInvalid = 0x0; - #public const int k_uCellIDInvalid = 0xFFFFFFFF; - #public const int k_uPartnerIdInvalid = 0; + # steam_gameserver.h + "MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE", ) g_SkippedTypedefs = ( "uint8", "int8", + "uint16", "int32", "uint32", "int64", @@ -138,7 +128,6 @@ def __init__(self, name, value, type_, precomments, comment, spacing): g_CustomDefines = { # "Name": ("Type", "Value"), - "MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE": ("ushort", "0xFFFF"), "k_nMaxLobbyKeyLength": ("byte", None), "STEAM_CONTROLLER_HANDLE_ALL_CONTROLLERS": ("ulong", "0xFFFFFFFFFFFFFFFF"), "STEAM_CONTROLLER_MIN_ANALOG_ACTION_DATA": ("float", "-1.0f"), diff --git a/CodeGen/enums.py b/CodeGen/enums.py index b0da0066..8fad1f22 100644 --- a/CodeGen/enums.py +++ b/CodeGen/enums.py @@ -23,10 +23,7 @@ "EItemState", # SteamClientPublic - "EAppOwnershipFlags", - "EAppType", "EChatSteamIDInstanceFlags", - "EMarketingMessageFlags", "EMarketNotAllowedReasonFlags", ) @@ -37,7 +34,6 @@ # Valve redefined these twice, and ifdef decided which one to use. :( # We use the newer ones from isteaminput.h and skip the ones in # isteamcontroller.h because it is deprecated. - "ESteamControllerPad": "isteamcontroller.h", "EXboxOrigin": "isteamcontroller.h", "ESteamInputType": "isteamcontroller.h", } @@ -46,6 +42,9 @@ "0xffffffff": "-1", "0x80000000": "-2147483647", "k_unSteamAccountInstanceMask": "Constants.k_unSteamAccountInstanceMask", + "( 1 << k_ESteamControllerPad_Left )": "( 1 << ESteamControllerPad.k_ESteamControllerPad_Left )", + "( 1 << k_ESteamControllerPad_Right )": "( 1 << ESteamControllerPad.k_ESteamControllerPad_Right )", + "( 1 << k_ESteamControllerPad_Left | 1 << k_ESteamControllerPad_Right )": "( 1 << ESteamControllerPad.k_ESteamControllerPad_Left | 1 << ESteamControllerPad.k_ESteamControllerPad_Right )", } def main(parser): diff --git a/CodeGen/interfaces.py b/CodeGen/interfaces.py index 5b489bcb..8328e219 100644 --- a/CodeGen/interfaces.py +++ b/CodeGen/interfaces.py @@ -77,6 +77,10 @@ "SteamNetworkingErrMsg &": "out SteamNetworkingErrMsg", "const SteamNetConnectionInfo_t &": "ref SteamNetConnectionInfo_t", "SteamNetworkingMessage_t **": "IntPtr[]", + + # SteamNetworkingTypes which are stubbed + "SteamDatagramGameCoordinatorServerLogin *": "IntPtr", + } g_WrapperArgsTypeDict = { @@ -142,7 +146,7 @@ "ISteamApps_GetInstalledDepots": { "pvecDepots": "DepotId_t[]", }, - "ISteamGameServer_SendUserConnectAndAuthenticate": { + "ISteamGameServer_SendUserConnectAndAuthenticate_DEPRECATED": { "pvAuthBlob": "byte[]", }, "ISteamGameServer_GetAuthSessionTicket": { @@ -238,7 +242,7 @@ "ISteamUGC_StopPlaytimeTracking": { "pvecPublishedFileID": "PublishedFileId_t[]", }, - "ISteamUser_InitiateGameConnection": { + "ISteamUser_InitiateGameConnection_DEPRECATED": { "pAuthBlob": "byte[]", }, "ISteamUser_GetAvailableVoice": { @@ -276,9 +280,6 @@ }, # GameServer Copies - "ISteamGameServerApps_GetInstalledDepots": { - "pvecDepots": "DepotId_t[]", - }, "ISteamGameServerHTTP_GetHTTPResponseHeaderValue": { "pHeaderValueBuffer": "byte[]", }, diff --git a/CodeGen/steam/isteamapplist.h b/CodeGen/steam/isteamapplist.h index ae018adb..91de8324 100644 --- a/CodeGen/steam/isteamapplist.h +++ b/CodeGen/steam/isteamapplist.h @@ -11,7 +11,6 @@ #endif #include "steam_api_common.h" -#include "steamtypes.h" //----------------------------------------------------------------------------- // Purpose: This is a restricted interface that can only be used by previously approved apps, @@ -51,16 +50,18 @@ STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamAppList *, SteamAppList, STEAMAPPLIS // Purpose: Sent when a new app is installed //--------------------------------------------------------------------------------- STEAM_CALLBACK_BEGIN( SteamAppInstalled_t, k_iSteamAppListCallbacks + 1 ) - STEAM_CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs -STEAM_CALLBACK_END(1) +STEAM_CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs +STEAM_CALLBACK_MEMBER( 1, int, m_iInstallFolderIndex ) // library folder the app is installed +STEAM_CALLBACK_END( 2 ) //--------------------------------------------------------------------------------- // Purpose: Sent when an app is uninstalled //--------------------------------------------------------------------------------- STEAM_CALLBACK_BEGIN( SteamAppUninstalled_t, k_iSteamAppListCallbacks + 2 ) - STEAM_CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs -STEAM_CALLBACK_END(1) +STEAM_CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs +STEAM_CALLBACK_MEMBER( 1, int, m_iInstallFolderIndex ) // library folder the app was installed +STEAM_CALLBACK_END(2) #pragma pack( pop ) diff --git a/CodeGen/steam/isteamapps.h b/CodeGen/steam/isteamapps.h index 299b95d5..82d01215 100644 --- a/CodeGen/steam/isteamapps.h +++ b/CodeGen/steam/isteamapps.h @@ -116,10 +116,6 @@ class ISteamApps inline ISteamApps *SteamApps(); STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamApps *, SteamApps, STEAMAPPS_INTERFACE_VERSION ); -// Global accessor for the gameserver client -inline ISteamApps *SteamGameServerApps(); -STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamApps *, SteamGameServerApps, STEAMAPPS_INTERFACE_VERSION ); - // callbacks #if defined( VALVE_CALLBACK_PACK_SMALL ) #pragma pack( push, 4 ) diff --git a/CodeGen/steam/isteamcontroller.h b/CodeGen/steam/isteamcontroller.h index 2c5414b4..e041ed20 100644 --- a/CodeGen/steam/isteamcontroller.h +++ b/CodeGen/steam/isteamcontroller.h @@ -367,6 +367,11 @@ enum EControllerActionOrigin k_EControllerActionOrigin_PS5_Gyro_Yaw, k_EControllerActionOrigin_PS5_Gyro_Roll, + k_EControllerActionOrigin_XBoxOne_LeftGrip_Lower, + k_EControllerActionOrigin_XBoxOne_LeftGrip_Upper, + k_EControllerActionOrigin_XBoxOne_RightGrip_Lower, + k_EControllerActionOrigin_XBoxOne_RightGrip_Upper, + k_EControllerActionOrigin_XBoxOne_Share, k_EControllerActionOrigin_Count, // If Steam has added support for new controllers origins will go here. k_EControllerActionOrigin_MaximumPossibleValue = 32767, // Origins are currently a maximum of 16 bits. @@ -592,7 +597,7 @@ class ISteamController virtual void SetLEDColor( ControllerHandle_t controllerHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags ) = 0; //----------------------------------------------------------------------------- - // Utility functions availible without using the rest of Steam Input API + // Utility functions available without using the rest of Steam Input API //----------------------------------------------------------------------------- // Invokes the Steam overlay and brings up the binding screen if the user is using Big Picture Mode diff --git a/CodeGen/steam/isteamgameserver.h b/CodeGen/steam/isteamgameserver.h index 612ef3d0..386e7fa4 100644 --- a/CodeGen/steam/isteamgameserver.h +++ b/CodeGen/steam/isteamgameserver.h @@ -91,14 +91,23 @@ class ISteamGameServer /// Set name of map to report in the server browser /// - /// @see k_cbMaxGameServerName + /// @see k_cbMaxGameServerMapName virtual void SetMapName( const char *pszMapName ) = 0; /// Let people know if your server will require a password virtual void SetPasswordProtected( bool bPasswordProtected ) = 0; - /// Spectator server. The default value is zero, meaning the service - /// is not used. + /// Spectator server port to advertise. The default value is zero, meaning the + /// service is not used. If your server receives any info requests on the LAN, + /// this is the value that will be placed into the reply for such local queries. + /// + /// This is also the value that will be advertised by the master server. + /// The only exception is if your server is using a FakeIP. Then then the second + /// fake port number (index 1) assigned to your server will be listed on the master + /// server as the spectator port, if you set this value to any nonzero value. + /// + /// This function merely controls the values that are advertised -- it's up to you to + /// configure the server to actually listen on this port and handle any spectator traffic virtual void SetSpectatorPort( uint16 unSpectatorPort ) = 0; /// Name of the spectator server. (Only used if spectator port is nonzero.) @@ -120,8 +129,6 @@ class ISteamGameServer /// Sets a string defining the "gamedata" for this server, this is optional, but if it is set /// it allows users to filter in the matchmaking/server-browser interfaces based on the value - /// don't set this unless it actually changes, its only uploaded to the master once (when - /// acknowledged) /// /// @see k_cbMaxGameServerGameData virtual void SetGameData( const char *pchGameData ) = 0; @@ -129,42 +136,20 @@ class ISteamGameServer /// Region identifier. This is an optional field, the default value is empty, meaning the "world" region virtual void SetRegion( const char *pszRegion ) = 0; + /// Indicate whether you wish to be listed on the master server list + /// and/or respond to server browser / LAN discovery packets. + /// The server starts with this value set to false. You should set all + /// relevant server parameters before enabling advertisement on the server. + /// + /// (This function used to be named EnableHeartbeats, so if you are wondering + /// where that function went, it's right here. It does the same thing as before, + /// the old name was just confusing.) + virtual void SetAdvertiseServerActive( bool bActive ) = 0; + // -// Player list management / authentication +// Player list management / authentication. // - // Handles receiving a new connection from a Steam user. This call will ask the Steam - // servers to validate the users identity, app ownership, and VAC status. If the Steam servers - // are off-line, then it will validate the cached ticket itself which will validate app ownership - // and identity. The AuthBlob here should be acquired on the game client using SteamUser()->InitiateGameConnection() - // and must then be sent up to the game server for authentication. - // - // Return Value: returns true if the users ticket passes basic checks. pSteamIDUser will contain the Steam ID of this user. pSteamIDUser must NOT be NULL - // If the call succeeds then you should expect a GSClientApprove_t or GSClientDeny_t callback which will tell you whether authentication - // for the user has succeeded or failed (the steamid in the callback will match the one returned by this call) - virtual bool SendUserConnectAndAuthenticate( uint32 unIPClient, const void *pvAuthBlob, uint32 cubAuthBlobSize, CSteamID *pSteamIDUser ) = 0; - - // Creates a fake user (ie, a bot) which will be listed as playing on the server, but skips validation. - // - // Return Value: Returns a SteamID for the user to be tracked with, you should call HandleUserDisconnect() - // when this user leaves the server just like you would for a real user. - virtual CSteamID CreateUnauthenticatedUserConnection() = 0; - - // Should be called whenever a user leaves our game server, this lets Steam internally - // track which users are currently on which servers for the purposes of preventing a single - // account being logged into multiple servers, showing who is currently on a server, etc. - virtual void SendUserDisconnect( CSteamID steamIDUser ) = 0; - - // Update the data to be displayed in the server browser and matchmaking interfaces for a user - // currently connected to the server. For regular users you must call this after you receive a - // GSUserValidationSuccess callback. - // - // Return Value: true if successful, false if failure (ie, steamIDUser wasn't for an active player) - virtual bool BUpdateUserData( CSteamID steamIDUser, const char *pchPlayerName, uint32 uScore ) = 0; - - // New auth system APIs - do not mix with the old auth system APIs. - // ---------------------------------------------------------------- - // Retrieve ticket to be sent to the entity who wishes to authenticate you ( using BeginAuthSession API ). // pcbTicket retrieves the length of the actual ticket. virtual HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; @@ -199,13 +184,10 @@ class ISteamGameServer // connect to virtual SteamIPAddress_t GetPublicIP() = 0; -// These are in GameSocketShare mode, where instead of ISteamGameServer creating its own -// socket to talk to the master server on, it lets the game use its socket to forward messages -// back and forth. This prevents us from requiring server ops to open up yet another port -// in their firewalls. -// -// the IP address and port should be in host order, i.e 127.0.0.1 == 0x7f000001 - +// Server browser related query packet processing for shared socket mode. These are used +// when you pass STEAMGAMESERVER_QUERY_PORT_SHARED as the query port to SteamGameServer_Init. +// IP address and port are in host order, i.e 127.0.0.1 == 0x7f000001 + // These are used when you've elected to multiplex the game server's UDP socket // rather than having the master server updater use its own sockets. // @@ -223,21 +205,9 @@ class ISteamGameServer virtual int GetNextOutgoingPacket( void *pOut, int cbMaxOut, uint32 *pNetAdr, uint16 *pPort ) = 0; // -// Control heartbeats / advertisement with master server +// Server clan association // - // Call this as often as you like to tell the master server updater whether or not - // you want it to be active (default: off). - virtual void EnableHeartbeats( bool bActive ) = 0; - - // You usually don't need to modify this. - // Pass -1 to use the default value for iHeartbeatInterval. - // Some mods change this. - virtual void SetHeartbeatInterval( int iHeartbeatInterval ) = 0; - - // Force a heartbeat to steam at the next opportunity - virtual void ForceHeartbeat() = 0; - // associate this game server with this clan for the purposes of computing player compat STEAM_CALL_RESULT( AssociateWithClanResult_t ) virtual SteamAPICall_t AssociateWithClan( CSteamID steamIDClan ) = 0; @@ -246,9 +216,55 @@ class ISteamGameServer STEAM_CALL_RESULT( ComputeNewPlayerCompatibilityResult_t ) virtual SteamAPICall_t ComputeNewPlayerCompatibility( CSteamID steamIDNewPlayer ) = 0; + + + + // Handles receiving a new connection from a Steam user. This call will ask the Steam + // servers to validate the users identity, app ownership, and VAC status. If the Steam servers + // are off-line, then it will validate the cached ticket itself which will validate app ownership + // and identity. The AuthBlob here should be acquired on the game client using SteamUser()->InitiateGameConnection() + // and must then be sent up to the game server for authentication. + // + // Return Value: returns true if the users ticket passes basic checks. pSteamIDUser will contain the Steam ID of this user. pSteamIDUser must NOT be NULL + // If the call succeeds then you should expect a GSClientApprove_t or GSClientDeny_t callback which will tell you whether authentication + // for the user has succeeded or failed (the steamid in the callback will match the one returned by this call) + // + // DEPRECATED! This function will be removed from the SDK in an upcoming version. + // Please migrate to BeginAuthSession and related functions. + virtual bool SendUserConnectAndAuthenticate_DEPRECATED( uint32 unIPClient, const void *pvAuthBlob, uint32 cubAuthBlobSize, CSteamID *pSteamIDUser ) = 0; + + // Creates a fake user (ie, a bot) which will be listed as playing on the server, but skips validation. + // + // Return Value: Returns a SteamID for the user to be tracked with, you should call EndAuthSession() + // when this user leaves the server just like you would for a real user. + virtual CSteamID CreateUnauthenticatedUserConnection() = 0; + + // Should be called whenever a user leaves our game server, this lets Steam internally + // track which users are currently on which servers for the purposes of preventing a single + // account being logged into multiple servers, showing who is currently on a server, etc. + // + // DEPRECATED! This function will be removed from the SDK in an upcoming version. + // Please migrate to BeginAuthSession and related functions. + virtual void SendUserDisconnect_DEPRECATED( CSteamID steamIDUser ) = 0; + + // Update the data to be displayed in the server browser and matchmaking interfaces for a user + // currently connected to the server. For regular users you must call this after you receive a + // GSUserValidationSuccess callback. + // + // Return Value: true if successful, false if failure (ie, steamIDUser wasn't for an active player) + virtual bool BUpdateUserData( CSteamID steamIDUser, const char *pchPlayerName, uint32 uScore ) = 0; + +// Deprecated functions. These will be removed in a future version of the SDK. +// If you really need these, please contact us and help us understand what you are +// using them for. + + STEAM_PRIVATE_API( + virtual void SetMasterServerHeartbeatInterval_DEPRECATED( int iHeartbeatInterval ) = 0; + virtual void ForceMasterServerHeartbeat_DEPRECATED() = 0; + ) }; -#define STEAMGAMESERVER_INTERFACE_VERSION "SteamGameServer013" +#define STEAMGAMESERVER_INTERFACE_VERSION "SteamGameServer014" // Global accessor inline ISteamGameServer *SteamGameServer(); diff --git a/CodeGen/steam/isteamhtmlsurface.h b/CodeGen/steam/isteamhtmlsurface.h index 086a842d..dd30fe24 100644 --- a/CodeGen/steam/isteamhtmlsurface.h +++ b/CodeGen/steam/isteamhtmlsurface.h @@ -201,7 +201,6 @@ class ISteamHTMLSurface virtual void JSDialogResponse( HHTMLBrowser unBrowserHandle, bool bResult ) = 0; // You MUST call this in response to a HTML_FileOpenDialog_t callback - STEAM_IGNOREATTR() virtual void FileLoadDialogResponse( HHTMLBrowser unBrowserHandle, const char **pchSelectedFiles ) = 0; }; diff --git a/CodeGen/steam/isteaminput.h b/CodeGen/steam/isteaminput.h index 66c385bf..c5c70622 100644 --- a/CodeGen/steam/isteaminput.h +++ b/CodeGen/steam/isteaminput.h @@ -206,11 +206,11 @@ enum EInputActionOrigin k_EInputActionOrigin_XBoxOne_DPad_West, k_EInputActionOrigin_XBoxOne_DPad_East, k_EInputActionOrigin_XBoxOne_DPad_Move, - k_EInputActionOrigin_XBoxOne_Reserved1, - k_EInputActionOrigin_XBoxOne_Reserved2, - k_EInputActionOrigin_XBoxOne_Reserved3, - k_EInputActionOrigin_XBoxOne_Reserved4, - k_EInputActionOrigin_XBoxOne_Reserved5, + k_EInputActionOrigin_XBoxOne_LeftGrip_Lower, + k_EInputActionOrigin_XBoxOne_LeftGrip_Upper, + k_EInputActionOrigin_XBoxOne_RightGrip_Lower, + k_EInputActionOrigin_XBoxOne_RightGrip_Upper, + k_EInputActionOrigin_XBoxOne_Share, // Xbox Series X controllers only k_EInputActionOrigin_XBoxOne_Reserved6, k_EInputActionOrigin_XBoxOne_Reserved7, k_EInputActionOrigin_XBoxOne_Reserved8, @@ -450,6 +450,20 @@ enum ESteamControllerPad k_ESteamControllerPad_Right }; +enum EControllerHapticLocation +{ + k_EControllerHapticLocation_Left = ( 1 << k_ESteamControllerPad_Left ), + k_EControllerHapticLocation_Right = ( 1 << k_ESteamControllerPad_Right ), + k_EControllerHapticLocation_Both = ( 1 << k_ESteamControllerPad_Left | 1 << k_ESteamControllerPad_Right ), +}; + +enum EControllerHapticType +{ + k_EControllerHapticType_Off, + k_EControllerHapticType_Tick, + k_EControllerHapticType_Click, +}; + enum ESteamInputType { k_ESteamInputType_Unknown, @@ -470,6 +484,16 @@ enum ESteamInputType k_ESteamInputType_MaximumPossibleValue = 255, }; +// Individual values are used by the GetSessionInputConfigurationSettings bitmask +enum ESteamInputConfigurationEnableType +{ + k_ESteamInputConfigurationEnableType_None = 0x0000, + k_ESteamInputConfigurationEnableType_Playstation = 0x0001, + k_ESteamInputConfigurationEnableType_Xbox = 0x0002, + k_ESteamInputConfigurationEnableType_Generic = 0x0004, + k_ESteamInputConfigurationEnableType_Switch = 0x0008, +}; + // These values are passed into SetLEDColor enum ESteamInputLEDFlag { @@ -479,11 +503,24 @@ enum ESteamInputLEDFlag k_ESteamInputLEDFlag_RestoreUserDefault }; +// These values are passed into GetGlyphPNGForActionOrigin +enum ESteamInputGlyphSize +{ + k_ESteamInputGlyphSize_Small, + k_ESteamInputGlyphSize_Medium, + k_ESteamInputGlyphSize_Large, +}; + +enum ESteamInputActionEventType +{ + ESteamInputActionEventType_DigitalAction, + ESteamInputActionEventType_AnalogAction, +}; + // InputHandle_t is used to refer to a specific controller. // This handle will consistently identify a controller, even if it is disconnected and re-connected typedef uint64 InputHandle_t; - // These handles are used to refer to a specific in-game action or action set // All action handles should be queried during initialization for performance reasons typedef uint64 InputActionSetHandle_t; @@ -532,8 +569,29 @@ struct InputMotionData_t float rotVelZ; }; +//----------------------------------------------------------------------------- +// Purpose: when callbacks are enabled this fires each time a controller action +// state changes +//----------------------------------------------------------------------------- +struct SteamInputActionEvent_t +{ + InputHandle_t controllerHandle; + ESteamInputActionEventType eEventType; + union { + struct { + InputAnalogActionHandle_t actionHandle; + InputAnalogActionData_t analogActionData; + } analogAction; + struct { + InputDigitalActionHandle_t actionHandle; + InputDigitalActionData_t digitalActionData; + } digitalAction; + }; +}; + #pragma pack( pop ) +typedef void ( *SteamInputActionEventCallbackPointer )( SteamInputActionEvent_t * ); //----------------------------------------------------------------------------- // Purpose: Steam Input API @@ -542,15 +600,33 @@ class ISteamInput { public: - // Init and Shutdown must be called when starting/ending use of this interface - virtual bool Init() = 0; + // Init and Shutdown must be called when starting/ending use of this interface. + // if bExplicitlyCallRunFrame is called then you will need to manually call RunFrame + // each frame, otherwise Steam Input will updated when SteamAPI_RunCallbacks() is called + virtual bool Init( bool bExplicitlyCallRunFrame ) = 0; virtual bool Shutdown() = 0; - // Synchronize API state with the latest Steam Controller inputs available. This + // Set the absolute path to the Input Action Manifest file containing the in-game actions + // and file paths to the official configurations. Used in games that bundle Steam Input + // configurations inside of the game depot instead of using the Steam Workshop + virtual bool SetInputActionManifestFilePath( const char *pchInputActionManifestAbsolutePath ) = 0; + + // Synchronize API state with the latest Steam Input action data available. This // is performed automatically by SteamAPI_RunCallbacks, but for the absolute lowest - // possible latency, you call this directly before reading controller state. This must - // be called from somewhere before GetConnectedControllers will return any handles - virtual void RunFrame() = 0; + // possible latency, you call this directly before reading controller state. + // Note: This must be called from somewhere before GetConnectedControllers will + // return any handles + virtual void RunFrame( bool bReservedValue = true ) = 0; + + // Waits on an IPC event from Steam sent when there is new data to be fetched from + // the data drop. Returns true when data was recievied before the timeout expires. + // Useful for games with a dedicated input thread + virtual bool BWaitForData( bool bWaitForever, uint32 unTimeout ) = 0; + + // Returns true if new data has been received since the last time action data was accessed + // via GetDigitalActionData or GetAnalogActionData. The game will still need to call + // SteamInput()->RunFrame() or SteamAPI_RunCallbacks() before this to update the data stream + virtual bool BNewDataAvailable() = 0; // Enumerate currently connected Steam Input enabled devices - developers can opt in controller by type (ex: Xbox/Playstation/etc) via // the Steam Input settings in the Steamworks site or users can opt-in in their controller settings in Steam. @@ -558,6 +634,32 @@ class ISteamInput // Returns the number of handles written to handlesOut virtual int GetConnectedControllers( STEAM_OUT_ARRAY_COUNT( STEAM_INPUT_MAX_COUNT, Receives list of connected controllers ) InputHandle_t *handlesOut ) = 0; + //----------------------------------------------------------------------------- + // CALLBACKS + //----------------------------------------------------------------------------- + + // Controller configuration loaded - these callbacks will always fire if you have + // a handler. Note: this is called within either SteamInput()->RunFrame or by SteamAPI_RunCallbacks + STEAM_CALL_BACK( SteamInputConfigurationLoaded_t ) + + // Enable SteamInputDeviceConnected_t and SteamInputDeviceDisconnected_t callbacks. + // Each controller that is already connected will generate a device connected + // callback when you enable them + virtual void EnableDeviceCallbacks() = 0; + + // Controller Connected - provides info about a single newly connected controller + // Note: this is called within either SteamInput()->RunFrame or by SteamAPI_RunCallbacks + STEAM_CALL_BACK( SteamInputDeviceConnected_t ) + + // Controller Disconnected - provides info about a single disconnected controller + // Note: this is called within either SteamInput()->RunFrame or by SteamAPI_RunCallbacks + STEAM_CALL_BACK( SteamInputDeviceDisconnected_t ) + + // Enable SteamInputActionEvent_t callbacks. Directly calls your callback function + // for lower latency than standard Steam callbacks. Supports one callback at a time. + // Note: this is called within either SteamInput()->RunFrame or by SteamAPI_RunCallbacks + virtual void EnableActionEventCallbacks( SteamInputActionEventCallbackPointer pCallback ) = 0; + //----------------------------------------------------------------------------- // ACTION SETS //----------------------------------------------------------------------------- @@ -575,8 +677,9 @@ class ISteamInput virtual void ActivateActionSetLayer( InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ) = 0; virtual void DeactivateActionSetLayer( InputHandle_t inputHandle, InputActionSetHandle_t actionSetLayerHandle ) = 0; virtual void DeactivateAllActionSetLayers( InputHandle_t inputHandle ) = 0; + // Enumerate currently active layers. - // handlesOut should point to a STEAM_INPUT_MAX_ACTIVE_LAYERS sized array of ControllerActionSetHandle_t handles + // handlesOut should point to a STEAM_INPUT_MAX_ACTIVE_LAYERS sized array of InputActionSetHandle_t handles // Returns the number of handles written to handlesOut virtual int GetActiveActionSetLayers( InputHandle_t inputHandle, STEAM_OUT_ARRAY_COUNT( STEAM_INPUT_MAX_ACTIVE_LAYERS, Receives list of active layers ) InputActionSetHandle_t *handlesOut ) = 0; @@ -595,6 +698,9 @@ class ISteamInput // the Steam client and will exceed the values from this header, please check bounds if you are using a look up table. virtual int GetDigitalActionOrigins( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputDigitalActionHandle_t digitalActionHandle, STEAM_OUT_ARRAY_COUNT( STEAM_INPUT_MAX_ORIGINS, Receives list of action origins ) EInputActionOrigin *originsOut ) = 0; + // Returns a localized string (from Steam's language setting) for the user-facing action name corresponding to the specified handle + virtual const char *GetStringForDigitalActionName( InputDigitalActionHandle_t eActionHandle ) = 0; + // Lookup the handle for an analog action. Best to do this once on startup, and store the handles for all future API calls. virtual InputAnalogActionHandle_t GetAnalogActionHandle( const char *pszActionName ) = 0; @@ -605,13 +711,22 @@ class ISteamInput // originsOut should point to a STEAM_INPUT_MAX_ORIGINS sized array of EInputActionOrigin handles. The EInputActionOrigin enum will get extended as support for new controller controllers gets added to // the Steam client and will exceed the values from this header, please check bounds if you are using a look up table. virtual int GetAnalogActionOrigins( InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputAnalogActionHandle_t analogActionHandle, STEAM_OUT_ARRAY_COUNT( STEAM_INPUT_MAX_ORIGINS, Receives list of action origins ) EInputActionOrigin *originsOut ) = 0; - - // Get a local path to art for on-screen glyph for a particular origin - virtual const char *GetGlyphForActionOrigin( EInputActionOrigin eOrigin ) = 0; + + // Get a local path to a PNG file for the provided origin's glyph. + virtual const char *GetGlyphPNGForActionOrigin( EInputActionOrigin eOrigin, ESteamInputGlyphSize eSize, uint32 unFlags ) = 0; + + // Get a local path to a SVG file for the provided origin's glyph. + virtual const char *GetGlyphSVGForActionOrigin( EInputActionOrigin eOrigin, uint32 unFlags ) = 0; + + // Get a local path to an older, Big Picture Mode-style PNG file for a particular origin + virtual const char *GetGlyphForActionOrigin_Legacy( EInputActionOrigin eOrigin ) = 0; // Returns a localized string (from Steam's language setting) for the specified origin. virtual const char *GetStringForActionOrigin( EInputActionOrigin eOrigin ) = 0; + // Returns a localized string (from Steam's language setting) for the user-facing action name corresponding to the specified handle + virtual const char *GetStringForAnalogActionName( InputAnalogActionHandle_t eActionHandle ) = 0; + // Stop analog momentum for the action if it is a mouse action in trackball mode virtual void StopAnalogActionMomentum( InputHandle_t inputHandle, InputAnalogActionHandle_t eAction ) = 0; @@ -625,20 +740,26 @@ class ISteamInput // Trigger a vibration event on supported controllers - Steam will translate these commands into haptic pulses for Steam Controllers virtual void TriggerVibration( InputHandle_t inputHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed ) = 0; + // Trigger a vibration event on supported controllers including Xbox trigger impulse rumble - Steam will translate these commands into haptic pulses for Steam Controllers + virtual void TriggerVibrationExtended( InputHandle_t inputHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed, unsigned short usLeftTriggerSpeed, unsigned short usRightTriggerSpeed ) = 0; + + // Send a haptic pulse, works on Steam Deck and Steam Controller devices + virtual void TriggerSimpleHapticEvent( InputHandle_t inputHandle, EControllerHapticLocation eHapticLocation, uint8 nIntensity, char nGainDB, uint8 nOtherIntensity, char nOtherGainDB ) = 0; + // Set the controller LED color on supported controllers. nFlags is a bitmask of values from ESteamInputLEDFlag - 0 will default to setting a color. Steam will handle // the behavior on exit of your program so you don't need to try restore the default as you are shutting down virtual void SetLEDColor( InputHandle_t inputHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags ) = 0; // Trigger a haptic pulse on a Steam Controller - if you are approximating rumble you may want to use TriggerVibration instead. // Good uses for Haptic pulses include chimes, noises, or directional gameplay feedback (taking damage, footstep locations, etc). - virtual void TriggerHapticPulse( InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ) = 0; + virtual void Legacy_TriggerHapticPulse( InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ) = 0; // Trigger a haptic pulse with a duty cycle of usDurationMicroSec / usOffMicroSec, unRepeat times. If you are approximating rumble you may want to use TriggerVibration instead. // nFlags is currently unused and reserved for future use. - virtual void TriggerRepeatedHapticPulse( InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ) = 0; + virtual void Legacy_TriggerRepeatedHapticPulse( InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ) = 0; //----------------------------------------------------------------------------- - // Utility functions availible without using the rest of Steam Input API + // Utility functions available without using the rest of Steam Input API //----------------------------------------------------------------------------- // Invokes the Steam overlay and brings up the binding screen if the user is using Big Picture Mode @@ -677,12 +798,64 @@ class ISteamInput // Get the Steam Remote Play session ID associated with a device, or 0 if there is no session associated with it // See isteamremoteplay.h for more information on Steam Remote Play sessions virtual uint32 GetRemotePlaySessionID( InputHandle_t inputHandle ) = 0; + + // Get a bitmask of the Steam Input Configuration types opted in for the current session. Returns ESteamInputConfigurationEnableType values.? + // Note: user can override the settings from the Steamworks Partner site so the returned values may not exactly match your default configuration + virtual uint16 GetSessionInputConfigurationSettings() = 0; }; -#define STEAMINPUT_INTERFACE_VERSION "SteamInput002" +#define STEAMINPUT_INTERFACE_VERSION "SteamInput005" // Global interface accessor inline ISteamInput *SteamInput(); STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamInput *, SteamInput, STEAMINPUT_INTERFACE_VERSION ); +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + +//----------------------------------------------------------------------------- +// Purpose: called when a new controller has been connected, will fire once +// per controller if multiple new controllers connect in the same frame +//----------------------------------------------------------------------------- +struct SteamInputDeviceConnected_t +{ + enum { k_iCallback = k_iSteamControllerCallbacks + 1 }; + InputHandle_t m_ulConnectedDeviceHandle; // Handle for device +}; + +//----------------------------------------------------------------------------- +// Purpose: called when a new controller has been connected, will fire once +// per controller if multiple new controllers connect in the same frame +//----------------------------------------------------------------------------- +struct SteamInputDeviceDisconnected_t +{ + enum { k_iCallback = k_iSteamControllerCallbacks + 2 }; + InputHandle_t m_ulDisconnectedDeviceHandle; // Handle for device +}; + +//----------------------------------------------------------------------------- +// Purpose: called when a controller configuration has been loaded, will fire once +// per controller per focus change for Steam Input enabled controllers +//----------------------------------------------------------------------------- +struct SteamInputConfigurationLoaded_t +{ + enum { k_iCallback = k_iSteamControllerCallbacks + 3 }; + AppId_t m_unAppID; + InputHandle_t m_ulDeviceHandle; // Handle for device + CSteamID m_ulMappingCreator; // May differ from local user when using + // an unmodified community or official config + uint32 m_unMajorRevision; // Binding revision from In-game Action File. + // Same value as queried by GetDeviceBindingRevision + uint32 m_unMinorRevision; + bool m_bUsesSteamInputAPI; // Does the configuration contain any Analog/Digital actions? + bool m_bUsesGamepadAPI; // Does the configuration contain any Xinput bindings? +}; + +#pragma pack( pop ) + #endif // ISTEAMINPUT_H \ No newline at end of file diff --git a/CodeGen/steam/isteaminventory.h b/CodeGen/steam/isteaminventory.h index 4d19cc9a..51ecbf0e 100644 --- a/CodeGen/steam/isteaminventory.h +++ b/CodeGen/steam/isteaminventory.h @@ -86,12 +86,10 @@ class ISteamInventory // k_EResultServiceUnavailable - ERROR: service temporarily down, you may retry later // k_EResultLimitExceeded - ERROR: operation would exceed per-user inventory limits // k_EResultFail - ERROR: unknown / generic error - STEAM_METHOD_DESC(Find out the status of an asynchronous inventory result handle.) virtual EResult GetResultStatus( SteamInventoryResult_t resultHandle ) = 0; // Copies the contents of a result set into a flat array. The specific // contents of the result set depend on which query which was used. - STEAM_METHOD_DESC(Copies the contents of a result set into a flat array. The specific contents of the result set depend on which query which was used.) virtual bool GetResultItems( SteamInventoryResult_t resultHandle, STEAM_OUT_ARRAY_COUNT( punOutItemsArraySize,Output array) SteamItemDetails_t *pOutItemsArray, uint32 *punOutItemsArraySize ) = 0; @@ -115,17 +113,14 @@ class ISteamInventory // Returns the server time at which the result was generated. Compare against // the value of IClientUtils::GetServerRealTime() to determine age. - STEAM_METHOD_DESC(Returns the server time at which the result was generated. Compare against the value of IClientUtils::GetServerRealTime() to determine age.) virtual uint32 GetResultTimestamp( SteamInventoryResult_t resultHandle ) = 0; // Returns true if the result belongs to the target steam ID, false if the // result does not. This is important when using DeserializeResult, to verify // that a remote player is not pretending to have a different user's inventory. - STEAM_METHOD_DESC(Returns true if the result belongs to the target steam ID or false if the result does not. This is important when using DeserializeResult to verify that a remote player is not pretending to have a different users inventory.) virtual bool CheckResultSteamID( SteamInventoryResult_t resultHandle, CSteamID steamIDExpected ) = 0; // Destroys a result handle and frees all associated memory. - STEAM_METHOD_DESC(Destroys a result handle and frees all associated memory.) virtual void DestroyResult( SteamInventoryResult_t resultHandle ) = 0; @@ -139,7 +134,6 @@ class ISteamInventory // cached results if called too frequently. It is suggested that you call // this function only when you are about to display the user's full inventory, // or if you expect that the inventory may have changed. - STEAM_METHOD_DESC(Captures the entire state of the current users Steam inventory.) virtual bool GetAllItems( SteamInventoryResult_t *pResultHandle ) = 0; @@ -150,7 +144,6 @@ class ISteamInventory // For example, you could call GetItemsByID with the IDs of the user's // currently equipped cosmetic items and serialize this to a buffer, and // then transmit this buffer to other players upon joining a game. - STEAM_METHOD_DESC(Captures the state of a subset of the current users Steam inventory identified by an array of item instance IDs.) virtual bool GetItemsByID( SteamInventoryResult_t *pResultHandle, STEAM_ARRAY_COUNT( unCountInstanceIDs ) const SteamItemInstanceID_t *pInstanceIDs, uint32 unCountInstanceIDs ) = 0; @@ -205,7 +198,6 @@ class ISteamInventory // and grants the items (one time only). On success, the result set will include items which // were granted, if any. If no items were granted because the user isn't eligible for any // promotions, this is still considered a success. - STEAM_METHOD_DESC(GrantPromoItems() checks the list of promotional items for which the user may be eligible and grants the items (one time only).) virtual bool GrantPromoItems( SteamInventoryResult_t *pResultHandle ) = 0; // AddPromoItem() / AddPromoItems() are restricted versions of GrantPromoItems(). Instead of @@ -218,7 +210,6 @@ class ISteamInventory // ConsumeItem() removes items from the inventory, permanently. They cannot be recovered. // Not for the faint of heart - if your game implements item removal at all, a high-friction // UI confirmation process is highly recommended. - STEAM_METHOD_DESC(ConsumeItem() removes items from the inventory permanently.) virtual bool ConsumeItem( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity ) = 0; // ExchangeItems() is an atomic combination of item generation and consumption. @@ -245,7 +236,6 @@ class ISteamInventory // // Deprecated. Calling this method is not required for proper playtime accounting. - STEAM_METHOD_DESC( Deprecated method. Playtime accounting is performed on the Steam servers. ) virtual void SendItemDropHeartbeat() = 0; // Playtime credit must be consumed and turned into item drops by your game. Only item @@ -257,7 +247,6 @@ class ISteamInventory // to directly control rarity. // See your Steamworks configuration to set playtime drop rates for individual itemdefs. // The client library will suppress too-frequent calls to this method. - STEAM_METHOD_DESC(Playtime credit must be consumed and turned into item drops by your game.) virtual bool TriggerItemDrop( SteamInventoryResult_t *pResultHandle, SteamItemDef_t dropListDefinition ) = 0; @@ -281,7 +270,6 @@ class ISteamInventory // Every time new item definitions are available (eg, from the dynamic addition of new // item types while players are still in-game), a SteamInventoryDefinitionUpdate_t // callback will be fired. - STEAM_METHOD_DESC(LoadItemDefinitions triggers the automatic load and refresh of item definitions.) virtual bool LoadItemDefinitions() = 0; // GetItemDefinitionIDs returns the set of all defined item definition IDs (which are @@ -366,7 +354,6 @@ class ISteamInventory // Submit the update request by handle virtual bool SubmitUpdateProperties( SteamInventoryUpdateHandle_t handle, SteamInventoryResult_t * pResultHandle ) = 0; - STEAM_METHOD_DESC(Look up the given token and return a pseudo-Inventory item.) virtual bool InspectItem( SteamInventoryResult_t *pResultHandle, const char *pchItemToken ) = 0; }; diff --git a/CodeGen/steam/isteammasterserverupdater.h b/CodeGen/steam/isteammasterserverupdater.h deleted file mode 100644 index 4be0ca5c..00000000 --- a/CodeGen/steam/isteammasterserverupdater.h +++ /dev/null @@ -1 +0,0 @@ -#error "This file isn't used any more" diff --git a/CodeGen/steam/isteamnetworkingsockets.h b/CodeGen/steam/isteamnetworkingsockets.h index 685edcda..1923fee7 100644 --- a/CodeGen/steam/isteamnetworkingsockets.h +++ b/CodeGen/steam/isteamnetworkingsockets.h @@ -15,10 +15,13 @@ class ISteamNetworkingSignalingRecvContext; /// Lower level networking API. /// /// - Connection-oriented API (like TCP, not UDP). When sending and receiving -/// messages, a connection handle is used. (For a UDP-style interface, see -/// ISteamNetworkingMessages.) In this TCP-style interface, the "server" will -/// "listen" on a "listen socket." A "client" will "connect" to the server, -/// and the server will "accept" the connection. +/// messages, a connection handle is used. (For a UDP-style interface, where +/// the peer is identified by their address with each send/recv call, see +/// ISteamNetworkingMessages.) The typical pattern is for a "server" to "listen" +/// on a "listen socket." A "client" will "connect" to the server, and the +/// server will "accept" the connection. If you have a symmetric situation +/// where either peer may initiate the connection and server/client roles are +/// not clearly defined, check out k_ESteamNetworkingConfig_SymmetricConnect. /// - But unlike TCP, it's message-oriented, not stream-oriented. /// - Mix of reliable and unreliable messages /// - Fragmentation and reassembly @@ -192,7 +195,23 @@ class ISteamNetworkingSockets /// Set connection user data. the data is returned in the following places /// - You can query it using GetConnectionUserData. /// - The SteamNetworkingmessage_t structure. - /// - The SteamNetConnectionInfo_t structure. (Which is a member of SteamNetConnectionStatusChangedCallback_t.) + /// - The SteamNetConnectionInfo_t structure. + /// (Which is a member of SteamNetConnectionStatusChangedCallback_t -- but see WARNINGS below!!!!) + /// + /// Do you need to set this atomically when the connection is created? + /// See k_ESteamNetworkingConfig_ConnectionUserData. + /// + /// WARNING: Be *very careful* when using the value provided in callbacks structs. + /// Callbacks are queued, and the value that you will receive in your + /// callback is the userdata that was effective at the time the callback + /// was queued. There are subtle race conditions that can happen if you + /// don't understand this! + /// + /// If any incoming messages for this connection are queued, the userdata + /// field is updated, so that when when you receive messages (e.g. with + /// ReceiveMessagesOnConnection), they will always have the very latest + /// userdata. So the tricky race conditions that can happen with callbacks + /// do not apply to retrieving messages. /// /// Returns false if the handle is invalid. virtual bool SetConnectionUserData( HSteamNetConnection hPeer, int64 nUserData ) = 0; @@ -258,7 +277,7 @@ class ISteamNetworkingSockets /// m_pData at your buffer and set the callback to the appropriate function /// to free it. Note that if you use your own buffer, it MUST remain valid /// until the callback is executed. And also note that your callback can be - /// invoked at ant time from any thread (perhaps even before SendMessages + /// invoked at any time from any thread (perhaps even before SendMessages /// returns!), so it MUST be fast and threadsafe. /// /// You MUST also fill in: @@ -654,15 +673,15 @@ class ISteamNetworkingSockets /// to call ISteamNetworkingUtils::InitRelayNetworkAccess() when your app initializes virtual bool ReceivedP2PCustomSignal( const void *pMsg, int cbMsg, ISteamNetworkingSignalingRecvContext *pContext ) = 0; -// -// Certificate provision by the application. On Steam, we normally handle all this automatically -// and you will not need to use these advanced functions. -// + // + // Certificate provision by the application. On Steam, we normally handle all this automatically + // and you will not need to use these advanced functions. + // /// Get blob that describes a certificate request. You can send this to your game coordinator. /// Upon entry, *pcbBlob should contain the size of the buffer. On successful exit, it will /// return the number of bytes that were populated. You can pass pBlob=NULL to query for the required - /// size. (256 bytes is a very conservative estimate.) + /// size. (512 bytes is a conservative estimate.) /// /// Pass this blob to your game coordinator and call SteamDatagram_CreateCert. virtual bool GetCertificateRequest( int *pcbBlob, void *pBlob, SteamNetworkingErrMsg &errMsg ) = 0; diff --git a/CodeGen/steam/isteamnetworkingutils.h b/CodeGen/steam/isteamnetworkingutils.h index 2161ec34..7c441960 100644 --- a/CodeGen/steam/isteamnetworkingutils.h +++ b/CodeGen/steam/isteamnetworkingutils.h @@ -130,7 +130,7 @@ class ISteamNetworkingUtils /// currently answer the question for some other reason. /// /// Do you need to be able to do this from a backend/matchmaking server? - /// You are looking for the "ticketgen" library. + /// You are looking for the "game coordinator" library. virtual int EstimatePingTimeBetweenTwoLocations( const SteamNetworkPingLocation_t &location1, const SteamNetworkPingLocation_t &location2 ) = 0; /// Same as EstimatePingTime, but assumes that one location is the local host. diff --git a/CodeGen/steam/isteamremotestorage.h b/CodeGen/steam/isteamremotestorage.h index 81fa2c85..add5a341 100644 --- a/CodeGen/steam/isteamremotestorage.h +++ b/CodeGen/steam/isteamremotestorage.h @@ -156,6 +156,28 @@ enum EUGCReadAction k_EUGCRead_Close = 2, }; +enum ERemoteStorageLocalFileChange +{ + k_ERemoteStorageLocalFileChange_Invalid = 0, + + // The file was updated from another device + k_ERemoteStorageLocalFileChange_FileUpdated = 1, + + // The file was deleted by another device + k_ERemoteStorageLocalFileChange_FileDeleted = 2, +}; + +enum ERemoteStorageFilePathType +{ + k_ERemoteStorageFilePathType_Invalid = 0, + + // The file is directly accessed by the game and this is the full path + k_ERemoteStorageFilePathType_Absolute = 1, + + // The file is accessed via the ISteamRemoteStorage API and this is the filename + k_ERemoteStorageFilePathType_APIFilename = 2, +}; + //----------------------------------------------------------------------------- // Purpose: Functions for accessing, reading and writing files stored remotely @@ -238,24 +260,6 @@ class ISteamRemoteStorage virtual int32 GetCachedUGCCount() = 0; virtual UGCHandle_t GetCachedUGCHandle( int32 iCachedContent ) = 0; - // The following functions are only necessary on the Playstation 3. On PC & Mac, the Steam client will handle these operations for you - // On Playstation 3, the game controls which files are stored in the cloud, via FilePersist, FileFetch, and FileForget. - -#if defined(_SERVER) - // Connect to Steam and get a list of files in the Cloud - results in a RemoteStorageAppSyncStatusCheck_t callback - virtual void GetFileListFromServer() = 0; - // Indicate this file should be downloaded in the next sync - virtual bool FileFetch( const char *pchFile ) = 0; - // Indicate this file should be persisted in the next sync - virtual bool FilePersist( const char *pchFile ) = 0; - // Pull any requested files down from the Cloud - results in a RemoteStorageAppSyncedClient_t callback - virtual bool SynchronizeToClient() = 0; - // Upload any requested files to the Cloud - results in a RemoteStorageAppSyncedServer_t callback - virtual bool SynchronizeToServer() = 0; - // Reset any fetch/persist/etc requests - virtual bool ResetFileRequestState() = 0; -#endif - // publishing UGC STEAM_CALL_RESULT( RemoteStoragePublishFileProgress_t ) virtual SteamAPICall_t PublishWorkshopFile( const char *pchFile, const char *pchPreviewFile, AppId_t nConsumerAppId, const char *pchTitle, const char *pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t *pTags, EWorkshopFileType eWorkshopFileType ) = 0; @@ -305,9 +309,18 @@ class ISteamRemoteStorage STEAM_CALL_RESULT( RemoteStorageDownloadUGCResult_t ) virtual SteamAPICall_t UGCDownloadToLocation( UGCHandle_t hContent, const char *pchLocation, uint32 unPriority ) = 0; + + // Cloud dynamic state change notification + virtual int32 GetLocalFileChangeCount() = 0; + virtual const char *GetLocalFileChange( int iFile, ERemoteStorageLocalFileChange *pEChangeType, ERemoteStorageFilePathType *pEFilePathType ) = 0; + + // Indicate to Steam the beginning / end of a set of local file + // operations - for example, writing a game save that requires updating two files. + virtual bool BeginFileWriteBatch() = 0; + virtual bool EndFileWriteBatch() = 0; }; -#define STEAMREMOTESTORAGE_INTERFACE_VERSION "STEAMREMOTESTORAGE_INTERFACE_VERSION014" +#define STEAMREMOTESTORAGE_INTERFACE_VERSION "STEAMREMOTESTORAGE_INTERFACE_VERSION016" // Global interface accessor inline ISteamRemoteStorage *SteamRemoteStorage(); @@ -322,61 +335,13 @@ STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamRemoteStorage *, SteamRemoteStorage, #error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx #endif -//----------------------------------------------------------------------------- -// Purpose: sent when the local file cache is fully synced with the server for an app -// That means that an application can be started and has all latest files -//----------------------------------------------------------------------------- -struct RemoteStorageAppSyncedClient_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 1 }; - AppId_t m_nAppID; - EResult m_eResult; - int m_unNumDownloads; -}; -//----------------------------------------------------------------------------- -// Purpose: sent when the server is fully synced with the local file cache for an app -// That means that we can shutdown Steam and our data is stored on the server -//----------------------------------------------------------------------------- -struct RemoteStorageAppSyncedServer_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 2 }; - AppId_t m_nAppID; - EResult m_eResult; - int m_unNumUploads; -}; - -//----------------------------------------------------------------------------- -// Purpose: Status of up and downloads during a sync session -// -//----------------------------------------------------------------------------- -struct RemoteStorageAppSyncProgress_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 3 }; - char m_rgchCurrentFile[k_cchFilenameMax]; // Current file being transferred - AppId_t m_nAppID; // App this info relates to - uint32 m_uBytesTransferredThisChunk; // Bytes transferred this chunk - double m_dAppPercentComplete; // Percent complete that this app's transfers are - bool m_bUploading; // if false, downloading -}; // -// IMPORTANT! k_iClientRemoteStorageCallbacks + 4 is used, see iclientremotestorage.h +// IMPORTANT! k_iClientRemoteStorageCallbacks 1 through 6 are used, see iclientremotestorage.h // -//----------------------------------------------------------------------------- -// Purpose: Sent after we've determined the list of files that are out of sync -// with the server. -//----------------------------------------------------------------------------- -struct RemoteStorageAppSyncStatusCheck_t -{ - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 5 }; - AppId_t m_nAppID; - EResult m_eResult; -}; - - //----------------------------------------------------------------------------- // Purpose: The result of a call to FileShare() //----------------------------------------------------------------------------- @@ -403,6 +368,9 @@ struct RemoteStoragePublishFileResult_t bool m_bUserNeedsToAcceptWorkshopLegalAgreement; }; +// k_iClientRemoteStorageCallbacks + 10 is deprecated! Do not reuse + + //----------------------------------------------------------------------------- // Purpose: The result of a call to DeletePublishedFile() @@ -682,6 +650,14 @@ struct RemoteStorageFileReadAsyncComplete_t uint32 m_cubRead; // amount read - will the <= the amount requested }; +//----------------------------------------------------------------------------- +// Purpose: one or more files for this app have changed locally after syncing +// to remote session changes +// Note: only posted if this happens DURING the local app session +//----------------------------------------------------------------------------- +STEAM_CALLBACK_BEGIN( RemoteStorageLocalFileChange_t, k_iClientRemoteStorageCallbacks + 33 ) +STEAM_CALLBACK_END( 0 ) + #pragma pack( pop ) diff --git a/CodeGen/steam/isteamugc.h b/CodeGen/steam/isteamugc.h index e355d16a..3cc522e5 100644 --- a/CodeGen/steam/isteamugc.h +++ b/CodeGen/steam/isteamugc.h @@ -99,6 +99,7 @@ enum EUGCQuery k_EUGCQuery_RankedByLifetimeAveragePlaytime = 16, k_EUGCQuery_RankedByPlaytimeSessionsTrend = 17, k_EUGCQuery_RankedByLifetimePlaytimeSessions = 18, + k_EUGCQuery_RankedByLastUpdatedDate = 19, }; enum EItemUpdateStatus @@ -360,6 +361,12 @@ class ISteamUGC // delete the item without prompting the user STEAM_CALL_RESULT( DeleteItemResult_t ) virtual SteamAPICall_t DeleteItem( PublishedFileId_t nPublishedFileID ) = 0; + + // Show the app's latest Workshop EULA to the user in an overlay window, where they can accept it or not + virtual bool ShowWorkshopEULA() = 0; + // Retrieve information related to the user's acceptance or not of the app's specific Workshop EULA + STEAM_CALL_RESULT( WorkshopEULAStatus_t ) + virtual SteamAPICall_t GetWorkshopEULAStatus() = 0; }; #define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION015" @@ -566,6 +573,31 @@ struct DeleteItemResult_t PublishedFileId_t m_nPublishedFileId; }; + +//----------------------------------------------------------------------------- +// Purpose: signal that the list of subscribed items changed +//----------------------------------------------------------------------------- +struct UserSubscribedItemsListChanged_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 18 }; + AppId_t m_nAppID; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Status of the user's acceptable/rejection of the app's specific Workshop EULA +//----------------------------------------------------------------------------- +struct WorkshopEULAStatus_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 20 }; + EResult m_eResult; + AppId_t m_nAppID; + uint32 m_unVersion; + RTime32 m_rtAction; + bool m_bAccepted; + bool m_bNeedsAction; +}; + #pragma pack( pop ) #endif // ISTEAMUGC_H diff --git a/CodeGen/steam/isteamuser.h b/CodeGen/steam/isteamuser.h index 83f2e26b..82625dac 100644 --- a/CodeGen/steam/isteamuser.h +++ b/CodeGen/steam/isteamuser.h @@ -47,11 +47,17 @@ class ISteamUser // // return value - returns the number of bytes written to pBlob. If the return is 0, then the buffer passed in was too small, and the call has failed // The contents of pBlob should then be sent to the game server, for it to use to complete the authentication process. - virtual int InitiateGameConnection( void *pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure ) = 0; + // + // DEPRECATED! This function will be removed from the SDK in an upcoming version. + // Please migrate to BeginAuthSession and related functions. + virtual int InitiateGameConnection_DEPRECATED( void *pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure ) = 0; // notify of disconnect // needs to occur when the game client leaves the specified game server, needs to match with the InitiateGameConnection() call - virtual void TerminateGameConnection( uint32 unIPServer, uint16 usPortServer ) = 0; + // + // DEPRECATED! This function will be removed from the SDK in an upcoming version. + // Please migrate to BeginAuthSession and related functions. + virtual void TerminateGameConnection_DEPRECATED( uint32 unIPServer, uint16 usPortServer ) = 0; // Legacy functions diff --git a/CodeGen/steam/isteamuserstats.h b/CodeGen/steam/isteamuserstats.h index af37148c..8bb0c90f 100644 --- a/CodeGen/steam/isteamuserstats.h +++ b/CodeGen/steam/isteamuserstats.h @@ -210,8 +210,7 @@ class ISteamUserStats // as above, but downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers // if a user doesn't have a leaderboard entry, they won't be included in the result // a max of 100 users can be downloaded at a time, with only one outstanding call at a time - STEAM_METHOD_DESC(Downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers) - STEAM_CALL_RESULT( LeaderboardScoresDownloaded_t ) + STEAM_CALL_RESULT( LeaderboardScoresDownloaded_t ) virtual SteamAPICall_t DownloadLeaderboardEntriesForUsers( SteamLeaderboard_t hSteamLeaderboard, STEAM_ARRAY_COUNT_D(cUsers, Array of users to retrieve) CSteamID *prgUsers, int cUsers ) = 0; diff --git a/CodeGen/steam/isteamutils.h b/CodeGen/steam/isteamutils.h index fe2cde4c..30a93a0d 100644 --- a/CodeGen/steam/isteamutils.h +++ b/CodeGen/steam/isteamutils.h @@ -41,6 +41,14 @@ enum EGamepadTextInputLineMode k_EGamepadTextInputLineModeMultipleLines = 1 }; +enum EFloatingGamepadTextInputMode +{ + k_EFloatingGamepadTextInputModeModeSingleLine = 0, // Enter dismisses the keyboard + k_EFloatingGamepadTextInputModeModeMultipleLines = 1, // User needs to explictly close the keyboard + k_EFloatingGamepadTextInputModeModeEmail = 2, + k_EFloatingGamepadTextInputModeModeNumeric = 3, + +}; // The context where text filtering is being done enum ETextFilteringContext @@ -146,7 +154,7 @@ class ISteamUtils STEAM_CALL_RESULT( CheckFileSignature_t ) virtual SteamAPICall_t CheckFileSignature( const char *szFileName ) = 0; - // Activates the Big Picture text input dialog which only supports gamepad input + // Activates the full-screen text input dialog which takes a initial text string and returns the text the user has typed virtual bool ShowGamepadTextInput( EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, const char *pchDescription, uint32 unCharMax, const char *pchExistingText ) = 0; // Returns previously entered text & length @@ -203,6 +211,16 @@ class ISteamUtils // Return what we believe your current ipv6 connectivity to "the internet" is on the specified protocol. // This does NOT tell you if the Steam client is currently connected to Steam via ipv6. virtual ESteamIPv6ConnectivityState GetIPv6ConnectivityState( ESteamIPv6ConnectivityProtocol eProtocol ) = 0; + + // returns true if currently running on the Steam Deck device + virtual bool IsSteamRunningOnSteamDeck() = 0; + + // Opens a floating keyboard over the game content and sends OS keyboard keys directly to the game. + // The text field position is specified in pixels relative the origin of the game window and is used to position the floating keyboard in a way that doesn't cover the text field + virtual bool ShowFloatingGamepadTextInput( EFloatingGamepadTextInputMode eKeyboardMode, int nTextFieldXPosition, int nTextFieldYPosition, int nTextFieldWidth, int nTextFieldHeight ) = 0; + + // In game launchers that don't have controller support you can call this to have Steam Input translate the controller input into mouse/kb to navigate the launcher + virtual void SetGameLauncherMode( bool bLauncherMode ) = 0; }; #define STEAMUTILS_INTERFACE_VERSION "SteamUtils010" @@ -289,7 +307,7 @@ struct CheckFileSignature_t //----------------------------------------------------------------------------- -// Big Picture gamepad text input has been closed +// Full Screen gamepad text input has been closed //----------------------------------------------------------------------------- struct GamepadTextInputDismissed_t { @@ -298,7 +316,20 @@ struct GamepadTextInputDismissed_t uint32 m_unSubmittedText; }; -// k_iSteamUtilsCallbacks + 15 is taken +// k_iSteamUtilsCallbacks + 15 through 35 are taken + +STEAM_CALLBACK_BEGIN( AppResumingFromSuspend_t, k_iSteamUtilsCallbacks + 36 ) +STEAM_CALLBACK_END(0) + +// k_iSteamUtilsCallbacks + 37 is taken + +//----------------------------------------------------------------------------- +// The floating on-screen keyboard has been closed +//----------------------------------------------------------------------------- +struct FloatingGamepadTextInputDismissed_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 38 }; +}; #pragma pack( pop ) diff --git a/CodeGen/steam/steam_api.json b/CodeGen/steam/steam_api.json index 29acc807..ff2d01df 100644 --- a/CodeGen/steam/steam_api.json +++ b/CodeGen/steam/steam_api.json @@ -331,6 +331,16 @@ ], "struct": "GamepadTextInputDismissed_t" }, + { + "callback_id": 736, + "fields": [], + "struct": "AppResumingFromSuspend_t" + }, + { + "callback_id": 738, + "fields": [], + "struct": "ModalGamepadTextInputDismissed_t" + }, { "callback_id": 502, "fields": [ @@ -569,43 +579,6 @@ "fields": [], "struct": "ActiveBeaconsUpdated_t" }, - { - "callback_id": 1301, - "fields": [ - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_unNumDownloads", "fieldtype":"int" } - ], - "struct": "RemoteStorageAppSyncedClient_t" - }, - { - "callback_id": 1302, - "fields": [ - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" }, - { "fieldname":"m_unNumUploads", "fieldtype":"int" } - ], - "struct": "RemoteStorageAppSyncedServer_t" - }, - { - "callback_id": 1303, - "fields": [ - { "fieldname":"m_rgchCurrentFile", "fieldtype":"char [260]" }, - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_uBytesTransferredThisChunk", "fieldtype":"uint32" }, - { "fieldname":"m_dAppPercentComplete", "fieldtype":"double" }, - { "fieldname":"m_bUploading", "fieldtype":"bool" } - ], - "struct": "RemoteStorageAppSyncProgress_t" - }, - { - "callback_id": 1305, - "fields": [ - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_eResult", "fieldtype":"EResult" } - ], - "struct": "RemoteStorageAppSyncStatusCheck_t" - }, { "callback_id": 1307, "fields": [ @@ -848,6 +821,11 @@ ], "struct": "RemoteStorageFileReadAsyncComplete_t" }, + { + "callback_id": 1333, + "fields": [], + "struct": "RemoteStorageLocalFileChange_t" + }, { "callback_id": 1101, "fields": [ @@ -1174,6 +1152,33 @@ ], "struct": "HTTPRequestDataReceived_t" }, + { + "callback_id": 2801, + "fields": [ + { "fieldname":"m_ulConnectedDeviceHandle", "fieldtype":"InputHandle_t" } + ], + "struct": "SteamInputDeviceConnected_t" + }, + { + "callback_id": 2802, + "fields": [ + { "fieldname":"m_ulDisconnectedDeviceHandle", "fieldtype":"InputHandle_t" } + ], + "struct": "SteamInputDeviceDisconnected_t" + }, + { + "callback_id": 2803, + "fields": [ + { "fieldname":"m_unAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_ulDeviceHandle", "fieldtype":"InputHandle_t" }, + { "fieldname":"m_ulMappingCreator", "fieldtype":"CSteamID" }, + { "fieldname":"m_unMajorRevision", "fieldtype":"uint32" }, + { "fieldname":"m_unMinorRevision", "fieldtype":"uint32" }, + { "fieldname":"m_bUsesSteamInputAPI", "fieldtype":"bool" }, + { "fieldname":"m_bUsesGamepadAPI", "fieldtype":"bool" } + ], + "struct": "SteamInputConfigurationLoaded_t" + }, { "callback_id": 3401, "fields": [ @@ -1328,16 +1333,37 @@ "struct": "DeleteItemResult_t" }, { - "callback_id": 3901, + "callback_id": 3418, "fields": [ { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } ], + "struct": "UserSubscribedItemsListChanged_t" + }, + { + "callback_id": 3420, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_unVersion", "fieldtype":"uint32" }, + { "fieldname":"m_rtAction", "fieldtype":"RTime32" }, + { "fieldname":"m_bAccepted", "fieldtype":"bool" }, + { "fieldname":"m_bNeedsAction", "fieldtype":"bool" } + ], + "struct": "WorkshopEULAStatus_t" + }, + { + "callback_id": 3901, + "fields": [ + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_iInstallFolderIndex", "fieldtype":"int" } + ], "struct": "SteamAppInstalled_t" }, { "callback_id": 3902, "fields": [ - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_iInstallFolderIndex", "fieldtype":"int" } ], "struct": "SteamAppUninstalled_t" }, @@ -1802,22 +1828,9 @@ } ], "consts": [ - { "constname":"k_cubSaltSize", "consttype":"int", "constval":"8" }, - { "constname":"k_GIDNil", "consttype":"GID_t", "constval":"0xffffffffffffffffull" }, - { "constname":"k_TxnIDNil", "consttype":"GID_t", "constval":"k_GIDNil" }, - { "constname":"k_TxnIDUnknown", "consttype":"GID_t", "constval":"0" }, - { "constname":"k_JobIDNil", "consttype":"JobID_t", "constval":"0xffffffffffffffffull" }, - { "constname":"k_uPackageIdInvalid", "consttype":"PackageId_t", "constval":"0xFFFFFFFF" }, - { "constname":"k_uBundleIdInvalid", "consttype":"BundleId_t", "constval":"0" }, { "constname":"k_uAppIdInvalid", "consttype":"AppId_t", "constval":"0x0" }, - { "constname":"k_ulAssetClassIdInvalid", "consttype":"AssetClassId_t", "constval":"0x0" }, - { "constname":"k_uPhysicalItemIdInvalid", "consttype":"PhysicalItemId_t", "constval":"0x0" }, { "constname":"k_uDepotIdInvalid", "consttype":"DepotId_t", "constval":"0x0" }, - { "constname":"k_uCellIDInvalid", "consttype":"CellID_t", "constval":"0xFFFFFFFF" }, { "constname":"k_uAPICallInvalid", "consttype":"SteamAPICall_t", "constval":"0x0" }, - { "constname":"k_uPartnerIdInvalid", "consttype":"PartnerId_t", "constval":"0" }, - { "constname":"k_uManifestIdInvalid", "consttype":"ManifestId_t", "constval":"0" }, - { "constname":"k_ulSiteIdInvalid", "consttype":"SiteId_t", "constval":"0" }, { "constname":"k_ulPartyBeaconIdInvalid", "consttype":"PartyBeaconID_t", "constval":"0" }, { "constname":"k_HAuthTicketInvalid", "consttype":"HAuthTicket", "constval":"0" }, { "constname":"k_unSteamAccountIDMask", "consttype":"unsigned int", "constval":"0xFFFFFFFF" }, @@ -1871,6 +1884,12 @@ { "constname":"k_cchMaxSteamNetworkingErrMsg", "consttype":"int", "constval":"1024" }, { "constname":"k_cchSteamNetworkingMaxConnectionCloseReason", "consttype":"int", "constval":"128" }, { "constname":"k_cchSteamNetworkingMaxConnectionDescription", "consttype":"int", "constval":"128" }, + { "constname":"k_nSteamNetworkConnectionInfoFlags_Unauthenticated", "consttype":"int", "constval":"1" }, + { "constname":"k_nSteamNetworkConnectionInfoFlags_Unencrypted", "consttype":"int", "constval":"2" }, + { "constname":"k_nSteamNetworkConnectionInfoFlags_LoopbackBuffers", "consttype":"int", "constval":"4" }, + { "constname":"k_nSteamNetworkConnectionInfoFlags_Fast", "consttype":"int", "constval":"8" }, + { "constname":"k_nSteamNetworkConnectionInfoFlags_Relayed", "consttype":"int", "constval":"16" }, + { "constname":"k_nSteamNetworkConnectionInfoFlags_DualWifi", "consttype":"int", "constval":"32" }, { "constname":"k_cbMaxSteamNetworkingSocketsMessageSizeSend", "consttype":"int", "constval":"512 * 1024" }, { "constname":"k_nSteamNetworkingSend_Unreliable", "consttype":"int", "constval":"0" }, { "constname":"k_nSteamNetworkingSend_NoNagle", "consttype":"int", "constval":"1" }, @@ -1891,6 +1910,8 @@ { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Public", "consttype":"int", "constval":"4" }, { "constname":"k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_All", "consttype":"int", "constval":"0x7fffffff" }, { "constname":"k_SteamDatagramPOPID_dev", "consttype":"SteamNetworkingPOPID", "constval":"( ( uint32 ) 'd' << 16U ) | ( ( uint32 ) 'e' << 8U ) | ( uint32 ) 'v'" }, + { "constname":"STEAMGAMESERVER_QUERY_PORT_SHARED", "consttype":"uint16", "constval":"0xffff" }, + { "constname":"MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE", "consttype":"uint16", "constval":"STEAMGAMESERVER_QUERY_PORT_SHARED" }, { "constname":"k_cbSteamDatagramMaxSerializedTicket", "consttype":"uint32", "constval":"512" }, { "constname":"k_cbMaxSteamDatagramGameCoordinatorServerLoginAppData", "consttype":"uint32", "constval":"2048" }, { "constname":"k_cbMaxSteamDatagramGameCoordinatorServerLoginSerialized", "consttype":"uint32", "constval":"4096" } @@ -2035,7 +2056,10 @@ { "name":"k_EResultCommunityCooldown", "value":"116" }, { "name":"k_EResultNoLauncherSpecified", "value":"117" }, { "name":"k_EResultMustAgreeToSSA", "value":"118" }, - { "name":"k_EResultLauncherMigrated", "value":"119" } + { "name":"k_EResultLauncherMigrated", "value":"119" }, + { "name":"k_EResultSteamRealmMismatch", "value":"120" }, + { "name":"k_EResultInvalidSignature", "value":"121" }, + { "name":"k_EResultParseFailure", "value":"122" } ] }, { @@ -2125,81 +2149,6 @@ { "name":"k_EAccountTypeMax", "value":"11" } ] }, - { - "enumname": "EAppReleaseState", - "values": [ - { "name":"k_EAppReleaseState_Unknown", "value":"0" }, - { "name":"k_EAppReleaseState_Unavailable", "value":"1" }, - { "name":"k_EAppReleaseState_Prerelease", "value":"2" }, - { "name":"k_EAppReleaseState_PreloadOnly", "value":"3" }, - { "name":"k_EAppReleaseState_Released", "value":"4" } - ] - }, - { - "enumname": "EAppOwnershipFlags", - "values": [ - { "name":"k_EAppOwnershipFlags_None", "value":"0" }, - { "name":"k_EAppOwnershipFlags_OwnsLicense", "value":"1" }, - { "name":"k_EAppOwnershipFlags_FreeLicense", "value":"2" }, - { "name":"k_EAppOwnershipFlags_RegionRestricted", "value":"4" }, - { "name":"k_EAppOwnershipFlags_LowViolence", "value":"8" }, - { "name":"k_EAppOwnershipFlags_InvalidPlatform", "value":"16" }, - { "name":"k_EAppOwnershipFlags_SharedLicense", "value":"32" }, - { "name":"k_EAppOwnershipFlags_FreeWeekend", "value":"64" }, - { "name":"k_EAppOwnershipFlags_RetailLicense", "value":"128" }, - { "name":"k_EAppOwnershipFlags_LicenseLocked", "value":"256" }, - { "name":"k_EAppOwnershipFlags_LicensePending", "value":"512" }, - { "name":"k_EAppOwnershipFlags_LicenseExpired", "value":"1024" }, - { "name":"k_EAppOwnershipFlags_LicensePermanent", "value":"2048" }, - { "name":"k_EAppOwnershipFlags_LicenseRecurring", "value":"4096" }, - { "name":"k_EAppOwnershipFlags_LicenseCanceled", "value":"8192" }, - { "name":"k_EAppOwnershipFlags_AutoGrant", "value":"16384" }, - { "name":"k_EAppOwnershipFlags_PendingGift", "value":"32768" }, - { "name":"k_EAppOwnershipFlags_RentalNotActivated", "value":"65536" }, - { "name":"k_EAppOwnershipFlags_Rental", "value":"131072" }, - { "name":"k_EAppOwnershipFlags_SiteLicense", "value":"262144" }, - { "name":"k_EAppOwnershipFlags_LegacyFreeSub", "value":"524288" }, - { "name":"k_EAppOwnershipFlags_InvalidOSType", "value":"1048576" }, - { "name":"k_EAppOwnershipFlags_TimedTrial", "value":"2097152" } - ] - }, - { - "enumname": "EAppType", - "values": [ - { "name":"k_EAppType_Invalid", "value":"0" }, - { "name":"k_EAppType_Game", "value":"1" }, - { "name":"k_EAppType_Application", "value":"2" }, - { "name":"k_EAppType_Tool", "value":"4" }, - { "name":"k_EAppType_Demo", "value":"8" }, - { "name":"k_EAppType_Media_DEPRECATED", "value":"16" }, - { "name":"k_EAppType_DLC", "value":"32" }, - { "name":"k_EAppType_Guide", "value":"64" }, - { "name":"k_EAppType_Driver", "value":"128" }, - { "name":"k_EAppType_Config", "value":"256" }, - { "name":"k_EAppType_Hardware", "value":"512" }, - { "name":"k_EAppType_Franchise", "value":"1024" }, - { "name":"k_EAppType_Video", "value":"2048" }, - { "name":"k_EAppType_Plugin", "value":"4096" }, - { "name":"k_EAppType_MusicAlbum", "value":"8192" }, - { "name":"k_EAppType_Series", "value":"16384" }, - { "name":"k_EAppType_Comic_UNUSED", "value":"32768" }, - { "name":"k_EAppType_Beta", "value":"65536" }, - { "name":"k_EAppType_Shortcut", "value":"1073741824" }, - { "name":"k_EAppType_DepotOnly_DEPRECATED", "value":"-2147483648" } - ] - }, - { - "enumname": "ESteamUserStatType", - "values": [ - { "name":"k_ESteamUserStatTypeINVALID", "value":"0" }, - { "name":"k_ESteamUserStatTypeINT", "value":"1" }, - { "name":"k_ESteamUserStatTypeFLOAT", "value":"2" }, - { "name":"k_ESteamUserStatTypeAVGRATE", "value":"3" }, - { "name":"k_ESteamUserStatTypeACHIEVEMENTS", "value":"4" }, - { "name":"k_ESteamUserStatTypeGROUPACHIEVEMENTS", "value":"5" }, - { "name":"k_ESteamUserStatTypeMAX", "value":"6" } - ] - }, { "enumname": "EChatEntryType", "values": [ @@ -2243,17 +2192,6 @@ { "name":"k_EChatInstanceFlagMMSLobby", "value":"131072" } ] }, - { - "enumname": "EMarketingMessageFlags", - "values": [ - { "name":"k_EMarketingMessageFlagsNone", "value":"0" }, - { "name":"k_EMarketingMessageFlagsHighPriority", "value":"1" }, - { "name":"k_EMarketingMessageFlagsPlatformWindows", "value":"2" }, - { "name":"k_EMarketingMessageFlagsPlatformMac", "value":"4" }, - { "name":"k_EMarketingMessageFlagsPlatformLinux", "value":"8" }, - { "name":"k_EMarketingMessageFlagsPlatformRestrictions", "value":"14" } - ] - }, { "enumname": "ENotificationPosition", "values": [ @@ -2292,67 +2230,6 @@ { "name":"k_EBroadcastUploadResultAudioInitFailed", "value":"23" } ] }, - { - "enumname": "ELaunchOptionType", - "values": [ - { "name":"k_ELaunchOptionType_None", "value":"0" }, - { "name":"k_ELaunchOptionType_Default", "value":"1" }, - { "name":"k_ELaunchOptionType_SafeMode", "value":"2" }, - { "name":"k_ELaunchOptionType_Multiplayer", "value":"3" }, - { "name":"k_ELaunchOptionType_Config", "value":"4" }, - { "name":"k_ELaunchOptionType_OpenVR", "value":"5" }, - { "name":"k_ELaunchOptionType_Server", "value":"6" }, - { "name":"k_ELaunchOptionType_Editor", "value":"7" }, - { "name":"k_ELaunchOptionType_Manual", "value":"8" }, - { "name":"k_ELaunchOptionType_Benchmark", "value":"9" }, - { "name":"k_ELaunchOptionType_Option1", "value":"10" }, - { "name":"k_ELaunchOptionType_Option2", "value":"11" }, - { "name":"k_ELaunchOptionType_Option3", "value":"12" }, - { "name":"k_ELaunchOptionType_OculusVR", "value":"13" }, - { "name":"k_ELaunchOptionType_OpenVROverlay", "value":"14" }, - { "name":"k_ELaunchOptionType_OSVR", "value":"15" }, - { "name":"k_ELaunchOptionType_Dialog", "value":"1000" } - ] - }, - { - "enumname": "EVRHMDType", - "values": [ - { "name":"k_eEVRHMDType_None", "value":"-1" }, - { "name":"k_eEVRHMDType_Unknown", "value":"0" }, - { "name":"k_eEVRHMDType_HTC_Dev", "value":"1" }, - { "name":"k_eEVRHMDType_HTC_VivePre", "value":"2" }, - { "name":"k_eEVRHMDType_HTC_Vive", "value":"3" }, - { "name":"k_eEVRHMDType_HTC_VivePro", "value":"4" }, - { "name":"k_eEVRHMDType_HTC_ViveCosmos", "value":"5" }, - { "name":"k_eEVRHMDType_HTC_Unknown", "value":"20" }, - { "name":"k_eEVRHMDType_Oculus_DK1", "value":"21" }, - { "name":"k_eEVRHMDType_Oculus_DK2", "value":"22" }, - { "name":"k_eEVRHMDType_Oculus_Rift", "value":"23" }, - { "name":"k_eEVRHMDType_Oculus_RiftS", "value":"24" }, - { "name":"k_eEVRHMDType_Oculus_Quest", "value":"25" }, - { "name":"k_eEVRHMDType_Oculus_Unknown", "value":"40" }, - { "name":"k_eEVRHMDType_Acer_Unknown", "value":"50" }, - { "name":"k_eEVRHMDType_Acer_WindowsMR", "value":"51" }, - { "name":"k_eEVRHMDType_Dell_Unknown", "value":"60" }, - { "name":"k_eEVRHMDType_Dell_Visor", "value":"61" }, - { "name":"k_eEVRHMDType_Lenovo_Unknown", "value":"70" }, - { "name":"k_eEVRHMDType_Lenovo_Explorer", "value":"71" }, - { "name":"k_eEVRHMDType_HP_Unknown", "value":"80" }, - { "name":"k_eEVRHMDType_HP_WindowsMR", "value":"81" }, - { "name":"k_eEVRHMDType_HP_Reverb", "value":"82" }, - { "name":"k_eEVRHMDType_HP_ReverbG2", "value":"1463" }, - { "name":"k_eEVRHMDType_Samsung_Unknown", "value":"90" }, - { "name":"k_eEVRHMDType_Samsung_Odyssey", "value":"91" }, - { "name":"k_eEVRHMDType_Unannounced_Unknown", "value":"100" }, - { "name":"k_eEVRHMDType_Unannounced_WindowsMR", "value":"101" }, - { "name":"k_eEVRHMDType_vridge", "value":"110" }, - { "name":"k_eEVRHMDType_Huawei_Unknown", "value":"120" }, - { "name":"k_eEVRHMDType_Huawei_VR2", "value":"121" }, - { "name":"k_eEVRHMDType_Huawei_EndOfRange", "value":"129" }, - { "name":"k_eEVRHmdType_Valve_Unknown", "value":"130" }, - { "name":"k_eEVRHmdType_Valve_Index", "value":"131" } - ] - }, { "enumname": "EMarketNotAllowedReasonFlags", "values": [ @@ -2739,6 +2616,22 @@ { "name":"k_EUGCRead_Close", "value":"2" } ] }, + { + "enumname": "ERemoteStorageLocalFileChange", + "values": [ + { "name":"k_ERemoteStorageLocalFileChange_Invalid", "value":"0" }, + { "name":"k_ERemoteStorageLocalFileChange_FileUpdated", "value":"1" }, + { "name":"k_ERemoteStorageLocalFileChange_FileDeleted", "value":"2" } + ] + }, + { + "enumname": "ERemoteStorageFilePathType", + "values": [ + { "name":"k_ERemoteStorageFilePathType_Invalid", "value":"0" }, + { "name":"k_ERemoteStorageFilePathType_Absolute", "value":"1" }, + { "name":"k_ERemoteStorageFilePathType_APIFilename", "value":"2" } + ] + }, { "enumname": "ELeaderboardDataRequest", "values": [ @@ -3078,11 +2971,11 @@ { "name":"k_EInputActionOrigin_XBoxOne_DPad_West", "value":"140" }, { "name":"k_EInputActionOrigin_XBoxOne_DPad_East", "value":"141" }, { "name":"k_EInputActionOrigin_XBoxOne_DPad_Move", "value":"142" }, - { "name":"k_EInputActionOrigin_XBoxOne_Reserved1", "value":"143" }, - { "name":"k_EInputActionOrigin_XBoxOne_Reserved2", "value":"144" }, - { "name":"k_EInputActionOrigin_XBoxOne_Reserved3", "value":"145" }, - { "name":"k_EInputActionOrigin_XBoxOne_Reserved4", "value":"146" }, - { "name":"k_EInputActionOrigin_XBoxOne_Reserved5", "value":"147" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftGrip_Lower", "value":"143" }, + { "name":"k_EInputActionOrigin_XBoxOne_LeftGrip_Upper", "value":"144" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightGrip_Lower", "value":"145" }, + { "name":"k_EInputActionOrigin_XBoxOne_RightGrip_Upper", "value":"146" }, + { "name":"k_EInputActionOrigin_XBoxOne_Share", "value":"147" }, { "name":"k_EInputActionOrigin_XBoxOne_Reserved6", "value":"148" }, { "name":"k_EInputActionOrigin_XBoxOne_Reserved7", "value":"149" }, { "name":"k_EInputActionOrigin_XBoxOne_Reserved8", "value":"150" }, @@ -3313,6 +3206,22 @@ { "name":"k_ESteamControllerPad_Right", "value":"1" } ] }, + { + "enumname": "EControllerHapticLocation", + "values": [ + { "name":"k_EControllerHapticLocation_Left", "value":"1" }, + { "name":"k_EControllerHapticLocation_Right", "value":"2" }, + { "name":"k_EControllerHapticLocation_Both", "value":"3" } + ] + }, + { + "enumname": "EControllerHapticType", + "values": [ + { "name":"k_EControllerHapticType_Off", "value":"0" }, + { "name":"k_EControllerHapticType_Tick", "value":"1" }, + { "name":"k_EControllerHapticType_Click", "value":"2" } + ] + }, { "enumname": "ESteamInputType", "values": [ @@ -3334,6 +3243,16 @@ { "name":"k_ESteamInputType_MaximumPossibleValue", "value":"255" } ] }, + { + "enumname": "ESteamInputConfigurationEnableType", + "values": [ + { "name":"k_ESteamInputConfigurationEnableType_None", "value":"0" }, + { "name":"k_ESteamInputConfigurationEnableType_Playstation", "value":"1" }, + { "name":"k_ESteamInputConfigurationEnableType_Xbox", "value":"2" }, + { "name":"k_ESteamInputConfigurationEnableType_Generic", "value":"4" }, + { "name":"k_ESteamInputConfigurationEnableType_Switch", "value":"8" } + ] + }, { "enumname": "ESteamInputLEDFlag", "values": [ @@ -3341,6 +3260,21 @@ { "name":"k_ESteamInputLEDFlag_RestoreUserDefault", "value":"1" } ] }, + { + "enumname": "ESteamInputGlyphSize", + "values": [ + { "name":"k_ESteamInputGlyphSize_Small", "value":"0" }, + { "name":"k_ESteamInputGlyphSize_Medium", "value":"1" }, + { "name":"k_ESteamInputGlyphSize_Large", "value":"2" } + ] + }, + { + "enumname": "ESteamInputActionEventType", + "values": [ + { "name":"ESteamInputActionEventType_DigitalAction", "value":"0" }, + { "name":"ESteamInputActionEventType_AnalogAction", "value":"1" } + ] + }, { "enumname": "EControllerActionOrigin", "values": [ @@ -3644,7 +3578,12 @@ { "name":"k_EControllerActionOrigin_PS5_Gyro_Pitch", "value":"297" }, { "name":"k_EControllerActionOrigin_PS5_Gyro_Yaw", "value":"298" }, { "name":"k_EControllerActionOrigin_PS5_Gyro_Roll", "value":"299" }, - { "name":"k_EControllerActionOrigin_Count", "value":"300" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftGrip_Lower", "value":"300" }, + { "name":"k_EControllerActionOrigin_XBoxOne_LeftGrip_Upper", "value":"301" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightGrip_Lower", "value":"302" }, + { "name":"k_EControllerActionOrigin_XBoxOne_RightGrip_Upper", "value":"303" }, + { "name":"k_EControllerActionOrigin_XBoxOne_Share", "value":"304" }, + { "name":"k_EControllerActionOrigin_Count", "value":"305" }, { "name":"k_EControllerActionOrigin_MaximumPossibleValue", "value":"32767" } ] }, @@ -3721,7 +3660,8 @@ { "name":"k_EUGCQuery_RankedByAveragePlaytimeTrend", "value":"15" }, { "name":"k_EUGCQuery_RankedByLifetimeAveragePlaytime", "value":"16" }, { "name":"k_EUGCQuery_RankedByPlaytimeSessionsTrend", "value":"17" }, - { "name":"k_EUGCQuery_RankedByLifetimePlaytimeSessions", "value":"18" } + { "name":"k_EUGCQuery_RankedByLifetimePlaytimeSessions", "value":"18" }, + { "name":"k_EUGCQuery_RankedByLastUpdatedDate", "value":"19" } ] }, { @@ -3881,8 +3821,6 @@ { "name":"k_ESteamNetConnectionEnd_Remote_Timeout", "value":"4001" }, { "name":"k_ESteamNetConnectionEnd_Remote_BadCrypt", "value":"4002" }, { "name":"k_ESteamNetConnectionEnd_Remote_BadCert", "value":"4003" }, - { "name":"k_ESteamNetConnectionEnd_Remote_NotLoggedIn", "value":"4004" }, - { "name":"k_ESteamNetConnectionEnd_Remote_NotRunningApp", "value":"4005" }, { "name":"k_ESteamNetConnectionEnd_Remote_BadProtocolVersion", "value":"4006" }, { "name":"k_ESteamNetConnectionEnd_Remote_P2P_ICE_NoPublicAddresses", "value":"4007" }, { "name":"k_ESteamNetConnectionEnd_Remote_Max", "value":"4999" }, @@ -3890,7 +3828,6 @@ { "name":"k_ESteamNetConnectionEnd_Misc_Generic", "value":"5001" }, { "name":"k_ESteamNetConnectionEnd_Misc_InternalError", "value":"5002" }, { "name":"k_ESteamNetConnectionEnd_Misc_Timeout", "value":"5003" }, - { "name":"k_ESteamNetConnectionEnd_Misc_RelayConnectivity", "value":"5004" }, { "name":"k_ESteamNetConnectionEnd_Misc_SteamConnectivity", "value":"5005" }, { "name":"k_ESteamNetConnectionEnd_Misc_NoRelaySessionsToClient", "value":"5006" }, { "name":"k_ESteamNetConnectionEnd_Misc_P2P_Rendezvous", "value":"5008" }, @@ -3900,20 +3837,6 @@ { "name":"k_ESteamNetConnectionEnd__Force32Bit", "value":"2147483647" } ] }, - { - "enumname": "ESteamNetTransportKind", - "values": [ - { "name":"k_ESteamNetTransport_Unknown", "value":"0" }, - { "name":"k_ESteamNetTransport_LoopbackBuffers", "value":"1" }, - { "name":"k_ESteamNetTransport_LocalHost", "value":"2" }, - { "name":"k_ESteamNetTransport_UDP", "value":"3" }, - { "name":"k_ESteamNetTransport_UDPProbablyLocal", "value":"4" }, - { "name":"k_ESteamNetTransport_TURN", "value":"5" }, - { "name":"k_ESteamNetTransport_SDRP2P", "value":"6" }, - { "name":"k_ESteamNetTransport_SDRHostedServer", "value":"7" }, - { "name":"k_ESteamNetTransport_Force32Bit", "value":"2147483647" } - ] - }, { "enumname": "ESteamNetworkingConfigScope", "values": [ @@ -3939,19 +3862,10 @@ "enumname": "ESteamNetworkingConfigValue", "values": [ { "name":"k_ESteamNetworkingConfig_Invalid", "value":"0" }, - { "name":"k_ESteamNetworkingConfig_FakePacketLoss_Send", "value":"2" }, - { "name":"k_ESteamNetworkingConfig_FakePacketLoss_Recv", "value":"3" }, - { "name":"k_ESteamNetworkingConfig_FakePacketLag_Send", "value":"4" }, - { "name":"k_ESteamNetworkingConfig_FakePacketLag_Recv", "value":"5" }, - { "name":"k_ESteamNetworkingConfig_FakePacketReorder_Send", "value":"6" }, - { "name":"k_ESteamNetworkingConfig_FakePacketReorder_Recv", "value":"7" }, - { "name":"k_ESteamNetworkingConfig_FakePacketReorder_Time", "value":"8" }, - { "name":"k_ESteamNetworkingConfig_FakePacketDup_Send", "value":"26" }, - { "name":"k_ESteamNetworkingConfig_FakePacketDup_Recv", "value":"27" }, - { "name":"k_ESteamNetworkingConfig_FakePacketDup_TimeMax", "value":"28" }, { "name":"k_ESteamNetworkingConfig_TimeoutInitial", "value":"24" }, { "name":"k_ESteamNetworkingConfig_TimeoutConnected", "value":"25" }, { "name":"k_ESteamNetworkingConfig_SendBufferSize", "value":"9" }, + { "name":"k_ESteamNetworkingConfig_ConnectionUserData", "value":"40" }, { "name":"k_ESteamNetworkingConfig_SendRateMin", "value":"10" }, { "name":"k_ESteamNetworkingConfig_SendRateMax", "value":"11" }, { "name":"k_ESteamNetworkingConfig_NagleTime", "value":"12" }, @@ -3959,9 +3873,24 @@ { "name":"k_ESteamNetworkingConfig_MTU_PacketSize", "value":"32" }, { "name":"k_ESteamNetworkingConfig_MTU_DataSize", "value":"33" }, { "name":"k_ESteamNetworkingConfig_Unencrypted", "value":"34" }, - { "name":"k_ESteamNetworkingConfig_EnumerateDevVars", "value":"35" }, { "name":"k_ESteamNetworkingConfig_SymmetricConnect", "value":"37" }, { "name":"k_ESteamNetworkingConfig_LocalVirtualPort", "value":"38" }, + { "name":"k_ESteamNetworkingConfig_DualWifi_Enable", "value":"39" }, + { "name":"k_ESteamNetworkingConfig_FakePacketLoss_Send", "value":"2" }, + { "name":"k_ESteamNetworkingConfig_FakePacketLoss_Recv", "value":"3" }, + { "name":"k_ESteamNetworkingConfig_FakePacketLag_Send", "value":"4" }, + { "name":"k_ESteamNetworkingConfig_FakePacketLag_Recv", "value":"5" }, + { "name":"k_ESteamNetworkingConfig_FakePacketReorder_Send", "value":"6" }, + { "name":"k_ESteamNetworkingConfig_FakePacketReorder_Recv", "value":"7" }, + { "name":"k_ESteamNetworkingConfig_FakePacketReorder_Time", "value":"8" }, + { "name":"k_ESteamNetworkingConfig_FakePacketDup_Send", "value":"26" }, + { "name":"k_ESteamNetworkingConfig_FakePacketDup_Recv", "value":"27" }, + { "name":"k_ESteamNetworkingConfig_FakePacketDup_TimeMax", "value":"28" }, + { "name":"k_ESteamNetworkingConfig_PacketTraceMaxBytes", "value":"41" }, + { "name":"k_ESteamNetworkingConfig_FakeRateLimit_Send_Rate", "value":"42" }, + { "name":"k_ESteamNetworkingConfig_FakeRateLimit_Send_Burst", "value":"43" }, + { "name":"k_ESteamNetworkingConfig_FakeRateLimit_Recv_Rate", "value":"44" }, + { "name":"k_ESteamNetworkingConfig_FakeRateLimit_Recv_Burst", "value":"45" }, { "name":"k_ESteamNetworkingConfig_Callback_ConnectionStatusChanged", "value":"201" }, { "name":"k_ESteamNetworkingConfig_Callback_AuthStatusChanged", "value":"202" }, { "name":"k_ESteamNetworkingConfig_Callback_RelayNetworkStatusChanged", "value":"203" }, @@ -3986,6 +3915,7 @@ { "name":"k_ESteamNetworkingConfig_LogLevel_PacketGaps", "value":"16" }, { "name":"k_ESteamNetworkingConfig_LogLevel_P2PRendezvous", "value":"17" }, { "name":"k_ESteamNetworkingConfig_LogLevel_SDRRelayPings", "value":"18" }, + { "name":"k_ESteamNetworkingConfig_DELETED_EnumerateDevVars", "value":"35" }, { "name":"k_ESteamNetworkingConfigValue__Force32Bit", "value":"2147483647" } ] }, @@ -4401,8 +4331,8 @@ "returntype_flat": "uint64_steamid" }, { - "methodname": "InitiateGameConnection", - "methodname_flat": "SteamAPI_ISteamUser_InitiateGameConnection", + "methodname": "InitiateGameConnection_DEPRECATED", + "methodname_flat": "SteamAPI_ISteamUser_InitiateGameConnection_DEPRECATED", "params": [ { "paramname":"pAuthBlob", "paramtype":"void *" }, { "paramname":"cbMaxAuthBlob", "paramtype":"int" }, @@ -4414,8 +4344,8 @@ "returntype": "int" }, { - "methodname": "TerminateGameConnection", - "methodname_flat": "SteamAPI_ISteamUser_TerminateGameConnection", + "methodname": "TerminateGameConnection_DEPRECATED", + "methodname_flat": "SteamAPI_ISteamUser_TerminateGameConnection_DEPRECATED", "params": [ { "paramname":"unIPServer", "paramtype":"uint32" }, { "paramname":"usPortServer", "paramtype":"uint16" } @@ -5580,6 +5510,28 @@ { "paramname":"eProtocol", "paramtype":"ESteamIPv6ConnectivityProtocol" } ], "returntype": "ESteamIPv6ConnectivityState" + }, + { + "methodname": "IsSteamRunningOnSteamDeck", + "methodname_flat": "SteamAPI_ISteamUtils_IsSteamRunningOnSteamDeck", + "params": [], + "returntype": "bool" + }, + { + "methodname": "ShowModalGamepadTextInput", + "methodname_flat": "SteamAPI_ISteamUtils_ShowModalGamepadTextInput", + "params": [ + { "paramname":"eLineInputMode", "paramtype":"EGamepadTextInputLineMode" } + ], + "returntype": "bool" + }, + { + "methodname": "SetGameLauncherMode", + "methodname_flat": "SteamAPI_ISteamUtils_SetGameLauncherMode", + "params": [ + { "paramname":"bLauncherMode", "paramtype":"bool" } + ], + "returntype": "void" } ], "version_string": "SteamUtils010" @@ -6540,7 +6492,7 @@ { "kind": "user", "name": "SteamRemoteStorage", - "name_flat": "SteamAPI_SteamRemoteStorage_v014" + "name_flat": "SteamAPI_SteamRemoteStorage_v016" } ], "classname": "ISteamRemoteStorage", @@ -7068,9 +7020,37 @@ { "paramname":"unPriority", "paramtype":"uint32" } ], "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetLocalFileChangeCount", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetLocalFileChangeCount", + "params": [], + "returntype": "int32" + }, + { + "methodname": "GetLocalFileChange", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_GetLocalFileChange", + "params": [ + { "paramname":"iFile", "paramtype":"int" }, + { "paramname":"pEChangeType", "paramtype":"ERemoteStorageLocalFileChange *" }, + { "paramname":"pEFilePathType", "paramtype":"ERemoteStorageFilePathType *" } + ], + "returntype": "const char *" + }, + { + "methodname": "BeginFileWriteBatch", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_BeginFileWriteBatch", + "params": [], + "returntype": "bool" + }, + { + "methodname": "EndFileWriteBatch", + "methodname_flat": "SteamAPI_ISteamRemoteStorage_EndFileWriteBatch", + "params": [], + "returntype": "bool" } ], - "version_string": "STEAMREMOTESTORAGE_INTERFACE_VERSION014" + "version_string": "STEAMREMOTESTORAGE_INTERFACE_VERSION016" }, { "accessors": [ @@ -7342,7 +7322,6 @@ }, { "callresult": "LeaderboardScoresDownloaded_t", - "desc": "Downloads leaderboard entries for an arbitrary set of users - ELeaderboardDataRequest is k_ELeaderboardDataRequestUsers", "methodname": "DownloadLeaderboardEntriesForUsers", "methodname_flat": "SteamAPI_ISteamUserStats_DownloadLeaderboardEntriesForUsers", "params": [ @@ -7522,11 +7501,6 @@ "kind": "user", "name": "SteamApps", "name_flat": "SteamAPI_SteamApps_v008" - }, - { - "kind": "gameserver", - "name": "SteamGameServerApps", - "name_flat": "SteamAPI_SteamGameServerApps_v008" } ], "classname": "ISteamApps", @@ -8668,7 +8642,7 @@ { "kind": "user", "name": "SteamInput", - "name_flat": "SteamAPI_SteamInput_v002" + "name_flat": "SteamAPI_SteamInput_v005" } ], "classname": "ISteamInput", @@ -8677,7 +8651,9 @@ { "methodname": "Init", "methodname_flat": "SteamAPI_ISteamInput_Init", - "params": [], + "params": [ + { "paramname":"bExplicitlyCallRunFrame", "paramtype":"bool" } + ], "returntype": "bool" }, { @@ -8686,12 +8662,37 @@ "params": [], "returntype": "bool" }, + { + "methodname": "SetInputActionManifestFilePath", + "methodname_flat": "SteamAPI_ISteamInput_SetInputActionManifestFilePath", + "params": [ + { "paramname":"pchInputActionManifestAbsolutePath", "paramtype":"const char *" } + ], + "returntype": "bool" + }, { "methodname": "RunFrame", "methodname_flat": "SteamAPI_ISteamInput_RunFrame", - "params": [], + "params": [ + { "paramname":"bReservedValue", "paramtype":"bool" } + ], "returntype": "void" }, + { + "methodname": "BWaitForData", + "methodname_flat": "SteamAPI_ISteamInput_BWaitForData", + "params": [ + { "paramname":"bWaitForever", "paramtype":"bool" }, + { "paramname":"unTimeout", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "BNewDataAvailable", + "methodname_flat": "SteamAPI_ISteamInput_BNewDataAvailable", + "params": [], + "returntype": "bool" + }, { "methodname": "GetConnectedControllers", "methodname_flat": "SteamAPI_ISteamInput_GetConnectedControllers", @@ -8705,6 +8706,22 @@ ], "returntype": "int" }, + { + "callback": "SteamInputConfigurationLoaded_t", + "methodname": "EnableDeviceCallbacks", + "methodname_flat": "SteamAPI_ISteamInput_EnableDeviceCallbacks", + "params": [], + "returntype": "void" + }, + { + "callback": "SteamInputDeviceDisconnected_t", + "methodname": "EnableActionEventCallbacks", + "methodname_flat": "SteamAPI_ISteamInput_EnableActionEventCallbacks", + "params": [ + { "paramname":"pCallback", "paramtype":"SteamInputActionEventCallbackPointer" } + ], + "returntype": "void" + }, { "methodname": "GetActionSetHandle", "methodname_flat": "SteamAPI_ISteamInput_GetActionSetHandle", @@ -8803,6 +8820,14 @@ ], "returntype": "int" }, + { + "methodname": "GetStringForDigitalActionName", + "methodname_flat": "SteamAPI_ISteamInput_GetStringForDigitalActionName", + "params": [ + { "paramname":"eActionHandle", "paramtype":"InputDigitalActionHandle_t" } + ], + "returntype": "const char *" + }, { "methodname": "GetAnalogActionHandle", "methodname_flat": "SteamAPI_ISteamInput_GetAnalogActionHandle", @@ -8837,8 +8862,27 @@ "returntype": "int" }, { - "methodname": "GetGlyphForActionOrigin", - "methodname_flat": "SteamAPI_ISteamInput_GetGlyphForActionOrigin", + "methodname": "GetGlyphPNGForActionOrigin", + "methodname_flat": "SteamAPI_ISteamInput_GetGlyphPNGForActionOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EInputActionOrigin" }, + { "paramname":"eSize", "paramtype":"ESteamInputGlyphSize" }, + { "paramname":"unFlags", "paramtype":"uint32" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetGlyphSVGForActionOrigin", + "methodname_flat": "SteamAPI_ISteamInput_GetGlyphSVGForActionOrigin", + "params": [ + { "paramname":"eOrigin", "paramtype":"EInputActionOrigin" }, + { "paramname":"unFlags", "paramtype":"uint32" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetGlyphForActionOrigin_Legacy", + "methodname_flat": "SteamAPI_ISteamInput_GetGlyphForActionOrigin_Legacy", "params": [ { "paramname":"eOrigin", "paramtype":"EInputActionOrigin" } ], @@ -8852,6 +8896,14 @@ ], "returntype": "const char *" }, + { + "methodname": "GetStringForAnalogActionName", + "methodname_flat": "SteamAPI_ISteamInput_GetStringForAnalogActionName", + "params": [ + { "paramname":"eActionHandle", "paramtype":"InputAnalogActionHandle_t" } + ], + "returntype": "const char *" + }, { "methodname": "StopAnalogActionMomentum", "methodname_flat": "SteamAPI_ISteamInput_StopAnalogActionMomentum", @@ -8879,6 +8931,31 @@ ], "returntype": "void" }, + { + "methodname": "TriggerVibrationExtended", + "methodname_flat": "SteamAPI_ISteamInput_TriggerVibrationExtended", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"usLeftSpeed", "paramtype":"unsigned short" }, + { "paramname":"usRightSpeed", "paramtype":"unsigned short" }, + { "paramname":"usLeftTriggerSpeed", "paramtype":"unsigned short" }, + { "paramname":"usRightTriggerSpeed", "paramtype":"unsigned short" } + ], + "returntype": "void" + }, + { + "methodname": "TriggerSimpleHapticEvent", + "methodname_flat": "SteamAPI_ISteamInput_TriggerSimpleHapticEvent", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"eHapticLocation", "paramtype":"EControllerHapticLocation" }, + { "paramname":"nIntensity", "paramtype":"uint8" }, + { "paramname":"nGainDB", "paramtype":"char" }, + { "paramname":"nOtherIntensity", "paramtype":"uint8" }, + { "paramname":"nOtherGainDB", "paramtype":"char" } + ], + "returntype": "void" + }, { "methodname": "SetLEDColor", "methodname_flat": "SteamAPI_ISteamInput_SetLEDColor", @@ -8892,8 +8969,8 @@ "returntype": "void" }, { - "methodname": "TriggerHapticPulse", - "methodname_flat": "SteamAPI_ISteamInput_TriggerHapticPulse", + "methodname": "Legacy_TriggerHapticPulse", + "methodname_flat": "SteamAPI_ISteamInput_Legacy_TriggerHapticPulse", "params": [ { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, { "paramname":"eTargetPad", "paramtype":"ESteamControllerPad" }, @@ -8902,8 +8979,8 @@ "returntype": "void" }, { - "methodname": "TriggerRepeatedHapticPulse", - "methodname_flat": "SteamAPI_ISteamInput_TriggerRepeatedHapticPulse", + "methodname": "Legacy_TriggerRepeatedHapticPulse", + "methodname_flat": "SteamAPI_ISteamInput_Legacy_TriggerRepeatedHapticPulse", "params": [ { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, { "paramname":"eTargetPad", "paramtype":"ESteamControllerPad" }, @@ -8997,9 +9074,15 @@ { "paramname":"inputHandle", "paramtype":"InputHandle_t" } ], "returntype": "uint32" + }, + { + "methodname": "GetSessionInputConfigurationSettings", + "methodname_flat": "SteamAPI_ISteamInput_GetSessionInputConfigurationSettings", + "params": [], + "returntype": "uint16" } ], - "version_string": "SteamInput002" + "version_string": "SteamInput005" }, { "accessors": [ @@ -10177,6 +10260,19 @@ { "paramname":"nPublishedFileID", "paramtype":"PublishedFileId_t" } ], "returntype": "SteamAPICall_t" + }, + { + "methodname": "ShowWorkshopEULA", + "methodname_flat": "SteamAPI_ISteamUGC_ShowWorkshopEULA", + "params": [], + "returntype": "bool" + }, + { + "callresult": "WorkshopEULAStatus_t", + "methodname": "GetWorkshopEULAStatus", + "methodname_flat": "SteamAPI_ISteamUGC_GetWorkshopEULAStatus", + "params": [], + "returntype": "SteamAPICall_t" } ], "version_string": "STEAMUGC_INTERFACE_VERSION015" @@ -10650,7 +10746,6 @@ "returntype": "void" }, { - "ignore": null, "methodname": "FileLoadDialogResponse", "methodname_flat": "SteamAPI_ISteamHTMLSurface_FileLoadDialogResponse", "params": [ @@ -10679,7 +10774,6 @@ "fields": [], "methods": [ { - "desc": "Find out the status of an asynchronous inventory result handle.", "methodname": "GetResultStatus", "methodname_flat": "SteamAPI_ISteamInventory_GetResultStatus", "params": [ @@ -10688,7 +10782,6 @@ "returntype": "EResult" }, { - "desc": "Copies the contents of a result set into a flat array. The specific contents of the result set depend on which query which was used.", "methodname": "GetResultItems", "methodname_flat": "SteamAPI_ISteamInventory_GetResultItems", "params": [ @@ -10720,7 +10813,6 @@ "returntype": "bool" }, { - "desc": "Returns the server time at which the result was generated. Compare against the value of IClientUtils::GetServerRealTime() to determine age.", "methodname": "GetResultTimestamp", "methodname_flat": "SteamAPI_ISteamInventory_GetResultTimestamp", "params": [ @@ -10729,7 +10821,6 @@ "returntype": "uint32" }, { - "desc": "Returns true if the result belongs to the target steam ID or false if the result does not. This is important when using DeserializeResult to verify that a remote player is not pretending to have a different users inventory.", "methodname": "CheckResultSteamID", "methodname_flat": "SteamAPI_ISteamInventory_CheckResultSteamID", "params": [ @@ -10739,7 +10830,6 @@ "returntype": "bool" }, { - "desc": "Destroys a result handle and frees all associated memory.", "methodname": "DestroyResult", "methodname_flat": "SteamAPI_ISteamInventory_DestroyResult", "params": [ @@ -10748,7 +10838,6 @@ "returntype": "void" }, { - "desc": "Captures the entire state of the current users Steam inventory.", "methodname": "GetAllItems", "methodname_flat": "SteamAPI_ISteamInventory_GetAllItems", "params": [ @@ -10757,7 +10846,6 @@ "returntype": "bool" }, { - "desc": "Captures the state of a subset of the current users Steam inventory identified by an array of item instance IDs.", "methodname": "GetItemsByID", "methodname_flat": "SteamAPI_ISteamInventory_GetItemsByID", "params": [ @@ -10820,7 +10908,6 @@ "returntype": "bool" }, { - "desc": "GrantPromoItems() checks the list of promotional items for which the user may be eligible and grants the items (one time only).", "methodname": "GrantPromoItems", "methodname_flat": "SteamAPI_ISteamInventory_GrantPromoItems", "params": [ @@ -10852,7 +10939,6 @@ "returntype": "bool" }, { - "desc": "ConsumeItem() removes items from the inventory permanently.", "methodname": "ConsumeItem", "methodname_flat": "SteamAPI_ISteamInventory_ConsumeItem", "params": [ @@ -10904,14 +10990,12 @@ "returntype": "bool" }, { - "desc": "Deprecated method. Playtime accounting is performed on the Steam servers.", "methodname": "SendItemDropHeartbeat", "methodname_flat": "SteamAPI_ISteamInventory_SendItemDropHeartbeat", "params": [], "returntype": "void" }, { - "desc": "Playtime credit must be consumed and turned into item drops by your game.", "methodname": "TriggerItemDrop", "methodname_flat": "SteamAPI_ISteamInventory_TriggerItemDrop", "params": [ @@ -10952,7 +11036,6 @@ "returntype": "bool" }, { - "desc": "LoadItemDefinitions triggers the automatic load and refresh of item definitions.", "methodname": "LoadItemDefinitions", "methodname_flat": "SteamAPI_ISteamInventory_LoadItemDefinitions", "params": [], @@ -11160,7 +11243,6 @@ "returntype": "bool" }, { - "desc": "Look up the given token and return a pseudo-Inventory item.", "methodname": "InspectItem", "methodname_flat": "SteamAPI_ISteamInventory_InspectItem", "params": [ @@ -11431,12 +11513,12 @@ { "kind": "user", "name": "SteamNetworkingSockets_SteamAPI", - "name_flat": "SteamAPI_SteamNetworkingSockets_SteamAPI_v009" + "name_flat": "SteamAPI_SteamNetworkingSockets_SteamAPI_v011" }, { "kind": "gameserver", "name": "SteamGameServerNetworkingSockets_SteamAPI", - "name_flat": "SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v009" + "name_flat": "SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v011" } ], "classname": "ISteamNetworkingSockets", @@ -11803,6 +11885,14 @@ ], "returntype": "bool" }, + { + "methodname": "ResetIdentity", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ResetIdentity", + "params": [ + { "paramname":"pIdentity", "paramtype":"const SteamNetworkingIdentity *" } + ], + "returntype": "void" + }, { "methodname": "RunCallbacks", "methodname_flat": "SteamAPI_ISteamNetworkingSockets_RunCallbacks", @@ -11810,14 +11900,14 @@ "returntype": "void" } ], - "version_string": "SteamNetworkingSockets009" + "version_string": "SteamNetworkingSockets011" }, { "accessors": [ { "kind": "global", "name": "SteamNetworkingUtils_SteamAPI", - "name_flat": "SteamAPI_SteamNetworkingUtils_SteamAPI_v003" + "name_flat": "SteamAPI_SteamNetworkingUtils_SteamAPI_v004" } ], "classname": "ISteamNetworkingUtils", @@ -12090,17 +12180,18 @@ "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetConfigValueInfo", "params": [ { "paramname":"eValue", "paramtype":"ESteamNetworkingConfigValue" }, - { "paramname":"pOutName", "paramtype":"const char **" }, { "paramname":"pOutDataType", "paramtype":"ESteamNetworkingConfigDataType *" }, - { "paramname":"pOutScope", "paramtype":"ESteamNetworkingConfigScope *" }, - { "paramname":"pOutNextValue", "paramtype":"ESteamNetworkingConfigValue *" } + { "paramname":"pOutScope", "paramtype":"ESteamNetworkingConfigScope *" } ], - "returntype": "bool" + "returntype": "const char *" }, { - "methodname": "GetFirstConfigValue", - "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetFirstConfigValue", - "params": [], + "methodname": "IterateGenericEditableConfigValues", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_IterateGenericEditableConfigValues", + "params": [ + { "paramname":"eCurrent", "paramtype":"ESteamNetworkingConfigValue" }, + { "paramname":"bEnumerateDevVars", "paramtype":"bool" } + ], "returntype": "ESteamNetworkingConfigValue" }, { @@ -12143,14 +12234,14 @@ "returntype": "bool" } ], - "version_string": "SteamNetworkingUtils003" + "version_string": "SteamNetworkingUtils004" }, { "accessors": [ { "kind": "gameserver", "name": "SteamGameServer", - "name_flat": "SteamAPI_SteamGameServer_v013" + "name_flat": "SteamAPI_SteamGameServer_v014" } ], "classname": "ISteamGameServer", @@ -12329,41 +12420,13 @@ "returntype": "void" }, { - "methodname": "SendUserConnectAndAuthenticate", - "methodname_flat": "SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate", - "params": [ - { "paramname":"unIPClient", "paramtype":"uint32" }, - { "paramname":"pvAuthBlob", "paramtype":"const void *" }, - { "paramname":"cubAuthBlobSize", "paramtype":"uint32" }, - { "paramname":"pSteamIDUser", "paramtype":"CSteamID *" } - ], - "returntype": "bool" - }, - { - "methodname": "CreateUnauthenticatedUserConnection", - "methodname_flat": "SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection", - "params": [], - "returntype": "CSteamID", - "returntype_flat": "uint64_steamid" - }, - { - "methodname": "SendUserDisconnect", - "methodname_flat": "SteamAPI_ISteamGameServer_SendUserDisconnect", + "methodname": "SetAdvertiseServerActive", + "methodname_flat": "SteamAPI_ISteamGameServer_SetAdvertiseServerActive", "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + { "paramname":"bActive", "paramtype":"bool" } ], "returntype": "void" }, - { - "methodname": "BUpdateUserData", - "methodname_flat": "SteamAPI_ISteamGameServer_BUpdateUserData", - "params": [ - { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, - { "paramname":"pchPlayerName", "paramtype":"const char *" }, - { "paramname":"uScore", "paramtype":"uint32" } - ], - "returntype": "bool" - }, { "methodname": "GetAuthSessionTicket", "methodname_flat": "SteamAPI_ISteamGameServer_GetAuthSessionTicket", @@ -12460,47 +12523,61 @@ "returntype": "int" }, { - "methodname": "EnableHeartbeats", - "methodname_flat": "SteamAPI_ISteamGameServer_EnableHeartbeats", + "callresult": "AssociateWithClanResult_t", + "methodname": "AssociateWithClan", + "methodname_flat": "SteamAPI_ISteamGameServer_AssociateWithClan", "params": [ - { "paramname":"bActive", "paramtype":"bool" } + { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } ], - "returntype": "void" + "returntype": "SteamAPICall_t" }, { - "methodname": "SetHeartbeatInterval", - "methodname_flat": "SteamAPI_ISteamGameServer_SetHeartbeatInterval", + "callresult": "ComputeNewPlayerCompatibilityResult_t", + "methodname": "ComputeNewPlayerCompatibility", + "methodname_flat": "SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility", "params": [ - { "paramname":"iHeartbeatInterval", "paramtype":"int" } + { "paramname":"steamIDNewPlayer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } ], - "returntype": "void" + "returntype": "SteamAPICall_t" + }, + { + "methodname": "SendUserConnectAndAuthenticate_DEPRECATED", + "methodname_flat": "SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate_DEPRECATED", + "params": [ + { "paramname":"unIPClient", "paramtype":"uint32" }, + { "paramname":"pvAuthBlob", "paramtype":"const void *" }, + { "paramname":"cubAuthBlobSize", "paramtype":"uint32" }, + { "paramname":"pSteamIDUser", "paramtype":"CSteamID *" } + ], + "returntype": "bool" }, { - "methodname": "ForceHeartbeat", - "methodname_flat": "SteamAPI_ISteamGameServer_ForceHeartbeat", + "methodname": "CreateUnauthenticatedUserConnection", + "methodname_flat": "SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection", "params": [], - "returntype": "void" + "returntype": "CSteamID", + "returntype_flat": "uint64_steamid" }, { - "callresult": "AssociateWithClanResult_t", - "methodname": "AssociateWithClan", - "methodname_flat": "SteamAPI_ISteamGameServer_AssociateWithClan", + "methodname": "SendUserDisconnect_DEPRECATED", + "methodname_flat": "SteamAPI_ISteamGameServer_SendUserDisconnect_DEPRECATED", "params": [ - { "paramname":"steamIDClan", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } ], - "returntype": "SteamAPICall_t" + "returntype": "void" }, { - "callresult": "ComputeNewPlayerCompatibilityResult_t", - "methodname": "ComputeNewPlayerCompatibility", - "methodname_flat": "SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility", + "methodname": "BUpdateUserData", + "methodname_flat": "SteamAPI_ISteamGameServer_BUpdateUserData", "params": [ - { "paramname":"steamIDNewPlayer", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + { "paramname":"steamIDUser", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"pchPlayerName", "paramtype":"const char *" }, + { "paramname":"uScore", "paramtype":"uint32" } ], - "returntype": "SteamAPICall_t" + "returntype": "bool" } ], - "version_string": "SteamGameServer013" + "version_string": "SteamGameServer014" }, { "accessors": [ @@ -12880,6 +12957,15 @@ ], "struct": "InputMotionData_t" }, + { + "fields": [ + { "fieldname":"controllerHandle", "fieldtype":"InputHandle_t" }, + { "fieldname":"eEventType", "fieldtype":"ESteamInputActionEventType" }, + { "fieldname":"analogAction_actionHandle", "fieldtype":"InputAnalogActionHandle_t" }, + { "fieldname":"analogAction_analogActionData", "fieldtype":"InputAnalogActionData_t" } + ], + "struct": "SteamInputActionEvent_t" + }, { "fields": [ { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, @@ -13124,6 +13210,21 @@ "params": [], "returntype": "const SteamNetworkingIPAddr *" }, + { + "methodname": "SetIPv4Addr", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetIPv4Addr", + "params": [ + { "paramname":"nIPv4", "paramtype":"uint32" }, + { "paramname":"nPort", "paramtype":"uint16" } + ], + "returntype": "void" + }, + { + "methodname": "GetIPv4", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetIPv4", + "params": [], + "returntype": "uint32" + }, { "methodname": "SetLocalHost", "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetLocalHost", @@ -13208,7 +13309,7 @@ { "fieldname":"m_eEndReason", "fieldtype":"int" }, { "fieldname":"m_szEndDebug", "fieldtype":"char [128]" }, { "fieldname":"m_szConnectionDescription", "fieldtype":"char [128]" }, - { "fieldname":"m_eTransportKind", "fieldtype":"ESteamNetTransportKind" }, + { "fieldname":"m_nFlags", "fieldtype":"int" }, { "fieldname":"reserved", "fieldtype":"uint32 [63]" } ], "struct": "SteamNetConnectionInfo_t" @@ -13428,29 +13529,14 @@ { "typedef":"ulint64", "type":"unsigned long long" }, { "typedef":"intp", "type":"long long" }, { "typedef":"uintp", "type":"unsigned long long" }, - { "typedef":"Salt_t", "type":"unsigned char [8]" }, - { "typedef":"GID_t", "type":"unsigned long long" }, - { "typedef":"JobID_t", "type":"unsigned long long" }, - { "typedef":"TxnID_t", "type":"unsigned long long" }, - { "typedef":"PackageId_t", "type":"unsigned int" }, - { "typedef":"BundleId_t", "type":"unsigned int" }, { "typedef":"AppId_t", "type":"unsigned int" }, - { "typedef":"AssetClassId_t", "type":"unsigned long long" }, - { "typedef":"PhysicalItemId_t", "type":"unsigned int" }, { "typedef":"DepotId_t", "type":"unsigned int" }, { "typedef":"RTime32", "type":"unsigned int" }, - { "typedef":"CellID_t", "type":"unsigned int" }, { "typedef":"SteamAPICall_t", "type":"unsigned long long" }, { "typedef":"AccountID_t", "type":"unsigned int" }, - { "typedef":"PartnerId_t", "type":"unsigned int" }, - { "typedef":"ManifestId_t", "type":"unsigned long long" }, - { "typedef":"SiteId_t", "type":"unsigned long long" }, { "typedef":"PartyBeaconID_t", "type":"unsigned long long" }, { "typedef":"HAuthTicket", "type":"unsigned int" }, - { "typedef":"PFNLegacyKeyRegistration", "type":"void (*)(const char *, const char *)" }, - { "typedef":"PFNLegacyKeyInstalled", "type":"bool (*)()" }, { "typedef":"PFNPreMinidumpCallback", "type":"void (*)(void *)" }, - { "typedef":"BREAKPAD_HANDLE", "type":"void *" }, { "typedef":"HSteamPipe", "type":"int" }, { "typedef":"HSteamUser", "type":"int" }, { "typedef":"FriendsGroupID_t", "type":"short" }, @@ -13471,6 +13557,7 @@ { "typedef":"InputActionSetHandle_t", "type":"unsigned long long" }, { "typedef":"InputDigitalActionHandle_t", "type":"unsigned long long" }, { "typedef":"InputAnalogActionHandle_t", "type":"unsigned long long" }, + { "typedef":"SteamInputActionEventCallbackPointer", "type":"void (*)(SteamInputActionEvent_t *)" }, { "typedef":"ControllerHandle_t", "type":"unsigned long long" }, { "typedef":"ControllerActionSetHandle_t", "type":"unsigned long long" }, { "typedef":"ControllerDigitalActionHandle_t", "type":"unsigned long long" }, diff --git a/CodeGen/steam/steam_api_flat.h b/CodeGen/steam/steam_api_flat.h index c71e61c6..c9eb0784 100644 --- a/CodeGen/steam/steam_api_flat.h +++ b/CodeGen/steam/steam_api_flat.h @@ -60,8 +60,8 @@ S_API ISteamUser *SteamAPI_SteamUser_v021(); S_API HSteamUser SteamAPI_ISteamUser_GetHSteamUser( ISteamUser* self ); S_API bool SteamAPI_ISteamUser_BLoggedOn( ISteamUser* self ); S_API uint64_steamid SteamAPI_ISteamUser_GetSteamID( ISteamUser* self ); -S_API int SteamAPI_ISteamUser_InitiateGameConnection( ISteamUser* self, void * pAuthBlob, int cbMaxAuthBlob, uint64_steamid steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure ); -S_API void SteamAPI_ISteamUser_TerminateGameConnection( ISteamUser* self, uint32 unIPServer, uint16 usPortServer ); +S_API int SteamAPI_ISteamUser_InitiateGameConnection_DEPRECATED( ISteamUser* self, void * pAuthBlob, int cbMaxAuthBlob, uint64_steamid steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure ); +S_API void SteamAPI_ISteamUser_TerminateGameConnection_DEPRECATED( ISteamUser* self, uint32 unIPServer, uint16 usPortServer ); S_API void SteamAPI_ISteamUser_TrackAppUsageEvent( ISteamUser* self, uint64_gameid gameID, int eAppUsageEvent, const char * pchExtraInfo ); S_API bool SteamAPI_ISteamUser_GetUserDataFolder( ISteamUser* self, char * pchBuffer, int cubBuffer ); S_API void SteamAPI_ISteamUser_StartVoiceRecording( ISteamUser* self ); @@ -204,6 +204,9 @@ S_API bool SteamAPI_ISteamUtils_IsSteamChinaLauncher( ISteamUtils* self ); S_API bool SteamAPI_ISteamUtils_InitFilterText( ISteamUtils* self, uint32 unFilterOptions ); S_API int SteamAPI_ISteamUtils_FilterText( ISteamUtils* self, ETextFilteringContext eContext, uint64_steamid sourceSteamID, const char * pchInputMessage, char * pchOutFilteredText, uint32 nByteSizeOutFilteredText ); S_API ESteamIPv6ConnectivityState SteamAPI_ISteamUtils_GetIPv6ConnectivityState( ISteamUtils* self, ESteamIPv6ConnectivityProtocol eProtocol ); +S_API bool SteamAPI_ISteamUtils_IsSteamRunningOnSteamDeck( ISteamUtils* self ); +S_API bool SteamAPI_ISteamUtils_ShowModalGamepadTextInput( ISteamUtils* self, EGamepadTextInputLineMode eLineInputMode ); +S_API void SteamAPI_ISteamUtils_SetGameLauncherMode( ISteamUtils* self, bool bLauncherMode ); // ISteamMatchmaking S_API ISteamMatchmaking *SteamAPI_SteamMatchmaking_v009(); @@ -318,7 +321,7 @@ S_API bool SteamAPI_ISteamParties_DestroyBeacon( ISteamParties* self, PartyBeaco S_API bool SteamAPI_ISteamParties_GetBeaconLocationData( ISteamParties* self, SteamPartyBeaconLocation_t BeaconLocation, ESteamPartyBeaconLocationData eData, char * pchDataStringOut, int cchDataStringOut ); // ISteamRemoteStorage -S_API ISteamRemoteStorage *SteamAPI_SteamRemoteStorage_v014(); +S_API ISteamRemoteStorage *SteamAPI_SteamRemoteStorage_v016(); S_API bool SteamAPI_ISteamRemoteStorage_FileWrite( ISteamRemoteStorage* self, const char * pchFile, const void * pvData, int32 cubData ); S_API int32 SteamAPI_ISteamRemoteStorage_FileRead( ISteamRemoteStorage* self, const char * pchFile, void * pvData, int32 cubDataToRead ); S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileWriteAsync( ISteamRemoteStorage* self, const char * pchFile, const void * pvData, uint32 cubData ); @@ -374,6 +377,10 @@ S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_SetUserPublishedFileAction( IS S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumeratePublishedFilesByUserAction( ISteamRemoteStorage* self, EWorkshopFileAction eAction, uint32 unStartIndex ); S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_EnumeratePublishedWorkshopFiles( ISteamRemoteStorage* self, EWorkshopEnumerationType eEnumerationType, uint32 unStartIndex, uint32 unCount, uint32 unDays, SteamParamStringArray_t * pTags, SteamParamStringArray_t * pUserTags ); S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation( ISteamRemoteStorage* self, UGCHandle_t hContent, const char * pchLocation, uint32 unPriority ); +S_API int32 SteamAPI_ISteamRemoteStorage_GetLocalFileChangeCount( ISteamRemoteStorage* self ); +S_API const char * SteamAPI_ISteamRemoteStorage_GetLocalFileChange( ISteamRemoteStorage* self, int iFile, ERemoteStorageLocalFileChange * pEChangeType, ERemoteStorageFilePathType * pEFilePathType ); +S_API bool SteamAPI_ISteamRemoteStorage_BeginFileWriteBatch( ISteamRemoteStorage* self ); +S_API bool SteamAPI_ISteamRemoteStorage_EndFileWriteBatch( ISteamRemoteStorage* self ); // ISteamUserStats S_API ISteamUserStats *SteamAPI_SteamUserStats_v012(); @@ -425,7 +432,6 @@ S_API bool SteamAPI_ISteamUserStats_GetAchievementProgressLimitsFloat( ISteamUse // ISteamApps S_API ISteamApps *SteamAPI_SteamApps_v008(); -S_API ISteamApps *SteamAPI_SteamGameServerApps_v008(); S_API bool SteamAPI_ISteamApps_BIsSubscribed( ISteamApps* self ); S_API bool SteamAPI_ISteamApps_BIsLowViolence( ISteamApps* self ); S_API bool SteamAPI_ISteamApps_BIsCybercafe( ISteamApps* self ); @@ -571,11 +577,16 @@ S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS( ISteamHTTP* self S_API bool SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut( ISteamHTTP* self, HTTPRequestHandle hRequest, bool * pbWasTimedOut ); // ISteamInput -S_API ISteamInput *SteamAPI_SteamInput_v002(); -S_API bool SteamAPI_ISteamInput_Init( ISteamInput* self ); +S_API ISteamInput *SteamAPI_SteamInput_v005(); +S_API bool SteamAPI_ISteamInput_Init( ISteamInput* self, bool bExplicitlyCallRunFrame ); S_API bool SteamAPI_ISteamInput_Shutdown( ISteamInput* self ); -S_API void SteamAPI_ISteamInput_RunFrame( ISteamInput* self ); +S_API bool SteamAPI_ISteamInput_SetInputActionManifestFilePath( ISteamInput* self, const char * pchInputActionManifestAbsolutePath ); +S_API void SteamAPI_ISteamInput_RunFrame( ISteamInput* self, bool bReservedValue ); +S_API bool SteamAPI_ISteamInput_BWaitForData( ISteamInput* self, bool bWaitForever, uint32 unTimeout ); +S_API bool SteamAPI_ISteamInput_BNewDataAvailable( ISteamInput* self ); S_API int SteamAPI_ISteamInput_GetConnectedControllers( ISteamInput* self, InputHandle_t * handlesOut ); +S_API void SteamAPI_ISteamInput_EnableDeviceCallbacks( ISteamInput* self ); +S_API void SteamAPI_ISteamInput_EnableActionEventCallbacks( ISteamInput* self, SteamInputActionEventCallbackPointer pCallback ); S_API InputActionSetHandle_t SteamAPI_ISteamInput_GetActionSetHandle( ISteamInput* self, const char * pszActionSetName ); S_API void SteamAPI_ISteamInput_ActivateActionSet( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle ); S_API InputActionSetHandle_t SteamAPI_ISteamInput_GetCurrentActionSet( ISteamInput* self, InputHandle_t inputHandle ); @@ -586,17 +597,23 @@ S_API int SteamAPI_ISteamInput_GetActiveActionSetLayers( ISteamInput* self, Inpu S_API InputDigitalActionHandle_t SteamAPI_ISteamInput_GetDigitalActionHandle( ISteamInput* self, const char * pszActionName ); S_API InputDigitalActionData_t SteamAPI_ISteamInput_GetDigitalActionData( ISteamInput* self, InputHandle_t inputHandle, InputDigitalActionHandle_t digitalActionHandle ); S_API int SteamAPI_ISteamInput_GetDigitalActionOrigins( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputDigitalActionHandle_t digitalActionHandle, EInputActionOrigin * originsOut ); +S_API const char * SteamAPI_ISteamInput_GetStringForDigitalActionName( ISteamInput* self, InputDigitalActionHandle_t eActionHandle ); S_API InputAnalogActionHandle_t SteamAPI_ISteamInput_GetAnalogActionHandle( ISteamInput* self, const char * pszActionName ); S_API InputAnalogActionData_t SteamAPI_ISteamInput_GetAnalogActionData( ISteamInput* self, InputHandle_t inputHandle, InputAnalogActionHandle_t analogActionHandle ); S_API int SteamAPI_ISteamInput_GetAnalogActionOrigins( ISteamInput* self, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputAnalogActionHandle_t analogActionHandle, EInputActionOrigin * originsOut ); -S_API const char * SteamAPI_ISteamInput_GetGlyphForActionOrigin( ISteamInput* self, EInputActionOrigin eOrigin ); +S_API const char * SteamAPI_ISteamInput_GetGlyphPNGForActionOrigin( ISteamInput* self, EInputActionOrigin eOrigin, ESteamInputGlyphSize eSize, uint32 unFlags ); +S_API const char * SteamAPI_ISteamInput_GetGlyphSVGForActionOrigin( ISteamInput* self, EInputActionOrigin eOrigin, uint32 unFlags ); +S_API const char * SteamAPI_ISteamInput_GetGlyphForActionOrigin_Legacy( ISteamInput* self, EInputActionOrigin eOrigin ); S_API const char * SteamAPI_ISteamInput_GetStringForActionOrigin( ISteamInput* self, EInputActionOrigin eOrigin ); +S_API const char * SteamAPI_ISteamInput_GetStringForAnalogActionName( ISteamInput* self, InputAnalogActionHandle_t eActionHandle ); S_API void SteamAPI_ISteamInput_StopAnalogActionMomentum( ISteamInput* self, InputHandle_t inputHandle, InputAnalogActionHandle_t eAction ); S_API InputMotionData_t SteamAPI_ISteamInput_GetMotionData( ISteamInput* self, InputHandle_t inputHandle ); S_API void SteamAPI_ISteamInput_TriggerVibration( ISteamInput* self, InputHandle_t inputHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed ); +S_API void SteamAPI_ISteamInput_TriggerVibrationExtended( ISteamInput* self, InputHandle_t inputHandle, unsigned short usLeftSpeed, unsigned short usRightSpeed, unsigned short usLeftTriggerSpeed, unsigned short usRightTriggerSpeed ); +S_API void SteamAPI_ISteamInput_TriggerSimpleHapticEvent( ISteamInput* self, InputHandle_t inputHandle, EControllerHapticLocation eHapticLocation, uint8 nIntensity, char nGainDB, uint8 nOtherIntensity, char nOtherGainDB ); S_API void SteamAPI_ISteamInput_SetLEDColor( ISteamInput* self, InputHandle_t inputHandle, uint8 nColorR, uint8 nColorG, uint8 nColorB, unsigned int nFlags ); -S_API void SteamAPI_ISteamInput_TriggerHapticPulse( ISteamInput* self, InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ); -S_API void SteamAPI_ISteamInput_TriggerRepeatedHapticPulse( ISteamInput* self, InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ); +S_API void SteamAPI_ISteamInput_Legacy_TriggerHapticPulse( ISteamInput* self, InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec ); +S_API void SteamAPI_ISteamInput_Legacy_TriggerRepeatedHapticPulse( ISteamInput* self, InputHandle_t inputHandle, ESteamControllerPad eTargetPad, unsigned short usDurationMicroSec, unsigned short usOffMicroSec, unsigned short unRepeat, unsigned int nFlags ); S_API bool SteamAPI_ISteamInput_ShowBindingPanel( ISteamInput* self, InputHandle_t inputHandle ); S_API ESteamInputType SteamAPI_ISteamInput_GetInputTypeForHandle( ISteamInput* self, InputHandle_t inputHandle ); S_API InputHandle_t SteamAPI_ISteamInput_GetControllerForGamepadIndex( ISteamInput* self, int nIndex ); @@ -607,6 +624,7 @@ S_API EInputActionOrigin SteamAPI_ISteamInput_GetActionOriginFromXboxOrigin( ISt S_API EInputActionOrigin SteamAPI_ISteamInput_TranslateActionOrigin( ISteamInput* self, ESteamInputType eDestinationInputType, EInputActionOrigin eSourceOrigin ); S_API bool SteamAPI_ISteamInput_GetDeviceBindingRevision( ISteamInput* self, InputHandle_t inputHandle, int * pMajor, int * pMinor ); S_API uint32 SteamAPI_ISteamInput_GetRemotePlaySessionID( ISteamInput* self, InputHandle_t inputHandle ); +S_API uint16 SteamAPI_ISteamInput_GetSessionInputConfigurationSettings( ISteamInput* self ); // ISteamController S_API ISteamController *SteamAPI_SteamController_v008(); @@ -730,6 +748,8 @@ S_API SteamAPICall_t SteamAPI_ISteamUGC_AddAppDependency( ISteamUGC* self, Publi S_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveAppDependency( ISteamUGC* self, PublishedFileId_t nPublishedFileID, AppId_t nAppID ); S_API SteamAPICall_t SteamAPI_ISteamUGC_GetAppDependencies( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); S_API SteamAPICall_t SteamAPI_ISteamUGC_DeleteItem( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); +S_API bool SteamAPI_ISteamUGC_ShowWorkshopEULA( ISteamUGC* self ); +S_API SteamAPICall_t SteamAPI_ISteamUGC_GetWorkshopEULAStatus( ISteamUGC* self ); // ISteamAppList S_API ISteamAppList *SteamAPI_SteamAppList_v001(); @@ -858,8 +878,8 @@ S_API bool SteamAPI_ISteamNetworkingMessages_CloseChannelWithUser( ISteamNetwork S_API ESteamNetworkingConnectionState SteamAPI_ISteamNetworkingMessages_GetSessionConnectionInfo( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote, SteamNetConnectionInfo_t * pConnectionInfo, SteamNetworkingQuickConnectionStatus * pQuickStatus ); // ISteamNetworkingSockets -S_API ISteamNetworkingSockets *SteamAPI_SteamNetworkingSockets_SteamAPI_v009(); -S_API ISteamNetworkingSockets *SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v009(); +S_API ISteamNetworkingSockets *SteamAPI_SteamNetworkingSockets_SteamAPI_v011(); +S_API ISteamNetworkingSockets *SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v011(); S_API HSteamListenSocket SteamAPI_ISteamNetworkingSockets_CreateListenSocketIP( ISteamNetworkingSockets* self, const SteamNetworkingIPAddr & localAddress, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); S_API HSteamNetConnection SteamAPI_ISteamNetworkingSockets_ConnectByIPAddress( ISteamNetworkingSockets* self, const SteamNetworkingIPAddr & address, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); S_API HSteamListenSocket SteamAPI_ISteamNetworkingSockets_CreateListenSocketP2P( ISteamNetworkingSockets* self, int nLocalVirtualPort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); @@ -899,10 +919,11 @@ S_API HSteamNetConnection SteamAPI_ISteamNetworkingSockets_ConnectP2PCustomSigna S_API bool SteamAPI_ISteamNetworkingSockets_ReceivedP2PCustomSignal( ISteamNetworkingSockets* self, const void * pMsg, int cbMsg, ISteamNetworkingSignalingRecvContext * pContext ); S_API bool SteamAPI_ISteamNetworkingSockets_GetCertificateRequest( ISteamNetworkingSockets* self, int * pcbBlob, void * pBlob, SteamNetworkingErrMsg & errMsg ); S_API bool SteamAPI_ISteamNetworkingSockets_SetCertificate( ISteamNetworkingSockets* self, const void * pCertificate, int cbCertificate, SteamNetworkingErrMsg & errMsg ); +S_API void SteamAPI_ISteamNetworkingSockets_ResetIdentity( ISteamNetworkingSockets* self, const SteamNetworkingIdentity * pIdentity ); S_API void SteamAPI_ISteamNetworkingSockets_RunCallbacks( ISteamNetworkingSockets* self ); // ISteamNetworkingUtils -S_API ISteamNetworkingUtils *SteamAPI_SteamNetworkingUtils_SteamAPI_v003(); +S_API ISteamNetworkingUtils *SteamAPI_SteamNetworkingUtils_SteamAPI_v004(); S_API SteamNetworkingMessage_t * SteamAPI_ISteamNetworkingUtils_AllocateMessage( ISteamNetworkingUtils* self, int cbAllocateBuffer ); S_API void SteamAPI_ISteamNetworkingUtils_InitRelayNetworkAccess( ISteamNetworkingUtils* self ); S_API ESteamNetworkingAvailability SteamAPI_ISteamNetworkingUtils_GetRelayNetworkStatus( ISteamNetworkingUtils* self, SteamRelayNetworkStatus_t * pDetails ); @@ -933,15 +954,15 @@ S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_MessagesSessionFaile S_API bool SteamAPI_ISteamNetworkingUtils_SetConfigValue( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj, ESteamNetworkingConfigDataType eDataType, const void * pArg ); S_API bool SteamAPI_ISteamNetworkingUtils_SetConfigValueStruct( ISteamNetworkingUtils* self, const SteamNetworkingConfigValue_t & opt, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj ); S_API ESteamNetworkingGetConfigValueResult SteamAPI_ISteamNetworkingUtils_GetConfigValue( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj, ESteamNetworkingConfigDataType * pOutDataType, void * pResult, size_t * cbResult ); -S_API bool SteamAPI_ISteamNetworkingUtils_GetConfigValueInfo( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, const char ** pOutName, ESteamNetworkingConfigDataType * pOutDataType, ESteamNetworkingConfigScope * pOutScope, ESteamNetworkingConfigValue * pOutNextValue ); -S_API ESteamNetworkingConfigValue SteamAPI_ISteamNetworkingUtils_GetFirstConfigValue( ISteamNetworkingUtils* self ); +S_API const char * SteamAPI_ISteamNetworkingUtils_GetConfigValueInfo( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigDataType * pOutDataType, ESteamNetworkingConfigScope * pOutScope ); +S_API ESteamNetworkingConfigValue SteamAPI_ISteamNetworkingUtils_IterateGenericEditableConfigValues( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eCurrent, bool bEnumerateDevVars ); S_API void SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ToString( ISteamNetworkingUtils* self, const SteamNetworkingIPAddr & addr, char * buf, uint32 cbBuf, bool bWithPort ); S_API bool SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ParseString( ISteamNetworkingUtils* self, SteamNetworkingIPAddr * pAddr, const char * pszStr ); S_API void SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ToString( ISteamNetworkingUtils* self, const SteamNetworkingIdentity & identity, char * buf, uint32 cbBuf ); S_API bool SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ParseString( ISteamNetworkingUtils* self, SteamNetworkingIdentity * pIdentity, const char * pszStr ); // ISteamGameServer -S_API ISteamGameServer *SteamAPI_SteamGameServer_v013(); +S_API ISteamGameServer *SteamAPI_SteamGameServer_v014(); S_API void SteamAPI_ISteamGameServer_SetProduct( ISteamGameServer* self, const char * pszProduct ); S_API void SteamAPI_ISteamGameServer_SetGameDescription( ISteamGameServer* self, const char * pszGameDescription ); S_API void SteamAPI_ISteamGameServer_SetModDir( ISteamGameServer* self, const char * pszModDir ); @@ -965,10 +986,7 @@ S_API void SteamAPI_ISteamGameServer_SetKeyValue( ISteamGameServer* self, const S_API void SteamAPI_ISteamGameServer_SetGameTags( ISteamGameServer* self, const char * pchGameTags ); S_API void SteamAPI_ISteamGameServer_SetGameData( ISteamGameServer* self, const char * pchGameData ); S_API void SteamAPI_ISteamGameServer_SetRegion( ISteamGameServer* self, const char * pszRegion ); -S_API bool SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate( ISteamGameServer* self, uint32 unIPClient, const void * pvAuthBlob, uint32 cubAuthBlobSize, CSteamID * pSteamIDUser ); -S_API uint64_steamid SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection( ISteamGameServer* self ); -S_API void SteamAPI_ISteamGameServer_SendUserDisconnect( ISteamGameServer* self, uint64_steamid steamIDUser ); -S_API bool SteamAPI_ISteamGameServer_BUpdateUserData( ISteamGameServer* self, uint64_steamid steamIDUser, const char * pchPlayerName, uint32 uScore ); +S_API void SteamAPI_ISteamGameServer_SetAdvertiseServerActive( ISteamGameServer* self, bool bActive ); S_API HAuthTicket SteamAPI_ISteamGameServer_GetAuthSessionTicket( ISteamGameServer* self, void * pTicket, int cbMaxTicket, uint32 * pcbTicket ); S_API EBeginAuthSessionResult SteamAPI_ISteamGameServer_BeginAuthSession( ISteamGameServer* self, const void * pAuthTicket, int cbAuthTicket, uint64_steamid steamID ); S_API void SteamAPI_ISteamGameServer_EndAuthSession( ISteamGameServer* self, uint64_steamid steamID ); @@ -980,11 +998,12 @@ S_API SteamAPICall_t SteamAPI_ISteamGameServer_GetServerReputation( ISteamGameSe S_API SteamIPAddress_t SteamAPI_ISteamGameServer_GetPublicIP( ISteamGameServer* self ); S_API bool SteamAPI_ISteamGameServer_HandleIncomingPacket( ISteamGameServer* self, const void * pData, int cbData, uint32 srcIP, uint16 srcPort ); S_API int SteamAPI_ISteamGameServer_GetNextOutgoingPacket( ISteamGameServer* self, void * pOut, int cbMaxOut, uint32 * pNetAdr, uint16 * pPort ); -S_API void SteamAPI_ISteamGameServer_EnableHeartbeats( ISteamGameServer* self, bool bActive ); -S_API void SteamAPI_ISteamGameServer_SetHeartbeatInterval( ISteamGameServer* self, int iHeartbeatInterval ); -S_API void SteamAPI_ISteamGameServer_ForceHeartbeat( ISteamGameServer* self ); S_API SteamAPICall_t SteamAPI_ISteamGameServer_AssociateWithClan( ISteamGameServer* self, uint64_steamid steamIDClan ); S_API SteamAPICall_t SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility( ISteamGameServer* self, uint64_steamid steamIDNewPlayer ); +S_API bool SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate_DEPRECATED( ISteamGameServer* self, uint32 unIPClient, const void * pvAuthBlob, uint32 cubAuthBlobSize, CSteamID * pSteamIDUser ); +S_API uint64_steamid SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection( ISteamGameServer* self ); +S_API void SteamAPI_ISteamGameServer_SendUserDisconnect_DEPRECATED( ISteamGameServer* self, uint64_steamid steamIDUser ); +S_API bool SteamAPI_ISteamGameServer_BUpdateUserData( ISteamGameServer* self, uint64_steamid steamIDUser, const char * pchPlayerName, uint32 uScore ); // ISteamGameServerStats S_API ISteamGameServerStats *SteamAPI_SteamGameServerStats_v001(); diff --git a/CodeGen/steam/steam_api_internal.h b/CodeGen/steam/steam_api_internal.h index 16657ac6..7bd2d7af 100644 --- a/CodeGen/steam/steam_api_internal.h +++ b/CodeGen/steam/steam_api_internal.h @@ -310,11 +310,36 @@ enum { k_iClientSTARCallbacks = 5600 }; enum { k_iSteamRemotePlayCallbacks = 5700 }; enum { k_iClientCompatCallbacks = 5800 }; enum { k_iSteamChatCallbacks = 5900 }; +enum { k_iClientNetworkingUtilsCallbacks = 6000 }; +enum { k_iClientSystemManagerCallbacks = 6100 }; +enum { k_iClientStorageDeviceManagerCallbacks = 6200 }; #ifdef _MSVC_VER #pragma warning( pop ) #endif +// Macros used to annotate various Steamworks interfaces to generate the +// flat API +#ifdef API_GEN +# define STEAM_CLANG_ATTR(ATTR) __attribute__((annotate( ATTR ))) +#else +# define STEAM_CLANG_ATTR(ATTR) +#endif + +#define STEAM_OUT_STRUCT() STEAM_CLANG_ATTR( "out_struct: ;" ) +#define STEAM_OUT_STRING() STEAM_CLANG_ATTR( "out_string: ;" ) +#define STEAM_OUT_ARRAY_CALL(COUNTER,FUNCTION,PARAMS) STEAM_CLANG_ATTR( "out_array_call:" #COUNTER "," #FUNCTION "," #PARAMS ";" ) +#define STEAM_OUT_ARRAY_COUNT(COUNTER, DESC) STEAM_CLANG_ATTR( "out_array_count:" #COUNTER ";desc:" #DESC ) +#define STEAM_ARRAY_COUNT(COUNTER) STEAM_CLANG_ATTR( "array_count:" #COUNTER ";" ) +#define STEAM_ARRAY_COUNT_D(COUNTER, DESC) STEAM_CLANG_ATTR( "array_count:" #COUNTER ";desc:" #DESC ) +#define STEAM_BUFFER_COUNT(COUNTER) STEAM_CLANG_ATTR( "buffer_count:" #COUNTER ";" ) +#define STEAM_OUT_BUFFER_COUNT(COUNTER) STEAM_CLANG_ATTR( "out_buffer_count:" #COUNTER ";" ) +#define STEAM_OUT_STRING_COUNT(COUNTER) STEAM_CLANG_ATTR( "out_string_count:" #COUNTER ";" ) +#define STEAM_DESC(DESC) STEAM_CLANG_ATTR("desc:" #DESC ";") +#define STEAM_CALL_RESULT(RESULT_TYPE) STEAM_CLANG_ATTR("callresult:" #RESULT_TYPE ";") +#define STEAM_CALL_BACK(RESULT_TYPE) STEAM_CLANG_ATTR("callback:" #RESULT_TYPE ";") +#define STEAM_FLAT_NAME(NAME) STEAM_CLANG_ATTR("flat_name:" #NAME ";") + // CSteamAPIContext encapsulates the Steamworks API global accessors into // a single object. // @@ -391,7 +416,6 @@ class CSteamGameServerAPIContext ISteamHTTP *SteamHTTP() const { return m_pSteamHTTP; } ISteamInventory *SteamInventory() const { return m_pSteamInventory; } ISteamUGC *SteamUGC() const { return m_pSteamUGC; } - ISteamApps *SteamApps() const { return m_pSteamApps; } private: ISteamClient *m_pSteamClient; @@ -402,7 +426,6 @@ class CSteamGameServerAPIContext ISteamHTTP *m_pSteamHTTP; ISteamInventory *m_pSteamInventory; ISteamUGC *m_pSteamUGC; - ISteamApps *m_pSteamApps; }; diff --git a/CodeGen/steam/steam_gameserver.h b/CodeGen/steam/steam_gameserver.h index 71f681e1..28a436f5 100644 --- a/CodeGen/steam/steam_gameserver.h +++ b/CodeGen/steam/steam_gameserver.h @@ -23,10 +23,13 @@ enum EServerMode }; /// Pass to SteamGameServer_Init to indicate that the same UDP port will be used for game traffic -/// UDP queries. In this case, Steam will not open up a socket to handle server browser queries, -/// and you must use ISteamGameServer::HandleIncomingPacket and ISteamGameServer::GetNextOutgoingPacket -/// to handle packets related to server discovery on your socket. -#define MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE ((uint16)-1) +/// UDP queries for server browser pings and LAN discovery. In this case, Steam will not open up a +/// socket to handle server browser queries, and you must use ISteamGameServer::HandleIncomingPacket +/// and ISteamGameServer::GetNextOutgoingPacket to handle packets related to server discovery on your socket. +const uint16 STEAMGAMESERVER_QUERY_PORT_SHARED = 0xffff; + +// DEPRECATED: This old name was really confusing. +const uint16 MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE = STEAMGAMESERVER_QUERY_PORT_SHARED; // Initialize SteamGameServer client and interface objects, and set server properties which may not be changed. // @@ -39,9 +42,10 @@ enum EServerMode // - usGamePort is the port that clients will connect to for gameplay. You will usually open up your // own socket bound to this port. // - usQueryPort is the port that will manage server browser related duties and info -// pings from clients. If you pass MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE for usQueryPort, then it +// pings from clients. If you pass STEAMGAMESERVER_QUERY_PORT_SHARED for usQueryPort, then it // will use "GameSocketShare" mode, which means that the game is responsible for sending and receiving -// UDP packets for the master server updater. See references to GameSocketShare in isteamgameserver.h. +// UDP packets for the master server updater. (See ISteamGameServer::HandleIncomingPacket and +// ISteamGameServer::GetNextOutgoingPacket.) // - The version string should be in the form x.x.x.x, and is used by the master server to detect when the // server is out of date. (Only servers with the latest version will be listed.) inline bool SteamGameServer_Init( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); @@ -89,9 +93,8 @@ inline bool CSteamGameServerAPIContext::Init() m_pSteamHTTP = ::SteamGameServerHTTP(); m_pSteamInventory = ::SteamGameServerInventory(); m_pSteamUGC = ::SteamGameServerUGC(); - m_pSteamApps = ::SteamGameServerApps(); if ( !m_pSteamGameServer || !m_pSteamGameServerUtils || !m_pSteamGameServerNetworking || !m_pSteamGameServerStats - || !m_pSteamHTTP || !m_pSteamInventory || !m_pSteamUGC || !m_pSteamApps ) + || !m_pSteamHTTP || !m_pSteamInventory || !m_pSteamUGC ) return false; return true; diff --git a/CodeGen/steam/steamclientpublic.h b/CodeGen/steam/steamclientpublic.h index 695bb9ce..c0e1f90d 100644 --- a/CodeGen/steam/steamclientpublic.h +++ b/CodeGen/steam/steamclientpublic.h @@ -1,23 +1,11 @@ //========= Copyright � 1996-2008, Valve LLC, All rights reserved. ============ // -// Purpose: +// Declare common types used by the Steamworks SDK. // //============================================================================= #ifndef STEAMCLIENTPUBLIC_H #define STEAMCLIENTPUBLIC_H -#ifdef _WIN32 -#pragma once -#endif -//lint -save -e1931 -e1927 -e1924 -e613 -e726 - -// This header file defines the interface between the calling application and the code that -// knows how to communicate with the connection manager (CM) from the Steam service - -// This header file is intended to be portable; ideally this 1 header file plus a lib or dll -// is all you need to integrate the client library into some other tree. So please avoid -// including or requiring other header files if possible. This header should only describe the -// interface layer, no need to include anything about the implementation. #include "steamtypes.h" #include "steamuniverse.h" @@ -145,6 +133,9 @@ enum EResult k_EResultNoLauncherSpecified = 117, // No launcher was specified, but a launcher was needed to choose correct realm for operation. k_EResultMustAgreeToSSA = 118, // User must agree to china SSA or global SSA before login k_EResultLauncherMigrated = 119, // The specified launcher type is no longer supported; the user should be directed elsewhere + k_EResultSteamRealmMismatch = 120, // The user's realm does not match the realm of the requested resource + k_EResultInvalidSignature = 121, // signature check did not match + k_EResultParseFailure = 122, // Failed to parse input }; // Error codes for use with the voice functions @@ -244,100 +235,6 @@ enum EAccountType -//----------------------------------------------------------------------------- -// Purpose: -//----------------------------------------------------------------------------- -enum EAppReleaseState -{ - k_EAppReleaseState_Unknown = 0, // unknown, required appinfo or license info is missing - k_EAppReleaseState_Unavailable = 1, // even owners can't see game in library yet, no AppInfo released - k_EAppReleaseState_Prerelease = 2, // app can be purchased and is visible in library, nothing else. Only Common AppInfo section released - k_EAppReleaseState_PreloadOnly = 3, // owners can preload app, but not play it. All AppInfo sections fully released - k_EAppReleaseState_Released = 4, // owners can download and play app. -}; - - -//----------------------------------------------------------------------------- -// Purpose: -//----------------------------------------------------------------------------- -enum EAppOwnershipFlags -{ - k_EAppOwnershipFlags_None = 0x0000, // unknown - k_EAppOwnershipFlags_OwnsLicense = 0x0001, // owns license for this game - k_EAppOwnershipFlags_FreeLicense = 0x0002, // not paid for game - k_EAppOwnershipFlags_RegionRestricted = 0x0004, // owns app, but not allowed to play in current region - k_EAppOwnershipFlags_LowViolence = 0x0008, // only low violence version - k_EAppOwnershipFlags_InvalidPlatform = 0x0010, // app not supported on current platform - k_EAppOwnershipFlags_SharedLicense = 0x0020, // license was granted by authorized local device - k_EAppOwnershipFlags_FreeWeekend = 0x0040, // owned by a free weekend licenses - k_EAppOwnershipFlags_RetailLicense = 0x0080, // has a retail license for game, (CD-Key etc) - k_EAppOwnershipFlags_LicenseLocked = 0x0100, // shared license is locked (in use) by other user - k_EAppOwnershipFlags_LicensePending = 0x0200, // owns app, but transaction is still pending. Can't install or play - k_EAppOwnershipFlags_LicenseExpired = 0x0400, // doesn't own app anymore since license expired - k_EAppOwnershipFlags_LicensePermanent = 0x0800, // permanent license, not borrowed, or guest or freeweekend etc - k_EAppOwnershipFlags_LicenseRecurring = 0x1000, // Recurring license, user is charged periodically - k_EAppOwnershipFlags_LicenseCanceled = 0x2000, // Mark as canceled, but might be still active if recurring - k_EAppOwnershipFlags_AutoGrant = 0x4000, // Ownership is based on any kind of autogrant license - k_EAppOwnershipFlags_PendingGift = 0x8000, // user has pending gift to redeem - k_EAppOwnershipFlags_RentalNotActivated = 0x10000, // Rental hasn't been activated yet - k_EAppOwnershipFlags_Rental = 0x20000, // Is a rental - k_EAppOwnershipFlags_SiteLicense = 0x40000, // Is from a site license - k_EAppOwnershipFlags_LegacyFreeSub = 0x80000, // App only owned through Steam's legacy free sub - k_EAppOwnershipFlags_InvalidOSType = 0x100000, // app not supported on current OS version, used to indicate a game is 32-bit on post-catalina. Currently it's own flag so the library will display a notice. - k_EAppOwnershipFlags_TimedTrial = 0x200000, // App is playable only for limited time -}; - - -//----------------------------------------------------------------------------- -// Purpose: designed as flags to allow filters masks -// NOTE: If you add to this, please update PackageAppType (SteamConfig) as well as populatePackageAppType -//----------------------------------------------------------------------------- -enum EAppType -{ - k_EAppType_Invalid = 0x000, // unknown / invalid - k_EAppType_Game = 0x001, // playable game, default type - k_EAppType_Application = 0x002, // software application - k_EAppType_Tool = 0x004, // SDKs, editors & dedicated servers - k_EAppType_Demo = 0x008, // game demo - k_EAppType_Media_DEPRECATED = 0x010, // legacy - was used for game trailers, which are now just videos on the web - k_EAppType_DLC = 0x020, // down loadable content - k_EAppType_Guide = 0x040, // game guide, PDF etc - k_EAppType_Driver = 0x080, // hardware driver updater (ATI, Razor etc) - k_EAppType_Config = 0x100, // hidden app used to config Steam features (backpack, sales, etc) - k_EAppType_Hardware = 0x200, // a hardware device (Steam Machine, Steam Controller, Steam Link, etc.) - k_EAppType_Franchise = 0x400, // A hub for collections of multiple apps, eg films, series, games - k_EAppType_Video = 0x800, // A video component of either a Film or TVSeries (may be the feature, an episode, preview, making-of, etc) - k_EAppType_Plugin = 0x1000, // Plug-in types for other Apps - k_EAppType_MusicAlbum = 0x2000, // "Video game soundtrack album" - k_EAppType_Series = 0x4000, // Container app for video series - k_EAppType_Comic_UNUSED = 0x8000, // Comic Book - k_EAppType_Beta = 0x10000, // this is a beta version of a game - - k_EAppType_Shortcut = 0x40000000, // just a shortcut, client side only - k_EAppType_DepotOnly_DEPRECATED = 0x80000000, // there shouldn't be any appinfo for depots -}; - - - -//----------------------------------------------------------------------------- -// types of user game stats fields -// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN DATABASE -//----------------------------------------------------------------------------- -enum ESteamUserStatType -{ - k_ESteamUserStatTypeINVALID = 0, - k_ESteamUserStatTypeINT = 1, - k_ESteamUserStatTypeFLOAT = 2, - // Read as FLOAT, set with count / session length - k_ESteamUserStatTypeAVGRATE = 3, - k_ESteamUserStatTypeACHIEVEMENTS = 4, - k_ESteamUserStatTypeGROUPACHIEVEMENTS = 5, - - // max, for sanity checks - k_ESteamUserStatTypeMAX -}; - - //----------------------------------------------------------------------------- // Purpose: Chat Entry Types (previously was only friend-to-friend message types) //----------------------------------------------------------------------------- @@ -385,9 +282,6 @@ enum EChatRoomEnterResponse }; -typedef void (*PFNLegacyKeyRegistration)( const char *pchCDKey, const char *pchInstallPath ); -typedef bool (*PFNLegacyKeyInstalled)(); - const unsigned int k_unSteamAccountIDMask = 0xFFFFFFFF; const unsigned int k_unSteamAccountInstanceMask = 0x000FFFFF; const unsigned int k_unSteamUserDefaultInstance = 1; // fixed instance for all individual users @@ -406,26 +300,6 @@ enum EChatSteamIDInstanceFlags }; -//----------------------------------------------------------------------------- -// Purpose: Marketing message flags that change how a client should handle them -//----------------------------------------------------------------------------- -enum EMarketingMessageFlags -{ - k_EMarketingMessageFlagsNone = 0, - k_EMarketingMessageFlagsHighPriority = 1 << 0, - k_EMarketingMessageFlagsPlatformWindows = 1 << 1, - k_EMarketingMessageFlagsPlatformMac = 1 << 2, - k_EMarketingMessageFlagsPlatformLinux = 1 << 3, - - //aggregate flags - k_EMarketingMessageFlagsPlatformRestrictions = - k_EMarketingMessageFlagsPlatformWindows | - k_EMarketingMessageFlagsPlatformMac | - k_EMarketingMessageFlagsPlatformLinux, -}; - - - //----------------------------------------------------------------------------- // Purpose: Possible positions to tell the overlay to show notifications in //----------------------------------------------------------------------------- @@ -470,151 +344,6 @@ enum EBroadcastUploadResult }; -//----------------------------------------------------------------------------- -// Purpose: codes for well defined launch options -//----------------------------------------------------------------------------- -enum ELaunchOptionType -{ - k_ELaunchOptionType_None = 0, // unknown what launch option does - k_ELaunchOptionType_Default = 1, // runs the game, app, whatever in default mode - k_ELaunchOptionType_SafeMode = 2, // runs the game in safe mode - k_ELaunchOptionType_Multiplayer = 3, // runs the game in multiplayer mode - k_ELaunchOptionType_Config = 4, // runs config tool for this game - k_ELaunchOptionType_OpenVR = 5, // runs game in VR mode using OpenVR - k_ELaunchOptionType_Server = 6, // runs dedicated server for this game - k_ELaunchOptionType_Editor = 7, // runs game editor - k_ELaunchOptionType_Manual = 8, // shows game manual - k_ELaunchOptionType_Benchmark = 9, // runs game benchmark - k_ELaunchOptionType_Option1 = 10, // generic run option, uses description field for game name - k_ELaunchOptionType_Option2 = 11, // generic run option, uses description field for game name - k_ELaunchOptionType_Option3 = 12, // generic run option, uses description field for game name - k_ELaunchOptionType_OculusVR = 13, // runs game in VR mode using the Oculus SDK - k_ELaunchOptionType_OpenVROverlay = 14, // runs an OpenVR dashboard overlay - k_ELaunchOptionType_OSVR = 15, // runs game in VR mode using the OSVR SDK - - - k_ELaunchOptionType_Dialog = 1000, // show launch options dialog -}; - - -//----------------------------------------------------------------------------- -// Purpose: true if this launch option is any of the vr launching types -//----------------------------------------------------------------------------- -static inline bool BIsVRLaunchOptionType( const ELaunchOptionType eType ) -{ - return eType == k_ELaunchOptionType_OpenVR - || eType == k_ELaunchOptionType_OpenVROverlay - || eType == k_ELaunchOptionType_OculusVR - || eType == k_ELaunchOptionType_OSVR; -} - - -//----------------------------------------------------------------------------- -// Purpose: true if this launch option is any of the vr launching types -//----------------------------------------------------------------------------- -static inline bool BIsLaunchOptionTypeExemptFromGameTheater( const ELaunchOptionType eType ) -{ - return eType == k_ELaunchOptionType_Config - || eType == k_ELaunchOptionType_Server - || eType == k_ELaunchOptionType_Editor - || eType == k_ELaunchOptionType_Manual; -} - - -//----------------------------------------------------------------------------- -// Purpose: code points for VR HMD vendors and models -// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN A DATABASE -//----------------------------------------------------------------------------- -enum EVRHMDType -{ - k_eEVRHMDType_None = -1, // unknown vendor and model - - k_eEVRHMDType_Unknown = 0, // unknown vendor and model - - k_eEVRHMDType_HTC_Dev = 1, // original HTC dev kits - k_eEVRHMDType_HTC_VivePre = 2, // htc vive pre - k_eEVRHMDType_HTC_Vive = 3, // htc vive consumer release - k_eEVRHMDType_HTC_VivePro = 4, // htc vive pro release - k_eEVRHMDType_HTC_ViveCosmos = 5, // HTC Vive Cosmos - - k_eEVRHMDType_HTC_Unknown = 20, // unknown htc hmd - - k_eEVRHMDType_Oculus_DK1 = 21, // Oculus DK1 - k_eEVRHMDType_Oculus_DK2 = 22, // Oculus DK2 - k_eEVRHMDType_Oculus_Rift = 23, // Oculus Rift - k_eEVRHMDType_Oculus_RiftS = 24, // Oculus Rift S - k_eEVRHMDType_Oculus_Quest = 25, // Oculus Quest - - k_eEVRHMDType_Oculus_Unknown = 40, // // Oculus unknown HMD - - k_eEVRHMDType_Acer_Unknown = 50, // Acer unknown HMD - k_eEVRHMDType_Acer_WindowsMR = 51, // Acer QHMD Windows MR headset - - k_eEVRHMDType_Dell_Unknown = 60, // Dell unknown HMD - k_eEVRHMDType_Dell_Visor = 61, // Dell Visor Windows MR headset - - k_eEVRHMDType_Lenovo_Unknown = 70, // Lenovo unknown HMD - k_eEVRHMDType_Lenovo_Explorer = 71, // Lenovo Explorer Windows MR headset - - k_eEVRHMDType_HP_Unknown = 80, // HP unknown HMD - k_eEVRHMDType_HP_WindowsMR = 81, // HP Windows MR headset - k_eEVRHMDType_HP_Reverb = 82, // HP Reverb Windows MR headset - k_eEVRHMDType_HP_ReverbG2 = 1463, // HP Reverb G2 Windows MR headset - - k_eEVRHMDType_Samsung_Unknown = 90, // Samsung unknown HMD - k_eEVRHMDType_Samsung_Odyssey = 91, // Samsung Odyssey Windows MR headset - - k_eEVRHMDType_Unannounced_Unknown = 100, // Unannounced unknown HMD - k_eEVRHMDType_Unannounced_WindowsMR = 101, // Unannounced Windows MR headset - - k_eEVRHMDType_vridge = 110, // VRIDGE tool - - k_eEVRHMDType_Huawei_Unknown = 120, // Huawei unknown HMD - k_eEVRHMDType_Huawei_VR2 = 121, // Huawei VR2 3DOF headset - k_eEVRHMDType_Huawei_EndOfRange = 129, // end of Huawei HMD range - - k_eEVRHmdType_Valve_Unknown = 130, // Valve Unknown HMD - k_eEVRHmdType_Valve_Index = 131, // Valve Index HMD - -}; - - -//----------------------------------------------------------------------------- -// Purpose: true if this is from an Oculus HMD -//----------------------------------------------------------------------------- -static inline bool BIsOculusHMD( EVRHMDType eType ) -{ - return eType == k_eEVRHMDType_Oculus_DK1 || eType == k_eEVRHMDType_Oculus_DK2 || eType == k_eEVRHMDType_Oculus_Rift || eType == k_eEVRHMDType_Oculus_RiftS || eType == k_eEVRHMDType_Oculus_Quest || eType == k_eEVRHMDType_Oculus_Unknown; -} - - -//----------------------------------------------------------------------------- -// Purpose: true if this is from a Windows MR HMD -//----------------------------------------------------------------------------- -static inline bool BIsWindowsMRHeadset( EVRHMDType eType ) -{ - return eType >= k_eEVRHMDType_Acer_WindowsMR && eType <= k_eEVRHMDType_Unannounced_WindowsMR; -} - - -//----------------------------------------------------------------------------- -// Purpose: true if this is from a Hauwei HMD -//----------------------------------------------------------------------------- -static inline bool BIsHuaweiHeadset( EVRHMDType eType ) -{ - return eType >= k_eEVRHMDType_Huawei_Unknown && eType <= k_eEVRHMDType_Huawei_EndOfRange; -} - - -//----------------------------------------------------------------------------- -// Purpose: true if this is from an Vive HMD -//----------------------------------------------------------------------------- -static inline bool BIsViveHMD( EVRHMDType eType ) -{ - return eType == k_eEVRHMDType_HTC_Dev || eType == k_eEVRHMDType_HTC_VivePre || eType == k_eEVRHMDType_HTC_Vive || eType == k_eEVRHMDType_HTC_Unknown || eType == k_eEVRHMDType_HTC_VivePro; -} - - //----------------------------------------------------------------------------- // Purpose: Reasons a user may not use the Community Market. // Used in MarketEligibilityResponse_t. @@ -1225,72 +954,6 @@ class CGameID const char *Render() const; // render this Game ID to string static const char *Render( uint64 ulGameID ); // static method to render a uint64 representation of a Game ID to a string - // must include checksum_crc.h first to get this functionality -#if defined( CHECKSUM_CRC_H ) - CGameID( uint32 nAppID, const char *pchModPath ) - { - m_ulGameID = 0; - m_gameID.m_nAppID = nAppID; - m_gameID.m_nType = k_EGameIDTypeGameMod; - - char rgchModDir[MAX_PATH]; - V_FileBase( pchModPath, rgchModDir, sizeof( rgchModDir ) ); - CRC32_t crc32; - CRC32_Init( &crc32 ); - CRC32_ProcessBuffer( &crc32, rgchModDir, V_strlen( rgchModDir ) ); - CRC32_Final( &crc32 ); - - // set the high-bit on the mod-id - // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique - // replacement for appID's - m_gameID.m_nModID = crc32 | (0x80000000); - } - - CGameID( const char *pchExePath, const char *pchAppName ) - { - m_ulGameID = 0; - m_gameID.m_nAppID = k_uAppIdInvalid; - m_gameID.m_nType = k_EGameIDTypeShortcut; - - CRC32_t crc32; - CRC32_Init( &crc32 ); - if ( pchExePath ) - CRC32_ProcessBuffer( &crc32, pchExePath, V_strlen( pchExePath ) ); - if ( pchAppName ) - CRC32_ProcessBuffer( &crc32, pchAppName, V_strlen( pchAppName ) ); - CRC32_Final( &crc32 ); - - // set the high-bit on the mod-id - // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique - // replacement for appID's - m_gameID.m_nModID = crc32 | (0x80000000); - } - -#if defined( VSTFILEID_H ) - - CGameID( VstFileID vstFileID ) - { - m_ulGameID = 0; - m_gameID.m_nAppID = k_uAppIdInvalid; - m_gameID.m_nType = k_EGameIDTypeP2P; - - CRC32_t crc32; - CRC32_Init( &crc32 ); - const char *pchFileId = vstFileID.Render(); - CRC32_ProcessBuffer( &crc32, pchFileId, V_strlen( pchFileId ) ); - CRC32_Final( &crc32 ); - - // set the high-bit on the mod-id - // reduces crc32 to 31bits, but lets us use the modID as a guaranteed unique - // replacement for appID's - m_gameID.m_nModID = crc32 | (0x80000000); - } - -#endif /* VSTFILEID_H */ - -#endif /* CHECKSUM_CRC_H */ - - uint64 ToUint64() const { return m_ulGameID; @@ -1379,9 +1042,9 @@ class CGameID m_ulGameID = 0; } - - -private: +// +// Internal stuff. Use the accessors above if possible +// enum EGameIDType { @@ -1416,26 +1079,12 @@ class CGameID const int k_cchGameExtraInfoMax = 64; -//----------------------------------------------------------------------------- -// Constants used for query ports. -//----------------------------------------------------------------------------- - -#define QUERY_PORT_NOT_INITIALIZED 0xFFFF // We haven't asked the GS for this query port's actual value yet. -#define QUERY_PORT_ERROR 0xFFFE // We were unable to get the query port for this server. - - //----------------------------------------------------------------------------- // Purpose: Passed as argument to SteamAPI_UseBreakpadCrashHandler to enable optional callback // just before minidump file is captured after a crash has occurred. (Allows app to append additional comment data to the dump, etc.) //----------------------------------------------------------------------------- typedef void (*PFNPreMinidumpCallback)(void *context); -//----------------------------------------------------------------------------- -// Purpose: Used by ICrashHandler interfaces to reference particular installed crash handlers -//----------------------------------------------------------------------------- -typedef void *BREAKPAD_HANDLE; -#define BREAKPAD_INVALID_HANDLE (BREAKPAD_HANDLE)0 - enum EGameSearchErrorCode_t { k_EGameSearchErrorCode_OK = 1, diff --git a/CodeGen/steam/steamdatagram_tickets.h b/CodeGen/steam/steamdatagram_tickets.h deleted file mode 100644 index 2c40f902..00000000 --- a/CodeGen/steam/steamdatagram_tickets.h +++ /dev/null @@ -1,286 +0,0 @@ -//====== Copyright Valve Corporation, All rights reserved. ==================== -// -// Types and utilities for handling steam datagram tickets. These are -// useful for both the client and the backend ticket generating authority. -// -//============================================================================= - -#ifndef STEAMDATAGRAM_TICKETS_H -#define STEAMDATAGRAM_TICKETS_H -#ifdef _WIN32 -#pragma once -#endif - -#ifndef assert - #include -#endif - -#include -#include "steamnetworkingtypes.h" - -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error "Must define VALVE_CALLBACK_PACK_SMALL or VALVE_CALLBACK_PACK_LARGE" -#endif - -/// Max length of serialized auth ticket. This is important so that we -/// can ensure that we always fit into a single UDP datagram (along with -/// other certs and signatures) and keep the implementation simple. -const size_t k_cbSteamDatagramMaxSerializedTicket = 512; - -/// Network-routable identifier for a service. This is an intentionally -/// opaque byte blob. The relays know how to use this to forward it on -/// to the intended destination, but otherwise clients really should not -/// need to know what's inside. (Indeed, we don't really want them to -/// know, as it could reveal information useful to an attacker.) -struct SteamDatagramHostedAddress -{ - - // Size of data blob. - int m_cbSize; - - // Opaque data - char m_data[ 128 ]; - - // Reset to empty state - void Clear() { memset( this, 0, sizeof(*this) ); } - - // Parse the data center out of the blob. - SteamNetworkingPOPID GetPopID() const { return CalculateSteamNetworkingPOPIDFromString( m_data ); } - - /// Set a dummy routing blob with a hardcoded IP:port. You should only use - /// this in a dev environment, since the address is in plaintext! - /// In production this information should come from the server, - /// using ISteamNetworkingSockets::GetHostedDedicatedServerAddress - void SetDevAddress( uint32 nIP, uint16 nPort, SteamNetworkingPOPID popid = 0 ) - { - GetSteamNetworkingLocationPOPStringFromID( popid, m_data ); - m_cbSize = 4; - m_data[m_cbSize++] = 1; - m_data[m_cbSize++] = 1; - m_data[m_cbSize++] = char(nPort); - m_data[m_cbSize++] = char(nPort>>8); - m_data[m_cbSize++] = char(nIP); - m_data[m_cbSize++] = char(nIP>>8); - m_data[m_cbSize++] = char(nIP>>16); - m_data[m_cbSize++] = char(nIP>>24); - } - - /// Convert to/from std::string (or anything that acts like it). - /// Useful for interfacing with google protobuf. It's a template - /// mainly so that we don't have to include in the header. - /// Note: by "string", we don't mean that it's text. It's a binary - /// blob, and it might have zeros in it. (std::string can handle that.) - template bool SetFromStdString( const T &str ) - { - if ( str.length() >= sizeof(m_data) ) - { - m_cbSize = 0; - return false; - } - m_cbSize = (int)str.length(); - memcpy( m_data, str.c_str(), m_cbSize ); - return true; - } - template void GetAsStdString( T *str ) const - { - str->assign( m_data, m_cbSize ); - } -}; - -/// Ticket used to gain access to the relay network. -struct SteamDatagramRelayAuthTicket -{ - SteamDatagramRelayAuthTicket() { Clear(); } - - /// Reset all fields - void Clear() { memset( this, 0, sizeof(*this) ); m_nRestrictToVirtualPort = -1; } - - /// Identity of the gameserver we want to talk to. This is required. - SteamNetworkingIdentity m_identityGameserver; - - /// Identity of the person who was authorized. This is required. - SteamNetworkingIdentity m_identityAuthorizedClient; - - /// SteamID is authorized to send from a particular public IP. If this - /// is 0, then the sender is not restricted to a particular IP. - /// - /// Recommend to leave this set to zero. - uint32 m_unPublicIP; - - /// Time when the ticket expires. Recommended: take the current - /// time and add 6 hours, or maybe a bit longer if your gameplay - /// sessions are longer. - /// - /// NOTE: relays may reject tickets with expiry times excessively - /// far in the future, so contact us if you wish to use an expiry - /// longer than, say, 24 hours. - RTime32 m_rtimeTicketExpiry; - - /// Routing information where the gameserver is listening for - /// relayed traffic. You should fill this in when generating - /// a ticket. - /// - /// When generating tickets on your backend: - /// - In production: The gameserver knows the proper routing - /// information, so you need to call - /// ISteamNetworkingSockets::GetHostedDedicatedServerAddress - /// and send the info to your backend. - /// - In development, you will need to provide public IP - /// of the server using SteamDatagramServiceNetID::SetDevAddress. - /// Relays need to be able to send UDP - /// packets to this server. Since it's very likely that - /// your server is behind a firewall/NAT, make sure that - /// the address is the one that the outside world can use. - /// The traffic from the relays will be "unsolicited", so - /// stateful firewalls won't work -- you will probably have - /// to set up an explicit port forward. - /// On the client: - /// - this field will always be blank. - SteamDatagramHostedAddress m_routing; - - /// App ID this is for. This is required, and should be the - /// App ID the client is running. (Even if your gameserver - /// uses a different App ID.) - uint32 m_nAppID; - - /// Restrict this ticket to be used for a particular virtual port? - /// Set to -1 to allow any virtual port. - /// - /// This is useful as a security measure, and also so the client will - /// use the right ticket (which might have extra fields that are useful - /// for proper analytics), if the client happens to have more than one - /// appropriate ticket. - /// - /// Note: if a client has more that one acceptable ticket, they will - /// always use the one expiring the latest. - int m_nRestrictToVirtualPort; - - // - // Extra fields. - // - // These are collected for backend analytics. For example, you might - // send a MatchID so that all of the records for a particular match can - // be located. Or send a game mode field so that you can compare - // the network characteristics of different game modes. - // - // (At the time of this writing we don't have a way to expose the data - // we collect to partners, but we hope to in the future so that you can - // get visibility into network conditions.) - // - - struct ExtraField - { - enum EType - { - k_EType_String, - k_EType_Int, // For most small integral values. Uses google protobuf sint64, so it's small on the wire. WARNING: In some places this value may be transmitted in JSON, in which case precision may be lost in backend analytics. Don't use this for an "identifier", use it for a scalar quantity. - k_EType_Fixed64, // 64 arbitrary bits. This value is treated as an "identifier". In places where JSON format is used, it will be serialized as a string. No aggregation / analytics can be performed on this value. - }; - int /* EType */ m_eType; - char m_szName[28]; - - union { - char m_szStringValue[128]; - int64 m_nIntValue; - uint64 m_nFixed64Value; - }; - }; - enum { k_nMaxExtraFields = 16 }; - int m_nExtraFields; - ExtraField m_vecExtraFields[ k_nMaxExtraFields ]; - - /// Helper to add an extra field in a single call - void AddExtraField_Int( const char *pszName, int64 val ) - { - ExtraField *p = AddExtraField( pszName, ExtraField::k_EType_Int ); - if ( p ) - p->m_nIntValue = val; - } - void AddExtraField_Fixed64( const char *pszName, uint64 val ) - { - ExtraField *p = AddExtraField( pszName, ExtraField::k_EType_Fixed64 ); - if ( p ) - p->m_nFixed64Value = val; - } - void AddExtraField_String( const char *pszName, const char *val ) - { - ExtraField *p = AddExtraField( pszName, ExtraField::k_EType_String ); - if ( p ) - { - size_t l = strlen( val ); - if ( l > sizeof(p->m_szStringValue)-1 ) - l = sizeof(p->m_szStringValue)-1; - memcpy( p->m_szStringValue, val, l ); - p->m_szStringValue[l] = '\0'; - } - } - -private: - ExtraField *AddExtraField( const char *pszName, ExtraField::EType eType ) - { - if ( m_nExtraFields >= k_nMaxExtraFields ) - { - assert( false ); - return NULL; - } - ExtraField *p = &m_vecExtraFields[ m_nExtraFields++ ]; - p->m_eType = eType; - - size_t l = strlen( pszName ); - if ( l > sizeof(p->m_szName)-1 ) - l = sizeof(p->m_szName)-1; - memcpy( p->m_szName, pszName, l ); - p->m_szName[l] = '\0'; - return p; - } -}; - -#pragma pack(pop) - -/// Max size of user data blob -const size_t k_cbMaxSteamDatagramGameCoordinatorServerLoginAppData = 2048; - -/// Max size of serialized data blob -const size_t k_cbMaxSteamDatagramGameCoordinatorServerLoginSerialized = 4096; - -/// Structure that describes a gameserver attempting to authenticate -/// with your central server allocator / matchmaking service ("game coordinator"). -/// This is useful because the game coordinator needs to know: -/// -/// - What data center is the gameserver running in? -/// - The routing blob of the gameserver -/// - Is the gameserver actually trusted? -/// -/// Using this structure, you can securely communicate this information -/// to your server, and you can do this WITHOUT maintaining any -/// whitelists or tables of IP addresses. -/// -/// See ISteamNetworkingSockets::GetGameCoordinatorServerLogin -struct SteamDatagramGameCoordinatorServerLogin -{ - /// Server's identity - SteamNetworkingIdentity m_identity; - - /// Routing info. Note that this includes the POPID - SteamDatagramHostedAddress m_routing; - - /// AppID that the server thinks it is running - AppId_t m_nAppID; - - /// Unix timestamp when this was generated - RTime32 m_rtime; - - /// Size of application data - int m_cbAppData; - - /// Application data. This is any additional information - /// that you need to identify the server not contained above. - /// (E.g. perhaps a public IP as seen by the coordinator service.) - char m_appData[ k_cbMaxSteamDatagramGameCoordinatorServerLoginAppData ]; -}; - -#endif // STEAMDATAGRAM_TICKETS_H diff --git a/CodeGen/steam/steamnetworkingtypes.h b/CodeGen/steam/steamnetworkingtypes.h index 5b35a4e0..a532e050 100644 --- a/CodeGen/steam/steamnetworkingtypes.h +++ b/CodeGen/steam/steamnetworkingtypes.h @@ -132,7 +132,7 @@ enum ESteamNetworkingAvailability enum ESteamNetworkingIdentityType { // Dummy/empty/invalid. - // Plese note that if we parse a string that we don't recognize + // Please note that if we parse a string that we don't recognize // but that appears reasonable, we will NOT use this type. Instead // we'll use k_ESteamNetworkingIdentityType_UnknownType. k_ESteamNetworkingIdentityType_Invalid = 0, @@ -535,13 +535,9 @@ enum ESteamNetConnectionEnd // - etc k_ESteamNetConnectionEnd_Remote_BadCert = 4003, - // We couldn't rendezvous with the remote host because - // they aren't logged into Steam - k_ESteamNetConnectionEnd_Remote_NotLoggedIn = 4004, - - // We couldn't rendezvous with the remote host because - // they aren't running the right application. - k_ESteamNetConnectionEnd_Remote_NotRunningApp = 4005, + // These will never be returned + //k_ESteamNetConnectionEnd_Remote_NotLoggedIn_DEPRECATED = 4004, + //k_ESteamNetConnectionEnd_Remote_NotRunningApp_DEPRECATED = 4005, // Something wrong with the protocol version you are using. // (Probably the code you are running is too old.) @@ -575,10 +571,7 @@ enum ESteamNetConnectionEnd // or on their end. k_ESteamNetConnectionEnd_Misc_Timeout = 5003, - // We're having trouble talking to the relevant relay. - // We don't have enough information to say whether the - // problem is on our end or not. - k_ESteamNetConnectionEnd_Misc_RelayConnectivity = 5004, + //k_ESteamNetConnectionEnd_Misc_RelayConnectivity_DEPRECATED = 5004, // There's some trouble talking to Steam. k_ESteamNetConnectionEnd_Misc_SteamConnectivity = 5005, @@ -1057,31 +1050,9 @@ enum ESteamNetworkingConfigValue { k_ESteamNetworkingConfig_Invalid = 0, - /// [global float, 0--100] Randomly discard N pct of packets instead of sending/recv - /// This is a global option only, since it is applied at a low level - /// where we don't have much context - k_ESteamNetworkingConfig_FakePacketLoss_Send = 2, - k_ESteamNetworkingConfig_FakePacketLoss_Recv = 3, - - /// [global int32]. Delay all outbound/inbound packets by N ms - k_ESteamNetworkingConfig_FakePacketLag_Send = 4, - k_ESteamNetworkingConfig_FakePacketLag_Recv = 5, - - /// [global float] 0-100 Percentage of packets we will add additional delay - /// to (causing them to be reordered) - k_ESteamNetworkingConfig_FakePacketReorder_Send = 6, - k_ESteamNetworkingConfig_FakePacketReorder_Recv = 7, - - /// [global int32] Extra delay, in ms, to apply to reordered packets. - k_ESteamNetworkingConfig_FakePacketReorder_Time = 8, - - /// [global float 0--100] Globally duplicate some percentage of packets we send - k_ESteamNetworkingConfig_FakePacketDup_Send = 26, - k_ESteamNetworkingConfig_FakePacketDup_Recv = 27, - - /// [global int32] Amount of delay, in ms, to delay duplicated packets. - /// (We chose a random delay between 0 and this value) - k_ESteamNetworkingConfig_FakePacketDup_TimeMax = 28, +// +// Connection options +// /// [connection int32] Timeout value (in ms) to use when first connecting k_ESteamNetworkingConfig_TimeoutInitial = 24, @@ -1094,6 +1065,41 @@ enum ESteamNetworkingConfigValue /// Default is 512k (524288 bytes) k_ESteamNetworkingConfig_SendBufferSize = 9, + /// [connection int64] Get/set userdata as a configuration option. + /// The default value is -1. You may want to set the user data as + /// a config value, instead of using ISteamNetworkingSockets::SetConnectionUserData + /// in two specific instances: + /// + /// - You wish to set the userdata atomically when creating + /// an outbound connection, so that the userdata is filled in properly + /// for any callbacks that happen. However, note that this trick + /// only works for connections initiated locally! For incoming + /// connections, multiple state transitions may happen and + /// callbacks be queued, before you are able to service the first + /// callback! Be careful! + /// + /// - You can set the default userdata for all newly created connections + /// by setting this value at a higher level (e.g. on the listen + /// socket or at the global level.) Then this default + /// value will be inherited when the connection is created. + /// This is useful in case -1 is a valid userdata value, and you + /// wish to use something else as the default value so you can + /// tell if it has been set or not. + /// + /// HOWEVER: once a connection is created, the effective value is + /// then bound to the connection. Unlike other connection options, + /// if you change it again at a higher level, the new value will not + /// be inherited by connections. + /// + /// Using the userdata field in callback structs is not advised because + /// of tricky race conditions. Instead, you might try one of these methods: + /// + /// - Use a separate map with the HSteamNetConnection as the key. + /// - Fetch the userdata from the connection in your callback + /// using ISteamNetworkingSockets::GetConnectionUserData, to + // ensure you have the current value. + k_ESteamNetworkingConfig_ConnectionUserData = 40, + /// [connection int32] Minimum/maximum send rate clamp, 0 is no limit. /// This value will control the min/max allowed sending rate that /// bandwidth estimation is allowed to reach. Default is 0 (no-limit) @@ -1253,9 +1259,62 @@ enum ESteamNetworkingConfigValue /// This value should not be read or written in any other context. k_ESteamNetworkingConfig_LocalVirtualPort = 38, - // - // Callbacks - // + +// +// Simulating network conditions +// +// These are global (not per-connection) because they apply at +// a relatively low UDP layer. +// + + /// [global float, 0--100] Randomly discard N pct of packets instead of sending/recv + /// This is a global option only, since it is applied at a low level + /// where we don't have much context + k_ESteamNetworkingConfig_FakePacketLoss_Send = 2, + k_ESteamNetworkingConfig_FakePacketLoss_Recv = 3, + + /// [global int32]. Delay all outbound/inbound packets by N ms + k_ESteamNetworkingConfig_FakePacketLag_Send = 4, + k_ESteamNetworkingConfig_FakePacketLag_Recv = 5, + + /// [global float] 0-100 Percentage of packets we will add additional delay + /// to (causing them to be reordered) + k_ESteamNetworkingConfig_FakePacketReorder_Send = 6, + k_ESteamNetworkingConfig_FakePacketReorder_Recv = 7, + + /// [global int32] Extra delay, in ms, to apply to reordered packets. + k_ESteamNetworkingConfig_FakePacketReorder_Time = 8, + + /// [global float 0--100] Globally duplicate some percentage of packets we send + k_ESteamNetworkingConfig_FakePacketDup_Send = 26, + k_ESteamNetworkingConfig_FakePacketDup_Recv = 27, + + /// [global int32] Amount of delay, in ms, to delay duplicated packets. + /// (We chose a random delay between 0 and this value) + k_ESteamNetworkingConfig_FakePacketDup_TimeMax = 28, + + /// [global int32] Trace every UDP packet, similar to Wireshark or tcpdump. + /// Value is max number of bytes to dump. -1 disables tracing. + // 0 only traces the info but no actual data bytes + k_ESteamNetworkingConfig_PacketTraceMaxBytes = 41, + + + // [global int32] Global UDP token bucket rate limits. + // "Rate" refers to the steady state rate. (Bytes/sec, the + // rate that tokens are put into the bucket.) "Burst" + // refers to the max amount that could be sent in a single + // burst. (In bytes, the max capacity of the bucket.) + // Rate=0 disables the limiter entirely, which is the default. + // Burst=0 disables burst. (This is not realistic. A + // burst of at least 4K is recommended; the default is higher.) + k_ESteamNetworkingConfig_FakeRateLimit_Send_Rate = 42, + k_ESteamNetworkingConfig_FakeRateLimit_Send_Burst = 43, + k_ESteamNetworkingConfig_FakeRateLimit_Recv_Rate = 44, + k_ESteamNetworkingConfig_FakeRateLimit_Recv_Burst = 45, + +// +// Callbacks +// // On Steam, you may use the default Steam callback dispatch mechanism. If you prefer // to not use this dispatch mechanism (or you are not running with Steam), or you want @@ -1320,9 +1379,9 @@ enum ESteamNetworkingConfigValue /// ISteamNetworkingMessages. k_ESteamNetworkingConfig_Callback_CreateConnectionSignaling = 206, - // - // P2P settings - // +// +// P2P connection settings +// // /// [listen socket int32] When you create a P2P listen socket, we will automatically // /// open up a UDP port to listen for LAN connections. LAN connections can be made @@ -1353,9 +1412,9 @@ enum ESteamNetworkingConfigValue k_ESteamNetworkingConfig_P2P_Transport_SDR_Penalty = 106, //k_ESteamNetworkingConfig_P2P_Transport_LANBeacon_Penalty = 107, - // - // Settings for SDR relayed connections - // +// +// Settings for SDR relayed connections +// /// [int32 global] If the first N pings to a port all fail, mark that port as unavailable for /// a while, and try a different one. Some ISPs and routers may drop the first @@ -1402,14 +1461,14 @@ enum ESteamNetworkingConfigValue /// in production. k_ESteamNetworkingConfig_SDRClient_FakeClusterPing = 36, - // - // Log levels for debugging information of various subsystems. - // Higher numeric values will cause more stuff to be printed. - // See ISteamNetworkingUtils::SetDebugOutputFunction for more - // information - // - // The default for all values is k_ESteamNetworkingSocketsDebugOutputType_Warning. - // +// +// Log levels for debugging information of various subsystems. +// Higher numeric values will cause more stuff to be printed. +// See ISteamNetworkingUtils::SetDebugOutputFunction for more +// information +// +// The default for all values is k_ESteamNetworkingSocketsDebugOutputType_Warning. +// k_ESteamNetworkingConfig_LogLevel_AckRTT = 13, // [connection int32] RTT calculations for inline pings and replies k_ESteamNetworkingConfig_LogLevel_PacketDecode = 14, // [connection int32] log SNP packets send/recv k_ESteamNetworkingConfig_LogLevel_Message = 15, // [connection int32] log each message send/recv diff --git a/CodeGen/steam/steamtypes.h b/CodeGen/steam/steamtypes.h index 77a484d2..7b604345 100644 --- a/CodeGen/steam/steamtypes.h +++ b/CodeGen/steam/steamtypes.h @@ -17,26 +17,31 @@ typedef unsigned char uint8; #endif -#if defined( __GNUC__ ) && !defined(POSIX) +#if defined( __GNUC__ ) && !defined(_WIN32) && !defined(POSIX) #if __GNUC__ < 4 #error "Steamworks requires GCC 4.X (4.2 or 4.4 have been tested)" #endif #define POSIX 1 #endif -#if defined(__x86_64__) || defined(_WIN64) || defined(__aarch64__) +#if defined(__LP64__) || defined(__x86_64__) || defined(_WIN64) || defined(__aarch64__) || defined(__s390x__) #define X64BITS #endif +#if !defined(VALVE_BIG_ENDIAN) +#if defined(_PS3) // Make sure VALVE_BIG_ENDIAN gets set on PS3, may already be set previously in Valve internal code. -#if !defined(VALVE_BIG_ENDIAN) && defined(_PS3) -#define VALVE_BIG_ENDIAN +#define VALVE_BIG_ENDIAN 1 +#endif +#if defined( __GNUC__ ) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +#define VALVE_BIG_ENDIAN 1 +#endif #endif typedef unsigned char uint8; typedef signed char int8; -#if defined( _WIN32 ) +#if defined( _WIN32 ) && !defined( __GNUC__ ) typedef __int16 int16; typedef unsigned __int16 uint16; @@ -84,102 +89,23 @@ typedef unsigned int uintp; #endif // else _WIN32 -#ifdef API_GEN -# define STEAM_CLANG_ATTR(ATTR) __attribute__((annotate( ATTR ))) -#else -# define STEAM_CLANG_ATTR(ATTR) -#endif - -#define STEAM_METHOD_DESC(DESC) STEAM_CLANG_ATTR( "desc:" #DESC ";" ) -#define STEAM_IGNOREATTR() STEAM_CLANG_ATTR( "ignore" ) -#define STEAM_OUT_STRUCT() STEAM_CLANG_ATTR( "out_struct: ;" ) -#define STEAM_OUT_STRING() STEAM_CLANG_ATTR( "out_string: ;" ) -#define STEAM_OUT_ARRAY_CALL(COUNTER,FUNCTION,PARAMS) STEAM_CLANG_ATTR( "out_array_call:" #COUNTER "," #FUNCTION "," #PARAMS ";" ) -#define STEAM_OUT_ARRAY_COUNT(COUNTER, DESC) STEAM_CLANG_ATTR( "out_array_count:" #COUNTER ";desc:" #DESC ) -#define STEAM_ARRAY_COUNT(COUNTER) STEAM_CLANG_ATTR( "array_count:" #COUNTER ";" ) -#define STEAM_ARRAY_COUNT_D(COUNTER, DESC) STEAM_CLANG_ATTR( "array_count:" #COUNTER ";desc:" #DESC ) -#define STEAM_BUFFER_COUNT(COUNTER) STEAM_CLANG_ATTR( "buffer_count:" #COUNTER ";" ) -#define STEAM_OUT_BUFFER_COUNT(COUNTER) STEAM_CLANG_ATTR( "out_buffer_count:" #COUNTER ";" ) -#define STEAM_OUT_STRING_COUNT(COUNTER) STEAM_CLANG_ATTR( "out_string_count:" #COUNTER ";" ) -#define STEAM_DESC(DESC) STEAM_CLANG_ATTR("desc:" #DESC ";") -#define STEAM_CALL_RESULT(RESULT_TYPE) STEAM_CLANG_ATTR("callresult:" #RESULT_TYPE ";") -#define STEAM_CALL_BACK(RESULT_TYPE) STEAM_CLANG_ATTR("callback:" #RESULT_TYPE ";") -#define STEAM_FLAT_NAME(NAME) STEAM_CLANG_ATTR("flat_name:" #NAME ";") - -const int k_cubSaltSize = 8; -typedef uint8 Salt_t[ k_cubSaltSize ]; - -//----------------------------------------------------------------------------- -// GID (GlobalID) stuff -// This is a globally unique identifier. It's guaranteed to be unique across all -// racks and servers for as long as a given universe persists. -//----------------------------------------------------------------------------- -// NOTE: for GID parsing/rendering and other utils, see gid.h -typedef uint64 GID_t; - -const GID_t k_GIDNil = 0xffffffffffffffffull; - -// For convenience, we define a number of types that are just new names for GIDs -typedef uint64 JobID_t; // Each Job has a unique ID -typedef GID_t TxnID_t; // Each financial transaction has a unique ID - -const GID_t k_TxnIDNil = k_GIDNil; -const GID_t k_TxnIDUnknown = 0; - -const JobID_t k_JobIDNil = 0xffffffffffffffffull; - -// this is baked into client messages and interfaces as an int, -// make sure we never break this. -typedef uint32 PackageId_t; -const PackageId_t k_uPackageIdInvalid = 0xFFFFFFFF; - -typedef uint32 BundleId_t; -const BundleId_t k_uBundleIdInvalid = 0; - -// this is baked into client messages and interfaces as an int, -// make sure we never break this. typedef uint32 AppId_t; const AppId_t k_uAppIdInvalid = 0x0; -typedef uint64 AssetClassId_t; -const AssetClassId_t k_ulAssetClassIdInvalid = 0x0; - -typedef uint32 PhysicalItemId_t; -const PhysicalItemId_t k_uPhysicalItemIdInvalid = 0x0; - - -// this is baked into client messages and interfaces as an int, -// make sure we never break this. AppIds and DepotIDs also presently -// share the same namespace, but since we'd like to change that in the future -// I've defined it seperately here. +// AppIds and DepotIDs also presently share the same namespace typedef uint32 DepotId_t; const DepotId_t k_uDepotIdInvalid = 0x0; -// RTime32 -// We use this 32 bit time representing real world time. -// It offers 1 second resolution beginning on January 1, 1970 (Unix time) +// RTime32. Seconds elapsed since Jan 1 1970, i.e. unix timestamp. +// It's the same as time_t, but it is always 32-bit and unsigned. typedef uint32 RTime32; -typedef uint32 CellID_t; -const CellID_t k_uCellIDInvalid = 0xFFFFFFFF; - // handle to a Steam API call typedef uint64 SteamAPICall_t; const SteamAPICall_t k_uAPICallInvalid = 0x0; typedef uint32 AccountID_t; -typedef uint32 PartnerId_t; -const PartnerId_t k_uPartnerIdInvalid = 0; - -// ID for a depot content manifest -typedef uint64 ManifestId_t; -const ManifestId_t k_uManifestIdInvalid = 0; - -// ID for cafe sites -typedef uint64 SiteId_t; -const SiteId_t k_ulSiteIdInvalid = 0; - // Party Beacon ID typedef uint64 PartyBeaconID_t; const PartyBeaconID_t k_ulPartyBeaconIdInvalid = 0; @@ -259,5 +185,4 @@ struct SteamIPAddress_t #pragma pack( pop ) - #endif // STEAMTYPES_H diff --git a/CodeGen/structs.py b/CodeGen/structs.py index 2eed86a4..e05f0609 100644 --- a/CodeGen/structs.py +++ b/CodeGen/structs.py @@ -62,6 +62,7 @@ # CustomType "SteamIPAddress_t", + "SteamInputActionEvent_t", ) g_SequentialStructs = ( @@ -86,10 +87,6 @@ "bState": "byte", # Originally bool "bActive": "byte", # Originally bool }, - - "SteamDatagramGameCoordinatorServerLogin": { - "m_appData": "byte", # Originally char - }, } g_ExplicitStructs = { diff --git a/CodeGen/typedefs.py b/CodeGen/typedefs.py index b1a64a7f..0cce1ba3 100644 --- a/CodeGen/typedefs.py +++ b/CodeGen/typedefs.py @@ -25,25 +25,13 @@ } g_UnusedTypedefs = [ - # SteamClientPublic - "BREAKPAD_HANDLE", - # SteamTypes - "AssetClassId_t", - "BundleId_t", - "CellID_t", - "GID_t", "int8", "int16", "int32", "int64", "intp", - "JobID_t", "lint64", - "PackageId_t", - "PartnerId_t", - "PhysicalItemId_t", - "TxnID_t", "uint8", "uint16", "uint32", @@ -117,10 +105,6 @@ ("Invalid", "0x0"), ]), - "ManifestId_t": OrderedDict([ - ("Invalid", "0x0"), - ]), - "SteamAPICall_t": OrderedDict([ ("Invalid", "0x0"), ]), diff --git a/README.md b/README.md index 225c62b7..98b5ea3d 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ _Steamworks.NET_ is a C# Wrapper for Valve's Steamworks API, it can be used eith _Steamworks.NET_ was designed to be as close as possible to the original C++ API, as such the documentation provided from Valve largely covers usage of _Steamworks.NET_. Niceties and C# Idioms can be easily implemented on top of _Steamworks.NET_. -_Steamworks.NET_ currently fully supports Windows, OSX, and Linux in both 32 and 64bit varieties. Currently building against Steamworks SDK 1.51. +_Steamworks.NET_ currently fully supports Windows, OSX, and Linux in both 32 and 64bit varieties. Currently building against Steamworks SDK 1.52. * Author: [Riley Labrecque](https://github.com/rlabrecque) * License: [MIT](http://www.opensource.org/licenses/mit-license.php) diff --git a/Standalone/Steamworks.NET.Standard.csproj b/Standalone/Steamworks.NET.Standard.csproj index 0e943f2b..e1576b78 100644 --- a/Standalone/Steamworks.NET.Standard.csproj +++ b/Standalone/Steamworks.NET.Standard.csproj @@ -87,110 +87,110 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Standalone/Steamworks.NET.csproj b/Standalone/Steamworks.NET.csproj index 97b9b8d4..7980bfd8 100644 --- a/Standalone/Steamworks.NET.csproj +++ b/Standalone/Steamworks.NET.csproj @@ -129,6 +129,8 @@ + + @@ -159,10 +161,8 @@ - - diff --git a/com.rlabrecque.steamworks.net/Plugins/libsteam_api.so b/com.rlabrecque.steamworks.net/Plugins/libsteam_api.so index 4111712b4474324b36e6ef4b84101130c2af7280..3b1c085dcdc9e80c1faf0a8b70d6e66191068a4d 100644 GIT binary patch literal 415926 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 literal 404759 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

-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

RSK6 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 diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/MacOS/libsteam_api.dylib b/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/MacOS/libsteam_api.dylib index d89750e32989d4e20b830d2e5b55ce3ed4a4cb51..638d8ebbd4a4ac9fedc3ad4e0ee8ff65fae113bd 100644 GIT binary patch literal 608768 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�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 Y6qu*LJO$<{Fi(Mb3d~dB-=M(%0*PyX)c^nh literal 453312 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

oz0%6L3Dvoc-@&a5mBf#Wj9 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

N!{Z%!%-U9NPz(onji@pl&#;-3RNsIXo2X|b6 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%0Ad1-X%elPP*u)M@v@y7(3h?2}% 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 N0;3@?8Ulkg1OU_JwYUHP diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api.dll b/com.rlabrecque.steamworks.net/Plugins/steam_api.dll index 8fb32b4c1c2c8527bcc404e4bc9cd06de1cd7860..e2b2db0881dbf07ace34d78934e008b5ef9abc8c 100644 GIT binary patch literal 260840 zcmeFae|%KMxj%k3*(3|ua27~3YSbvPqNt5T3UP_u1U5t@xFND3Reoq8cTH)Hum@2I zEN)_RGH#oDtM__u^CHnK|d| z*&l)S_5Jr7W%tZHGtWHp%=0|+%rkRl>%YyS z315=*>uhQEkFUS|%Qv<;FMQ_2k?*{;^Y+{SYq7j_%>#e@mv`qpHT5fZoOtR#zp38v z4}q-zyW}eai{H8Hi)GE%27mpOzHR2gYl3w@oqBQbzr4N8SHE}vLmMxc`ISp&{A|V_ zuYE1+JFi``>xFOr>79np{^k86UE3a?*6~^S=I>r}|K&S8|MuJeDPPie*{R6R6HVW) zEBU1MvRBcA|8IW*za%YjZXnk^m7qX**;{MAb6 z*(o{ClcbSfW=Xf0F#C63mQ;+iuNSS^^Fil&LApKHdcG#SZgUu^$8JC;h&~^_NhoZ8 zrINJfnhk4j4}&xF?gTRGdn>*d;@kG;L+xusF{$KI0D2)|Q}F#`lC;F150Gm%Y~1iw zWbwYD&yov?U!;}uU9(}``nyn&`pyYEA76XY%GD6`|Nr~jIS?9qYk^lUS{SJDhI*FP zc(uyMB&oT7pZUk$WLfz&PGyz+LXE4XvsYQ(Qdu)uIe%V_TUk7>ra16TeK9;TQNGJn{98nUxZ$$rMsKfBjxayc6b{jd>q zyxjr$(k}dtB(Zu|bdO7QtfV3Ye{vb%&vN)*|0x4}Gu8hNhrgc*exL#HjU4`RCU`mF zZ{+aDGri4&VLS%Wr80C|5_#O?o=4b42{nLsy{tS_*ed82KqRE zjz2)~s!Z?@Z=b_2%mnBBdzQoh+LHmlMEv^>hrgc*UP$nb9R6}9xJ2zYa`@w!;H3nw z;PCcLa6W$1IecX%I3K^`+j;*p!TI>T&EXejg7;$lz<&o|P>hgBcJ_v4?W1qo*`e)E zm0mGE*U|WI@X>4b`vU@b*mb6;yvZhp)^8KS=Q75#Ikya3Oyj zeqknfFX`{I9RAmD**k2|A0hnT;qdn}!43KCONE*8TTK0H_Kh>x!E>^nhn&znL!76%Vo$w;phFLrBEpF9Y0_3GOjaI_*HKK69+p zOHF*bQo>0n)|EnPl2`Rzr5~WGW_zHI`Id-0UeWjva00qk>PJ(`mz=4*(^ek!C7w)f zulP*$*C*HamD$opCqPwO3W@~1Zd-Zc$C}%yOJ;v<{I9dKP{3o$$D$)H=2)f&0_*_G zV#}QD_q>>iANUIG_{4ZH-~0*aL3vN2Jf~-7B8`zT<$?KD*io4Da``Du$PXW{wf2&P zEo1){ruWa}pB@O=fwua*y<3vn(*xy6Y3B1y)IRUu8aq84-@K&ydf>XGH1jzp#>afO z*~ZflerSftA5$Nal*#H3r{@+sJr=+9K%1QfCO#W{{#oEjEX+_Jqed-@zYOptXMq== z1rDy7*fWklM(vF7EoXtRIWxTHQAv`lBI*6>dFagWz)Y($$V{&vxautM@LAxS&jR7(4zG5HT9v)4$R2k9=ILp^qciP6Vx~1B@@88 zzOUf=sVl{N{;{c4qDvU>4DbZj%BzAZs(!rH>N&u7bB z%%x6dbxw7$lhwJ@#jfr;H{0E{*qvnWxxHb&c^UERN*V88DNVGPUk&_xZueP)8bf5G zm(To}`o|(zt4N|PTY2VNpRs-3xEK%SOPx|J{ITVeZL`^_FUQ<4jjH?aKSZgp?CO(s&sZ%WA8RRu#!jtRkJrTQd ziT-D(e~Tq19RI}f1dXCzB>pnfbDLGnq=)ktgJGtP@#!H+vkC*P38(TsS2>b_Hn>^8 zETxE9-+%{_CYSX3fh6N>!D+mncm||d^cdq28AqmF3zFM|mtY54_=NsO3PEf-91;L| zh%I-UUePkW=NOtX96vjE41LJtPa9sFpvUwd(JnM?iOq#frdRJdiiYeh0DcC2>lsNY zZt#c8cOAN$!Y{b5cH{z{slQL2p}#i!qW3(JLV(#{JM(Bl%*eb9^d%&ps5j|P;$P3c z1U|zmi?WIGTwaDyET#V};!YWIlV0K9ixI~Vd2BWGOqs9LF47!dX8YFTO3_uKL-0cwK{AF|k0!YcCfwBL;&l4$@{#PU zWW?X|oSj7`eycxv&o45;O?yN88FmuP`X+rz&ZN~o*N<|0f4M!JpKcG6oFS`zVtkXF zSqskPuN3UH_-WFUYMW03wS2^wc&r*j>5!mgKL@KoPOH5vp1gBK8yU& zUfF_k{cs~`$(uoMs{3!idHJg{l&2*u2Wr;Cfc78^Zlmi7sdDCBj=Vo(0$XQ6HUr%0a zTlJIXzqN_poA^0BTMT;A`ls7M9K1cOUq+%M7(39@fv#s*X0kfBibZCfhwWAudlGJq z*?$&^pdx1}HEaE)_BSvy*>eFrjXoBkS;pc&_{sZILP!NZ?jP$kd1tKe+iVSaMtCG) z^^)+x*-1+KQqoZCBsi8WB2Dsil_^hr{P}#1kul2~^N~$+1&fm5mfENA&y;69Ik+SE zk;Xr})R_1=J!J`ccpA=!3Agk+#RUgE1AZ)A4GPWrrhSBqV$n_ysqlGcfiIi@PW1Mq zIv+Otygwn{pEImS(w1)qeTV!WvR}fXOj={6(vKle?VrUT!eSUFxTRZo$<+F(3t|(_ z=`Tr)hbb>>EJ+s4n&qwWV!m>F5fg6KPYscna9jN(lMA@jA2P7yVl&@NtBK6;>+En- z{!={tWctxx=Bu-+Sv)oAGwDyv6juEV^ewRvne}b`b6P;4FySWtfE{Rq+v+Dp>CE~z z_?hM(Ut*>`6a7Am3KPFcpRr6Am2LEy@LQ~!6XVxyA#31ICA=!LKNi3A9$F_@T4chxJS0h?)gM+rQ9SgP3=`Fv;-RU7ZR01`KP(pQ^w_2e zLCggGWszs>^OfL7TKsaM8NWP}eM%TsqeYV*!GGZ{Sjnj-5qkp+AyRoaj&Ihi%&9@XYZR zK4T@*lQOy3_+!Zv^CgV`1pT#dL}a3m*}Q%ZPmd?lMzx4~+kAcEab|ppSu-;{VO0U= z^OdbXVY^AqT))jKBIoZ@#w6~eogUq)@G?^$LGRvF( z@j|Qp^zk)Z>g2VOQ6BXV`Afz6&DszW{(L&m(S9adTi?( z=38qq8wC>m-)!r@y?i8T$;aEjiVyKjA{_n<-}l1V5&OoMB~=sAi?aji%(Lh*{quB} z#-tbLDV&M^9r70nej8_MND{=KD9`PkPCLoAwA~FeN@tdT`w<=9pEUd9vbUGPUL?_z z4o`rE{-uvEF)Ki=nDm?eLz1yTFHE>i|B|*uIQ^OIfiqn;i75h~xxNM&v~y@%a!!EH zK$f=L7X8cA{)!3P&#b@3l9acf9zU-;L;O4wKHUt=oBeg0B8VkCsn!|rab+;aW1d~P z1phL%XN8;u95Crk!LJ9f@Frov zpP<)nA52SX!86dGFd^ynZJXUT{M=tiS_xSAxqW87TTFg&{`2w+EjEb47Cz#y&sLt& zTT;?1QqpaHuMvVuQVEkD>R(`9bj%_DN3Xq$fM@ED zb=HyUFLwu{_c@)h4K5{%eF@?l)Hh)IG-CC$dD&G4Qqf*)dEs%{<1bv+n$1GAJg_s5pe^z-$r72pZqL71ENG)rWrd<0;C6|7R}`(ct4rXvx1ON-V@^KW%=shnNL@HhYi2lU3Q0F9<`By!UIN zTeMN}j+%x3s5MSVom%5!{$jNT5>ukqc=X^*Q7Qw5mRUbT`v|n2 zVSQ$oA9SD2R%RBV+N<;f*4P{LLb#LH6Rza-1mNUs9D~AglTOvFztsL1%lL`lktcw~ z-epmr@N0hy{>Xv!`kCe<7I}vXrn3y~Wt5NPQyLce*8EQ6owiwzVjN%EcqfdM$)Ci0 zo78;^e*&HyQaAa7^>rIjW#Z%VmlVknG@Eb>U&@iT1imNeXoiK)D$gS1WmrRG;xptm zLP1XpX!bvoyoNF`-z=ZTuS5tWwY}a8+u;2WgDb^0w zLDK^^ha;u^0!KP})y{f`{9N^yGA`AN*=i}zIg?<`)lu?ZSil?mubE;CN552hWHC)nN-f+RbWf#zp0N4ElzQ8 zCVfsi0%rEdtWR&u+Z*BZq>V@7pe~1}%O{KQgJkIhC%32f(D_fBx)HtU{!$ z)aUCPI_D+IXV8DV3y`k-f?t{Sf8m7spK*RLw}?5tnZ~nBaB)Jo5o_S^4E)2Xqjct( z^k*txI$?RP|6+Xgv@@oHpJp)4e)7;RKQ!4bp^>6j43qv+>+i8E14^23n|+yY7ct)d zH2J#DDw3i8n7xS%aBlg}psz>IQor{s@T4g(L;JKVX{k^K_z%wlf8s3gq$wl={-h}& z9iAK|%K#5q#Ah78qkb?=_mQA`xf96T)_5Wb41#e(DiU)K9ZlEJCi7Xd*K_k_^veKibYv->lRldy^wsQdlJjTdhs94lc^BTK$FMiH$TTX8`kCyhZocIv>hpNoJfpm^-sk|& zGTNU^_^gn7M*iE5XlI7krN{@#SJy=CbNkBu?<7xzch|6g_VZTO)&ehJ_7`DGn}3A! zpYKyxNt^)n@bjMtGZb263FP?X^kP{h`ghNarTf$0&XBCKHbKLSzYA;SjsDRV|e7PISlMPf&jTZfAFO zPTwCq9lhaFToTcD)RjNlU7d^MRQdUayuRNSBR79{{s6)sj6M?d))&$>6CR2qGsV?a z>tuahOLKAYL|1JNZk^~_ng{t9sC7v#gS9S)V=y-d1nIdfw`)nclfL_gUFKugE#*$O z8<|t6{=#dmgs1P1#gyjtP)N_^G=$u||5krPb-e$J&Hjh>QTh*w^i{;acN6Ilr3Vt} z2&JD-q2ZQTm`ImVdQ&3(D3xzXqzfq>Or(3Me65uh@)5n)BPp(E zr6fOsXg+h~S36;0s$KcjZpAqpSE|dtkVrpG>F2Gqpoa&Oq28)vu-ZwNS|O5L%?}9(I0qq!3Mk2~DqyC*;iY7{k))6Z zWe01VSyZG3FDF9~)9RCKq}2B(jw5h+^}8zesxB2TIpYoII(Lg&=P|{R;Gu_z1;^_I z3lO+K_)QNO2WzQ4(8KSHnvGkaT*_663!yH-9Z)Yrc1d=?=)x;24NZcUeR0emPM5bpMDm&=M3S*$^jlyxdA6KHhvsEJs!TgJL~#f<*MlEzlJaEu5nyn>rgI^ zp8h;s)LoNxeQlO9EqYoHySi(#udmIvD<}G6j^`y}Jb$pz5EN@Xp_!}rHfu$%^=PPr zVV|P&B>7>khhn^{W-H-(V#O6hf zBLEy~wG$%{7<7=bYR}nln0+(#b2;hzU>2zwbb1=Tpsb{!&{mqIpw?Vl3tLzg z%*ZfcQ-M{>Zn6g5J_CSWAz#0%HpJMBT|vn7?P-ad{t+$8YlE0xXu3aUK(jCEC~2_n6G34M0x(|0v8jJ#v7(aF-lYY z>MY)am8l5K`aakqQ~u!Jz}2jFipjn@3*UvHl@~DZ!`}!vy$#L{9%XV1^JTSotFtyF zd&WX)P5kw66V3Cc5bk<6j3pto!|Oo9u6ei(FJZ0-9`hFlX!@rR4U|SZr0Y6!>21#F zUPpsgwG+(Vt4H^gboR=1eMYxM4VMm~ETifk>Al*^h}yG!5XVy`u69}u1a_NCV1 zfEHLtL*}9~;iIcp-AY&OaU6e3{nCKuIYa#*`=nxTtkxMA%yr`w5g%FDOgN|kZErJg zcQE%VKxkRF+bP;LJAn4jR9`jg&zqn=_sm!yJTf0j3_7TsjlIO5GvU8N;7?F?5-W^B zM;ow&^BS~od6O=K1<{y$nuIF;DPYPdn>mRJN z*Dnle%g$CG(kp~FpxwvkIa}jJNtL<2G--Y;BiTwIOe6+kF=H! z`p1cwLH{UyX{}!dHA84sMIHaBdbdYyE>!O=R;x>}PE#GQ;j}IrtahUud1*`;1qui1 zG6@EJ-r@qKoUOt;<7{i8;2%5S-CTH&XG0E#W8)+yy-0=QIk>K~VlS7{Ujxzh%}!`Z zUigAw!!kCcjZFf+`V$zPwQ2zoMz5c1KSiS^KRYw<(@p%m5Wx({3H1~7`?bhTPKUbD z#pbmZTYViNl-kxCIDb|Dh}z~+R}`xA)Xh$HGkQl}CR;g*-nEaIy~{RwSIX|8-W~9^ zdD=7e=J(t0cmCi9KbRc8pb1@hO}jc{S3bb z1%2-%*+b$To*+Tf-(9_P3BI`_fcnNXb}8W)(!L9cvI#YpXLqD3fC^IhYnX_Gs{aH= zvq|-jX&+%UVw-(2n3M_y`deLj8ZocHK)S$Y=JAbwoD>osw-C&hR-8P-uMjKtc(NZ zJ*6Cjz>uV{_7j!&xMDXWNTdA-1&GSugDYg%cg^Qi8YM0Ld?KSffkK$$0sn~9q^<+0 z8i?7?772@dK5KN6{Rxo$@sa%*ViK3=5pJAZY=P5T?P*j?>Bpp`l1`Q6GP1hzK13_(S^2y;1+f^O*Xmv{NT?(_CDP_dGV@XV*x zS{JJ=glU?jD+y(=NtLu1c!UsrtA|IUG9)!(h%Dd;+O7 zkQ1h-!JN%T#$e7C>nUPAwc)7)qCc4Pkd@bCJw0qZ4dis;DQhsN17DA#cx&l^e>{6I z=TWQZW5$!#iPu`;GOP7? z^W;v_91OL0kyF{qmKM{p99jzr!S`tAVP#f8``>>T~rr zk6uJ30~bMe9u9ku2^7dz#+ai~rKwZ#HtjOZ7dyAr|eQCgaeXdO!ow*r0!79t(FU_9@nbNDY1u~mbMNU)$qoKd%~ zHWi)A7uH)YtWpj^v`E6V|N1kCTt1F_qTyGPJ6X)VOD7wPPr+)A-RttcDt9vC9K24p z!Kq}c5RvT4fK$oAv>4B?JV$Y=H^j5mtuADHlvxIXcjF~YX76zZP9ysa|MN}L|76)J zHj%~&kISernZ1E!a`!TKd<$CyPn=Ve57SxA2@C%jbp-r2Ea+I4>hLahDNgoD{CrN@ z-GVfDw%Bi|rVu6-GYGA7qB}KCkcS8?XsrX>+1)@(PYgo0&)rpx6W`-q0e9pxhum2U z*<#t=%}%*vE*^!y64~Z7n#2m^ zP9LaoJJ6ie06$_m`87*j-L=#QH10qZ_F8bj=XPj^F!9GXbMh8)@}_X=U?6f0wqiIl zkSBv+ZyRPwFe;vfW#rv1B5(>H%p%s{;>2A~Jp?(ki4>O2>c_Ca*yQxqIpxm%ki>yS zAm%1waOd8z^G5Zigh?=JPP2F9D)LgM*!tlxyRm_~@e@OS5t8hK^kP}=18O*{V=CeU zZz|JFCzN_lGVhk6?HHE=g!jA+v_z_Q#j#cGovJ`~jMb7G?EY6WB*CU0#G7OHIoaLL zShJJmdWYoBmuMhriRUmr&r;%Um-k&|5zA$7QWP}T7+@%Kwu-$_P$hYx82QB0zo_S^ z74Zu(=m=b>L6AqSLK`8e*c5SE$m;}hxDCVm zh@NV2+ePhRd|bmXB16X<8!DK>f()Qe{I8a__@@y5pv&F>xP)AnEf?)2ikNMLR=^w4KDpL(_|aYv z!~X{6e>e1xkN-LB+zH*tX)F(3c9ey$6@Ccc7|Jia-Ir4RiaQ>)ad7nNcmM5UB~UbGp{(Xl3FMr&Tk(^TVa z)J{UO`NSBOgF$=gOKCH1NRPQ6p{Bm+hz>f5kj{HBeXd?r(TnvyO0WT|0OsJlpk7ph zCRQWfkrofoFY^IpjwbIfc{4@D$fXXWzdY@+rzxzc7Zn;=iOP6F`C!G~S9(ERMK4$} z1?z3>Tvd1ORjv%pMCU@K_|Sd^-GJK#>MrHE-~ufT*$|AZ=bO1!@KS#ht3Y&^vP7$4 z6tjhhsXYp2_&q%4=?>A4Z3VU8{}H+;VxCzI+Ku?t5d=I39@J$F7^0s%^l7dylj^q? z2eqe@D!Yx!wdW?+6x~j5A4`g$wk`?9-k8}wrnzJ+Y4x4F{$)w^RkMCJtyj)Sf5^k@ z|9&{B|7Lypto128_HHL=h$C$J;pynPLv4fbAADnr5CLMSD;+C z;j6BSwm|Q>uA(;(;4QSM{?Cn8T8+w3B7>c6sB!Ax`Msr_GMKYj*o1&~mc<^Sc4xgS z{K;2)}Fgfl3t{zft(NV3u)+rJJ#S}dbgvR z@9(}EtA*V(%*J`mx&>+Zib5qK2hx9=H8Vr@oQ7#|UO zglK3oIb$o`5Esny{xKu)5WCsYowta$dYX&aB80*QZ6Y>U&P9xkHU(StMvEgPV34ou z7B!bbNul$yvS7>c9_E-{Bmov=W7;F4Y9|c;KSOxg%HoQ>LW~zUY%Q!4#bWLY;Q6sp ztny&-v{9_yV)bJU!C3uhLz7;vE8}{R3z%uSJEm2dxRooJf2?9}16GAf;hS2k9&F%) z)}p#=^&%R$&fXXAL-X>&(?KmuRO85;1j9su&3+zAGWb=9YyMr@2Sji?aSJPNgI9xC zK;jQ9Gve4c!$w!E-*sDp5>K zD?{Tv=ZKZFfNNk-d)3OhHdG9q3~IZqoO450@tps(a&q`tnqBBd1T)Sqs38A_Xwo<2 zRRqovwUQ9D3GC{^co{)-ZRs@_5?|5(@8 zgIc&IE$USDkv62&N5cGbGd{Z>*+S2q5&qnPPlO>m)aB!$M^P)FZJI&7cE>u`?+1v_ zp?Xm{7bLlZR&oN;dRst?*MN>uV$n&tgUfi;JQR%Q3VQ&w0a2J^31}a~N5Z+2JqTFu zQT;=zf1m0ewqge#B z=~ofS=;bD;T5hANb2B+Zvk$L=y+CBo7Svkcs2l zHXKpHalhQLhrZk8j$hFCrE=$7FerAfqv9<#sJ4%)oy4PO9o?>uz2Qoxvrl2Wl}SF4 zAJ2)LzBIhG26=3#Tax|n&U&@W!FU~`2vt<}GA_ahs#Wzobr+&tMEAU%Vwh(m*UJS( zj(!2pJ>bd=`IWwa_SFYT#4x&|;c$Vy|0!b(^n8ptdOpSmdOpSmdKzO)k;-}V>Ksa8 zJ3v3YFAVg+vkozy ze3a+1&(gtaH(k{i!f{dtH+QmyN z`9cwgXJ9h6Rg^oLfWd&}0Vb*mT!?o2+*MCNa+N&o-(a2NS=5-^F(XmuZA@WiQ$orW zw=gD-;bL;$3>t^??TOz~3?WH3l;4@P26%ko#Oz+1h1(aQli24W-~cl+Eiz9E7kH~( z8(iLM_r|2(g*7Kc%s=o?!HPz9$e8odn`|~VxB!`m#Q4X~>M#AvU33L4zvv3OJKsVC!um@&rRe zeAbeVlglh1K^#gbATmmU3KN8fJhKX|is!kJmm0`77{L2qh*fz|>qA+zO};s%Z0?&k z8J_qEHV+1JxDyH=eK6;$x8cI#4;wJn(_`in#vd-r&N(z|Qbmp+eO{^N|}GOF9tycNdYOz`fjUb$3^l6MY-!+=d zMc#ZKTINxbTL<|78r*_>P`u|8)4#z)u*xHM9tF>FOoQgp|HY%2jbFo)cd1K$U^jno z%TbDD!p4;FS^oA2R}*yAts}5k>+Gh%I);tlMX)DiF1k^iZFNE?F6qw0{C&Z^MGoa0 zwjVRNdy%@;$@X{Wp~^?yj`;T@TcPN;q38*dcIQnPLJhfCWBp^{Qta2&*|InnzC%6Tqkud>ich0FN{~ z9m4m#V!7i@e0yubxgq`l&ixV(AgYIWWbp5jZ4>b?587byk47atqkC%Pvo9(o^BNq= zxvVep+2rugV%0=0{18vaTS`3s6zAYqP&i1#7Y<fTrj4&Dk5Hi3f`)fI=a zYtTKlw7WE~nCj=KdR zf^U(^`xP%(HkX)=X~fBAsXcJ|*&Duq){e;lv^{4)ap@}h*?A9gVb2IR%WY_4Z}4{x z39>Q)5e9Cc+T%#9e)#%F#4p()4C3W*tuS?#h9XeCChe20#9=HqlyigH1w8KM^e!k2 zUu|^7C55_p!6B>QH16id78Jt(A6UYzmofMhz1>IabMauex7T56iB@^YV1{#_p?!}2 z#_pA_&}L{ibp8ndLZste7t*7)f({bk*p5dnpgN>MRkiGV0mbQP*J@j82W9rpS558+pUK4os8sf!j-V=@1c&;ee5 zR-Ed4kP!&+^1MDz9;E6#$+7VyQ7|(d3&l@OEQxAC?R^hS0Jp!|rAMfUOM4Y=-1g5M z7!bLG)K{N#z=}M95uMK=FA&g)b~(8lT9+w^5(xg67!ElpEbsd{%d3=EWpt zh%pF66r@RA74RTUD`JCK7?c_g$7dJuY6vb|*6L~!bz$>E0D}ip12hQ}<=P}Hsxiq% ztKPwkBdx~q5H2jC@{rGq!RME88(H+r+4>xkHUQ>u=?l=dcQHfsVyuBipMubOx%MRZ z18$LBBpD33_*jr1pj`o;lBwYNT{OWJQNCzGUQ zH+&Ifs2M^rvVSP%rw}7zJze#>mIc=YLrkq2x=CM=s&W$cpxi;%IJ7!mJVq>e7aQ!+ zDh-bqyF!5S^>2td983=90XJ|Ih2-D}gte^+q@Hbh}!+2nQ`Mbm2%Nn$w zgKad>{jG?167T*EF71vZcp|H?jur%h2_>s+Ob~FzonXSM{?HPm1n)nU7|fxLg8ke! zod;Z@^`Z>no`m$O)C&^ezZinNwII}m!a}%K_Cq2Db4bEbi{j|or9dk-S+s8+1j%IF zARmzCNdfIw|4YJx6X?Jf!G^TlNva-XT;?kkm)!XR(yWNvXV}m0Q>uX6WNiG*WLexi z1{>I`u#P)HT15h3=#M&wgd%*Mp)}!HQGqmkDG5ZE9MUl`8Z#k@2t9?%Oi8DLJIEpSp&Vp~pgSoI?1ngU zWM&zXFMFB9d`;(*Sbr03(A;R>pW$)sU~ID^DR|y}9%suLg6AoA`3_NmqP{YLu-!>E zc{Oci4$`O1I_=xHg9O2rwSxr0mWF&bM5>0~Lucg9Y%*a|C<3v!?VwD;_7oRvx#KW; zjC~|2B*7!mi&l`?<&$+E00{CME8+mAky|+b<&Gx++1@@*sO8S@P<_2<3t)Ve7up4C zQg>|b#B2@ufE#!7iv-8MN6M~8FzzzKi9Ow2R0Ljn^8N>9O1tQD)j$sQjyp{QIhpef zlFXvKo?+*)#=aLvx}eK~X{`?J&ZM-YHH$Rp#T-bhE-9P{9T0!9j!)(3&v+kc4>pOF z2LERF!pZznBkh`4oD83Da8a2WeAXd&Xm0QXXCF?^NQgkfo^2}#Nw+8LnR!P2&&jWV z*~-hd^7P8t4mvRil{$_KRKzWD;u-~E1nI<@`2C^=!+>s^nuLHDY95^bgbvOp>X|=Y z4YGG|i`dHw4xlki!7zvJQ15D!?tTMzyE|06#>y0i84`xmEihT!<1l30)}MkE4`T2#JzUTZsYq&6tXkG$>IY^T7&>4w?@<_W6J|+qH`i5CZ$_!@@pt#|ZUD zZSzT@^2*`4Z(4^$caZN4!t&4$aMa1C6-o!RyZ7sQ+WR4(Z`X=4#7`QFU`Mb54K^7< zBzJ7$N3mo6gQjOp&U9UL?4o-LDO0<1J2yS#bl!xbp%M64At#J&g|7KJz)Z1i5xylv zFIL7nhrpkvfOdKYlvt!VAfRcTgs2!~7K{9W&Otb*U}>&s0y_uV7GOk&XshpiSdYfp zhr1phLX1Z*DkC#;pcB*JaSS27xJJ|Shj^~o8y&k;xhz)q8~!328kpLGoN&JU!otN_ z)hMTY+!CF?SPDC;ft_W(sg~JB&8KQM?lbh@toni+ud}S;~{b8qA-%E6EW!5O!f9Djm)>SR`d;duL zz16zZq&+6kb#oTPenu4yrp1;zx^rt0wm1zDo%IPKK~EpXqV}*dJyeLX322qS=2AA? z52{0DJnIX{ip8iLMZ4_w@^Q+{K2-5mg-(kq?6OJS4^>ff>hiJ3>D#wp$Kk%MO_9^p z^z@aj^^w!%^i;WZLFDw+;Ts~SSBEPjr>_ZL7puvxauiF_M!)?0Ue-6@JpZyj&Dk9p zh17H{Jm0~Vk41N9ML&?cxAQFL`SAk0dMxTp?Q);LsK)#Gh6lEPMo2c~P?*aJBn=0fHt2(MY;i@hOa{%qdY)v~p*zO5Wf7U^}s@UQg;8iJz z%lzZB4?oRcAIcJlV=t5B*cX?0$*>`d0#vlK6}u<-m`Oi(>YyG%TuDI^tWTT-$csJB zd3%$!Kc2mSM19sF?j0?_$%1~{zW>(^tVSmrCtSM1?1KXseFV(0#)NhU<$vkdzJ&Ts zS~a>d!tn} z!(ecCf^8H_;?eA%KZ8uj*Fes51my!VD)(hW!XEC05Y`(Lomeq!%@=Et_kQAtUk@S@ zlZW0>a z=h)$cIRqz&$Q{h#!7;+LS1jOe+fm3d5KbyLn8STYD$yHWEfz9oS;Q3E7cq(DOZ*)B z!eubWT(XEI3}4&~=1}9*>?+|ffuHbfjCJjPEEp8jq$GoqwF8+1Y&A*O$_?K45zebAr*Jug8 z@T&%M8@1Z65v6#WB0Q-U=R%{OySM%!wg9o2hRvV?Z=fHH_Te4m1(d>BC<@DqHO?44 z;XsIaKnjltK9&M8Sf{;&PSB|u9CK1m5M#;#;PDVme~&bBzSvr`_`QRcrCfgh=TDGd zkuv3X2ML4W%NqP9RYUyTn?tM9a7Abg)%Bt}Sa&|Km9@_BbbgmfuJ9nK7~=0nxg{tE zsJUh){TbqZJu4tl;4XK#gzqgih&>}P2>IVP+G8e*Lic5y-hFejk>frm@5Pe*wOGEzLRqL<3;dKyF}_uo3Z z%Fi=uSN6ho@tEQBU&Vl?ys8iStn%bHjQ`Rs{lOhH{Pw#`4E|c>1^)X`LEz8A76f19 zP(kA_T6L6Gm*J^cvEV^ONf>_6?&$1ZB74U{XbD44Tmeg&^&BF8t^ zFPG5@-U0FJaJ0s^{}vLc3l5nLE7K9B#8!y~CiXE0t`fv8f+@ecoM-^})7NrZ5Hbwj zkTb*zNCMHX{2ikRd8jVi z>w~#_fX}$lfba>Js*G#@4t2M{$u+;oYwk*_iIdQ_+Y5eyCh2^1b9geH3~vV0I0dxz zh-UEWGe5iP(z?(}DEu01G3E~KNmL_Mj~9@Qdc6;|pi?p>JhzL)AHWY>Eh2ZEJ4up; z|BM9^%2RdldMro1Z;|>sSh74aM09@R0kp(V5wwdfyG72RrRu?8fUHHLmO$ zw|8iRJGy%&-fa3KKXA!*$8q@eCwRpgEtjs{fkm41ibj$ZaK@e917Q!$&8zf=0;Z}_ z__w&Da8Z?}4Itv9=!RfcE^5AUYdHPEFG&asooF2@~j zCAb7tJD+$5c4!}hEi`k5MoHZAUq^PocG0gWQ||a=4-}gSLMzR~^Uw?p4x%RtT;&l| zaAXGHIEqMtjIJG9#c z6<@$1nM(yFKi-F`V4)luC&KI*bz&tglwnZ)n%=;ktM%O$WnpF>!mal|iX{t+5IhG^4=mUfe8U9Ia}Gi?f%H+Zu=kiE@OPJE@}gMG~oRntUTxV@sQMNR(+L z%reG_zP|69i@gApqfHka7n_AsBk_E}ONQs>QwN(b=sk5{2HhfQs05ZNy2w6Q z2T`~bVuwLnhHf;&5KRfWe}s!O5UbOhG2gc4X@eN+eK5sOU>O(kfWvwby*3j%08Q76 z9>XI=ft0DC!mrvh!nL7tWFSOK@8X1(&@;o~c1po&PD8(^s8ut8Z|7C`z~wCTDgh=+ zz35RC+37|mB;i9);3o=2xZOZ9_kkFHJd{m zM8)$U0PGFUB#y#F5HB-3O^pdp)xh{LG7N@+2Jp~&cV#^WOW5e2A*yM&(JO~HB4_yZ zY>ddheGRcCWzJbcT*8Lfp387SnC>0=bVEMtYkrtXs48kySWIL;5@i25VFfCM!98Hi?j zo3+&wIzW1TOD>n;<){i77AJtTB_OoR|GQ@$T`NB%rH@t}BZZPXVdmiEPy%=)Z9B?Q zOhGFrqc#duS~i|S55shZw%|j%2sWCOUb#ZMLKH3yZ6;_NL4UrNpaLQJ0SMi${LoN) z4Z$xQTT&KiuLCba#y3dei-X#FL1-9u+1;8&Blo4mkn1_uVMvK5a`(y)b>(;3n^YX? zk!nJq8dqXvu@7t*B{tN<^6a3>c+CYDY{u`b+sRSsi`4dG!~$&|UbgANDf#ws!Hq2C zYud-i({iZWx8fsu8Rrr&T?yj3#0Y|$<>yCF{rZBFGft_>F|&hYK5)rUig9D@$8_bW zR?G>Br5$j3`}geOP!ECd2p zdg9mOqmjQ^0(OIwAb}jYok)o6$6=YR?1!xE^T89I9n~Gm<*-vT8hMB`3;CUgO^JGm ztRMMhF0B<+VV`oMdbUz0P}d|-hv$f_g`9|Z8LJ;*jt0Fv^!kr|w7@lD1OI?7VzkrE}wtfuSu~IjSa3@Op zHO^Rs=9?bW9XO0C7E9z|Y3rT^@Ud47_sUPe;s3_XQXnRJ**uH`E?g>$7D&6HA+3}3 zq9dkdX;TctHa%A=?HC8%$BN_2mgfg&3h8|@%2M2B!&3NeNZ z#!kvP)hEHOiFH|Y2rD9jlJ;9r$rZkrN=csZ-4%Of2VPSdQJ0UBmry_2n!9So0It<) zGSIsO0*tFbaI(KNj8;oUHbhlq!$-+JFyo;2pmGuLymS=#KsIBycehd?#>=P9Axhw3 zRP^qJ$?)M{Wsc{!h+V+1!~ky}DMKrbt>>D<3iYaYy?#Y&wssom2AyU5(2ZE<5yTp3 zd*KTBPmnIP^C2jK8tbCZM>^>9@d$nXYzuw9ycwS@4?XfE|B5}zza9_sug*69_0)R) z^`j8J9{YCZWB6izr`q{29%A(H1Re%?yAJHAG2eJ=K<(_|(5H!#|A4cE8X#uS|1|dV ze1rZU(s-!;=k%f{`Q#Q`p`SV&^FK`sACBq#!w|O5`}Lw90?zMxDSDaRG_iGz5R$qq2*xHFPHwo_w!d^3Uu%Ou(R_G`fYryzH7!PG^P)OXaAKcw=Sr`}wRvyVVQE|(9MB~*v5>qUFeRzH8%-oZ8pRsng*g3);7^`sb-Er22QcAyoa1!B@8It?~YxKD@^_p4Y@~fbpD+HLq}B-ov%T z-s2mFA&^wIgUZs!*~)r3rJpKUpZ0$`JQHk$=wd43;|MFQ^I;54a!S2=(GchctM=iG zyD>tW8cnMgD>WncHY9jojX_HJLY%oTuW&#eS1|w^cCTk+nV!+iUIb%ro9i?D7Mvu~=FlG+zC}x1Y6pCpI zvT&J)Eh#HxTgq@5IeRmE!29_omv>Bl;9=my&B^iuZ$ad@pN;_g#_94)mvJjEKkzN& z4*w4Nge)?oj*XL!KM9$4uUd_hGZh2hhxacjQxX-9!i*SYB{@n{!>K{CUvlT;^gJM* zNkiqAKFr!!z;batb!-#fwT^9bA}f32)Z_BjDbZn9Y?G@+epildbDbK1<0XaH$uIpO zTaMCM&ldTvr6*#WPB0x$t31)+a(vg8;^Q0Tu}$UC)0BR@MZR7>cgJBuDpM$4>P$QE&^-7AlwU+ z2R#&-N*s}EIr_09`Vmf5bOGQ{J~6lw&xSq0&g4-Uo?qwh&@e>fgKd3(%nP>|$IG~U z=aRIOo&`xMS3w=O<>BAWB%n>mLSK;I;={)`0{Gap1|M770Qd*wp?~6 z?3eVpSlJ2MR%2-Ym_re7@jh^RM`N3y)TN7+-$y^VI9!fv)Q7XeGCM~-m-eg%oT5iV z(GRkPwAU`WQ8{Ih51BM2;K?#HDKY&eELEjh2WGw6fNLvxtx4VIbe+p<^=Vn*0>TU% z1`AfF9B&>ThT-LbYvTi!7r&sfu*}8Yg8}9*^vs8V-r4KGAIa;3zd-{+Qsf61o^96l z2cX8uKI^wkZ1krn&?0}Mw?%I2m9qECQ}d#Op6G|8v-S%Vo0gbe5gq6O8;SX3L$)m{ zrH^v@@X-e`deIvCXcH_p#R>j{uKX%)%>^58u-YUUD}n5hbT0Bl2TLJW$lEw_st?EJ zrSKiGE%H$dZqR?Kk4%4fN>|<@uwSHu6XfqF(%*EZBpP(wD66_7Ql~}2{27FFOQ2Te3YF>3~JfAi?^Hf|c=9E@* z-+}^|k*#RLrGH7ghl)kNAPv+y>7sF3KH;~Mahn|7SM>AJobQ}Rw+-syt54>6!WS|6 z!3LaKcCfZmykxVv*rXqaRl}1{=DET-KbL&}ii@3a7c1VuI1y;gZgqsdy7B8r)s-i( zWY>!hz{Od8>t4JBgSHUl$4^g{;Oe>+o+h^0&ECT+`0Ufpy_>K8+U~+=zbm_+uCo11 z56_Qkg^Md!jJG?z#anZbgKJHc@f%URbML*s#?2h}obP@2o^wDs`ny_fbK~wL+#rUV z&fpkp-H3jQ#ba@FodyS1tH>b-6w3y556t6Nq!z**A6c{8=cU`n{Nv&p0@bgfxbTA! zf5xFkk5-ImKCag?vl$#(&NyG=_IB3{Xp1s!*H8Ljt8q)Y1ODkSz0MU~2d~J#=dZxe z-R@X@Zw0PA1Dayo0l;ZEKtEFMe}~~m%KZnU>yDt#QT#h5sq2oYUq5OR)Eo2n3WCsG zyh_o`98xoN#ev%?&^n|6-O}h9HUEfK4S$6BkTJf4BI(rA`f+_Z-4}_zqi+F@MPEMJ z+)QqLwEdVAK6fp<5Qymhx0StW_F9#v@S<^|1f!`46h`Z)XQ zxPH_c@&>Fs)-t{x!M%G}ZOjEnC`5x3me^E>U;GY4gaq2>j2`_f@vz#tmQ`_bR*tE- zl#~-g5ojSrL0q5d#$|aGZ)jamE*zH8Hx=re_@1^$--LjMOZ#XFtpQ7ghyy1nfjUJi zL%4|5mEnap?L0iHZDq7&M57thTm++gIm?tOxByQZ!x|O^0M`CQ5t+KOXrD8lhsz=J zW4H~?foSlg_$S!7R~_;H)6T{De-gQd#&POPovWhWtqtQW4~Z!CtOeVN_`Mq+-FS&` zgfG56-r5SyaqDfx{IigMieB(X-jT~hN033$dnKPZrnt55!Hm=KCGj7>j)eqKTZ_df zwzM(WG!|biVP7lNkD@g(c=)w9j0WTY(TqR$%DF1Q_y=kjk{)*Wv_IPVTz#?=D$ z$EVRLP;Z}-#XhAoopm@_h_i%GPfs&@j$OAH(XQQ|_(y#BwBytGP7dFD`T#~7yE=K=`8bg&_MYY= z3oZeo3D`A=!_;FVg2tThVNBM33$Qi<6tq2|y@M3M<{U}=hg9(E+;XF1pJPH@>df9> z;hv}Ee~Qt?4UtRTJdLRM@EBg~HEW7*)W?0O{EE{iZ1!W5A16;p1hjwprb9v?3B!b& zk2iXRg$f2#g>0$TfmwrWkA`I}M2KEgy5D`$=WJ2Ff(t{quES6rQx}X!_0Pk1;-0POnDnBBgiIw}0c z5PfT1+Z~W2dISFgHivT98+f_Q+S_{F@Q=Wf4&v+t7VR*-tZ_N{`{ zVmxqCWjqk6;as}e4x&jHa^Ny^c8^oLl|L40Ykw-tj%WZx*l*#R^gBv1_0vJw%Sn?_XG%c3>=_8m zD2Fstq>j?f&Dbx8)RVr^pmyGe&wHTGWg4)fI>7md-l95SR>^n%C@-I~*ij0T0h9(JZcyK)*sJ@{&2;gmcE&#UHU)529*-`9{3{!VL8q*xTDug?M`+YS0>!+ z&c4q@riCem!DS72k*rbs7B{3G+D5ztAIf!fwol(!tli3KqwVBP#ZB5h`53rj6ZU06 zH;2>%ViK6LiDeM0sXrE47i}-4>$OYB;J9%wxKb+ig6bgVG^O~jf{DmtgV3;mwiNF@ zF{MoZlKAo2ChZPr0lnA{M*#%wgm=K-55e!t>l@*{6=Qzl+gtw&&ndcR9!5K_DWJWF zeH=^?#^Pcv91hlAT+xe?g>XP&QM>$_RtaSEN;^(Mjp2Sw`60S?%6qd@j2M^pv7T|$wq}=%iz!fJeH-Y>{(U@{2HKdf8jZ8BenPfDgOd|9hLxk}EuuoXo zRuaBLJAfzVgCl=J`xPGPkf_>Lq7{I7&Dh#ieDr$-bLDT9qZ)o(Amn=uc4JAdQ`-jJ zq&o{r2;d)$4tRWE5blDH zTBz0^V^XaBvDO@hxyL`2{Ymrjrz-uA$=`ko1-$+zl zcQP;!ezXWzoH73o)#XRvk>H*6_Gg~LA8S8~b>GRYU(h#}#Qe|ba|7Cs&}j$+1oG0Q zSa5fq-1a-nrnLFA{77}Q7k5O%F&gpKKdrnNpM}#wG5=$@EJ=sJDy0E^F0hcCa)%af zt-Dbh$5==AlryY->W|ehEV23u(Kqymy7$248n~bFx zi9mQ|{0m_Jrc37eA)PANBdEq5hf3ixPV0ThgzK$A7xd_6G}uDxoqnz32Z*SHu<4wz zSp6RDTIfe;J`4_B8mD=2d_h}k5KwCofJrVJ_8HNFdoj4w3|i6dgTOUu*MchOen9xW ztI>d1D$gS)b-NenBRG@>LBa2qoIu2*La*HH3fE%#IZ6w)QSCR#tZZ|IE4F*NYcOlO zm%9oxM6b+2fVIIOybS`eAfbp{AISx+en)Tv8N5CDK?;}i(NpjO8=YH)KpqKbZ+%Px zd6Wwzq~-*)z`Ian6e*!KZ`TX8fSKUF~2 zq2xyH#c`!;PD(!I3M`r6jF!dfhtPBbCjVrD2XI^h8b^XtKL)8e!KG##b_z6Xcu)+> z72h|!n&q^h!UfB)eVbx+u1KX6{>I6y2wB@4OohtrY_;?MvG*?EQB_yN|4e2QhGbxZ z1PB*33Mv}3Ku{AV)&xiZZ7?B{5H!KIn$oB(h8d!kK;lU-ljBs|imh+;t$u22zuLFH ztz23K6G9ViMJ~P-get96PaLXIX)?jc{C{hoGn0gi`u6)j|Nrwn-ftY&UUH7oG@d^j?_wNKI-m@1;WHF;EuPBX76SN*(y|L(*ex zP`4~J+l*gv3ukORBS{6x&h?l>uM}GvARlUdf1EQad9l3#dX?kmH|0M$S<=8knYklY8QAxVr)c!n}ef zHf>dx)8?Bhi;T;7*PO7+9K4Y^GS?OHbvX?Q%py9<#|?+TP#9flME4&>11R((Ylw}@ zsE&sH*D$~6pv(BNS=||~#IAf3`UYVvF1>K0j;+E+EOJGvCq$+d8a0q>lWQ0YZ-TeP zc}VG0Zc4#Cta&{Y_dBtnKzxhDh^2(XBmeVD#W^bL>upxg_^#+aU8yYzArejfWVLlq z7U8w@F$atIv&eUx#Yna-sVLbNsoIheg&MUmHBjZf7%KjyoQc0k57qaI^|e3#_q?(d z8MkmLN1ek|mr^p@>)O}jw(-K-^u+hrs z#zd~m zPpt8xtQr}nihh{NA)7z6RP@4QA1%w>%^cXz;lTcDlTsHgEG#NoR(CL_bE0J38QTJL zCb=vpzGR)MFLsf8O2$}yxm!DR%F~c9A9nMk8QRHHK9~1n&sq@>2WPAd-uk;_J&7Rk z+V`9`&hbE?Woq|1+hybeHs#X?fthhL51o8%l&d^^Rv>N@m_1OXW>HCLv5rQ4#$imZ zyE7t@eHfh%Kmz@J{Ug1Vtv!eYJtx}^vCWRWYe5Xe0c2ISh088El;gz$OQhXu!H&|G zyC%677DarMQjDk6&QOVpVBCZWS`HgL=-kNnl*M?kNiUGNdUZ6rCc(2M7j0=`f2duT zV2rFWJnb$ndU+}m0`ZZgD4O*w$9|%?HrpAv)4iyuaB&$p$cnc+vbTS%rH7KSRCek= zq=FKhWTLK-Vya4TUYP7p;`q|j*vQM!Wz7kk%yTB&VdoUhmk#6m6*H&*@A@I~`M<8c zqfRxW*~oFN7P6}&v*cS)+prGLM@K6$Bj#8q{qLKV_{^6S>&C$$gS)iNJUgY$pZy_n z>eOmI!Le8CiezlnM{}V1OPk$Z?>mB+X-Y%4?}DDKP(Yi{Emuh4w!oNBYCY>a@`o{@ z;oOnTofF4_aw3cCX6kjb`!Y`fX_b#K15VJm>NU!t_lg9d?oF`ij$<-oIi|Tdm&IC9 zQ%(XNVmGL0d6cA%p_wyuE1>~sp2F`@yeCJk^&l(?a1E>m=FIvd+=5n{N*l@W>nVZ8 zr`U61Cvo*t2nB2$RN0K1u3|cDk93Y=im*fqZ+cWX!wJFQDl!|_i&h$8#5X^}lLUwV z6@O^nY?i9Dqj4zCag($)pfUuWe3Ylax}WghpV+kS39hKW4rygIV53xI_9WO? z$9*9^3aXy5*s;qDK1-r;lWaUhpUiw*=N6D~ka#2T!ZE~Ads3@!0wOeU-ha2=C=Ghs z{8u2RyxjZA%1c6Jy4kT--;I3MsK)O5oK2q4uxL)-jZN+$!Qe4z>TQ~;+uX!04q$cl z+1k^EOzqDk2nd_Bj6dCC+{ke4XrsY+ZBHch$7ntNO;x8Vn!a{nB=lST%R+x6T(SlI zeN#;6k3R?WTOm#Ve?Wg2?GAu`dKCJsTrOa*ZAV$v0=_Q>imL$rRDeGvbejo$$yNmP z#{+#dpDP1HLdntGz6BC@!adg-15wTX!ZGMLc=j<^&lpJcbC#Y8{YLw}1O>7A6E=yu zYnxtg<8hzSHXt2fTj}i5+tj!fnddgW^}?mDS?Mv(dr}68@5YH-sJJ-eu%kQcXHv7@ zRewsVMC)v$Tx*=HmD5U$t0=&96V`H^9I*u-mfXe@EI1sn;S*Zr#x4!{N15^!Am(Lf zHhw*guOm;a@tbM9_1(D7Z~a9|oTc>(PH%m|nXTjdf1bz}FO+|yHDf4N3$-c3e4ggK zq`Dg|z_GhsY#oOBu2KaiE97u8>Q(l|K4Fve zEBtZOTc*R{%F&rwn+kBeMFDCKkcU(_9qpkw2f=vFw%`CiDh)2k(bcH(K2Gm7#*!8B z!#qbguzChTI7=os?qA~s(WVA(i0Ew);{}s@{O-D~Q}u&&C$m<&`H~s-mZR~`A#r>4 z{25Kjkp(mK1v5f_Oz#b>&Wz;GkTq85sZ8OsHn|09F--=u=V~3NPHXk6gIXo#;;gBj zjRf+^S~+4s!>yG+A(hrEJzFH=ik3g)l=NX^dhfmnz2G@+U^lQ9JZn!TsGhjxtAd(V=i1ew+ zWkF;E!3YNcWd~6j6;RIAo1crQwA^jM0H2i zUUhFEykb4%;5o~mygD5LvPd1EnnwCXA~W?RM2K<|O3*wJ7CJfFNyzv5lUKbdteN^a ztLOwNN;y_Px3Me@3V3}qFZ#WM^IlZUFqXTcC5nyv2jvgpPT49@1UG=3&kC0u$Yp1n z9LP-xb#UdKGNF>f&3ID6M=(}nIUEG{uj%lGt>)g2@q%t zE)^-;P$DKeaJ?QHrCoRHUr+ zNuM_l&5RG=pGzXw8Y7>j_Z~T$sF(G+;`uo21h&To)RT%uC_eENnWgWM4T{j*_+v)) z=W@$AnS}tnyvCT$3-*dAJe3h^l7Q+M6PqFA%$40ok$%2P2osKmGfRzcbFkB-7#wz- zWx=2@MDS$s0;vR(e*x5r!y$ZYWU9#m73%r!$W&AUlzRb_0V*^W3s>LI_B6AEnJXls z)N84*ZnJPYicgVdEIy?)vR?QrL#HQ5qzn28^`7yk3gaM^TKzCge z0MKpC$njk&Qo(u6`U#5hF3CfV z51Qvi^u6y8DlF?j|lu94>(J+(GAdNpt=&hcp%BPKpU1lzS8pU`uK|+99uzx6cA*{t!GAH_J^9%wJ* zmR)wBA~R4ip;LB!k^E#rg?k=)NbXlo@NCE@_#qBJSkeOd6ST0)_lg!CQqvKc)cA~n ziX6_~nbx5^ZNcP7pkh)}#neDWTA*S|Q$= z)7)b?V1GhGxEaolN(?8FsiB3F+-z&gpC+eick)c9B5MmNqHU4?Y*24dxl%i?=XxRi zn9T1we);@v;&(H@a(vFxkOg*y8rzN&E6J+0VjyI!rcpDwr&kuRbSC zehPQ1U~+gkH!+y}N&qP^xh@J5F&6*VV3I*UviTM9Tf*;~{Fd>%hu{7D2El~wr!2xz zJi(sFW~}Fg-h#<%DB2FfleJ{f@{{8fqC8?D%EtWZf+!~-au!ft7DQk|8eME;L&0Fzg*Z@3=lYC9%)=f}nX_5oSc&&Ts+8Cl-q@mE$*1>4sDdk}X~8r&9~P?=V?_UFrlV8J zE|3wZ5V6g)8pJox&uvbxH-?BVV$0KF2@3 zD7iT1rDT8Gmz@1w zpF7*nj`d!jGkdYWnDWqlTj&OEnBcZhZuVWi%d&mGaoIJ#VcGZlr||;8gDo_f8`TG4cU zYl(I;-#@+|L6`I+Xho+SQEMj`_%9oXqL~(oR_QUIHn94NYZ?XBcdM!@DhW~d;2#-H z(;<=;p6|O+3xCZwQw!hhyS!@Il1lGZqNkC8!LB4y{BW2)3t|6@R1o%0TtEqhuu>EE z3Soua0bx;8*1{S7v6b5WaSCUhWQgJ{43|v{U*jJwZxzRcaNyUB-OJ@gH2!V*tncty;qUs_lP4ey%(L9M<>sf_g0$q~ zD(qs65?~n8xw(t)3_ZZj6XfVzDGRi*f>?Cis6}-zi>jwl9*a9=MbE65>S?@+9_qU) zIY4YGKSjK@inLjJ8yXwpRI38lkuCGk7_a zq%@Kig_}#J)tzL}>P{~950kR-sQoy9Cw%+ix|3h`4Xrzw>%)bRtRARtI9UMG+UE@G zn@R!e<%{=*994@KH_aLL87dw$Q>w3?6s$;1U!56L8}#(v?))^jAO8?lX@$mcIqN|Y zj<6;9?!w|CC2TZ#^10{nX$v?+ZZ#ZqV?4(w-K}^`DlRoEszMv~HBQti%Sye+$Vp~s zy|z{7>-m=UMSoUWde+P;XL=lenoIou3m9`Dv*}A?OfJ(+Va#qQ>la~6DHA|p%$tHC z12AS1b4g*$Oy-ipm@2aVpMo)CP!Tx?#^izlUxYCSm192>V}8d(`y7nIwjkd8|4-ZO}g2JvxM<;uG#{lS85DpcAcLzkfNP_>v-lY$c}ldCHCmP+pdB<$hJ zz^a07MT@%hib=4s=@ps5Ey8i9A2LZ%VR2PjsqsGQFQ|1`q)6CZsL=`iwL+s1JQ;vj zV=YQFLb1fCkdzw#LD?uBii08q7o=)gwpC+dq-a=?YGbXL50pZ#RUt=lEn7sYWpc=q zghRd`I(0gS>|)F0>^T^aZIi_&tGrvkAg?7UGcT6>h&ZW9HCK2x)OCe1FQ3$Sgp2ao zjE7Rt%EkrI$VGSqQ-SA^9b|f$-&THm`MtrK-A?3^CGRRo1uABEHhNe;&SPU^-`5!$UX{?1Kcn!TS>7_)>MRW` z$P`L#ZHCTWGZW9M`O5!x&B)=3I4k=oWB;sDS&;So$!tf)u+_`{I*d0b4;95!AQJj%;xq=c|}qE zL6Ogz>gIv`82|~(sgzBLMOIEO zETZN||IR5h*T3R69;MN6aiQ^hk@e=MY1^i-V&B4AIZ|6a+2$Xniq0_FFm5O-ldt*~ zTZy?u#ghe+r9GD8KS4`GttB(qvs?*_wID5LRzN*{n@z}kVDTMFF2HkIWm->r{MX#z6u6EPBB_PpBH+XZfp(04 zlxO3D>6PAH0^3SFqMQlaiF~dF+xO5}_W{hBM+vw(O39#Ovxh?4}wRVyH6`P0t=WyQLPwBDLkf_dh| z`ixFPf|yd-)-)_OzuB`f2X%izDDXkZ*)RSopO>Er<^<|l0k@^x!a46H?fFy1F`_!@ zC00qC{+d-!b538Ay(3>XDYhss`yi~G)-m=Kv4dY(57k7aQ&0hVD0ADhadDqO$m-^U z(Qf*un@u&ry5@amHi(>~5Fy8Mr?7!V#=~o*cf_H(Z!=K*Mj!h-WA$>d zT-k({(TBcVnZ8}LNYHD!SN@gEm;V`x=tBOUz_vG#S54Ienq)A$(XoU3dD+1kbCyy+{TkH2%z&TS#_#Hstg@E+?ASLPK+6 zRkdd1D&mZ+7}oQ)cEHwiSlf{kSdb>OyLM1v7`@}?#c*D?C)EE6ji%X3vh9HzsYAgc}=uN9Jgto?Ms|gv5H|`mAnNtZtV8n3z=**>jZPbLW+S`CqGc9^nDJJWkc~w}!u4tnJOSB@ONE*kH$xLbBh?FG7Ss#leB`-h zWlIBst7q~IXK%2dB%Sz6w88ObY49CYH`a1!epws}TH$cbBGDMoBx@f8@K9++L|-u@ ztJbypisl4}@g$sJDp77Bx|>RXJAz%CDZsVo=g;-lx>o&}XlJ6c!3@K;9+~zx?u(85 zDx?Ak*NE3lb7gICmAs$T|Nd6}FS96}L$<7nP@BRbQFRWqgfEp?}53S??GETF>BllN=wVMSCtb*;@y-u57 zG@Mc*h}H8j{EGuPd}En7ayF0FfuVLhdGIE$v~G2_4f7`^^y(6Q^^AG~rSh1fjk}NT?VwDut-MnS z`{kHjIfYSil8bal3ChS=efg8>?nSFAFWGl>C_R0-%iB{Or}v264W}|+VQh2<)7m~& zci6FucSJKg?U|t@Zx51CS0of?pIRYG9F`&yE=91Y!RiDC%~z(|@C@U`p~gn z_qx2F($c3T!5Pwe#R?3n@u23AT;NX(Y7yThP~$%}<4rg#_>iKm!g-gc}d zx$q-mZps1KrK>IsG*}WV3Dc%!0U1<4jnB#R{Ober)E}SB=DDBHh)euZ-%!xWIRDqI z@KuGu#-qSdZ1juPV+>%r`kcx%kfg7YWM)ABKhSuPoWVwU8BpE~1C2-JK6pg_uRAFJ zpL|{Zuiq>GH}B>@ELzPVo#;#Ug zkzkEeGOm`|a7o5!9~hGU29zET~2E}8;7Qg>xu#L9U@jL{WGNj99(VpkE@TU`BeV24HjT2 zQ))Q}rz)hEaWM?0D54egNf1jSIRi-grfqXsg*>`#Pzh+Jef3CT6ibX(9uh+BHsg?q z7YyYYMG;Q~0JSb8KqL7Gl;iN%o6H7uywLk0#@gkasf?}&Of{YcTB4LLs#I@ebXR6g z_o=VLvE3&W+nfF-y&YK@hzl+hmpjli-r(BBztgNKTWY#E^pXOcsq$QlN4Md@+*h^m z*cyk{n&#OsCO0V}d}0@N8}Jl$W(%ghN?N$7UKBL1_-7!UNn7T3Dw>p3iT z#18K=9)Ck7&k6k}a#-crkdW`$;7)BGg7={fEpt5^oT=%1)i)fgtL?Mhf{_eDOH;*P z-?|hzOjJKEYQM5kP;S*ESBYs&QtTViES4%Tr&*SL$%pz7Wj^nvNLy+&;2h z)Nss~`b*PzgbN$V*Dxgu4bwi13%Rrp9gy`8o&DA^{-LJ1%B`V`n=wPNV}Ej86BZ@P zHst~ zGB5_o^_)q`O{H;Sd&6_|l{u2u9P-bzaAN=6F`PJ#){Z$|Uo~-Jiy#Qfx+_zRU-f4b ze+bwpkHa(4?aiR6C^1`0g&c6g;Y3wxIZ`mEi+`L^)n7qFv>g=>LHGow&=_N0e~xcN zbA(obcgdEr{}|(v{w&wWvMdHI#kd+qG==y(#?}8NIM$^%364PkJR640Wtj%kT+NQz zAR2gp}N{I{sP1qQ54}SZdqzkF#-}e{i7r-fo}r;ally5q_NrR zRt^&#c^(8(HJ`*(?^S{GRe>q0z^HoS22h~-{F(#-?#fYS!DO>wwIoJrLa_?896U6qVjJuh(|pf{wklU4!YbpJ?06x3km!Zgu{a>SA}dau(n#y zu9W6N$tpRyBG!wH{nXUc9aw|~DJ)V~@W#D$y{aF(wAMlW;CWC#c$R(;jjT7~`-*qZ zigbvRH?ONY$sg}6IKI+Z}c+y_^^v8vN2h@wg#(3#jdAPgH z$=n-%?M*C6H?IbMcfib?O`~kFplkAAgE+f+eL!3l13+mei)m@dVKd zz>9dCx9Um#6ls%M)*^%TLl! zndr!S^a^!(L=NFQ@*cWDU7C)fnAVZk@V>g#C8zS#xQg!_r|#~RJ3h8*Y8m4(REs3z z>IUAw()*F;0WtWm^sX1EtVr~1Y)^0PELBNe9!(_CYz0-mxhm0rqWUn)ph~&gOgUb? zLoYB?iuebt^!krgZ`2Eps+19C%8}~lu=`gj^h5HzUi~AzV6RH~hncdwx*ltNm2%ij z+2(mbRBiQw7M1!(GxZhE1B+DZCYAadGxa6U1J|q67gg%xX6g%`2QF8s&#P3;Onuh# zz(|$)6sgts(3>Yb57<@8Pb7sCQvai#2R; z4z1;=))J#g!pO|7N?aPKO$mA7MT0k>?BN!bAB0AWu~Cfp6RKSDnhliO$QM-w;qMcw zk|oizaT+0b!G5Sx#{Qljf>BT9crihbg)x4MJ0j* zv)G*p`NwWmh-P#J@b{Gz8-Gw{c6j=v|>?(@@j(z^XnVnh%@(_UeuGYe`3WO)EPB)H!QyNx=#0fAI2y)*h z0(u@BGLv6$Eye$0n`jRyj$xb8wTs$Kj-gBML4GiZXV@O&8BR2nM~rHbK`6H2@VVHA z5iA7F<7Sb&2_M4N%7AP|42B0xr&fQ&r;PKwe5{eskO`Jdx1=Jj8|Y z5aW3{q$4jyB>Fg(lChFmh>Rz6zV%A@vgWv^JOUD(z)o^#-0jl7&j1NYc#Xu^m@Dujrbs0`!Ps+PW*p`Kj z8~>?x_8`tQW82rG2#Vhgr0ldB5j*OM&%>r{p^`dwMXyD+Q1=@B?U1`WFC6Df=s7&H zr{}G@+Px@n{zAz~wned2BCsed)$Q{Fb}WjpR7%No`I3z?)s#ZX6==%EMAV2cTTTV+ zIGA-+f*qqOaeJ9;r1$5}8`U%9)=CSHaDcBAryo*ra!8N3Xwgd#3JGCm8x1 zSE|r56cJ8|lK?r`Nrp;AwD!!o^`{J~^Z!Of8s^6S&OBFUytE-3{SsqNBL`lI4~Wk_ z)ktJUf{{grsMU17-N)P~5Lj|)i6P3}Y*EE+!_lbQhEZfa!)-$w{&Lu9 zAhkSZyd|~EjhOb~eJFX^Ch7JaKk4swvuaeK^Ru86-M+)>cE;h#tP6c_Rc2j4-@X~k z7CNFjK2EC6DnG`%x&8fa!CfVaud!aI{42el9PPF2pK${ui$ztAh54C+6F5mZExC%U z{mGWlXO!_md2CSHQMmy>%ewkVy>k8cH zIjH>(+BqGC3$z7;#WQoA_e|S_X+R7-dZ9Z$IB^Kb!XD zEU<*eT}HN45hA|cF`Kbkwp?PyS7Hc%QZ~p%$GOH@#fe)iCEKb}mxZMdYagQzBJJ~! z&BFEDIOFHH#-Px`Qp*@u$zFcdyAl-8cT@>Y-WO+DN5M7IE2$d9WW$S!kN6Cn0`c`9 zQ69pM;aVGqK4i>baPcyBP*|4BIZheUbbN0ue-*BvegmOOqq(T((ygVRJ&41``1ZUx=j1Z)c{IbO z2okzNtioLqf{_Ck{VmULu;7-njT5X+D2WxIRp)6C4p*P$whHF!OI(~CWqX>$HLZ8o zia7k#B2xzE_gzL(wMtM#zN!+o!?~|irQ!LlCGi2>Af6a^WZA$8tO{NcE5vdg+IBo zNM%atoG(|I+z7xx0Va4AOMg^`o5G|b&fy*qdi{@RNKkdU!htEeKb6^at%#l^j4{G} zO11pd?9K1XVwiE@J;4n2A%gBY2<#8FNzlR>zYEWf+jQ&L)JJi1Qx zm5F$bd^PkY&g?yNcBs*_SSkp)$-ZKw(J4pw*^ zzaC;*Bc7apY zIMyFeW+eKd${R*#3PMcbmPQ#{OJcx1g3ctQI&^U`*acNBf|uqb>3IgF#7ZetA%VrE z>7q#$$X*d2Pe>|A^T#!D$Kjr_`3Eu3d{M*m`y2k|SsVV!poTNq(R@zBbNU-5h9=rO zc-q)gYIMw2I{6KmP-ZMC^*s_|BtHduZS2h=3C}47z3gs+oFe;=a7?U>ZP)XvxGAp} z**St@LsP7^F0kO@vg4- z+nxq7aIWiJ;Ase|o9}oU8o0?ISZzey6U-J>u|4`~)Fir$Y^q>a#$IkDdpStd3F@t% zMZE>Rp|ScNVlUW@F{+(FtpTN{HCcP`v0Tp1^i=SEm(-cso_ESl$$w4ikG9>Yy_2A|4Golc_3!5JcrX~0 z^B$R6%r>+r>AbeK-;xpqKrf01#xuJ)A8e^HRV@8ifr#o8LRcw1d-udJO zXeLk}yPh;oPD@BR8k%0^3SC(>G;}%U9zki@C@D0fL2OG7!Jzgh z$^sthB#f=eB$~n}@mS{y<|X5t2f{DszeRySze!OX446-{yWe? zuY_7Rvt0J&G$o13a@gU2L)8DD|0-WQH(6{3@XQTSN-?}-ZE`d_X08pJwXC((QcF6y z(|DENVPpN6mldB%o?Y=mWVw#C^sNp!{fS&?$7s7J9?ti$#kI zpD1~RuBvsxyZec7#UWB(^N^XEi?-;w=9V^ZU~pcTf!-LN3O{v7n|qAz>*%qG^jKJ^ z9tX(MG$ebn?{bN7d>aizHG3rP#nI2SmLZ)#rEz(aue#T%o14_j3P^5SEXZdm0z;im0CbBU@aOaadrYe*!4hrkS8v zJ4rxs9-NZ#6qV!yi&IYjTfak%4_9f{5<9qLvQ;uQR`d`w#f^{;~IY=C4`<7d|8uF-%Y%#>p3)j$HeUug)I|as`E!AiX3x4 zidF0y>eggFB6)SY=h3Yb+i$4@cRe9L_j!`-#mUd^Yimls1K|asDDZK0QIh`VxTVWhA%G@T_V{_7;AY9 zeK-&*>snj?dZGC(MBr5{?*N#oxAi-OfeyVnpcn-_);ocv=nS^UiUaUyJdJFTAO?NvIlk zev^d~;VRtJCgZu6Bv}NpC?&w>Pe4CUMTgsM+&Yzsh*I7wg;g$m8Wn|5VBkP$P-+_| z^I^jyQV%6!{|h^dsSv3ClleaLWPX^GO;lwm!J&4b;5eP-95~tkz0*YN7oT=Ef8J?l z^Kp8sI+~C8b2$hL$pM4$8yL{0yrVE2W|6*>BmTOJ7%9LzY}EJ}^Y>yPy>uluyEa%dl8ym%fYM(0_? z=sP2XeUPYvcYEJh@oiQU_NUr*L<)U!96DK~=0^2J{PU-f;P)U<@s=N{9>t4A2UiX! zSUOqpyF=`V@}nilhhLBQ_Zrpo&H?YHgzDy}ZM;fR%Yty{V(=D;xqMz9d@=$n4-OAT+!?uTP}wZ;$+>=Pmt>y4r0@B`R-|C0u7qUOR~q?%#C`AzbL6 zMNcZaxE=a{omfesc05hOl;IO9FQV^0RLWo$- zz$7jZN;502@?!>ems4MGmtH33Ut^77^JA0nvNs|T@r8}*Ej9-UmJ`$@A^`;Q@4`9* z%y~`xS6(FVoJk$Nq~HRVk$5HCyTfK|n(=dEBsrwN$ zax6AV%LT`C@6zWXIK*V?^8DB^%zj;lK>~S-Z%FK(VuxqZGKGDF^-3}RnHMYLG0S-9 z0}dVIaOfDA#k7uVW(4~RdcgcBm z`Brgx31PsaqdwfT0UqKT5MiD`am+9D;mT{Hae%2OM_wik$*OSsFXwHbBDpe9k80`=rkn+de zE@rLa@>>>9F0&ND@HE`d=ij+tvKs@u%qQ&k%0B9;bN0O>-#wakI`b$*o6u2Pv%M)l z1{e>ed9JBD$!+%G`f=KdDJ!g4TFEn>*kee2$z@3L)H*J)7ID$2c8*!!$&18T*^( zI~#To6ccVA2LA@_Z|7@U(J9VoNyi(*iOf8BqOfd?FR24ATFV-E5ASx*!^;`Uj22#- z?-2HBEf4S_D4{gKO^Eb7M{Ca^VO0uXwY>J45C@{Via9FO)XKn~7B+Xw#C_%2uj zxz~4UEi`u&`weX$3?L37a?mc#*l#Q#!^DpEywB_t|D3dyu$b+BM^pJ{6N%Kab7H}< zr0u>TDzYc0jk}PFWtOKB@iXtpMgFddTa)s-{6m`Ckb;EbU$i&nox)IEeAQfSTw1G4 z1;(oraG&Qo@v7~=pt(Gy?h|`xG}q7wgk3&&X89?9d}jG)K8c`Fa9r;onCKCY-3BZ2 zF`A%{JHmR$$d8lSF*+!iU^p(~=;dS21Ae}@2Dy}H?VSRW^5pb#Bfb2@jh#z*R6%@F zjLE>XtPH8pRLN3cbY^gE-0ulo%C+ZB#jfR457j@_Kk3{F#9)eVh~xl}>!f*6TR0*h zBSzGI7T05dY*ClIzJS*PugD;HMJ#w7iNfnM6JDQL@H+Md@aq2Fmw?x2F?dBxc%4x2 zdSUoLc#Zs6AoUQ(bZBwhgbGJ^CGn~zz@C+dJumdw_kA!sGuJr~?Ysw9Uts}lr<~W7 zMFkhDLA4X8;&d37OA{Y6D4bwX`}Z!i*(Qc3ek>+J+v_m)^Nlp{))y%xk_8mgXyQyG zG{Ptykd#LfY+dN*)*7Fdu^&-Qs#q|%GmGhuH9rUtn^SWw>jDOtE8__wig(v;Ez8dR ze3y87RX(VTg#xly%V=@5FN8NKD(p;`VScUk!*~o#5ETb&PU-EfN8?SiCH>YHop4P0 zgiRcQ(X1%x$hXyo9e8Lup0UI6H8K=*H5a64Z`hCoqPKz&J~deAB+_DVp%b&kQ`;}z zF1pzt@Q$xMp*Ez)Ss}VQe;C!pM2YDkM4#8Z=F~lNHbj@BLU07sXh|0Pd(ZpiV z5u+$VImWo3Q?!0U8KaR+BwI8xMjh*qi)*q02N(s!u|WN$xCA8A$AM;nb(`3-&kF=! z4y-JYb~z8liMY4t1Ga18#j)f1mp?6 zz#S5?#^>eQ4Sb(8j0@~;e>!(tr=RK6E&0B51Enna1{eKN=wvA`%CNk>mAuL zOYg#+jzNyEX`f27FFo1+I@;_s?Kx@FW;UliC!IveXK=eyY1eF&)(I@L10mj>-HDE_ z+_@&8Oz>LZYTQR1CQv07%N6lVr&hd+B$oAj6lmN{Yp9?FU+2n-)9{3>Sm8@oI;t*R zj4eZB#r?Cqo((e^mvYs6F_R-->w9sfLFY6RJZ4YjQ1l1#8C8V_**3`N%1a3~q_;&s zwte8oe(de#V+o+8G+d)oz@uG6@xV(8w>uN0&uu|96rLZpRwo42dy#51OHc5wRBXtxhqUA64Z? zw&Y{wuPVWRn3VZFWpwrFx&qN$PD~n81)vJP<|r%l9Yj3td|R+KHjT{*3X3&OS93C5 zO(AoBdK#-(aCLKzGRS|D7PEsVm|KV#sQz)WE zJ0;t>Y3Gm?g2Y03PNSWh745{PK+#Sa#whKS0Uk^{KR7Y~9ZsX2|0%SycM$FTqOtyR zwDSw_Yzck(U!t93&5w%F&ND#p{~7I6Lt)ZRwa^4M%d&YU?UcngN;`#qnY7cSs21() z?x&r9XTECL8-;dunK7%+AXA-kItA^7E(- zi!3szrje0c2&a@mb^_s4bX&nEpB-T1_%9@!)8ACM8>O95!ii3})Td~DdZWxC?D+Z5 zapVBv>C1}|PETVK1b9>u`>!HjSPCkql@XRQ=j>uaL*)*^GcKhkaX1@Wx2%U*p-q1Z60_LD>R$ zv^*)HICvqO*UHnn7kERELzvN984?!w&5DA499XBg`*qJt$%dg{#NFRUVT-$$TTnH| z-AjEYcP}kOxqHc_t2SY?<%PxFo1l?|7-S@?#og~j#1Bl&f);llfxF)!+`Wa?{WXKu za1sU+!s6~QbXe2wNCgf37$dkD=oUMwz`&AWY+q&9?u|tYdK4e}j=>44=x!kZu+GNAZ+=QXBTNKXRB|K zzWuXAq_NfW;J?X`KG{W6?B)lu<uv7Ze($9B#;`2PK2B0o`rr8rp^&p#fa;~oS`klX~5A5tE)vT7Sm((75%B;k@)AQgPs-Kd@ zl1@m5L3B>uA)VN`SM~2S4tv1YlypuL)(uph*1;^#(7xh@A6Q3f*&>N** zh`Z;3Y$-N?luK_0lXA&wjHP#G)4&j#zL{FQtx-Y7RuN>VlIw*_2tFzIMD0olsu7|- zQgNM<2zopzBostB6bLF}x*ukI`v5@()7oUlqk@b*K=4dKhQ*8@4w&SqM?j#MaReC) zPZwmwm~pjo3o|a=6hTItV#WtcFYt1zDxH;YR?co%xJOfpA!5<9N-+qAdDuQs4l?p^ zz9q%jt8hTRR#)(u>-{v!jQ3-MCB+cPSxnM%dlW{%jH@v>hg^u~Z>2sp4b#!PK`F@HqpbMR{AvulP zl1fZ&YrqE_`;+0=DVrpI;O40B_V20}|@ zbcfR5*@e`f$+NGBw7whf=;FA9VAYaO!S2j_MUmFO#XI)uThrUUACKQZ5h34EaKy9r z0U5KC`o~pi+Ittaeh^>AN34H^SLv?>Hp>_?{e{SKu=dAK$oi1#$UJjTma*Tnc}EX* zJxdN##^rP5hT`;{LFWZb`IT9Lb!y<(N$(e)ZH=0;n{PEgE=n*vMYvd%#u1ITWBmS} zHywX=959>EPOexf!7?pul1d9hzYOL_I2kk%GY}MxfwS0#Mk>*JgR159Q~G-OmSD;s zyq~U!=R`v`JX9lTbK%KWIQ2M5ny6%U+WSsjeYCEK$;2mR1|Kl=JqO;=RsBhA0dwV? zf0NZ={;1FU7f*(PVB~~ zgA}sLdmGgH>Q9(Ys{eg?HD>Uunjy1Hw5UqcdkA`NB7`7<&=U|rh8aY7<)eX!Ab^b_ zf^L|LCy$R`n10ml$m6ry6Yeu;^gR z_b}LM#W-`oV~yS9-5wk7ADa@D(?>d>kT0kfK&XL2S3@=>+Ge?zGxRq(fNN6n4SeJr zM(%>@g4?sX$LGiojbP>v^KAY^?&XZNJxy1ea_>hguS@?35%Wb7xIG8WkMu6;Y>Bk1 zitL<+Pwbd@AZe?Q0PTXhn9=D6$To>=(xzEWMvJ%6;O+SCoQX>QYdxZsFmc@s)?7zB zl+bwXLkcO8fZpZk8F>J1C0=Vi#i|-SO6i_`CPtd57*T6Z6d{WiV&#j}88#|(?UzL2 zqM(wtqdlWePzc=HXZn17`qr3jl(GurI8|wmXGDVcxb!zN3(iZujB?D!w`G*rvZALS;zXYCfA_ZvJ1?~Mc(h#Cq@ zQKLFRU+CmWT03d?e??#63@Rs-rG>#8oq^5bb5gCRMFFqzdb^rVdV9uxx+ES6StD{{ zMT!c8-*d9cM~jpOl8mP*!g+Rkk6)q?W$f_o42&7SV`B|R(u)B ze#wRzmC%tJbAxVO&h($1B&h_3W-UyzqtW`GNY^;mM}2oui$n@WNzZ{^FNUvSv;uIH z!SOjx=P4@(;q5>JzFmD(hw`B*)fEO;I6HtenntpHFEPS@WVYrR!eK8uLO-_$z8b)# zbl!>aJ9-W+&5d@}+v|Do0?Ofnxi$R_@6J^hW4e(WoUw(@;*UW8syE9&Y@YUklMZ;d z)_xd@TVbCihg+ROMsbi)zFVL16a8yH=@aE4|6a6nd_!MFv%;1h4#mHk#?2=AhaO^j z2R=`b8C|BMPVhR^wi89kJ*IsWU`w_=?xN)x?-@>c?REm-`axfYLZ;>s&j0jRTXY0vDV*(6!OB;~$qbf5D8}Lp0$yH;s0wxq zX9ty9q=s;t)`I3XwuzXSLksl0mYzGp`gT3<6|Rnbs4qG6*HFnhmC@~OT@jCO#*w1C z;LzI8XGFossoi}XCof0*sOO+Fju%vKdrf|Id{*tI71z_s3`SOb>1`8?>J9!>231cC zuEfp(trW+CzL71CU4a|=w7sIo`JvtaH|pW5v_)Ou@OHFO!nz;jCA_gXFxr0!4AA~; z)9&8pyaA7JGBwZ*lYEN|FauN&4XJ-HZAGKE+?A`hdL1h!1dE-)lm|iyX8Ro=6X>+i znd5a-e;i1no5Qqh-R2*nwMGI-{!efLAd25=N<&>)Mbs^k@4zwCTubzOQs@Oy$dd?c zeoujsyXK+8@j9;%P_+`tX4wqR~r#(r;W z$@p&V-J`5s-t9H6?h(1OynptGEq5XiJ9IHcDIYJ&F3qs9@4?G!8qwwaDV_~1Z97}v zcW8eda^PsgoauA?qiIb%nrkPA;;HE5u+<-GC)0fIL!%8nmw+|*5_iwOI$aAVtVSDs z2p>)8VeW?dhGn$0Mea#6P7Og-+a-5nTxg%Qp~aUw3Duz-;truCWs&R)70HeW$+kT9 z2P<6qF5?hoSPX^-SEph@_I>r_KaYQ?#q;MgR>C_R^Iv=U8oFpuSarZc;-Bd$=o>A@y{g1l)(5ZKbU;EtT^jrue z_I8xxF^6xf$;BM!cVExN?~Ad44iJ1G)Qyea$M~eN8LL192}h6^Iw8(#LmwbI`k1@q z(6P>`yzBfKEG1s`S5m=herx$X!tXJDPw;z+-_Q9y!0%W5l=iIg80`?)$ylqt#_1a& zfF>Fq6Z$$ZG1({Ez8lzJy5A-7usqsCoDY~FQqomhSDp&TYY1s!8&TdRi#)P z__?J^_}6FPO_gY+Q#@HkptwqKc%uAM5HS`3B(UP2+UlI4z7LhUd1oYlc|}`AXAZ!x z=$uEFOr^V87gO&ef4qU-xdQMdbV6zxV^tR#r`&1Kooav_!iRw}7chnZYAdFFN#veo za6~1>MubphWzzLOqAEl<2=k+vY2MsqmZLnkH#bEE0dVQLsqOMfX1D;+dPZ%TiA)?f z&x0?~7X;n>*TTg$nWoTiHV7r_PI@R> z&f|F$4eCAA%q*}~+|s$17I>1OMSU7w1*pju z`V%)p677Z$;;j$sy1#aWy9fbN8C=P+K+JpAv#^J(+tc8YzK-RZo9+0%tH%ge@1uoyPKz=G>$dUyq+>vQv#9=Pr*-(-qUYaHp*3LkYzZoZGe#`*Qi3$Mq3hBpC z;!uwQJ7w&*5^uW5MUb%?tp4yK2W#ibo=s@6V!yLJcans@R)kX;4VFy7JmYeOb#5vW zgkwTXZ&B6C|X7yvOqyOP3g>vO30L(rlU2 z2tyK1tVv@pJLKEgx=w2RWLd6P8I)GVk%_Roy_EQ;l*CT-7%$)C_clL+-*JBZVF4X# zG^6Yl3zo1~k<-|#^G)_@G%;XUES{tEiHwHV6jErK?;c`WA}N8DC5TsG$8_< z^FSY2hP3-|(lpYz>O6pDdT*Tflv>^49n5e!Bl}-nX};3#!xPMVin#zLl6W#KEy7B#WQ0^WtO|JR@ukB|IY~S5kITCelc-P!g~I) z{#a(>>cwcG8@Qxk16S$UvP+MvxTP|{{w+m|i;FNlc5F?t7DUsgiLfJmD3hibH~07L zJ1{P+!MR#%su7_%Ss<^Je-|o3eV&AYdYeHEV8G@MMFqI|c>TV%r~e#+d- zGR39RH*TP^JB}f}Ha@u#22|XRMFTLP7N2po)O}!2z#sF1G)n4kM;(2TGbOeRR1uac z%wgH|%@uba&C0V-88)lX5E>?S+2*i`!_Oa$H~Y##4$F`}ntjX8-~*444>k!;-L9-G z=0mHSquPJ!yF^ef-huV|@M-30NZ?kB#QT%j(v`V#I>Qv>fK=RlM><2&%X~4BHKDED z=fqpdMpA>bCIt)c3MB*rmr<%~>O>5;+v`Lf84Vxa2%j``Ja>=gG`k_?`2K=fL6o*wM z>$y_N`I~43x4WCZ36-tiWzv2R2XRV-y67e(&P(LA#LXK0QH&o0+0tr{Z?J2HHIB=C!xOHzFf^;I-o7 z;{I+gn=0|Fpn-OO(z0ysjX$%tmRbGM6S7kMBbL1g#x8q`f5tCZrOV2eZIXnSB;hfY zz{rwuSbMzmir9ZHF~}SIIrt}FgU#m*qsQ7dXPbV9VeF!`DeTH-dgOE({6uSb~}2`vR1=|F*TkFT!TWBNVx^lwt8_4cayu} ztw%k<4KsPh?+cc&?q<3CSLpMy9oy@(3iB|RI)76VZB=IFrm_pX&o_LfTl>91CFX98 zU6ncYWRgo5$7S2_X(6@VZq_=nWZ4l?5FkcI)sdvg$S^w4AEl*&u!U?(Rh9{4iCTg{ zg=EYjENt?i1piY&u+42YNJ^Z1&pI=)yzOa0pGVA>#O4s0BeG@!jCM|-|0M{hh=%ql z8&u;HM$B}gHvHc}#CCQ3R%&c3LG~u6ky}!!DI)?c2^V5j((+fr#cXp2u6~glMn{Mq zOSV5ApDyBsALl52_`$;W|B0efq=7F28-k6BkxQR32CiKv$Z#5@-EG__ExVTnGDFi< zcrf6_oC`YF7UHF>%UDTCc82uQKbrJ;&%8v7(8Zo-Hp$J~p&LL6T(K0E7)3Wx??Dl# zgRD+(2S!O9g~m`pcIqfGB8mSGZSMjf zWpyV0&n?LiCQN{UQBZ=Qq7g*{nm8cgk`R?>Vq`+fO}k37W81Yb16T=!PNJE-Ov~<1 zyLKzBuG+P={S|8kv_*5#B!ERgS5dsgO7)~eHA+mv#mw*focEncK-+CU`~TCLdEfJ% z`+3fDp7UIJGFrLaSrd+*GQ!ki4TXE1%J3w-61v;Pb*!)n8MHfs!+Wrw=Ss0Atet&+ zD5Gxow)61^vViy4jJT5nBBe16CyY93!GJ#2M=z!oN_&QUUeJh*UQ_UFyz)R*J~J~1 zl5kk)R}?2^VcZt8-y}PuF-=6XEwpcCNLkRB7CR=1q9*{W8l!mY{ZYt(qLch@$*BMu@lDWmV%zzjrQ|H&IK{?wv=~J`~elk52)Di5}J0kr7kU| zlTD#drRCr(eJgjlf6?RPro6=e4 znf^MlW71u<=3ESXbtsS7s|z?|$fx}n`Z`u$f{*RY<_{gPs`vYv*Nlt0Mg;6->ez*V z5Fn)r!Et~kJ^;f#?JjB;i2X=;LzT4@Z#peBxTO^R-G8EG;x-Hf02s-!d={a)%v1WibLqJz zyf~%bU=yF_@Ri&1m+37ztT8&%=XF?$3qkjwRQ<1~RXt&7)qvJNSoIWLwVo$!uov!} z5Xh;@g<0)>wIeS@&imxyse|S9b3G(f-ZYUOr7#j*3g-5C5Cz5tSKc9GjXSSDulv7cTa!T><=zT@zK>|wB@#ko1D$c;p;=J zj}Ag`6fADYn@9mBk(x9lD;T-Z1tIY{3s^yvtiSLpR;^ryBKGJ4HqK#58SdwOj!W&+ zFCq%!m3uD^J2XGmLL$Tzs=!NtxLI);`3zH&t3sF>V>JD=$8TIMv$fHc_gUTvrs)-# zOd(0|x$3QJ#fUEh1;>AdWIZ#_j~rchinlvs7y{vKda^ zTd(fTYk9T9hcEbL-Nv$`IQ=N<3I5s$b>s51s3-QH;@~yIukM9tH;Y$Mk1dj^|03Fy zmokP&%tUKs3`J9S3d&@V&JQ2W3^=0PbfA$+<0iG#ZBk2CT+WZcf>sr5Ru)yfhXYo2 z-y8xG=oO2=k8tVPOoCgMuJb5$O7-HK=rl^~DAX8~*oV6A_LN)Mi4tUuOQYGxD7&)V zHCa=jn`DRbh5xJbD4=hae)AUOSCjq~4K=mpGx>WFQ07 z0`L@>A!*W{-jIS2@lIr2t_@Jn-4J%_ z&6{OqTGhA_sE{_n4{KFX7&v;s;KEw*uQJMV^&U)7pM#_&%+rt>;<^TF6@;dHimI4A zD@EL=f&xPB+%|R=4&d2bxUU^|xbM|Thl1mcRJI`m#&Dw}0iLHo$*6>djttT^Qob^F zmT@fy(TKsT186>7@OQ`~;wi!O+))k*&fDrkNv|7X$+%0RIi06*={~E4*JIF?g+l%( zE3}E92_)4;=h0LCF{KM9dyHEqXBtZu5cS*Q53_ASFT(&q@hib}zntmwA*z`#Jb#nrce zQrpjK`4>FEW?s@7bJ8B({yNNP&2mDPvdw*-mjsN07Zry4r>^=mI_EFp{*h}_0vT|g zqMPQ^pTLMJU&pwnNpOe75r*rfAo(q@@T+Y4Nk!!mxB4&HZV*M16q&}PsLd=LtDCyB zhZVpVMpmn)zI9T!nUrY)y>?DB6}aQpGNXg-5FexT-6fRmSM5}6fcMssQl>Zu<5k2k zO>{xF%RuK^j;7FA#jz~)lDYmle$^`0C`{cLaSd+OdQ{gMd^47z?xG^or_!KrV<8PB z(y1qsi3d5>-4Pj?*aC8&$V4OLMVKD+v`nE#q@l*9-iKlUXIR*-oaRo?346=R`A2R$ zLvx;4=bB{BZTAn&3A)t*a)m*1HUOpLJ9_JI#$Y4-KuCB_qRHXm9sXFv-R0m(+%Aio z$=|JH0*iV!t#fyM!EJJ4bqR>7LV~a<7qcaIBY@i*d6JdudXzumolo#rsujc?OvPNB zP|tb2#a#^~3kD_ySIin|FvD|=P>+shaj|c?YyCxeO)!YSLgE7{zQ$D<7)J1B_52Mq zMZOntwG$dn##Pg}3)q5}7;9XyyhNG2UhO%lsHfO3CJeC>0Kn6$5hlTP3K1m#7dQr@!Q$Ob{XUx{hhL2{8?+MQAF$Fc5Yclm* z1|1Xgxwk$?Q|2|6Ys2t3(ehZJjea5zUV+5S!~zQqJTwX0M|@S6Dz)$qneL+~GL*PC z9oJKSsazUE{bk-AMOkH)I3QJR%pE9)yQ2dgfPUA8+3G#cC}Udes)B7Y`=O;U5VM|* z^SF|`$JHRsQ4;fzdwV7qil?sCAfwrLZ?EHQsCziXY6rv>xKKj8`^S4 zFLJG3OqO0~C+4#onGD%lCUu#Ah@d2u;r^8M-({oXL8QhL{v*WZ;@p`l!>{|I(+Q?1uj|`lZi<_LshR zqX|et)gZ_BO6V_~P|mhkYHa}(%z?4ko4fC&{tzJ za<{XemdAQC?JK>(=9S(=DZnXhQyFPV}`t&HMLmk z?rpXcR}rnp2^#7v4{(I}-MZ?RaC*Hc*JeuR^?#dG=VH88x zmw$d9KT%Pt!`YOxwSH{rwe}$~K7AiU&rIFL7dmodw z=fH7uy&y~ag)B*>~ZaOaHU@)y*iB(I2zp6&*ng43OuP@QmVrlBSWK)Optj@#AknRgl zRp`sVtI`jpu=GD$D(%5e!<>y=$HU)B*he$&i6cP_rft2>b5}6ZTRz^y`sec+)(HxXIFX4w53N58?71mV(9MCvx$Uug0 zA2_iM(7$vzm|m{Ni2RWL#_yV`hMCXtyQZlDG+RlI-!)wwOFZT)(U#SzQ`9?&$4k}0 z#ABgqPdv_7qFO9@w}}Hx^?!K_zc_htKq+5!HLH`ei=htQ-q4sMID$-x+}@C!Nwjin zwE9M}VWBNJCB9~%njl=y;)PW{efbJz&64{U8c^#zsC|{G8Ko>V@DwRtNF*v@z5Hw; zDe#8-q4*>u$wcge!egnV8=8K!kY@5l{hB1d+RAE}GVn_C)G@k~1;>}E8>Ad6s@ff6 zXdQB;ld+)A5WpJhn|!6suIk&Fihy0+Fj{g8<12Jl-r)+Xp<;4XsCo$fs#sH{m3W0N z8X7s6Z2~Eku{Wyaidm_?DKlnMH;DichTnVep5BI(?0auqe9}pLSHhoL(yBHdFuP3s2R95oP#jXngX?17PImSMzR=k_5}o}Cd)VZ=g~pUwz4|eE{OT>NG^%1V zxohf)x>pwrc@vq|NT%4Ex}y-iauVCr&nP401w2(QD6Q&G+;h3tAe{TEY3<4SThltm z>}hgZdk~I(d0IcAjtX^|?rU;d-y)GSddRePkTN)}W6a+6GjCs>R&!FTSJxrwevPGk z)PkUp6N!hqob5=}!^#xwNn$L;xa}rEC8JEePl<4b6frOU+;{+FkCAEt?pd5vk4)J! z&sV=ma7idlwE?K7T`Y8Fx%6YdaAxMOUpq828!&ITzw&vBpZu{gm3~vIcisp%YWAuIniW zWz?}TgW2D|I;|~rYB3Er7Ue|!_UU%C&LtuaQ5VI(diO?*UvM3VgZ#*%x3%xT;mv_* zi$mu%q#E;F#_$XDvUY@0BBedC5fmPvaLn13dPUyu=qfuTKe$JnN@bt{ZPd!`$*?ur z8XT0?WjSZox(kMT?-klFFwHoCb0DuxncTQpKucn3#khfzmkAwzob|Et}9_? z%gS%AP+!yh{VW(4GXm2vJ6R%{H!Bga9WM^0G-Q|HWPO?2SM+vpbnWp1i1^YYwawSW z94O+rW6ps>ycTa5UCFE<5*r6~!A5oxO$-g_w@ncpy6OFmMe(PmH+81C%9uGPqfs{c zkBww6z1;M^EOl;a&$!-b84+sVUYEX+%l9hR)48$qzBdC?Q4#KYcS*xyyK#bc8W6Vl zy4O$no#vM$*o8O>a^&C?pZ4GZjOG}XL@UZ7mN zIuh5eb}n5O^@7rIXguNyxXBJ*QT8gd$g_cDSe!k`9Nm?s57;$w>mt-Q(R%h5lx7O9 z!JQX=f+cuOZU?rrz22Ylz;aRW<}$gfmgns@Gc;SDov%2X%hXNRQI*`UgDGukw%B;K z9!1dOW&5CXBDcLt#Z=2JZ-_f??vpx#)du#yNV39B!wQN#YsaWkI4I_|u6jLGMw^sj zLrxZ^!b(4W5EkVC8YpmGp#4h1ocL)|8RZM4>&{l1^;9Uas34Kzp>X!XfGFXzfl3ZgfXpD z??82%BAmRYHv6;;|S_mY8`1Qe)p5FOg*==$%zxbKkEN{r*S8i&y> z-tVdQUR~;xzc4VZOg%eQR%Lu`O+VVzvh#3tn^>5^aqB^&JQl6NfXZBnqo=Qgjkz?I zA?anm(93Ym(W&$d=c8gM0n|mOpTk)tg8j_g7THIo)O4!665#7XB_pxRoVFNC)m;+q zKeayB*Isi`K~aBAx;Ekp9d9Te(3|!sP`3j)6qTLHW|nkwXPRHX1vR91W`bu` z-pDO#5f%zCU*)tKPHzI9Hk)nn?$$bDt!D-^+U!&3wAry#hzIT03z6Wj^lq=oj*hRV zvUs@9?uY_L2>957P?LIoUP9GxcMDtpf;i{0`(#(ZwjI3 zl7REI>k@EIhv17}2yV+Hbk|V9v+SFwYb^Br|GChr#o}_nLW6RF{qKEYui{JCA2+72|EM5!wJY|%_7R`p=aviB6RzJ_bq9ksd3m*K z1(GU zTcHxnnlgvCLJd067j=Z+&l$dVanNZjn-(6pZDTG9rytKj)bOz@cD@ivKoV8uBxxk- zbgSFB4&o~6<2!s*ttmA)J1E^qvd~vnOm$SfX^Ndxb1gm+$??Fj(kz85jqIR+~AHAgr=E{8Cj6< zV5r^pf{ZfmV&Fpad<{6%{`;6;QAWIg+g_{nA`~Jv8bE)U`j)PfzCa8wLlBq%M-7X9 z^;Yvm}SsVGc}Ff0;;TVO2dZ7upx((vI@yrh(geBXZ@n!QliUE-I8Ih@>Kpi@l!^ ztNktB(tA=XIO5r*R8x4LrMk;W$Yn-23KERm(xJmmfk7I$cPd3;QdDgK#+o$@Q;&e_e!Q}5iLPa$Vk zw3-nh`<|QKIDdkxVeS-C7npi3zJbs$EGZ_~6<4W)g}d{e({;)4hU|FI!{32mYVD0v zYGZdB?QO+VHi@lSrf3VN@h8v|OAUO^X6{|gsJrQl8F3*4M*FY|vv)#&LBEaX;sK0^ zhPl*N7`s@)kxk~&9Xn4FfECb1Tt~nrf4bq?*!)~+eVJMBL*jet1K3jo8%GWt>%-M3UT#?|GKhZW=Rcq(uQT-0Y}54Pa8@bX2H_&LkCq;lPff z9?qrOnxk5x(wQLbb?D6RF_F713u|}^m43o!WDegQEENGmjc3Q4r@yv62SxqH3)7D@ zrUfrbZ^A~a&5ph2H6N`?z2<|p4#$VrwDZ);Q`2ENeNOX*lKGv2POB zd?ch+LxMTkX`Vo5-oeFvy#$M1HQoDbf-+m;*W#-*TMO~)d@&279>lNiuMod}irM`T z@oRPPU(sf`Oa90cEGz*7deU0mDT#;Vk30pk)SnVx`X#Yj{>T#&|Gm~1eE}{Agthx;o- zGXiPVnU!;W73!sb(bNrNn@HNNG+m*dN~UG_{mB}bxn64Fet3$*?>+(^2;tjypPjO4 z@DN4SmhYp(?Ji%9$6LRMM1*NNDdjivh7(wY-;F4PkP8C3oCE8AOqyU$4@XY1XFSC-BRXn?)?N}g8t zzKG=@ z_auot%Q-a)6Dlv&n`I5_AwWAZxG&4cz;shA9A8V3cy6UITa}l(mBt!Q$QBm><&xmYTWMd`|pOE&z~EahJG|2sCtv9f>1f3i~P^a77br3 zXXdr=_2O5VTO@p;O&=vvU#N4r&~bsx>YZ|~-F+5&5tYjT!LrV#bs=#A&gGF%r*B68 zVQ8BweMB0rZEU&gjY1FfQwH?YSe+c7zD-Sp1*v1DJL5%15}66y!uZP=e==XiJLJ=E z;mO-<#j%GHha`+b|jpwS^c9)<~1|6ikhRgpo?x5)ieH zp?M{C55hPjRF+5-JzEYa`iqVgnT|;&5iO))DuI@Es!{AAU}2&se~VPhk~Uidmsa;n zU*;zJ^4eL}tQj*-F<+0!q(#Ty%TX2yz2-ZH(@d1RI^$P!^=6#9hgTbwZsR5>*Jw>= zq~=BKF5uw&^0dc zY%!WmI2cu~kVtUQxVRG&xyln4^W?#+0!1b}XF`Sb7P-mLSLBvMLL$#CYn6;9ibff^ zGWs2lF?Ng5qO&jPZ4tGY0%V}M{SkZkHn$CK*AhKBjo2TW&G>~g=_$S{R`n+OJM{{1qsV8zR;2wco#I6B?;z*gQ5om#+PG#SDBkSCeb>k!Xk#(+cNoEpW zg}nSKn=?0+)k$U6^on#v?DpI!W$C~2EEVY&5fYp7;Yi7N`OxIKFA=i|ZTWKrqM-z4 z33!LwJ>k|bqT_!G`5T*ST+R7#vpIQ8K1u9rb&DC$|j)FMh-Kc6*;nM;~R` zDIlhIKiRl@wMjNPwNHkglO}V78wHfnlWBNB$Y-Yiz};J40nd38=ucyW9(Y6D*_pkMsHJXQjPpv8Q_&7WKDC?XlmORE#W>$W;blC_Zu&X_RbD>WQ1Zt83|e1Z!jfxGwTo23+g>b|HMUqrd+IPrE_Okg+bR}_ zp~sbn2{diHGX9j^H2HXoFIZS$h`(`VurjQ2ymi}23ajD4nR1=EBCN85lfx<u;yRy2JRN7?ByfeA9?p@;+tn66(sY_M>YYTeri0tm_?H|BGb zJpatE9+clyzxocpRgJLFF*A9f$=T0O{do3F9n7)?wX<`AC+gy%k@>T|^^eihwqm!v z>q#C0&gy)qoJzIyb&JsRYVU#&N$t)mJ@MBxGx4)RcP+^G22Tc3mQ+;F)Fm$eXR8Dz zCFlmYY_V$sZobafUq_z))d7n>kjB@A`s=akMA@^Ytlbv%Oo-X%V71OF*EMzd>A8B2 zE?F#<*KUu;m#jd%YhgF&-2|uv9A69MJh|k_CxI0WGXRWtN1D;G($^aDI8X4*QxGL9 z?~dkh|82pXaQ~{{sFmU4YrXa2+W1VE8D_#v#P4#RcnX-TxqN6CI>-Ysbc5XTYfjxVVQdRpJWVKoJj>@f2BETAZr{) zf%QlM$(P8lM&tYi*JpwDOF{6bB6Bi%6MnP>?Wc7?EUx~pE_`?8|A$>bDZsElQ7G@Krf(bH!0DIxR=&0vIb|Mw{N->w<~fz zVGoCrGH3Lx@bsR^n13!j9h0Y;0gfBm^JQI!VMyweYgtzXv_k-kbRiY?4`&}FZKKXZ z=s84lZkq9W^NCcW4W8Vc9r?I+75-80eD@T4aJXN|enPW6hW;-+g?1ZOccTA0#CRQg z@ymq7P-CiplJ?A{K`~44WO!fz4)tOx4CmO?KP4-U-B#bbuE;k-n2W1tL7luVjKUMC zXZGuSp+ZCbru_@#DR!vPo|f%P8v7?UPMyGaj?|u#tX)l5K~hINfwMJ-qEZ<*$aEkL z5GSlRJ|d$RllNi0wGT2fY^sUu9U9+Tcq26uR1eAEVR(L|8J=(C8y?NGY@0uFicNSqesvigtr7whPLI%cCRMx0jXRJr zY5^auBj>i|y7xf4@a>1)tY!_TYVtc8-Gvd0V=tHLWnIrQ1-cqGDrAw-0bAE&@?8Cu zclNW$x)X%jGZyA&i`%qPEWfZ1^`(c>Y8U2Dam7+#fC<3%2wI|X; zu76%fD zy|8alkN10*3bYWmuiILf#`y(Po+u2tJ&p#RV&pxiIQQ7;_;>QqIrYQHmN}KlG^dp_ zEV8K6SeVAl;&)Ha?8<`CGP7ys%%;iA-Y{fli^11{a~8K39Tn4h?~e49;@ws}>PP1~ zR{Bbh1~XPhM&S3V&C%5*Q(e@v`r_zvgz3!ml9d?lryAm|1SOt;gW0aa`Gxa<%(r;; zff5!C!y{#4)^&>cR*CtxTwK>2f&E`k&Y|<3#=MuV#QY6!Ib1DQ`WAI!Ba%+lBVt!z zq(T$P0XN)|c8T?}viZ+$UURM2s)mJWm!gis>P!oyFJ4(tbP5skvEaFSZIIEr)dgRd zb0O3E8XRWU%}`k*CPgn(7uYN|>8~!+F!IqK%H$pke>gC7xys8$hRK}p%A8GnMBRL zcQI!l*llF#25R4TG|oS3>f|rdJEE>}4GYhjI%t`QG+fJYF}m-IW)Vhh_2LTXm~j6& z`1kA22%R0Ra`@g_JxZ^tlP}T^3Mx~G`J8)MFCZAqvS(Er3j2blOcW(zArnj1 zE*v?ar~MGRM&qq!Km&uJj1VfoOr`O=h=9- z`DF5_!_}wZ+G?J5_9-aH3vRNkOxBE1&+aj+eUV=i1;^I=)%$Znx^RFaHAgfP$*jOA z?d+XT9boJSbapu=)mpQLm~ez4*zj6FDug8FpfyR~FX_^)_SnS?$EZ2tS2O0(K&$du ztrrhgck5z(0I&&$`WQ(ZtW(5PrZRkTAe5~JcAH%vmMq-05h@(PUc(B0edo#n>kU`% zY_uAC!C=h1#$o-|wgqWNYEWG3Y`i6ZO5Fi(-9?hOG;`n+3Lqu6F=kEoSm+- zqzSfFzr$whZE<+(Kj9%<T07%I%R?z`Aij7GBxGunu6cp*#0Lz3|3&rh03C% zR>l=nMIE_P2imY_)N!d<$0X{QU{xSZmv#r7R(Wb#(Kg?HX?lhF$u+RimhguFdOx;Vk_6aR2DK4N9cMv=#QYI({n)a`KZp}(m6sC68PuxcELZdU<|btH$2K4Mq_(Eh#%1d5ieS2$%v}nIi2X@r^>f+1sGg`SEnd57V8&8utm*4-dUU`WkE_mEProjaK+2UMLfzk(wI znN?irxX*QsBfowW%MB^@b79Yfw4mUC=w(Q9iHi%KSP5psarCR_g~wi|esqGt6}tsZ zk*5qY)LZuy-9td^t$RXNhU%V34Xu!)rcufWPyA|mTW`J%5GEY%reA%Nccb6m98XoZ z=}(=rt28OEH|z>$Gv1jxP=;tMoHF@)GruS9D&6=(Fvr02rgho+vU8z1?$o+gVtJY4 z!NX5oE3!T8QVO-=hNQdWCGN(Nb0UbUTVm%C`|F_h0kpTUKl+30X1VB=x`iFgN-RlG z+RM7`gtkzAb~nOZ{>oLwU-^OvQSy2%W?`k;_a{+#4`#n?1$VjEdxgAHFMR;4)ts{9|D?BgkVOT5 z-B;vZV|oG@*VK2&x@u@vG&t}a1R}Vw{Cz4^O&kY;kqw^6hD?oC^WwGF+Cme^P_V%h z%HaC5PyLyEKyUzwiMD!;9jvSj#QoTf;=}Dm%oK#qXbO!@?DGX!SXZgF{55Q`>F~yU z3p{H)Ww_CO*sLiBr}*);?qnV5i8_M6FNrKbQ8IZs(!4f$Jl^bay7c(4X!k7l;Gq#E z(MMPbao%`dC`bCd+!Gq9`+Nf4CCsw=O#;Tn?uP7`c+#q%Nr=NNm8DzE8QSZAZINC# z^Os(iiqcxL+rQG4g|4osNOoM;vJch+nuJ4Zxk1-*k6BATT#N ztVH5-$?Wp7hGhflcV7oQtBeuSF~Qdr73Hcyst}z}Zqu>R(M5-DMo2PQj%`jxuqk4A zZ+(Nz7MJ!mR|FabnL_Asqvnu-TlZ!-`MK>zAK`>U{mmyF_$Qbvu0QtS{C!++-|LgQ zQNEL~1a9rxZ3$9IzDr025-^t7>jzSEbp*bdY`&ky|;rIr(>eqFk15) z`n9i68a5C5BHT{(<2ee?95^>`=iCx4`6b5dxo?P0xs5I%m%{00QFo(buGYC+)Xlq` zAEe<~KDXJ)ZYfvy-zLLF>msyDA0V7NJrNIMaXE<(&odpwHTW;ZunN~6(~M&ks=o(*!Li~p z2oq)D3RYl-bZcTj4E9v+dr{Z5z!j12ev$leH9DbqrmllxW3Oxf5s;^Ud4ak@r>bJZ zQ3+QZN3)7Toq5GMB(bhhS1wpLR^A0eT{WXwOVDYEr09wrf` zUff1U>Ko+m)^+@C*t(v-Y72FiMeC(lS*7|moJ>G28vP~j!hvRO%5mmUFSVe%ImQF+ z0#tHq&5l1Ky_WvXH~VKC(vH@QdP(PO&2={)cSNFfyhXNd)_=F?zxV6E59+@U@wZ{? z!~9j^+J~;l9PlFr_&Fp$Doqn6nbITajZ{#Ze_3c`V~L%Bw3pN#zburJzt|DXF*_B1 zM#hOJwqNigd%M1t2jF{YzHSO%WY0()>Wf`0Y_wiRi#7U~Oih`2>sedE7wKW>?i-nS zx5;g3?su>%)2n~EV~#Jk8Ru3}S7VuaX0Zmg*m$e%QC8iLP`9BQt}+f$xtq#scgdvN zmP-d@O4WKY;ew5e?uxuWEK!g44-D!jWTnOHIuMZ0$pyBc%pLTo3*UjvI>>PB zbHC(;phd7IeyVCWWZ8ll;`!igX`&6+vI%{cN*w$ms6!_1jus<2E>j4D1>b=()59x0 zh!L`It#=?HyI@-s}O)3IC8XJaN5!OZ+wuW^^CHMS=*6GQ*D_A-63OeT^TYSIOV#+xoeazim1SicPtBX1jl4{zzWlq@6Og3iM*= zFez+hc1qqK)IAu%>=py?2lvAZId*KoQf<+8wVEsO54a|MQ1s-@UGuD624$+gl!TkI z%gW<39)es|-@H{oPwO+5YfJkS@q;3tAC}Lh@)>}9F-M#yVP$8!Pa?^%ZOYe1^P+k4 zeb~}f)Sf9H+{WCJh}~)n!+i_-AmgV##;FvXg6NsB4l2V`;bl``#(X~_HGa03Kby^; z2K{5PyHRQF2B?cBg843Zg3igcDcnC08r7a6uXG#VoZ~@8u}j1KU!0ztEy-grCxKsB z)H7JXD0H8RX)NkYcrO0RYMD1e6s^wY(sMrwH<5ejZ{!}iL`8ll5rFi}M(^>UMxcF4 z<(_PGU5)LPsGoiwHDorQ6K&B(S3!e)4os2I=jb$81p20<*=a+MSWW&`Zrb1yoM`%; ziPkHwtb|!`p+9M&@jBtw=N*1Qsx?|0>QYVtNQJ)kRXvUMACoy6mA`HElAIHp;N4zs z=M0Ty_}W)zw3)ecU{9|31eXzwb_l3tx3`m{pV&A;m|cds&a;||UQ=@HaibqPttWhuP5nxi2HFjI#W=N$ z5+)M|+Qo<^lM zxUxlrqmGo6(9NNi){k4Bc5(5Rg7X6qM7 z*Oo~3WgcH%@FKoit~F9|tubJ_*6^!;enyZ)UPNc@j;AJ6*0^lhV!slX*eU8yQXfjX zXL3T-Jx@cH*3SB+?EBEn_7t%nmx|j{1W!%tkS9TCQ`*5=`(FT!OAeqo@P!%)JcD7| zQlvB@-&Xxi{pEQ=3{j$&z35>*-Rd6Z43D&8Jh6=>Kr`zVxt1I$crbrA z%+|VN3}8;UX&Onhx_Msp;ii*HZ{P#Gd3Rv3IVQ{6y23ErDZATuD0Cr5edKxBNs$fN zD2PAXz@AE4$z@mx4TgARUbQ8-E=}& zUXgpHU+C{G=vv7P70eP8>#Y}IAS{-yr}!Pxk?(SB(UCigj-UtL8Lcg0UPPjok1cX= zM&lfiOfc8GeWakFvo@U&#I<^K<9*Y}=AJ+HYy>NF>_kfZ69@^1KB0ZE2(c1D4e>}g z?pn38f)QfOBjB&LX&#@;>>sL;*bD_yqg!TD)rysdBYLv~pIT^MNUWw$x}IU_{VG?6 z)C6&6VSq6o55WMLD0aJr9*vzN5o3f^)!$f}Rkv{3*`aZH2MZQu!o~&{h}FbhlZrA4 zkJ$o2>BJ+i939Isa~SlMrKwa{IM8>3PB^cA$m{`p%Ua`OCbNQ%iqB;pp)DSLk;jBH zLC&&gXS@hlG_Rc!yd&IyN$}QLxxB9#GwU+>xp~$V`~+{9l_x**Awgmn&w3DcYH<9l zpTA3nzs!1CelD3MkQbaZOJFR-Ro)YR-#t`OSty%t()zO2yxp-6HQ3X(Cc;5+(N%H8 z-fn{CxUM`Lb3AQNbZS!YI_cDWvr|`^ow~~G)aANUv2kX9CYt^6n*A9~bzZ6)PER(y zzmds67{1%6nM}xmzPG&Fk7-w;Z}h#ZnF^tty2HUV@TwCedNT_%K52L-{l1HS4<4Qf z_b?k;iC^f6ejMR{$Fb6|13)X`>3%Lwl%iSJhg(o5x+e7ga%8P5tTR{a7vf{4uoec~ zd~g-sfPYE9xcnN2Ds$gGaFPs_>W>;}Og3-OSCy$hZ4ea$?sGa{ z4iJ%Qyq71VJ6x$Ykhuy#d5`MFAmLJ4Td~||O(^;ZYT?tkq`61tYOlJALJ8B2*jz31 z!GdXcg>u}&l^UkDBQK6kh`4E(M2h7jdyH>j^~l^ltWojDSEjl@)jM$oZNUbOkC~>i z#-rl=PaIf=FOa9C3rj`{ipNGGSPrY_JenI}?6p+tUuDn28FFh6lKcr?hU2RX!)>R+ z8*mUeTIbF{?2^o175{1U&xJ5OBkaF z0zK7-DZoEC23Z)vQQX2!2jx*ikT1NJ)B z1Ysv!!HHotEI39qBZrAv-6$bSckZWpeh!&G(im?q>mR*w?#$SUA0iNj$Jv2dkQaz7 zD05K*krJ9iJyM5tuHXdouUPJ70D4J=p!-p&{ZVQ6QEBc`v+2O(>YXwrAABTJ(rF9d zu^&CqhSHC?#i0l3JGL=9cr`92r03`BF2Os`rAFy~ zH1UY-bB36g36cuCKB7W?`+f?kWA+lS(Qg9=%-gFST*2AE355Nqq+8%+*?}1Q@@6D* z@8fbW+=daX>7bPkMkK9|bW(6Im;js$Ir~0AO)wRhWjB&-g$f?T&9^b@velD7gA9N!#blt^P`YQK28+Ru?FiWTQ@CX3*ilPl%f zFZf|o%Hb;UWD;j-dAT?S)2Pa0%r--r;i!}40AE#CitFHNR*Y7J#Dy&S_FxO~;8N_j zZW0$SW-GabAXt;PsY?`rZxH!$f3r%*Qwrp5hV2kWeOlFI({3ADx2VH7PoQ{$i`dYE z(6+fD_kn?kFNOnlG4V@{#e{L3uWEiFyF)ZTMAwU3N-P89evN>yeV%h*p6=pH0%~-z z5}M!-H!@J+%?rQrH8m?)UVMSb8PS?BQd=atVqOl+qRfb>>0{l+qKofbRHf2ms;{|L zs+H#>75=_v8+R)rL-an~R2<9W)yC`CO~++qt8kkZe~*ct7jQh?iDC&~JL91lGBKI9 zwNnGmr@NP<58v3_+?6_cwx_nib(SWgXghsxLwers6}k&3Yl&G>rVeXVmAuNbaN!)A zY*O{DpAVT23r6|e9WV44CF>DMJG+zB!zGl4&4<@eT z5mxxUdN@sl*`wk@y9(Q!HseXcv{s6{_5UHP3s+Z-E-{`Sbh5ooHuH6Z~ zRjH23_ZZHrlOk7f#Sy|T9P79l-mQ=#HaQY;(I(H z{`BXuBigjH4$&{FSaTt44!kba@5YUiHkmFICrZPVTZ)_?8-chBoww1dp9wN0sH1fi zvDNt0iLS-b&a{}fF%xe}IEi!oW?IA8;_K>nZ~P0+&DLFDT`=;>6lAmPE@<9NaWppV zMj|H`1bYXX8d7U#UlB@)&vV5lP#rNrk}|y9J>r@LufZn;AYQ~z5v+D=2W&ceJ8L^c zcm_wNem&S3XH}8rHv`){TK`QF%hVUw(a=6(IlV7F z*y!-^=1>W1W9;Jq6i0f^K~JB~3se%0&CngL?tlv`cwHvz8R@yY@;^0gAVPs*S?E%| zgRLfd+hwX)?mgg@VP-!fRrpCm`|c5O8YmCnPdwa{c&O%qE{J2i_{Q+#byN>F!(0Km zwWsi%BKJEFJVu)F%oFl=AA&x9o4c}%X6?-`++ho)=N*h}-9~bZFu~8+un(A6FR#Wf zDQWr$Bu=zWi|pD=+UU<1FpO6`Db?@fU7cWN%FEvwKUvvinyb{a-vO!C-_JMZd6x7o zm?qn|R*c5X55@yhl%u&`s;uvg)K3G3P)mtCGo6Pyk?6yuN1~VVvgt&g3r^7Yegv5j zetZk;2wQvo{qjR^+v_*;b& z88=JsPiR&txt~Vrf2kXLkiSUX_C=ogEl=v;zc9NGNIy!#kIM`)s4e^;bk@B#Ha{TU z^X_U64l9i48H%NaAD7v)8BwY7`Il)q>LLW$>NUAsd?`o2BK1-%S}%P>oFRS0JyA}H z-a}n~WGK12q!QmQ>5yooI9p`0r3=)wc6;>hcu8cJthTuVzIJcjzf#QT&pjU1Qx^3+ zYtA70r-V*-ar4D;sh92q-G-i$Sc5r!&XII@a=WA`0Xg*u%+ZT47IOl^kL#sO zPRFg_*vQtU{PmY1AZCtK$^vt0_5c9U#(iJ0e$v@UR0d$KpL9lz`u33ZlOeKx0&TK> zdPAJPezIV)e)7xuNtOS|`rTSQbp50fpI*hm^^=($vVPK|e{B7v(lgdik0UC>H6D=9 zlOEX2Us*qyjDKYPq&q{`PsV@d`pF2)^=sFQC)+OI>MCG)!zX5V>#}5{{p}qpcT^m{ z)r~QC=ooW{9wwCl5#bZ;(7eOmU2T!AGBSPY;AXEMQxjNR?>avX53F8uNree4CUjUk zD6&;HRkdumGWFVgy%w?3sGp9-gR`UGjr$I)9%j@%Ank$cTk&!_%-X=b?rrWmuesAP zyd$z%=eYhRDdslxW{SNSc}6P#-3-u>*>vt!*%rph=1)?LK7w&+?$K}F;~@KB0)(Bh z_tnlw-3%FG*9S6S@t4TG&cq^7S3MQkjJgyPeQ;yraLsGV?f0D=9OcyT;{yCvgW<;| zFDH{VTx+1QdFDVDS_8fI%z@%Qa_B(wb~krTa5nvwalT}YbNb&N=bm@JVw~uv=-rY) zak7D#QMzlPIoa2sxdM93N&VvZd4@hA@(yA;5s3=aaw0aoL(_dAWQ~#bpeACb*S#gU zzyHED&cKC>z1uzY%fCC<=iNTNeg(hAaTB#Qf8?l)x~?#LV74nvy>WEcXp_E}rx={* z`lS?O85VyB&y8kI92=_d93tl~nRRsZd?&s4y)4VLO9lX;b(Kcozo$cydKq1`zKLgw z%gC(tSTa|yM`Np=i!KMf_MHrNhj&QNOn~le+}Taig&MEN^^C zHFSlzE{0SQ7?A#*WE#UWe`5=s=j-;?ACb4mo)MssINxTru6?9}@Agg91W!bh6T+)| zL~_D;a zQ*V6=&}41{4M8U44A~FB%uTbcy}q<%K|^tn`o*mHaoA$g4iLc(fWtUG6<}%Uu(g9tUmm>Mlp>EN~SNW%?IH9*}G}%RVI9;K#sSNpSUs3uTJ#AF^S) z4hnKRBP5@+a;U8S658X3eeKSZ+MqffF8g{yqHwN zY3MC6W=;88HGc`cJt<}NSQ))Hd=s+?iW{7Pu10B5w{#jJlN=FEtw%LcJ`|D3NE3)m zkh&l;>1qS!1hs<%Tr~`n`24l4t{hxvrcyLXPz7z6t<5XWR21KBl_Wy0Yu;zJ)^hd)5@Ah!Z^xbe2XQ z8VWkAhfK3cR-S&muGO-w%&r*%Y)xo<=m{+8x`KDtG-kBHZcb&_*`y4qOxEK}7`nu) z?2I)#B#sMB6e~+7Blq6l+OFAGZu*}4O5VY~XXMTh(R>G^CGvnwGamN!H2U_e9zJs# zH?Dz>^AF+E*maGe^Iad&pSjzGo(~@%#%*F)mGijSTi-6-O#LJD5?A4AxDKKMi&JnY zc1`sWIC)(&j&c~jEl;`f^qM?Pl&6<@8szca_0h+ zUIn8J>7CIkI(4mkM5Bh8l7H%va}&&JQH(Bx(~qF6%CasSuS$O)@}Xg}f<>OBWg9$y zc&CI+!U(Ndd7iKbGt?xV^L%o~Ub8-tK1FJ+0%~aABXZrkCO!tAG0onnazGoJO@xc+ z2{@8QXP!XcV0!pgabu<%GY#l)`|eREe#TDYFhaiNQQ=9nfZdM=P0$L{1WdkRrhQtc zV@~h()+GtShZt(88>JfhM$EA5JX?C30df)gkb>?Q;hV0=?Jk5rOY0Y_!!&8m^9o74hDAWkrTJ+$K(wv83N#@**!#uaI#1*^|E43}$Q-N%>9+7GWXXYJ77(0(p58z=mVDhyd zO7H^lC&%k_^OaceSm1OcqsBm;h`Np|4>z{P99I%r)6$7p*7aM_$h4$SxE~H>sElX= zeq#CcyVp(jWoWM=YclBgQ0C$z1wki67EDgr4DUQ6jGm^Bl{zr8l$jzLL?-qe1*(kVOkYZ&mGXp{lI2U8Z>9XuOv(18lvpWsX3BV9%0eq; zm6?*`ODVHbZZ%UT`%-SPQf@R;@_i}QR?18>Wu`CXn^wvtW=f$iaxaLk z!Jg`5sC!V!%j}@HZa>QtNb{>-Q!rYL6DCMr{g@v>r{G8Wv05HMTk+_dN2(B3(JcJ9xFa}2 zIUsRngEMB?xV)_$t-e(Sr1!Au=e4K441Xwwuse+&v2#hpCD}XgfDhVmo`K4l(MQ@9 zH>3Uj!@V3Up&rW(uBeC4(``;h-h*aGwnV-3#K+8JXJZ+xE}#olwKd)1>lrmpGnjk+HYj^M` zEOL5!+k)59BP(8SSn(DirFLV&x1vI|G{}w_bjoFIkqauKKap0@kU-C8gk{+qZqEl^ zKl7{2Qfh_h+~Gns{{T|rt6ByKZ0feH+PC9knbR@vomyFkKr~hpy1^)FY-}1kUCxY=4G`lX327i~XlA8Ez_kRM6sr*zZKN zoTeJ3=A`~m(j!Om_&~ohVaqHw$a=Tpv+18LpG~*X=Xd4EIcfTA(%v;NT@0_c;{tbH zrTSnRV1+l*etYQr@W(dv4+xDwGzEKzFh)HwcO^dBot1%J{0s|-B)n^!ickUK=-5~_ zAwqI$JzQ!)Bd~K#D7=9k9UUBu-0(}>o_3m7*D4T zY;YlU4dI0pMd56$`j`6TDwgwTuHqmRA-~bW|EOYFMuUYoip&MiI*&70*cLx|Lz0U4z1ZA<+d2z z2L=L*;?qCReoQD}x7wMotqYF6J0-e29&-|H%6D?ZekzZp8LrRAlW}lJI&LN2z};#q zOMv`)UFNJK)Q)(@^-@1nHM-W28>o*g77#u6`Gj>vk=RZJxRB``FVR8?K=+2YY-?wQ z&UB47u~I7=i!-wM>>!}`T=hv<(4lFeh9TiGUjI=?Zdxt&Kco{0W!0o3w+!{4$qHj& z+yAu#x8ockvC(Q_vR1Wnq+YUww&>Y(Pm=1)V%DH7*~<4l2jO3R$E5zqD7lgliXRR9)6vf*Ea)i zo%kk=Eh753_xT2KXf+3YTS6NDK-`JKz}_09g79${2G%@8qw*T5d6~Kk%gs7pHtSqC zq|RTFCCjFX&;L9BOt_#aIf*!6-i4qFUPV2_DVgpuMhb+ zg^$>&ViI*^0b2Wve<$mXK~1PZ4eXOja;RU3CQ-=)Vjh;L7Dvc>Ke$@&GjH8nvYer9 zxu}5_y)0q)epyiTu=jf+T&t})kRFX;^ROKa5T4>i z+lr~eR|D)tq~_APE-|03Ke*un<5OTS;RVd)bM7-jZ#(zSYnXopre=qHZ>{e%Lcer= zR$J3yql#D=Wj^J@8HF0=pMBXpGOO4DgFRAusBzf`*4AlQYQM~StX*iI>MD*sZK02% zC-Rqd2(|Y61hs}qZ0HHOIXKX48R)@Zf5kvE2iK7E#B}ThfEfek8ltBs zjX3v!_@d?#K53lr9q@)J{0z43*~{=I;z< zD0-BX+*a_CUU!KA`HXZi2@n@Lw@Ma67xf)lwby9RMS%`moL$me@Apvbi6>_)RX_tp zbK%+yYKv9jk9CFGmDe+FU18S` zgEg`=g^tZ_<5I`PwI?0Hl-iTHnKk|11-HTN>YeYHk`wd>9GWkN4|WcQ7c>28)JaBw z*sA~oxbp}0Qp|f_4^xYs86JH&@FFK@7ZRYmOZ303WF#Oj^-6jsrhK@*F}+99Os#g_ zR_uMgRYGN5hVo_bY|+51fB3Y*idJLIgOxQy2F9KmeE$oL#vU;i+6lgS2%HwMN%YOP zIovSk=ppi#c|gK1HSsnvDnf^%HAgrsU|B$+-of1;D83|+vYZ?CS?cDylPfcw$H=rU zP!S>y7cW&^kMV5O^vFm`aaX9frV#yw%;W5Hg6FEyx;XmdHuX8A2;kXu7iDsbj*9jX z=aY3bv8-YtAyhYb+M^YXy*ti|&V4~_#+~7o9Pf@i_HDG-N@&Y5TEeZ4+_um#G!0V3 z81|Jx0-vjAGU8K?cY8;#tMs$Rxjyl4sEPL4`{_}mORVg%xf3Io5$ALAC72iCSrW(1 z7P?q23QR&NUAH{{ej_y=-^u1gabCMq{9sv^k5@4s%@lSDcM4?r0wUJkC44kXO!k1z zb5zP;Jrff3bp4F%GG^FD=co_XCR_R<#cIh6AAsGua8J0gt>K^vR1@9c;wKxih-N!G{B~dW%lcS3VniayzWKgagnb z?#qR=NJJGinwKwGp%Kr6f_Tz7YmHDgJsPbpr_ZJ$_w{rcz4of`2%Mg|Z9$?&j<*E~ z7Lv7*rb7P>f|k%IN9c!Eu|g;tN1frC zPFwH-GM#OVAf8EoYU28Bx<$O*J!JrXW%Vb5awJ}k4B$GzI5B{4uSpCb;`-kW;JD~< z{Qot8|N2-4VA{tBZ)K6V%GFj@Q}9lx?^_KMEJ`tdse6hyI+9z05&D1Zy$M{DRo_2+ z4Gb_WI-{cEl8yp~A&O$A;=(ox28e0pZ6I(e9wM<=XaLtoZs1eZj=cj zE`kN3{8rrS6(=49Pci9LuWz9)QP=9roWs{16GEtqWX6f4H|r+Su`Ba1m;k;oIS6Kd zm;gR7DFxbP9ikL0_m#OQ>|X9o_5*wAl?`i|w+$yMUCLY>><$|Sf&#%sP_N5Jg3UUQ z5cT?{ENKmPe+$KU*87O{XGAB2nAHUN=8?2!I+OXqJ^AW&Q=!EpfJ?g;v?!O(!R$@F zel)CbsUCIzUm*;hE9TjwCTM<-HG}oVkGmGdw%w@hSLuC~u11W)mlV;MXX6z?HM>l0 z?aiM)J0Mu5g8W8WqFn5NJLC{Uf2?+)VYru=AIGgZWa9>#_N5sQaUAAUR)Jl%jm`^O z92@C=20SA%@fJ3TW6{G49;CZ!PfTpXT*cB4(;5eg>VT>vD)Ua_QBNt6w>!IRfh2c^ zdcOLebC49_e0$f$j?hyM=EJYAwamX1bD>rma3Gm)ZZIyeDOWUz zbF9I^)6-J7OP2w~<3%NT;m@kmy6b!}d}Rl?(UIXKH`*r#_;Hw1Nu3$0-98i~_^=mc z&(FRO!smiNHf!$APL-I0Ckm(nmVt{M@XjOlf#WDG9XLVTph|-_ZtjBv=6%Fwa7^k} zHK2nDf)+d3Pw+EyBoV^1HS;{IIJ1c{PQ7E&0je7~2ST67sl*T*0#@L)mk&E4D#rmj z68b!_2Y!p~-Zx5F&3oR~T&jWyez5$Yg?Bl1)7S%REsw{zOS}*KNya@)m=a-u)8A&E z1oa@)Fep6m5`tu=bR@GtN~Uj6G46??wLZ;a_B`!uJDwnATWbr9owPshYSJ^$9 zOEt2KMw+(C>%jkNyVZ8I(+ND>rCTPAmnz04Nqx&keBif7S{_?hykZ%KMYz=+*VTcW zSOEPNx9cC&cpt&jqn2KxMAW21&?! zZ@hfk+82*QW8#xJsM~M63yBw!~ageDTW_ldf zWuxvZj}SXfy*NT=aqv(jwFTj69yaHnleA*KM9uR0g- z4>v(Hj(lrr+sY_jPI00p3%2)4la+LkIN=f%a!(pncI2deX}>T*MaxF*L;ky4(gHR! zLQ7igm0m-Gw71^DAZ@j(ppB-tJ2P2Z5sQJ+^tKZD!hXOF?*fA-@{82BLT^0|_Tq9M zE|sssOb@rqvu8G%BQ$;r^Qt8A?F*olU1nNiJzF>rmm=Wi1Ke{hi5KV&c|Oyf(Vm!p!vk~j~^p>5L{(HiTwh)BMpfU2kUqBX8lbsO9pD zga2gvNz67e>PKrYHLD6xDndkjg2axE1KeotJ9|_ zQ*h4`-DYQ02`Pon^74Cp;=Yi48vN13%3AJSQZ%g?Z~IzYKBG(H?R|^|Eg@vUSjvtE z?C^m!V!YvCJ!>uBD=ffw#709|EsaC?FxMS{d+et{i``>ChPZ;=X+J)ybgb`GDBjTU zuEs$H(Z$RpXHfF-(#)>513NOU`Jz0%vJ-gU&W z7`K0Ox*L=Q-x1ZNjBa;bYkPCWGN9E4xyw~VNJlg$7rQs@A&Qc`D{NPK1-0SQ0&v>g zA4qhmafgS}dd}YMGXZ6VOSwbl*quJ3a>dY%5GsWO zly8*6H^>YMp-jq*yRF_08Gw;x#+B=xPzc9t^{Rr43Oo|R^K;R|*5HEtl(8Ij+bd(a?$xZF}tD6=VJ`- z&IB)yCnha+!OfU>xAf=tYc2J)hI(9n;yW4hLOf$eqm_wcYjE=#K6a~>xOJ+F`lETR zm^!U(D8}4ohPV_T!ena|R`<_OMr}pIx1D!zuLk$e)7+cu9C$r;ueP1<>Rv*vKwgHJ zk%%=28U@y^#>3j!Swf%WsaQzCTci%&<<(cf7jGPKb8>GYD@SkIM$h$1?{aVm*05`2 zZL!Jy>NrL%C_Q0!1EuKQT0oe@Xv9Z+_C9WFaFSTd@DE&MECm08s@9$-76z3-$^n*Ae@XH=iJ8fGc|2uR zKgLR(#7f`EV4k}TtWbY6t5xC;(xF*BRx5BskYwLj$EdCrgPI|&n&MsN{SCSx6hG=J z@e7vTAe9<7@k%mM`-V};jg9b($8WsLK(J%+Vi)%+T&~8+#z)c?R02Ul5U$F;0IF?v zuY&I;V~@m@=ufc6(!0#DIK{nU+=En^=FeHx zOUgU4R8U`hXSQ**COU)L7I4s4deSGPa3|gSQ@9m(61TCH_DzSpnkeD|m&39IoZ62AGF~a}2l~Ke=2cb_cK)}Wo=!mLC>k;+GTN$Z0tY5IqI2J_-8=dJc_l<5F95!^F zLPTA$vREb3Se!h%Hj=itS&v}!!5-E=X?>n7IESLRpTeC)k@XtB$q!k#lHR`rOE_d# zCGo?#XsKdj^eAuwDwgrVE+xj|o0-(X{Z1)Z*Hi8uf6!Wk*nh=+2;~$rORZ|-J>z5n zcnqAk7{fi!%J|mONp_c_w|uC49Gf_kf^V3-twpRBVk;2K;PYgX_{kDKiRW|~jhtTW zM2SN9;A_hUCUvSZcN2Zux|P!930ZeiwC(Bhd|8k9*Ax~p;?6A{m=xb}O%zLiO|9gO zdBL(5Vkl&B2A|EFCNcP=+28+XYt2Sny9fsNVpUD5Xm%cilOaXLGJ;d7>wl!uxz%_P zfWy5Lq`b-e@vo5RI=*yJ(u__;!$|4G9rM@r2)WWwla~0~9{w2e_2=OwA~}Z-^E&E( z3MO@x`22ZA_?`&DmPN=}Hw`V@;pO5n~87%&c3_T4Wwq{zbPRxllc2YlGk%Uyzu0D`u9cy=jMV2_9W zA{Gpk8~WJ4^slv6Ct*5{tEsweRQAB@LFElTPa;?CNzkI?=FI z7f!ZX25M}-)^rWT2ziQf@SEgA@WEyA8==dJdnxj_|Hu`wdj#_an zww&R`$>gG3#VQ9Y9+dFG5)a+VgFRt*<$JXcB!fCXS~P^%kwVB@f0M+|-v>uAyY|9f zUpmA|8;^^W-HRes!M59X{+a?XU_66w*MM?IdFO8zWSw1Zi=DrYZ0Bz&-}#H>XPmR4 zdCSarN)VfC#2H8m36Ti>5;`)x)g_f%5@gymO%#tlj_BxZk#&&K@|=g<(Q6)j0i5l{^bvcA!WKnazVL^ zoQtXRkSx2M^WkzAmWy%~mIQIU&pe)(hBF8lY_-T#4nabw{sW16?5MVkkHa-SAjLMhRYB+U`T-N%g0}&wR0}{vll0cLF5JJRQRA6 z+`umGCh>V}a&EKuVRsgyzgiT)-$0)$Sy4xx>MX-V8 zJ7JJ7Af1ovQpKu|8JjL9ipQqGA2@azL;dzdW+M^U)!0u+dG_h3-n>KdpbiOA3~Z1A zKb`hBfjHcoi>}7?v%`z9^|i$A2od>>b6Cae*XDf_f?L(%TeBM@Q0wUV=PAyXw2kiJ z8)B~DVaA>)OpF6=IOmI*?`2_;y z|BmfiJD?fgs4n;bsNQu5BXLM|#_8%!*pg36k9a7iaGp3+C))dL^bT*+i5n046i>*v ztWobeNZS_AJ7eTbA;i3M)_L{8r6#WjvMwMKMu;OQ!d}ogH`1U6*CN-jTl#)wxAaY< zLv*;8??HGj*EQvXfO6e+n)#LMT1ZA8oUmTZ>kXbb6!tC{A`}>v!i{hHo$x*hrsAN) zBD#vHeeCM}eEZHAEH9yNCRywayq|&sQoUQ>+SF<$c_Qv*#r1?SNF+HK+ezO_mOmZ` zaPuf;t9>C2qKj)?#i8(n8xWmDE%O{yEK5@o#f#XdMWbwIaqcyIFQ=d%l^tg=!4p8J)`)T8@`iL`e zW=kXy9Y`-NO7Ky#GgULUAfP!Kv3VHRPViZSouah?%XfwaqxWlCW1df)V7?`^_Hu1y z?bU*b0uiBJ-yd-mb;=3;dhyUCwgKV zK7p%N8`VD_o;V7Epf&DB^*7Nz$~weVYE%zzd(3CwWz0!%Cao~R$HV$nL5U|cDkxbxy^wL~14X zZG*-c-tHrB@PcZ=qJF&veVDXtF5>Dux=#|TGp$$}Qeh2B+(tZOFS$4y@%gT#dl3ae znu{|%ws7FBTs$6Gh@wDyqRkgM*yC$N)n!jb7_mjr2e-C2D`)X-CTiLd!#0_ycPVi{ z9l8W;v9O~Z!+JYnp?(u<#bh}Er}|=AXV72OjG1wwfzg9cw#8Mw8>zyJ5}H?M-n}Bf38<;3pQk6ecOf*)Sp#wAeLO#a18ny7!@5tVkzGop_X1KIvJoX6y=ZNRU6- z_Lc1N-gqWc$1)wdz{}_mS9M#X!tIX;mw!#Y}|Z1(?`KXsVM4W+xL zW|b0S&x15v5^41XhwkE;U)*lKQd~{?u}-+s_#e>mbu;lXXcMhtnN_lV79u%Gk(j=e zH!{VGeMMaDB^^aI4~rLn`Vt*B=Jgw}-xrnhP4S_Q==wn0=~TmgWE@LTooTbw&?@Se zSQ?^blJbtiL*v2a!wNHALi8}Zgyc^^2YFrIXMk^lExw>$^BDAl}ZFO(bB+0&ctJ!iN`n-k2#ikH(LVGpe`dOR&LM|8B}!85(laD)*mKNzy?uJD}al&`ZKEG;Q9TaL<{@A zz!0E2c#i5%EJyVx$`Jwq7l*8Epn5&W{|Njx7Ox?{{zu3!azK93JjgHdVLk4>T18JQ zx*rd&P_NqoyBXpX$hmQ_ku8tQ+5 zTI2%UC#^%GwVJKTNwxnQvo}hBN~l-xDU`xD#90iPh_fh3;w;M6T8*VB6pq;gp5fc# z>|Sn1(@dF9F=L$+-oPfTkGr+?+=g!WO&SIV6_+xxiK^g26D~x>NJ{A=B2o-tjOy+f zi&5VuU|1y@)t(s3nZCxL?$DQH)1`_HmHc|vbG$DE15VicHgWTV0y8JrjOs*0HoG1H z4+_3b*Z~G#+qC(Abgb7VX_1rR}I{7;A8pdh2pg#zI2sOJ5(-+z~-Kbc5^LGSS zKe-=7t!=!80(3llP5r=C5Z7#LaC5ZnMHX3qj17N+I-;8B+{Ed^z|gPfHl|O;C@}dn zVx|FO&re`?jhX!dG~E3c*uSS``h@S{57f+VMVJcsLp(fOG53p6t=|o!x@R-okD%Lw z5m_cLJ&TbM8&nxoxl!E%{G?GOzGV`3;kQd1OTMH6TsdSTvX@0-2b6jK+MBnK*JYW! z9LT54@DNTIF}CEIx}=IimQYBuOP$klIF{~fq`EyFL3@(tYwG!+vU`_Y==V|S+EI$# zyDVT%$+mq*F;Z#ljgNnUO#xmbSzHs3zozjGolwcN-`49Z8gHhn(tY*?Mf6YP;q3 zqh%V+luWMws1N$e~q{s?AsdcaBO@R+^VagNmCVA!V_>Pt^E;xE^Mj$VgX{_ z!V?I!oT$B8D*2FSS*323miW?I>`JE~Fnk0*jn7iD$H6v=8J1mZuh1!5XHJzI2Tzh5 zeuP6~ZN2^bx|+r?gaz~fU9;~bL19tLl-?GVveAQuk{vmbjzrwYvR!Fyac#rtfGf!5 z+1fjE_B6gEq`Zz>gkB-V>m z?P{--ZsNF(wT05U8klRvQaMPPk8t{nh2YKU59x37`V9OHF{>oTNwris;}i?#ma_KQ zkv327Ug2?}IW=Oz?jmW<+TalG@+vYD=x?yYM|l`ztuS z#)$sSxi-_sx%6H3jdo_0yY!4xE+XZ6YnT#q%%(NifDT!YW1T}OYzi*BVL*c|auGhx zFk0QzZ&kS48r)%47JB%c9_CYU&<#eSiOu8)*5pVY=YeMqu}1vC~b9tXP1&ODLRi>K5e@1lqwp!h6< z?1E%NvRHF+A39E7wLvR9n-Zo-{n7#iAL+pX*Hb~iR2-~q)L zJbNe>#$1LhrYNR9ZpKXUQG9?Pj;YhN7;zZ~^5a;W1)+>I-_jOLRFc#!F$q_gJm?8+ zThDcLB|{4~3%!3lG#Gnd3tIZBpE(Pn)a#DoZ$V4fH3oAW?v=t$?(wu?d}x8_L{CTI zbk*}{iRHQrdq8?4y(o!0AY|iY?zDrPE+QW8#Ed@7sh%|XMwK;*Fr3z

gflG*9mffta$P;KwGL7QkGgqc9mJ^hb@Q6)oa4X}X+`-|awA56h?vFC9`2J8 zvG1uB!L&NBM#^1**iXIgDW*}FLkq;7<{(Pjw?K3>_YQa;#9=v(^2m?2tLg-M2_mWh zIrcu#RFMW0U8o@qHknPGW^Y@NJI()#&<(E1e_zi~J%Mcaats z%Z0&|rmm%KK>PMXx=3a}N#qjKCquj{`qLK@?5x2oV|Pr~Jx!RacvrBu0F1buaiTaF z4K^}48DoTH9uS-ShHSvUT~ALFIMpMs@fhLN*y`r`(3fnn$6}Q@9dacMc2d6YFZ@>uSW8SQ5D2hBnL53e{rVw&9qL ztc0YCNRS_)cykl3St_-5A)pI2+{J42uiT8Y|2OdxK{4LbC0B@ea8UjhF16yDb$RW_ zh2LB*g@vQG2gxIzJjRL+t=?Gz_$JSS7H7*~aTg*MP56UlKoVr#6#&c1lB9*!d!#i@ zjhHtDBA$*lO}13X4uW`fL?mv(R|cUACX#Rwk2#b(F--`G=;qUKA@9#RLz({G60AINmfv8^p0uu)_EA+D~xzesy3^o zlTQexutGo+I=9mSEhxLw^IEsi)K7yxk=xYGyS@bm5}&}25_2E2p*f*z?G+lj*44nI z#nOSD9Hg#m#unP_)|n*KG5&(ZaV$$DCvV?mnbvN#lvi@9fXT^qwWx$E{m*m>+#eQ< zAgG>r_adHoY5BI1ypRWa&r4b&sl(AvDP2Ulmp*8<4fx76wT+AMv;@=JFcwR#SW`{) z+i9h`t`=Whr{V+X#~M*<$(|AoMfa^<|1C913_}{Lp&6%>!#~&&-krk3!-sc;eU*ik zqJEYc#>IG8hSLhadi@iysJ&9B({MsU)$6Fv*3>epkoIE>X`o}Di}zzJ$!t?VJUnxz z;TUuq3!9u=Q*EuFAfc8X9T_ROsjz4<6z?xZw^B_uT`8Yc$fsRNQ6r5y>`AAl5N|z$ zXUi^NAz3-gxc2i}0^-xGydOS<0lrz`!z z=f%;IxmbfETHUevwVQMjN|iDLFTutoiSMD$V5<(6sn&;a!Hx!RYv1f;b}zVjAH)oX z;#>CaR$X!36iq?>cLf!Wb@M(c)D=@udgp!y-h5sKR$&PvKTe!RL!5(N>C{QK?Ie5A znU<(0sgje;o?_~=?0R1JL@^&aNSM)kj1h<9Gs{*RgT9BBW>G>9ijOl6(DkKHRt913l@(uaLr#1q(>gK#)0g8hTUm2Jyz=L-6N z+Ps};{kh=cKpZDC_iEN@6lTq0g;fY&kRQ-Yj1CiftSu3+5?(i}srJg+U+LwP)h`H#@qIs_)hu>s<`b>^jOAxoZ^#@qtllbr#w1NdEpBxo$Kx|FHz`JL6z}A zr^E5cA3iHd2S8FWt_Fp^5Ko=OKq{y)(|(`>&%nWTHstLNX8Hgfz-0`@1(8Y!-m&;W z7U&qsf=TF^#naq^iRzgJstWnQcp23XE9}mY=ijIb3dN~N&B#!E1yxpO$70DwCEHYs zl8sWfflyhpav&>QETO`-b7tjT3LBBGy0BI?mnd*iC_aTz9vZp@$OTjuM0%*2OXvbo zrdKwX;1nU(J2aQza|gZaY>+0`V}5-homRli2J(EHWhi-9Iobyiy^4bRTM(2MD$vn! zb3lA00ke++`hBp2}&0H5+vbvJX6dJcC2jB4XxmXCw6)V zsn#~sw<&~?R35IgwFRrSIL1s7EYLQf+pk5nR@KhNf-GDY;4kiNELgArPO4hR+Szd! zlOWzuE$e+93PZK@sh}`*?P1_PufH{Pf$W81sdKEG9Vafsxm!$V=q+;r$K9%EenPRS zu-@ZbFyt2LNSHk2H_|CdcY}0TKPedU6X{5vJmj2Jv9IlCY8Q@l;PpZJtPG|z;fopXmbcuu>MAZ}^EfmC7MKTOcjGK{fS3qk@`gj4U^SmK z(pDEbzNpjkZ=1!Bt&;i_S}?b46$jzC7`rxL`$jN{9U{dx8Z3jiCF8S&RV+D_c;gpX zq6Low)amfy@aPyFp+mzcE0IP}u64CR&1@8tWVEjCs@`4xF3m11E75!6wEYbm+smQE zeG}&g0F68p;mx|P8p}Y(%0j&Ld18e#*2AE4JP}LwW|876oTb|H6TZ<# z?-p#-+g)xfT-|k!*_ACWqSxz+Z|-90QL~X?A*jSFw!)0M8urfF09dJa-+-;{iV_EK zNWy!C#OEo*yFht7KVt^E9&8t&*nHLb7`n}CDJmp??3f8gytg{O>1**|AI65LxE4G> zY3YeiI=5=WO%TQGh1hwJSj2SQ*8)Bmy$@rfgGGsh&f-2|44Jy!&|!-#PBJSY_*3Gv z_m}OP4Ol?t&uTMzm*5PRB?wgU&jk%rFiAso^rAm(%)|#37*IIisV=-CNefi-O4Yk7 z*ER^qi4i0XV98-e4SPk;tfr&=1r3{u*1{crY1ndwhQw5y9^A3MC=~f3{aQS%jw-X3 z7Gmag79c?|0UiXMpsf*+6C5klyF)$IyOW&@ioG0d*nQcL78-MLxpSVYHB#kxEcj-g zTUbG{U+~F1ksWEgEjA|qSbQtp>qJ;^y5>+waN6r2PKbl>1_`jy;+Fn$q4R zr$U2BXT0#kq%kB|Tm>BlqTpx(=n5daIPNkN8NkdGF5|5sJ~naS4P3S-zl(hPWQa~a zu!&VrC7)VJyAoMi7(HV{?cD*mz?S$CquLYm2$()jVHs!*o#1F&J2p;-#?XDQJJ@F& z7wLsP8qk50RN`@IZ4XigiXwbG{L_4JcW_dnpH-B`&T)l?CR{;-Od?%0+Uq>u*Q7#7 zgp|wEz1ZSs#mWTjzQR@OSFwpd!bb&cvX2Cuq&TTmlF5=pzNh;9Ah=s6W`UL9`z;pQc=){7!&XRW54wO*8EFwKjx zwg!3hLL{E>t*N$G*D}_g25V6i@YSEO)~lVho)T*{oV8wHXn)39#^jh4E_ZQvx<$5| zH$R0~)rgH`o%zir2M((+7gwJ4@R`jPI1e^qdRAL}dIFP)s&_~GsMPzes{5TVVx?nHzAT-5JK4-G5EUmdu z#BjKh#K8HiM$RZgIH> zx@?(x*DMblogxRs!tvEuCRCkE4?f5(xYQJ?l{rWRi=3A*IpG5hg$EN>IU5PYV)p$@;)+0_7qWq zD|#qde4@q$72hbQq|80lyVSTFG6K<Krog6q=|$Eg;~x-P3fKjm0r{{oqZJgc(p z+DBN6yito&2OD)Bzr$3n80%uDZK2rF)QW_Nb?gWJ&5)%bi%<;m940 zrSbWvoqlrq*wELg>T|1&PyjOfO`G;CKMaY;xTTVX?EC1^q8PDpj~DqD8$SWc{v*i0 z>)rkl)zL~gU9oV#>D!Kl2aDM$w{RSM?`-HBA3&;mb4eG1`1YYbfTArQk=4 ziZXw~a_`##9Z7o~frqEzVbdnGT~$$-hjrTJpbGJH`mMG-XO6=0Q91O{qkCUM{AEsY z_$!DxNT%6o1N4e=CrUVX7RG5^(n%}MjE5ZWpt9M?%-xAZ$(^*~DDKWP@jcd`87tCT zPLOai4g=p()WHA!{lCnC?mHa?CDdRj`u+N;qoDe?qtFXV3pE@n1ZpN!Ce%NmUWM8L zbrk9f{5JtTb~p+?P!pgMpcX?dhk6?74X8a(hoS1B$`EE3)Omz^3+S~MX+kXk4Vh3Y zp`L?!18Nu438;%u4!b}T)F`NEsD)6=p`L@<4)r-y71VjCD^Sk6kq@XLP@|zjprWDX zLM?_`3H1-Cm!P&o?SQI)s)70e>N=FL2YG`U05ukBCR7@f8EOO6%TVt@?T0!HRS$Iq z>Q^W~30%MfqS=cT3x29D%m;`Dju3AJo}i0Qm_9RfsxBoeHbFOYN@%z)B~dpsK5BYw;K(ro^EWFV773vV@%QpG ziu(zTi@TR|;8=;KSc7?4P9Dz!o~vQ;#)r?;>0;v}r{6Q?z#!rm(HS!-mFI~NdBfn&p0m|+Fg1`aPhK`;91#A zvU8SYYYod&4Y}rwoNUmypp*Lto%9R!XWk+ptWVX~(7^3y2yX@gLG%kvK&or1UnPx1>6R%P;(Kncfr)6e#Hjf$2Y$QLU zxPke%WH7_RjO@8QsAPfs@c44FO*xqcDY&o*y+RHco~d7vhd#)VXUJ<0ueYRSsya6m+*xXf%gaecQx=3d@hPZ{ z^R&znx)frl-_Y^e=p22TAq{N=EY;rcYr0=M{o&zmf9$^_0u$5Dv}9-FyX7}jo0gHL z&CW5isLTefUYp0Av>DkZvpzf3pv^Jz^#3gW@El7fk0;FlCT3-18+afsul_u?%uFPg zhZ>NRw*s;KN&ezjm{KT@F*#|LOoP^_&&Wh}&D1OC)5dFkO%(c1!b|*-IiuD3P07eJ zp<}@}zBAi~{t3_Sh@*pE?Uc}{=(`F>1XF?(O#n>w8k7ucG_?^U4|J=R-4J%t`>SN zb$?o8UQQOTGsCnwd0Kq)nVS(MuQgF0oWffDaPxAr7FjauGpGhLKdCu+RI8+9z}yu% zmOLreoJ@45RM~hF03ql&d@YihzH6}X&CG<2WH+66#FCSchpr-UR#=i{LEzmhZ~j~1oY*(=)veq zN`2K_>Z*hl29uDT!>o9oShtm}&rFFom}9_{G)q=4%WPD{c&#>EpPEj5Vm4Z4h1{lT z=b$@btqJYH*ECP6i+>&$5-{H*E;k`MCx^z6T1&2WA!^E!Tzuc#YrTmVEz1_~4Ort1 zlRTy{%98MXFc9?-pnjGKk?G`dL{zphCkb^X%#x9rMx`eRe-ainhUa8u;cI=DKR8Kz zxjPQHg;FKGGj5qA>Ui;;K;cn7<@9A&bXR6W7Wt9*_+QA*-Pyk_3%rcwgg6-j|N7n4 z{`J{u`n)tPIt(_}L1$~qrAZ2GvZ;?>XrQK_7Oc(EXIsz@w7aM4ObvG;E$&jrz zp$kei8_-&bRe#V&%rq>@K)&;cD>SzHZzuCN(&3}B|87e6?l)r?S0W^)N#9yDpw7J0 zt}vK~X|pW&mY}lYvzf6lPoK9!YoyPM#H~N#*WZbM82UP?82@(Z{LS?6&7YEo{th4g z+w&ylhpG+lCTOH_4`Mqq`M3Cop>(WadHV?ae;`=_ErWGH?VU^(3W54NEo;2miCSL^ z)z~RHd8yP+@AlWJSCU2(#1NX9d6z4>iJ&v{ zBQE!e!<}Z^pt8#_|2x!?7s_YnIVXkF;^quUq=jKXtlJ8sC36VS73OFlmFsK?(|}l+ z70i-*J`nr0gbk8;vxM7#6yJ6rh2H_BrIcdHoo?)aQ8)@z0>1*1|1&_E6V(H0UUWf1 zQL?`*nVTfME@2Ch@}W%U;Z#71$3rq}B=nT*y(H`}p%zF|G#|e>FAduXnfwaUk7fAFk06GEFCHv(-itiO5)t|S3ME@tiuE1g-#d8Ko^t1wf zfj&#Zf_;F|Kr)+w{=jWO^8Yzd3#x z>*aRI{&OJtuK^OjE(3`kkF2oZKArr_^-Zo%a(T=3zz=+;`Y7|?58->loRYE-6PPq2 z5&G0LLuw{4S8u{MhTECUY0#4)CB>YcK@Kpaq!{%kv#ejrW{Q$GiYGI#J&ZxW5OUa* z6w|T{qdA3STC#o=)90G=#*Bttp237UAG&7fF)_=`Sd?u@6J%Q=kVH@bL7Rp#kJ%v5 zO68a{WA;k^1K@{v?~j5Cz?K307pTmrz64BqK%fCX zl_jDPCLlb#3zLAufPO;-;c?)6s8vuy5NH)N55OI-JqQ6%BcSL3h)D=E0TB#=eihVw zs0B-nX6ixjN7w~R7k1JUgYFj=m{;T)a*X6GEZ{-{3@adj(Jr!JgvjlQG1-f_ekqj~ zH~>2fO;KUHfU}>og+8XYxxzioVAMlGMw2l)7-su9CQBZti^^1=_s8L-_&W#39Dwnc zi0VkcJ@(Gd?e3iPd&jb1X-1w|9_eO6vP1I%jDB+|e};7JUy#t*Pe<;x9b|Nhk4Vxgsnk4-hh^{T1`>^mk7N5^bH!;SMf!aQZfX zGOz#8_ky$)+4?M0cN(K}0VD(-kSb8#WjBasmSY6pi7v?p{Ipk$KTM+C&tDQldAy5f ze-iI)?bXbLKytH{`ycJ#!CFMy-XEbRr0AFFX^PrzH(}x=L7RYnKpSB&rRHVi@@6e) z!>Fl;XX-Ju>~PWQ&04?P+(Jn{4}M8rBQwx6v23-XQy{pKdrnp^^_<%23m20Vh9p)} zS_|~qIoT_+ax5k-%EN%!Xe#R)C>(ts@AbRWp1v=4{_bT*-(&jS8D2KiIHz+s8lRD( z@AsVuD`x*!NNG}dIc@S!KeGEfKcb1oF@*G^c*rb=CnPidTsX9w$w>amUQS;|3P<*G zJkYj>C%ycW)0L6z?@Ukjdnb}VnYV;@n#q4>cQW7kBN{23oVU(q*}gMUcrw#Z4s)lO zyLPzCX4&7JD7(ujyWbhV?EY8wvcLbuKjwfRWSSN>bHqRhKfi2CW+rJbxF_(ss7Vc& zU%o`Dzac;TXr5B_%COfw$g}>Jz3(4*Yi{Y)p{e(gSxDRY`)H?wC!RDuce7`3W(2bn zG_{)yn}>xhJf+YLe!2IM`=`GK`w)lcU2KJkKK=jW*F%f4DokgxKD6htPQi98?fy4X z4|~1!lka2IU*`UFZppw&KWt6m4eCPnt%L8R?dSo0@|pMFpIhz` z;q=R*UY}Rb{CM|oLyMkSu$cyt7-D*C{H*s|Pk)^F?rT$>$9($my!w%-RPuCodv4 z&H4dz^wYC59(c^F|M@tj|LD3ASMHBX{nw+F@APV%_O#z{RqveasJ_{Kh}$8fhJ<{m zjLREv^Xux(LqGd+j`4-z!Ec;i{j1@F__NElyrKOh{^o(Q_kA}%9P^!0SQ}9K+x4o! zGvoZ!yMMmcBdLdH*qPPy#(ndzKFKZp$37=~|OTuO8u?f-52XI`?%2UzM@5? ziQ0ji$6Lp^Zc%0AezD)MRBJytWXo1@QO|7Go?HE|je4}ljL7}R-uPZOa}CXSG@mWs ze8ZvG-0vx2UehO*veWN+?yWt4E>CTUe%NnWulnY!l4rwb9It%-{#oyz|K|RS+h2L- zKQS;yW~NnLzTULKd(ELNx7j($1L39f0$L(f-LCXc-uA0s)AcVWzdgLqwnxAD{K<%n z)r#z!nyra_S6JS9Mi3f4-8;du;fa6tn*8OG@jD97KKZI@iY_MI@fT4jP%+!e3z~+dNdX_DDAh41&>@)f0(qn+s=H!xO1rX_=!WO zR%cCqyMN5?FVE&~{dQt#uideSs~&x+$Awdy#)nKlKl%NeIm=>(T>RLLYMEx_toL0{ z%=UQa$Pj(vlLh@3+pa%pSt>>hJ3e(==&Meu%1O@qwuu$TFU>0cwc*nU#ZR9+uJtkb z=2fq~x#z-1PCZ>h76z}JKJTq#L80fTXJx4eT?~DMNyGLWc=qfEeN<`JzlvSl_F&h=iHkhC|M+r6Vtj8K;I!%Db@R zAMb6NGk9FkD;AfP4?o*DHDKAz?3XWvxc55P@|=gJDdk$X%u?Sl>&?oo&$^pFUe)Hb zJ|O&)42yrjuyslAXnq=4C4{Uj|9;^faq)&4&G#>TS#fAqp=Q>u&)h zY4|qw^=C|{T`#)}gp&Y3yFapLq#VQz?5(9~U@>8hL85Vqr^;iLckX3m>m zPR?HGx8ue#+rw2ACl=MWZ2xFcaOH>pPOQju-@5gA!4^4Z;>P{cu8*mm86%#4^w6OG zH(l52rY){{@6@X32GuKXZ?Om)CS2%EaSI{OeWkgo+@F``=_0mG~GwMNoPJguP&EcPV#=Tec z{IT`@4HR^ap6;s zUEX_aP>As>p`hpM7cJi%y*6~jy0t|9h2G23e*5L*qZ5~IYaHRZ+8BL3X!zAVKR?|? z-6Lajv}wC~$byg_iV1ET9z8lJ;O&Qgs{D52j**{*g+|}}Cez7Uu}9%_e$|gJ&OE3u zUHD$jw@;q^A!v_2y=n6oFCXo(_-k8H0IM*X9^#mlWv>qHb=_@p)X&G?d3)KL-uvHr zV$K^!N91W9TobW%|DGNt+ha#XSAH1u>gW4zeXw-Ypy=VFzU(n+$FsL`$JEaKZ2gO# zVZZl1I;Evdr|Yy}!3K=ZdQTe*O^+d9Ng7ZSAs_VG~a^Jo?gz zOJBRD&d96lv;E^Kk38_ru`>=2+^U;$tjMRw{U4t2-reUjScy6E>YUmKUkHSAqTgFO8wi~71L zP82sdRRx>6pPoGYwKvai{ZxPcOzH!lD~D{}@^!BM1>f&V_FCLM2MxP#;DW_H_Ph~% zqR_PZ>Vk8p4ww0#%W!_^$vr+lI{(vX&yMPobGqoCmM6^f$Gn_<|PwXL_HDy?xhveF8)6F<=k)Te>#5H>C{_A zUt|ht-~Ibc?AzI@?XSP8d&XRm@N{cZnfd5frF+7%Q)`os&e{23qIfdiI3gJ2p2*-v33?kX6IKwOY1q$`9_b>vX`T$m3a$D=+x`D~_e^gaK@8G&fSg+F5T({m+sdDmmW?ERSz$Ps%L;g)hk@#+ACS%+B;X_ z>a{`P=Cw`X)@QH6t?x;NTfZv`_kOMp?)`lo-0!3QBMnN#7fW-$AZ)`udLdzIA^(M! z@csP7NjUs6lYeKi-AJ8R1mEL*a9T<=DrQ&R7JQ9{$N;XrGVlW4tgP`+PFtTMt{>8MO#Lb73Yu?FU-Q;5HJ3=Uh*B(qlx{ZojFM{@G6Y=Q`>C*-2058RR(WNQ11W`2!8M zT%l;+oLuh=s8jMvR(MXH4sxOPJy`H6v@PR%h(|8x`101!;6qSDU?z2XS7>n1ZtOQc z0zDLkNrC-^CqsiZ8$yG^) zFc5ffZCG#x)KRD^sIQ=Epw2+mLy1sLP%Ti(C&Gd?P+m|?`mo^ZP%TicP{KmEL#d!V zpfpgPP+m~|p?sbQ3myhF7Agda{6_-gpk_lYfXak2L*+v~1+@ukGt@Sy9Z(7)9KT}d zE1;^NYM|<&M5rdH7ARE#(uMMangA6CwE)TtwF+t-)KgHKp<{G!H5MuwYA#eR)H{zkjFIe zhy4So=|Jou$e=cWJp}Zrp?w6@ozh+c>@2}PH0+=@WGysMd%(Ve9MWNLfow&44BGXf zF*xc96%#WeEp5aK7Ec;}!?ZE@X-TsJKOr)5d{)+Y+Et49@tw;C#^8%bm;f^ol7zo$ z%$yDzAW_zp9V$Ambz4;~-w74EQ0z}MS?csp$5bmUNSdgQCa zZW`hwTBjhkg}@k?i9ey}JqXE6R85oeMo2sk1ug={BOLWJ)6wgboIDnJUkZ$XeJYU0 zZ(*@gJUpE|gr;=l{F0vbMa$`Curzp@tSDLfnUa5=wgq{m6lEG{WRoTB&6erOX*YAa zI{T1myxlGoIi_EngfYMo;8z;{u8`6v6a5>8UY6YHpSInGd~u(VLL^2(S@<^|w6ZD! z8ficIEb#4re_C+u_J4kY{O@-Adz&KhMg6mX>+nUp^WW|M*Wz0!|HClvZ~f~W!xKWs zKL>mR|IR--y!QY16(E1@69wzm|KrIGg&VC;6+QjTre~k~=jP{Mc=4rwy}ad>t*^ee z?e#a_eCzFZ{$u;Q@4f%QhaY|X$$x(O?;SgL?cTF@-)EnHvHw7^t)%qep|bLd%EL#F zetGP8RrQIJUw!?}shZkvPoJqfd#=9W{C5|=zj#S({K0Ho7$#c`cLb(Scd_vLj&q49`{>kAx=kV|4w{r;6tM1YNcUMsSf$c7y zf+zIcRs+4PBVT`&)7#ze^#AvA+u=(ibm+MbLIC_Ci!h$X*|QD6Vkp(qxN!w)2Na!4 zYXSy7gE<4#cBmGpxJ_ZfFF}b=bZ)H`sCpLmP=B@WltzCvS|S-v7EnHo_IJ;*(HS_B z=E&jb6x%4|s$x$kNWg`4aMneW0DR+)%>M-A0Qv8)=%kS^ zQA*=$8e^uzYyiD!Fv&3zul`P+x%`aF$~uQ7YW|82IxlDfud*R^%V|%UxJ_L8>+t;a zB1!M=O!=?F;v^x$@p?j`d8+)h;=SpnbY#g-0BAO2jBf(p@{l^Ggd~B>{x&TXHWhKu zT*(Yh1Ryrz2OsAf;X-FAsSeX@>-Li2Wo>{|lk$H1SZT~w1uQc5RH<+Gkdl`Jc}H-E{N&S2)iADt2n0B48?_iDvdGjUmn z#D6)B+w;NYQK5N;DL4xjnwwz?jg5~Is6)~~P02K2`*;pb;X2#V0pHGMoJPPwOU(5< zg~M?IZbvdPipx>L=H0_b~=@dJavih167&Fe_n70FK`?962UhH!C(Oe0qcqH6#^WfIVj8Q@}Ik zN79cJ#t6}Z4sNkRln{}@%aWOez#uD}gIl1FX=QrWx&BpKc|V0Ykl zU=QFYKu_QvAniRa29k`h0!XsaDqtUA4Ul#g)B|bnvj`-aV-t|}k+c8@0EI2m-fy55 zMh$Qf&O}%c#ux|m2hIi#11&ypI9oPUI2iydl1bhiN8MqA?0^AM^1%3hy2krqZKDf4rXWIT%Zdu9Y~i5nSriAlF7LP^I`S?J_YOodUI&f<3a^F*(^HHdz|lZ2;DbOP;22;a@FCy?;8@6krW-D)0g@3fKgk25bdB3{<@ac`MKp7z@+_ zrvrxpfy00iKKXqWIr11lk9=HWDi_L_G7^>G6Of0c>?%FX5a^84gtT&3_M5}0XhjIK__7} z=p>9oI|V9N38;|Z15g9x5@`YBvqf;g_a5J4`pMtoNJ*N?zx1@0&fRI8L_ZoWam<#G z%VKFBLq8)%QuIrg{BtQi)??YofzZs{X&gX5`tH*&TZ%VZGUrO>T**JpBIrlsH2Tpz zf_^6H+iwycmCPhDN1K2Tj@%!Oed(8h9MO;N9igA8JwKeTOeS%s^*?SlN^~xj@|TWr zGyU}782t46&mzTZmeS9a;#nl6 zL-Ppw(a4>COTan$WwrBzyJt!Ei=_M!pO?TNjr)lcG*;)FqP)<&A|C4yyj}zdVFG=R zscr;d6c^9*G%E-f==(}_A^_t%`ZiO&AiWNHK9Ziw#&A?00x(LX?>W^8($9pR>O}x- zQB9$@Kp%-QBd;H1PiavdA$z!9>iyiolK00n4P&{Nn17MAJ}rAuL{E)kt* zf=G$toF(y)@)*X}lBs@CoWuv3M-x9OeyV2yNR`GfRM$vP`K9_saT1+W=K|n^#y(W< zh)!Bjp}I%s-0Mr1Y zlh2l?Fn&@UCfbOeEJkw-qnT!xa=GyNVGPSV)o~irQ=OrDPI{_WRM$yQ@l$;#zTKG@ zs{eA?EoAibbg4baG*Fw6_0%pp^t_G{ozy;L`z%%#GW}GJTyN?Wmf8*Rjl!lfnx~>9 z1@x9wj=U}Kwj_t9{7{>sQci|XxouG_RJsCc7|&%G<092#YD=8&v=51RM?B)~FiMyK zJ#Saxtp4$JE=~u@Q7Gow@Wb0x7~>;vGu%IKGu%F#iFK;Kjyu%p3I+tZ<|8o9y=s)Pk^QmKXfq!=*Sv}=>4rTQ5JcqKj z%k#{6&+{D4>at1VI_05rdYnF<2RZFH#w9uJXjW1@?RZ89Pdi#lkLmzVgQq=JYMaC} z&ST!6gh_N{35(&vxh$s8QEX4^rNzNqWj-BBR%YUWH7&A5Uq-h1+u-iS3GiPSb^qF&~xcMc0y!a89bU(T! z>UgSDIkQVIXNlv*4kLX-n*@8;`)O=1x70IU# zMP)54dAN`@^j^>dZ>}0IGpDW5EeJym=GD+3^iAk7(A%MH&|YXK^n7SH^hM~o&{v^L zp{t6}k{}7}|zebWf*ajzTA4 z79CX&<~C@8^sEoP9CID?EZoOJZ^WF0F2sEU=nBkBp#9M6pwB^Xg|3E5pYs9qZs-v7 z0q97|O>|Y?V?GNix~E@?{cT!j)J?dfFmH}o<^nyq{{mWuxf42w`_|CCFy96}5GrH% zS=es~t-(AMIvamuph3*XLbt}e6Z9C&A!rZ$8$sJJvt&~`#Eqeym@k5ML#IJ|;VXrn zi&^G|-Gs9@bSY+O*}a(efiA9Cp_f2c;=UR5T+HV| zpCa4?pi42I1ntLtbLcY6GsPYA7SKM-v!D+^mx?{~TNs*p!1>QpqE2G#@{y30Oq5`9e=w(>oB)MXG0%^ zwm~0-E`;_$&w{RmE`>e|y%G8(bcpb_g|5VW3{=+k??WHM{0MXn^v}?5pw~l3-BC6E zQs{U1+YUM!^JUO-=&zxD$g>~x5X_6AqC*WpCt>~_bT#e=LT6*{h7Mvr2-=GI6sUoD zdq@KFZ=feYW6+V07~iup?D z0Q7ih5c@r#A7hR{zk$Y~2G5k+kW%P-&@yNbbT8=D&;y}&Kx?2kL4(kV&|{zps9p!j z7gcxc4l(AtznfV-xxZW0N?niRVWmyczavT$p?@E%R{#3V-Ej0yJZ&#? zCf7dB%*OqFoX1{PE3Un)Jlx-U6{y2m*D?N*E@yy?~js73S-CaM5PGoN+lQ2a; zB)_HY>-Cp>JC)xu-)P2{e927t)w%+inaH|Hcv@8cNW6O!ilkTT4O&@~x$7J8@BY?% z7WEui{=4?_g*)|I`Ub7LkZ+OF!erhfYqPm(hNI_UAy!;sFEhhtC5Qg4wO#ISkxBp7 z^6B3Z6}SFq;aD0NoQeb9Oz ztw|KU=HBF{q*1TIbv@R<F?-!5XLRhEUvej97Ja1bq7XN?UP^B&IwrAAxA*qJnmHMODbn`)eyJ;8woSco5xU_Cdk2Io7l+@~c)VqS*-=Z(oT6e8))a9*pr}AI? zO5dQ%L+eXr=ep)|^X~eg9iJd}!%+;&OhKOL6bU;^bkv@T%ZuH7{4pzH`%^ z_W5$BL({|6p~`>PUelEP>GrOvyjuTq>5$`p=wwqlr0Bn1xa5h=&)z?9=qY=)u6NDyY;Wy|Kc^)vENsGd+F9EU3K%8f&Fh^u;#19Up+Lka_mFV#YgG%xzS0Q zBt`N^>ek%w`n|uMbKLD429ynXvti)d1FAZvA z%k}lEfX>w~9f?aFo~8Zz$I^hN@*JN2qYe$%BM~|gUtol|XjoiBEpb(mlgD-F3aq>g zRme^o(bvhI99f?^f8C`u&Y?+i%GoOAx;gZN^>4IKsMzk?X?q_yf(zV?x9`4U);Sd; z%K!7jdh-rElmoMG-H?4Mz2CmKRP0pq#&>Tm#((c?iA~1zRm>0GHs+kKF*p7F^PMigz2cP_^*dG! zB42;_zuRqbXT?Qx&n@YGkC$+p9`D}c!W9)?U)TKn^2fM|uKSbUBuCs`an*@e@A~4S zTM^#j=Pj6bPsQR`@1`Hy+vER(DI2`Dvf|XbDbIaqkewT@$9o>Pu=sS&kiwqqYtmBda&Y?$>)8&@rT@c z*L3XdBhGuM;)VtHTyx#;xfQSMkjMYn-d{1{-|v2L-YNS^elGvjh7VWVI&|8z6Mnbj zp~gVx78NTWu6X6g3;({&1}5gIBYv3nNJamGF@g1#|8R&g_|5j^-#$`N*|P11PyVC) zP$Rf#vX{-|w~LZ-=k~ zjm|E6vf}xMK=X}d+#nd-{>O_}JX!JheiyXuWs<($7v@}3@l?fCyPkQ*!%vhQY7EUB zwb64=RlL*t;?*nOC%*>%`sF)EK3(zQ;E#)~veC%1>ad+YdAg!(^jFc1_M?6T>~ogI zo~bzb=%3%a{ImV=KmGB0jAtv7H?`J9z9GKEzfSn*tY<4adKd1p>yPADVC;SGuk&2R z34fmP{1(qj{zYH8;)3TYI+lO5Wa8Z$9cuJ!7W&U7&sS`4@vRrUHE!EOjne<#eB@Qn zS0tmaKd|fZ$k%kz^h39Nq2hxJ$9@&LVjtwU*6elJ3l(Sn{gj@6e1?0^lKHcDda=Uj z+3M5JZd;f5-`c7B(ibb*F8=D<6O+4;p7kaiz5YPO$-C9>dh|T<`{V!ovU}1%#S@#} zd+&wEQXg;JdFDQ64piLw^+PAV8A865$L?_469X0dK3sm@;h&J+8&^I5#*YIP-BHuZ7x~-QpKgm?7j1%uc-gCmzOWT>!pg5PXDp_ zS1*zuD-Yh{t)Z7H-q~o>u48BKai}q=YU)P2ud4XhPRquWp0owwZE}5c^QwwXw;45d z+rCW?HC9*mAGdT>#iCzcxjb?ZH!^l_F#q9KS5-VTa^nZz{`6q#!~HkhIqKz#eOKST z&82^!J^S_lp7BF<3e%kN#GykUzo~jYmkxGovrGGT(q@>cWL*pwb`XXTbo^4 z_NUc~-=%{ywArO&etccIyR_*xZFcF>Ms0TKz{c9_((XrJQ~q6g<6>=g>A*hP?9#;N zuPT0*mfoPvE*%rrW|szb)n=CteDI3$@6x90wb`X@^R(He-|eN%E?xMKmz95)cHgJX zE;UZmW|w|9MVno^a4W~ZLlf_>(&=&N;2qlR($yzvvr8vU(Po#f+(DaN+DrYEdg9Wv z9@S=-CN9=ym(Gr8vrAW2XtPUuH`QjB8lMcP@Ljt45p8zqftPBtOG}g5?9xQ7HoLTc zcWrj*QbU_vI=F)VfIpXZ$FvrD_beOCE*snM^^!_*k8 z*qr?6zf0@v9)oU+c?DE-hAW{vLCYS}I@dAKoiUd~H-bKe`-ac~=*G|kv6op-06GG? z8hg?0O~Sk>v<_MZ4MImj8=xCNkAaGgwiPNm#VB+eXeU&3*e5`@hMo=;-R!wg(aA1> z?gG6Wx+}C7Ds!S`(A}UnLU)JuL77&GI>BICr6^b0D;na5*bChkD$_5SdWm&QSRIKr z=0xM_g55cxW;G{kkGIYdKfL3irkaf{+M%&+Q6kQ4Z4M0LKBvQRUsP^1F4_mgj7BDX zqK9gXaS?rJ4!6q+r~5Z_a{3&Sx!mwy_f&p1io00-{MLhIDP>qdbau-gw~S@?iYetL zc`W5S>Iusjbzi!hl-q0+r)9X6;r0OLpZd4?Bh}+i;Qn*@ZWEoBF~imigP$67L4P&e zzb;H?J&oQMlw-bpScdX6{~tV4J$|o;Q}T&uhhVO8?8M#m;O27x3$Gt>e+s@%PdJjZ zr(^E%ge5#~(!F7M{YhB8@b!DbqDYJZ%!3)>37;-O?*4GMK@4bG+{X6(Je=HTZ$Tk{tIdH=g z9>4nO^{3*ZOq(*oN?<+#xb4P($1g0eKMAW0zU7{oG2_z|s~zch-!rbi6pzo7JS+Q(|n z%S^V6--2H74lt(B|AOiDHT4^;7ybO&E#E%ux7YWL*tYdOdC1skIrx}nc}XZ44e{(6 z@7M6MR7W_6ss66*2^6+7|YH(A?102R9@pwgcVKqU+r&xSJmVx|7vFcR=eSPLCL z;(y#T>G3&UhT{!5ekOVRwB_-m{PP~F(B<%{ejmCTeB=0&`Hi@XEJ9`O+8ySNRjACR z#Lnv$z)kGjIh)sQ5H~RoIr2$bOP|f1CJD!IVjjMf0Jd!`)!eO0@!fIbM^aF%)E5&s*%qWO+|IWWEj1jN$$ zyB#;!RX(`Xb(1m^-1uCoJ*?!n*gXYx`Gks{8^2f1m!1iXe-#Li>+VhGNzVqxp9;j? zEyud&b@|VRx@9P1zp%J6O5HquReHGI{1x87Tj}mzxy1b++v_{_T)8scZ{8ul`@1`) zyFcaRqZ{6`ozmSi<(slge)r~i>F(Zq`=-5ed`T>~yQFUqc!aw0WXAuCuKez=bf&v| zB>Zg+`y#i{w-UpOtl`%VSiJ2Tuf(|0^?z2{5+0`6Y)x@VUE6<4Oad($ue zcE2j!eMLt3ugY-Gl<&2x)BR_;(tn?)@W+RA2nN|5&O|-GK>&ppE(3n)fUt z__bv;UBtW|xU`$!JzJp10R3PP$c31tpd1826X*s#pcnLm0Wb&*6nUkf3>*#r1P^BS_T53oAfpb1-+mj41v-zct8L&fo>pa z>xK4%0WbtgcP3uY1iC>l=m$f<*o81a5F|h^=m$f<*cCSr1PLJN>4ElvK_DNhB~Qws zL687FpbrdyAyA6KR?4spT1I|KnU?cA2ogY*C28sAcQ5D%17HZ0qU0?HL687Fpbrdy zAt3icmxCZkfF95X27r{|keG>2@~xBwRyhcOCLr}NAry$5RZ0`!1h&<`XXB6FGK1!lRtD1eM*&?X@5tQ*<`f+7QS05p-WL(no-uab`eXcLgO zQAU{E{O%Js5Fou$=7an;SlO0=0B8cLyr6wR>W<|3Aiw3(<1!Eg3D5)jgi5-gLqO_C z=>gawS1f!)&2$YQ{ zERhpxP)1T$68!EbtRCnf{`;WP-}H+ah%%!L1V9t$2ECvkNSz*p4uR4`al>p#U4ixj z$@4PglRC^U1~pbnp34poRVSbWTN4gc#zYxUN|8y*GJ#!!-{pkk*8d*t`os_D!CvB% zd{0oWJ@_vt&!rD(lCXqF>KpY#WR<)s{S`bw+G`Lh{g}up_5tKfh#Tkw13=~gL(o#f zE3LpUD3g3eX6cWl-%a2a#9q>9V4vW359kBZ-wi-jyP}Q^^4kay7GVs6CJ?~B47&hm z0tsMjOBh0lBd`k_awbT*!5y3b!L#fkh1Ni4$7gt zG9YbI`j7y>n?Mif2SY&mw$duxKmzoF0U!r2WtUtN=mGse(l2dqkl&@GUHSs)Tczyf zP`TuL8MH}$18L7e`1<)RefS_$4i=Vzav=3E2$go5fcAhs`1|BH>5?*(`Y|A8;*hc* zz?^_*2)ojWfcnx$*ya3g0tP(dN95{*8pJ7Sm%NicLEI&8dg1K{3CeR&{2hkuAOM;` zkUG!WC&;+_cFX)%wgw+r4AismV6CdHrfl(IM1PLJNl{7UWXAfq{i$3T87!oRGP#VM^2!aHV{7PV77Qhc?=~q?W5?7zJDbm-6 zz2xNpbV&S2IZY!R5CjP@P=d&M5~>_s^88`-7&WKOBZP3nfs zdklExV7lrEFBk%4$G``~UpKTD41gg}`fI`g-JlorI~at@W6TNA2l~MvC~YJT z&;tfQSrhSr9?46DYeD_hq<)Az)mG9q0!AU=WnU(+&Er#|}CK zeeQMJSc*R4dawdK3*G}ig3;ewMjeQOi^0R-V=(H!ma#XO20FpT;C}E0*y#t$s07X6 zbnqweH24`8yPlJV4GKPY~IMWjqAYcV5DgqdxB};6mTd%^o)Lz{11APO!4_k%&OUWsjt19QMR;BGJoN=Fbk2!Y>&d%+rDtV7&j z3P^&Bz@Nb)A#CECAPmSHK9K{`)0}fnG2G zj16pK3^*E`3vLE4fN#J~qimxJbb;%@DzNT`wy`hxHCO^xgPk|Bje2l8SP9+*n{8|x z6F?GN1)c+6fwEHDI2^>l1>iyO3D|HG+xP{T2~Gt!fmPtYV9ciE1vm-xfwzFY8T_Cb zoDUuVpMbK>ZDR)L2Ft-3u<;hQQ3;}8DR>-MTM{mq3KoK8;6*S5w%*D%DnJLg8axg@ z1{-Z{8wY?!&;yi?BJt$+41Q&vbz8F&c1 z2S)Bmd4N`M2DlBZ0p`zaqZ~AXGr$V)Iw<)$We(~<0$dFG!AD?&y=>!P&<2)(e((j@ zVQ<@*4o(0!fEU15V2`oXZ?Fj52;Kx6|H3v71@pl&@E+K-+%^sZVQ?HFlImG04IT)!C$~8BI3Nm^f+xX0!H(kz2PDDe;9>9u*zyqSHaHP12d{!3z?efxD>xA>11|&nSL8XE z0Zsz`EBFkI2_P4^9J~XzucW^LCxP3*dtj3)@*c#%72tXB0~lXT*@4@^ z-@xb^`etxGxDOZ;C|}SG9t7WmLnhMRz?I->@C_J!82t)30W1SA17i~H9yEgUzyshz zuvsl_3xvTr;9l?{*yM2H0&~In;LqR_u+IY7hh0fK}i}u%o6OT`P4Oyb3l7)AxXr!6U$)!}tbH2akbo!ESTu zXTjOvKJZttT^s!!13S~um+SI%Xk8g0cV2Sz+b?|^N0&90Jnk< zz=l!AE^svH26uwDfZb01f}_C&;0`bdwv5r&gVVqrU=6V2lsjkwmw;EnItj`d%m;UZ z&%w`*qrV5|f)!v5ShvGA_6D=TIp7ZP1{jf~p905%KY~@j>}1RWM}u>~3h*A-w2Qg{ zP5^g-x4?SysmGuVTnF9)8!jNNpbh*HJPpi+$O(P}E&z9f&%u~QjE&$@@HW_NG5HTp z2Y&`%f?ba%FTjal85jUxgR&EB;|LH3J>U+o8vFouI}ta~1ug*(g3rPFC($2)D7YLv z4gLz&J(>Ig4PY_23_J=x2itWM7U%$%gGa%)V7F7S2c6(j@Gy8El%C3%3yuV*g5}^1 zV4OyK15?2wa3y#YdoWNyI}p_(cVD|xD31q z);)**4K#wwz^h=?xs2nW9rS|dz>i>`^C)9*K6nz?zo#C9W^fj`6}$;HJD;?Gx!`i} zG+3vHw1Z>7Y2aq?68IKucLDtwm=BhMd%?S4vp-O$K@&I$+zws?{{cH)NPiFJfeXM& z@E#bsgmwe!!SUcS&=39sHn@oP4C3Gt@DTV2>~Jw_9MBFf0S|$9z^F@*83e&%a6Nbp zth`UAb zeZaK3TYwnFu`4WA&kD?1P$nKVuvp@eV+{aG-Gzs?+htA;zJ`uZ#*KU{o4aMm6f?3C2Ve zn3K5i?{MP?RK}Cl`R^dNhE7L;*?^*OrZLNyZ5)Z3=V)Fo{xxc&Mx)6H8O=tEAvf#H zG3Ig)LWFxs=CO}k?f{8%`@(VD!XU40baB7S0%IZfJ}fqlH%>54M8|Qm(aqa#ry8dj zryIXD&M?k2&N9w6erKFxoNJtC{N6a<=;5W)KNuGpON@(nJNFV}sd1@snej*Ca^ni# zKE2B5HLfGyiw>7sjw>Nh%cQki0%gmk4UCdq0 z(dKUE?&com7;{haXXek%z0AGMvF0z#a&sSZUvocmoVmYwfcZ=FK=UB;V3X^=%|p#! znH6ThtTe04YO}_iU`{j-Gbfp~=HccMW}P|NoMKKjgXT1Ix>;{Fm@~|o<}7ozd8B!i zd9-E>_EGt4v1v&^&2-W zKbRMqOU#SRi_J^SrRJsPW#%8v%grmyE6uCSUh``68uMCnnR%Ugy?KLqqxmQECi7-< zxp|9ut9hH*XWnk!Vcu!3Fz+(&Ht#W4n)jObnfIFyn141OG#@hi&46OTe8(I# z-!}Wt{L&mU|89O|ertm$kPw*7}82 zZtY|3Ywc%^v-Yl@Lu@1FS2CI?FoS`ki%-b*^=u^?U1ltH-*)`h#_$wZyu}y4bqJT54TtU1t5!y4b0)6uCcDQmRZ+X*IPGOH(GzPZnAE+mRq-2w_3MZeb(*P9oC)J3hOTGZtEUv zrFE}$pLM_Wfc0nVLF*x_-+I`3#Cp_v%zE5s{+T>wW73>qF}!>#x?w)+g4d)@Rn| z*59lztS_x0>+jZA*4NfI)<3L&THjjVS^u*BZT-jk-ukcggN4%9Hf_tc?Gk&0y^g)E zJDj+k4n!>^<$D**~}UviG*f+P|>N?S1Th?fvX=_Wt$(_Al)N?St%t?eX>@ z_MxaTD(rw=X;<0Rc8xv3o@gItPqJ(6!|fyNI(xD`#hz*h?P>OOyWVcFXV^3CS@vxE zNc$-JX!{uZ*Y&$Q37&$fSOpJShEpU3p|e7ncK z!2W}Mp}oYu$iCRV#9nG&YF}pm(Z1Zi!oJeJ%I>wVwy&|TwU^n~+1J}Q*f-jLvTw3) zwwK$t*tgoZ*?soy_8s<}_6qwh`)>Old!>D^eV={5{eb;v`$795yWf7;e#Cy%e$0N{ ze!_mze#(B@e#U;*e$Ia0e!+gx9z8a$GOA?5l8s6>E-5Y9q-4{Q z%}O>e*`j32lC4U%F4?AJ+mh`{wlC4=w>X|Pwlx|xcz$V8y`1O@MiSwaX-1NRzskNc zSlgJ+lx>~GtypSf$<9zT8Vq%|rGl!}z7vVMNU~D`<{_vmIb2rTnxDxDttR4;%P+7g zJT;XkBqx|~EAb}t@J;DzFT|Q`tU~^py6PHENmVVXjd9%CCq&q4lf*V0TrQsKMLb&F z5}M;Dz6zu!+EOr(y7+>bk$5y5Ysnc*eOGg`r6bZD_RDbJY!h2#aWBE9h5*sO4PUO1LhkcLQmxV51p5{l*ua%N?9RVWtAk(NUBE9ulgCtLk1 zm&-JDLCo7IhAW?TpC5`uL(S3fVbs66P;72jXl~fAf+_Cmu8t0lPF96GLpkcJm(3fb zZ$9X1SRL<*@esQ-W@)tP@=8rXhmzqL zvB*Lxh+O>g##{|4iE!#JN07tSwkFIC1UcF2LS3ZJpwfpk9g<4nb>&(mY^Qz;qPRgM=-qF#O@Xx#H;p2G9zLN*@$hY{MsdLBs zKOwFUUbxHh;VTIlth-A3l1zqbea5!RIZCVYLv_^|Ipgxxw{>;4QqZ+?L}L2%WOX#2 z%x)eIKN%1Uw{$kd4~xc|L(%k(T-P9%vm+ep4A;qXeg(M-NlAUJ4OUk(IQZ6CCr07Y zsnnxIj;!&rWfe$fP*UI>@n|%=A!l+?ZSA3XKBGuxm>$;pu;gpO!kXNbjI?COgC569}KDdyqTFhWHR4`vPXFWy0xKt?E`WA-fShCHhtIo`V8HeTSvWDAb zp6()zr>M$4qtj=Y$rNg4q%|DRkw~W_%_9_Lq`JAq_*TwNhqVm_9QWBm@T>gX{7G0ERgWp?=i}O)zJy%0w!=gl(Sc*yd z5W{JC4;V5YY|3juF?>n%lqEpj-Mz@LtLgYSp|?s{D!#SaG%%1tZ;MC zXQt%(sg5$|pB`yx3$l{-Q?{fSS$$PUL$T_%Q0FY>6Y&MLF_rPTvd&$mizn%#D6mCp znUpnlxN%H~b+w17HFP&T>&|sdb49t9D}3qrk!5nY9d%OL=0sYG%^rujn5cbqNEvZAgmN}b$>Ml|Ca=BZ z%L@-%A;EOD2{VBDD3CnD>7RwmSMzB>rJKqlrkB-E$CMR&aWX0{nVHtdQDPMqAjMj2 z>LgvV?#kAzWQpvo4hrT%kQHn^=Bp6Q3e&?oiMH;uu+HU0R#}BJgjJFng_3QNECp~@ z$i?)7)LiY)%Zv)G*!<4$R$Mhu{cK%$e)a?-D-FrRI^tc4;)2z@wKc`cuK9I`n_QbH z94`fWb0;k-0R_6Yx=_d5u;#C1DH_U}qj~aWa=10p)m|hspG%~VPR@#Sw#|s4Dn!d1 ziFYt`Iki9M;6=soROUR5#NjGbe^sOGm=bB37t7!E)VHI5EHZgAeVC3GxFe$0?l}`P zDU{S9=1Pa2@0_=RUDOcQ0v71-o$mu8mosz7*T5Za9kRC< z%q@!gV4?GSPQ0T%?{cCZCAXVH1>|OFR~wTGGc(TIsGh}*pXSpoBUuPaR>oMaI(CJ+ z0=yK_6$qCac%`q&l?gEA%PUER*4ne4Y6&Mg{o10JskJp_QeT|1x`32>V|9qHuTiJq zbbmw(QHq&Nc|E>r!Yxrgd5KLPt_d+ENnsBEj}o5vCdHFXCS!9V9qr1N(I9Kh;9+0e zX`+=aZIVl(u<%c8$`2#uPxB#BPUOpPu`vig zUz7IRw~$0moe-&1vI_CjD%Uavj*p^K;NdSS1xk}pwEQy?txTR(66VjH&QFmmccL3B zlgW5X1U{*s(#z)It*VQoVQQV4m#045(v_|G(3M;&N@G<@L_c++my?k$R@v3rR?o)^ z9}TmIRrhDY+rYFc`@4mgRrDf!d1humGZf{+d7c#Wou4m<;VIz-x{nkyV^wn`%Cs?` zKlLSgMl6ItG@D2Z8Qdy`l4{<0eA9szmui}uhp}MFVV8VJFftn1Z>*1hICId#a#Dkt z(BuhE81mI`86yYf{XPsgKXuae_=J;*f2Q$;FuC2(s`W6gx%^a<6K4HNR^ zh8sprB-x?|l4AXJR<_bOJ0nRZ9nwsdS}(^aubMI4SXJB^P<$7Ro^pq`hNYTn1v>aV zB>=N{Ezmc(Tw&QKhQ>Sl`%`-SVnS<`ufzz_?Gy5gH#wB>Tg0YEI61V??K6B-RvEnU zR-b)c={&(uGRc>G*&5Z!1R-0glfm8*Z|!Qy*YlHHSxOYjI9*obv20X{>B*orEeNd)bu6 zBsyyv@Nk%!^~1}IQjujA-}@8I@lZ$BzQHtBHB97Kw|N;SEM!#e3?CkvAJX+bp8&Gi zt&UA}`V$J7k%*IV`F&*XZ}dh_Ps~=gd6k{PcrxPG*3y{cRg4z-qB|^3DK03GH-6vw zywMz9Uwry#)~J56R>t1oV3DsH`NW20MwX`08-`^1jOlgx!kEmU5w3}&t3WxxOr;3k z{6eV!C&%aKEnmfyUv|YZt1XQ%i@C%D(<2h1NvO@ zFJFep=ehaeBAN?bo7BO%=u2a*ljE&)BbzEMsD*g?=udq=Y#M z)#744C$pidMYi)5V5f3TjJIS@5WM+GsPe&2qzD%!Lw#g%p;XP3L7xDN5HiPC?lcMc z%sr7WhQZAy&AwirZO3O;J>(Rxe?gP7 zjBxc(w|3lWk(5tpKC?4Rr(L*1O zb0SY4LLo?Rkg8mj&B=I_!CdM?ysL9^eXbBaex#DK9Lrr4=}{DuW$8YsCsUcZIf|sP zys4+wUa4LBB27k0bZshDC}$_CyI;Ubei6}34=oVMq*fKf&1U#WM>t8x7MT-aW1Dnv zd?{xIUW9L%Y*x-?(N!Cplcm~Id!~kWw@5;K_ekbotMl6)sd=kVFi3OfgO@&`ktwOe zHY*hAWa{MCGiZ)tw^(Lz7u;Q`eN2eS`4OG+39?;UHpn+K)Ml-#y!^}*j9?utQQlpd!@^46 zpwA09TIpOnD^ou7(VhYo7&&yo71-xF9BkU|$h_H>##tcW(s&DHoU8-gnHbq#dOx-l*16lTf6g%Q$Mq4eic#PZJfiRrA7wu`EK6Dn#@FekWXq{p8vW z>o6492m%)nXjo^u8khXVa0(~q2G+DNhq)#! zpz>p}BSPrzuYdgbP8v^{feENRp^igAVTexK&vrRtHg+zz{)0jA72(%k}X*^xl6zaOYKrp z0p?GboB@~Im9KY2u0>ga4{$A0dl zqEauesWVo%X{=sY3Gv$(QW|#uXK&9^dn@irU>h&|H8`e_3{t<#RUC zBdXdCQ9M6GQfr}pObuHolBBezby0tPz7eM+aK<9HXfsphIXN2is8(2k%U6_%tP{C) zAWnNixu2y<%kSCols%w%y~*~a4*8OzJ|3tMPFXd?{dR)o@#$_ZDqiA@sGR_&hv#&J zlXCK&kv@AZ?~!17S2UcGT$zf`FCWkUqnL}yY+a_3ufzFWe4IX>*S3!245E19lg^GZ zb>Bgrx~!vexwWZSKMal9gYV~NPX%xz8TOE4TbGZQS}KmJXSBH@k|9k~$5srps@TQL z;z&|#_BiZCi{t1_bLho=^2Xtu7@E(gjm~gV$5fy@aLdB=tgkHiDPEmJ1V6>Ax_2Pv zR-d(#xUO=_Pl+<)8+Va$>X=j?l&3;TZ|s(WXgmtAI$5taABr6ACZ=fE*}TsJ(MRFy zsR0sUW+-ei>6A^RKgqN9R3GK^eomcdf%vB|7gDO{pCkbDX1S0e6#YrQ=@(g@scz^e z`FC_01+!g$=knb(>dl>+u#AX`%}?#-Wu;3jw&rB87V326QDn_&_a^Be8p8qms<)!KHn50L2)(F4Y|mg=&~2Ai7ulk zwzH&7-F?$oC5lcCiOF}kE)Gd#Ul^vY)6r^ex#P~cPQqiGFL;Mr^-wjDR*D*(SFs+r zP%qclJWuqE-Z*AOxNWLnBsJj<=LC>a4|)R2Cz}3pR~JX?lf7K@WU1zpHJ9xFEgYh7 za=?6k#Ai3GN3_ONxKSn!S?ZT;R;ImOc{5vw$Yo-4=CBsdC#lFNu@+T^E^~2(p`K>iBvfjwkNU%#$%G8{?vD4)*H zj4~nh&TmGW&dCS0+Lm~%@qlp)v$ag#R3gRNNL-w#T5IHOxYcY+>!{4$_UaWS+t-9> zD8aRN9GF0blea}=`)w%DIJJ+$&0X_J9?4gHe+_PSDvD`zI^>ybb@5rCNO4MktlO}E z;}v%i%x@*G{4>oeLU5Uv=93~AVn?QL@6jls=XS~2KPrED`$U-%_{)^KuFXA(=$!s@ zKDUaVU*=qyV)^(}mnzC|!sRt<>uv30BbOade3Nocu=(ww@ey=-xFsB!&tg?jsFsG3HPTcs!p@V0^6J(Lz;WGuw=_j~v)>)l=ywzRFPHwA+%;h`0 zPn*o?wIMDC6vM3rPJsCMSGzoYJ+EaRsertGiYmPe^Zqqh8DE!lV_Z!YEw5W$#jYdn)WFdu$%AxWoA~9GW$^Pvx59DbB^u zY%#!_+^H+dB)PuN?~#B^uM?7;k#?dGzp|-?%kmd+D{;dDG@?4BJY}Y1&kRELJ*%sI zr4uZaUOoD-_0o3_ex|hP-1)~hEgU{Lm&*1UmB2V%a1j#K2Ir5{{ga>i&POPfTyORl z5sC7Xb03jUB*^Zo<@aZme!U1Obhb!kt7g#1w<;UX&*|Y%)a_*GzYC4Z9)C>09AOI$ z7uu6__iEba_>x;>vK6G6>F1&(wYr%U2+1Y^_h{CI+8V(V3Z$)>nB_TVyOVuKAE5W%{EvevIE&Y{K07f=i%LGHPknS7 z(%SYc{gY3rWaN+=XlnHQKM|m}x&FlPQq8Z}%Ic&n<+0d`n&mOrnMW^`Sv;xuimcmm z6-cUJw7Nr-d&Q46ZlO63A~->)Ug&=!L$R}k%;=q|X5;@r05^!jA~|LhiOM%wDkc8nmalr^2 zbxM&jINSw8rCNJK%s*F?Mj*G1puk57>vQBg)oO$_RRyGr$um6`W-VzdKk`rMQa%bu zT$_|hQ_c^h9)UABrxsLaBPUD5o4_|4k!e#>ForWB~0*|QGK3go6J;h!chCy za&oH9q>49BvS(m!Xij&KpNUpDT#q#;X;I76tO>RoE?zWej(t#Bd^t9yX7RZ(`!xa& zGx?)-X0RZZpfzdojZZz2=zhIY zkD1|L&glD0p1r=LJ*Ld*PX=UGixi*gBw2|OIQOE^W?2UEHlg2@B6&RdDQo=M{ccS6 z<;+&E`m(8MOfFsy`pN4}jp~~jdn3cMWUFwMyqM*mBd!OEN$#hVOMH`U;a2ggzaSUz zribioZ#k9=Iz?`zdgEkTr1_(p5L1#Bo2cPe57MIG1eoZ*^dZec@yR|_(J;9woW)~a zyn4kgD;#nt(zC=i9KhOol=m{jtv@wd&kLM|1s2hCk>pR9@J(2Vil#sY2p^4WZuWJM z>D55^t%O921W$$%Z|lb!?x> z4T!~hoYoc3p08&GUr#$_CeS&Dp}0V&Lb9na#YQizTq`Fxn{h1B_f6X@VbZ$mwMwsC zoFDIMb*9L4edv615C3kTmhCJ1MdfrMozn1q!_b%0JACA?Rib*$NJAlM@Uj-=2X|Tq zOLZ@1C>|ckhO46Z%%2!f=@-o?yXp1xzMz-F1JMkw2XJ1}UK_F19nxtYSgGW?XEnXR zoehQVbVc&0hDkp+f$tTd^p+~=NQLoO=`w6IZ%aY*Su51wRSj46TLU$IJYy(eb z-vuhM>+rID_`TVe!H?0IU^uZ9kVxusN+dsKy{yWWICqMY%bhuox9<8JEszAjB>@Zv z=5vFdhmDIn&{pz#P4+!|9xh)Mwa48VZgNbm97c3Z!=tylOCzgyau`)%O^kFTWr|mz zmXcb<4kt}p-9i(JI!(o|1U&rJZILKjb+eW=UMbc}fXO^t((0p^&InL+ZJDCx%?kYE z$CD97aMNT9aXGoDTWZ(TOG4j(*V%8P>ybhC z%XJ)>?DBb{*29>4?&~lW2t%DRu8b|p(Yg_LdPvURRxN6v$8D_%E%NQ1gfGmutXOd! zLU~7QaW}G-EvBCVy@D zM7xsX);blmx?rk+obK9O*nHF4#pPyHT1SKATRNU4ey(72PKm42nfk4&Md&O>|2aQn zn+#a26FWQ6pmJ`X_cPRE7X*@(j$v-~pje*A#H4oUaNPuZLZ0A%q_r47l$5Y#=iYF9 za>B(ESMDST4qHuWmKtW`vvE=5-UEmouqW9t9+4cIA;bcM4?|R=6TL zTm{NQz7OS?6%My4J!7cM{nX@e7BIPxm6Eruw-CNxQqYyki5%Xd^Sj+lLX_QIRpB;9 z<0+L5zCp<40d4VESf90+<9CaI8<66Y(v8TOpPB022>&lIX+AV#w(8nt;uMhH)sth# zn&#tJrSFrP+LeN;ajsRD)gjmXGyUeV8!2P|tkZ|pbHACX!Y%Y#refl;U+&uMV5gFL zOxZV=C**ypQUxQUdrBPtH!6o2-JM{$VW{EOg9*WhcgWVn2dES>)0yw>9k%i%KtDZ+{jh~88 znm_fwgBvusZ<}+X>Y#G=#}LgIPZYt{5bogpqP0$&S~60*W+WLoe6O8XSs?!kJz%I$ zM^sIv-=l6!35Q#gtksf!lmE_0lntwLNxUrM)O`%H2{)@!Dn6}r@?DZEcWIr$S~>V5 z$8-pWZ^}uZiG2oh4#n&+S0a(UK~N`=2_&OVJVqE*d5iozzg;PIN!uCNlXN!XI z1wL)hjgxsP7h|cH$9VxnQmk(C&lz?$e_c2>H~YEvVXN zG5-K32O`{{r(WXCoddP)RITZURaNFphvM+t3p6aabHPx3gxfl)t$Jr}&hWh4vLB5l zq1vjL{lcIp0=bi#niKV1c)BUq{by}Xg`VP*UZzl`@Ru!2WjI>Cr^Lt!S=ZnM4G4U9)irU!B>Hb-s&c`VL ziGr~=YxkNP?9A!%?p9JJda?c| zxt<6e_Otf#&kA)&9y;d=Wy64fR*L#i(ptFv3nw`diWbSPhMVa%p=6uyo32VtCf`4& z1}Bm$zR%yJ@u<_~qCw2w+ceCle)tT4nt}Om2h-`65MRF1uBxW}cyb5R@MG074y8NQ zhvs;@9$mei8k^$e9ht6BR8$4Bjk|FoJ4@<_);%qnlQA{6WDXY@A;KsN^MV0N-;gu5 z?3Z!Wr-8{KQU1Cbc)22{v9po>H<@t|*u8U4gvb=v>n7KvrDSlv&N<^$LmLf}`>5LE z-u|D^r20_QwR5I$)fKl~r8)cFBS9^yBCvT>W${>(iV~N}kyxart35&Y*Pb>*z^$QU zQMDA4o0*=aC%3kBwxUY*ge83q;mdiS#`)#t`(!&M#s0tyduJ^YWhUn1DpS(A9ieu8 zjSC-CI!H5z{kX6>BOHHDszWfIo@Ui2`UXpqd8N#WBqR8V`m%9k+~=1WPSWo6=L)}c zYgZZ6)T@W2aX(-G!jXE>Aun6%B$<0Wnn|qWey~;~*f(eRDUbRrUefDtpUe_VNuKg2 z;UADQd|67WLe3qOd>SAR_sm^ zpP95sqB8@`TU4IwitE)LA(bha<>KLz7!Jxvk@u=ZoHMgjIg7tchg4zFwA`BwNFIsH zP_L;J=3&p!=@h~4)hricPdnjVh?)6G+R&82uZwXy-?!*SS{mt)Gcq%kO6R1uUl)?a zMDO8uBHTA}wPlIxN(x2HMU}@f1U7hH1oaQky*;CFfO1PpQCtU9Mx#fCJL2AsTsn@d zgx4n3cKq~vWBkSBpj;9iQW3=?HLw^_HCtvclO?0WR*h;4wt<10rS32Fk#}&=I7P&&uMOITdi?61NxyWjo;w`3{!o9ZDv|xAV z%pI8-I4h5wMN-r(Gu1z<+ZBuIM2ne)rower{hpa_?om%BMwufBZGjbz=T-xs$&-8R z8>h_anrt}a@GL4-zgd@db&o+YLCuUkwfSF71~V4{Ip)Q(&UR8|MuR-$*;mDL@nGxSMDPs>&(8QcYCs&>s~y+pED??l)} z)`V*Rx>FaQ0cpXK)|_OwMho&MGmp-^=GE z{o2rMPVYs+*{*8eY0hV~k;)-N3=8RIz2Sklm@=$Qu)!d6I@}hOqi3 z108W{4cb_RHhK8lgvXv@(Vx?T5%+};Ki8DTD%~|(6`$^|hGBPJ;Bk`tOX<8k4%wG^ zdK}aBCM>YR9bADeN~BKpmBCd?rCiY5@anBF&I!3s!VbH7_mHJxDTZ6JBNtyPq()Us z<~Al&F6e?uxf+Hs>2{m{`tP4BY@;-283%go4!8?<>@L3}#n*sc>om*tmPR+ltpw~M z{`mVh{zl$u8(V@hFct*BbPxq+fGfcY@ErI8{vqfnWEl+(0S(|-un_znTmx2uXTTtM z0zY?y_wct2y7j%p37U{03KoMufNQ|rU={cXSa%~6*ca4+X0Q{z5&Kc(gt<}2ZHIK6?B5Lz-8bj@E~{w z41zDfzrh&NB!4x?E`PUMG#z%uv^c$rVYG^k=wl~zbZ`*KXtt&N^&7C&^w#po8Ld$6 zGLh5eiAYR;!MbKdLo~_SGTves%j7q~=xao;6BA8bo30g;=zNV^O{MyEjt@R*%d5K1 zVZsRuXBozuCP9c!lGE`#cod#xj2GD^@K97oJSLjTnIRsh<&wxsV~Y_);Onxv_;D1f z`tnhRs+|#KzR5X!Ly~3J{b^6 z*}{~qmKXUKXWFT>K9OD$@O^Dh=6$+|EJGXOvm&i>p1;Ge)^UF}#E0FDBPL9rGNEq2 zeaE&&qlR&`g|b^^5-M}!Trr8L7$mAo#jJXMRX0@Zl{GWbVY>crHS62L(ddMQ^!uG8 zqkhtaIydmGRhi3EZZcazCA)ikqqdbGZNoEwn^^`-mAa#>iIQ4B{wdn5_@-nEv2s z7{`f(Ih|jY*qPXMbao|Vr{OGPYKa~O>F2pPKwd*sZHvz=+X=5ziyi4|TaBGOw)$fM zmd58Q+(k(yR`UI{GAXq{eMz0;siF0vq?a#$#>5kF3ONIn_H zR5u^wi#;`bH_2@g)5%_}j5mcx2QM3QiD8Ox)u(dv8dDXR_^aaiE7@9VY`Kn_x{IA* zO9)Pe>3&es_kz=!bgoQOrKL6w7*o~n>2i3C;b2pVjh$Un=cvGpQS@!z8nA_qDODh9 zWcvU9zrM`_ z;V<>@lzVd%{n6?E5@^ zdp!079{WCzeYwYe$n)Ezus)wrHU4`bv~*_G`0c?Ma0m#3Hc&IGYPej5&n@HUUaubC zwUi!*KkT|CJn!G_+dNb=<)gs;uARf@8jZ3M7j83b$oOHFWmptxwD6ZHM=@T-pa1MU z+qcU%3a634P1n$GtH!%=yHtF8e~a1u>wmO*I4{NSe`~DEr@&@qZzv|BqJ((<+hS!&qh; zM$@T_PTkqbvg_Z`Kd!z`(^IY*{9b+qPU=?lM))7T_RVX{v~$+~Q-07^0f&m}qZs~5 zhaa_#@!~ZfT(hn5;WZy$b9Cd9 zBrVwwdcI(EGfsW*Zeg74{GAT}$MEOESYj5qe-e*(?2WeQ@o8*D<;><#Yh$RRgYO!# z@Pfvu+PNG^cD4orhLOc5vwFwT>lSvGzdmkJUi)fk42w$14K^)Y9b-C!H*AqFU-)V( zwS1bW;&KZSnm@1qiqXRydb40)X3Ao2M<6gmX*Vh=IkEj8l)qeONRD{dMt&8NH=N;HZIbFMGZ~pKcQv~K$?(V=HZ7(&(s?>rlr~0C zfH>u*3h)0%|4RO!a=rwvroG*N?OmEwLI_b(2@PwWhaxkngbidHMYH>3+4g z1!)Lk2q&`OSXrfm=)ng$9|)vlRZ8_5Y@~ z|5v?T{|6&=)~=sLjA8u^dp`u`8V%1J2kV%qy^bO@a1Mh|@XEo_8NoEZ4t~-M`e}AP z9QHmC?wFA!Pk!{fNBG0JNVwA()*J@k2+~cvmT&jrcMtsM z)}V=7m3G&ozl{ESBq4~cHVS=Uo*G+Cf^omLga%u3bZgcBwRmrc^M>O;iuWM^0Dl+n zxb~hu$NRs+*Z!6MLL-e~Ee$sQqsM{{L>$3m(63%K9@}7NjaB}8SfhEyzY_c0k^eV* zm)Gv+xBmafUH#AY^k3oko^I~$eLQ;k`hNc5KWigE^ub^Q6{?RKqbX=EdKs-o%`p=5 z!D6r!EEl_sRb%EjiTmI&cnY42U&gC(bAlv%h!`S;$R&;w)r2`ol0IY%nL_50m&t0< zoEl7xpn|9^>aiPhjDJ47Z=DyaU@^C#|S>+4soVjAw%Z?$iLv=jxER1vEA5F>;iTNdx5F&rg#S& z!`*N%JP?l}J*ZG>DV0T?p-QM{R7<)MvzRGn8ngS@QuYlia$~ukyp>=pI10GH35w85 zh!tvu)uJFJN$JuL(gEqTbX9sUspQ6TGucwMmrr^)l=C33pF zRnC_8$%XQ1`I0JLEwAfr~Cv}v%NkgR@ zQjO##C&(LR3x!l7l(|Zla!@H&epRY8bBITf%WzPmB03$-LC=C^y)ZXoJTZ;1gPqBz z-cz0Ek+cceB9Ix&++-dwRm?lap5@p9tS_6yu4K=!Rcsw=#fe;Z&XXI?`Ez5q3EX6E zCO3~;$!+8cxID33>?%o;yVOS-DEUj_(k$4&6xhF=(n0BnbVd4As+68eucWt{brLT1u50$|L2OQmxc! z)|8AO`6>i)K%G%nv?tmh^+rR{iRe6Z1$qp0#JtECic~O~GbhiP$1+CAJoPXcu+@E5bs9A|J> zya(PN{C^nkk4NIG@D2E8d?$Veufjj#CWHlHOHhP6F@W$Ue2D-eln5uL5^+QVv5;6n zY#~k%XNk+iJ)(|KlZIqdvJGiVisUeIEE!HtB@@V{!^)X0dnU$O7mrd$UugbU{ubIUnhegj{`I|;7BG2x0ZUYst@78Av4afmcQx-SW`x4cQ- zBOipwtd`%(YNf4WqjXkS#X|`NE3Q;FD@Dph<%v?GAZhSxAz(WMH9+mquBbcMZZudg z8jV92p{vjgGz;AaRy>84qIc0J=u1==Gs4U<8>}nXP{ewH{rs^oY% zwZtakB5{+bBoMMC*#Y+dEP01~L8>VS%AMLwWm89~yHpLOrp@R!bVu5Srf7j4NDrn% z=x}-}okXvr^XZfHMfx4BX7m|zMq=C_t|bEUpmO ziW|hu;!ZJFJR+VH&x)7DyW&H!MywM}q~?+Zpn{V`N^X*u9JHT)k%7?G2oenY%Ak3BTI5mh)7>~lsra`l{+c}6+dOBlAx?t(v%&_bB*0{ zAU^}MbwNqA8#)r5j9v%pY=`|<;|lC_3_c5=hdUDtp%BwyUzZT8iS57)_lPINYeI)K zCY?!&>`jg$yHI^8A1a)h1AcvrdIEl}rY&f1dITLxPo!h$4fGcJN4kK%K$p^w=sLO? z)0VMkoETTegYjX8GXa27VOr0g!_0@>T@C)dh1tRU#2jVLFz1;o%x&fo^Oi9LKeu6n z*{SR*b~Ee6&*zu%Dg0VKl~3c}@B;XGu%!?|{NP}Qt^>5J zMa{4l*ka5EC-5>tppJtde59Jv?P*s!ihfHEV`sA|>`vg43ida)5$6PaH4>sGikr=S z&u!=OI6b}v|C+av#ws@zq(r015u`u92+-pPyaZ1nDaw`U!9*~NnC;*rh0ICjHKStN zK~?k+cvK#Hh&{r(z^I3~ zBiwQBXYMR_p1Z`k^OyLm{0;s#e~*92KjxqF@VqJnv4le_~5vgNRXO7;os4tTCn zw3=MV7mLD9V-K(m_#wOk|AmMqY1Wo=<^(Pb?%Ks2a6=G!jM8U5pjCN!z7e(q1V~Is}YzT>2UO`JQxEJ`cQcRlXtLmhZ_A z<;U`K89`N`QxRkdFxhM1vKDL`){0#zr6{S&CFQz;xPH3sLX?nYWD}|-70QMQF~W9X zkC3mKkEaSThr=Xv2D%m9fqo>Q5ugHfiy+b1UMvqggdM?-V?SeOvGdp^>?(F1Jm3{u z1E~3t)!}aQANUp!!-9|}{vtjSX{o#9Erm!?QX)j+8dycHR4AR0u1Q()F5ta0z}(ir zc!c7v3{l1?%e8FxQb8hB8mdEr(Quf@Zgc~F9xugJqzx&N14wVuj|?QkfIk+I4@h@v zC^eljqPNj+XcffDI3^$bs1a)dQ9!d1Y$Cf16h;P{1%7gX{TWcc9%kyoxpFNV$0(8$fB}37?Qyc*EDMF+0Y=?6WNy%lC08%2;vAVeV?czMv@WaWYUtND4yz0ErjQPq%gWaAZ`JDp4I_WSjc?O z>}ODjwB1}WcY!PA9&nGjDh}Zr@kYE0-;W>0kKv>Ex%_(mDE}1V-dX4=3<0l<0DCVN zegeNdCtQM+)(QrqiP%hZ0&nXj_7}axFmZ;MBrXEIwNoq*Pk|*bimyZ+Nt6P>j_ai~ z@W+c%g;XWgOIDx@B~Ua0fS;4(A7ly;)CagurNxps%pP~fU*f~b#pI9VDbk+WNZ*I~ zcVLb%-Pmog_kMgdUj{y7CGf%#VW1cUBVQ6*f}h`z^ks9oqdZ-{CAU|clnKf#<(P6C z@c7fS1JGD>JFul8R)Af{7UT7J3nGw+CDMs};tr^dmLyAdBjd?bvVxT8UUWI2mIh5( zrYAFi8N^IvCNo_i`t3PW;PZ>1&s=1rP+J2;T+t-JczvuXsHBIO9^M&Heg>X^F97t~ zgXiO?@k_w09PsEmVm`Hc=!;$0`${ zN4DnPa+Nj*QHUN8ONkIe#_ToWp72zt5%z*+^#NtSM?NXn%VwZuNTsLZtBhCTl%>Fk zdqB;UYB;e zJ=uyHMNOc-r?ygMkd<_Xh>53D=qq3w8?ef7W(kwQ>}A@q1n9DjY$4l>^X4+Sdd^7b zD=Z7Wd&jNdFY%k)BeBYlt#XBV(Z z+(Drl{F9U2OJWQS{&zA4VPi2*2qO?{xP?|r2ZO%h)jMdC~P%&pgz1(Nkvln?cAxStX`bzUb zx$Tw;fbT9ycO@O!TE;-Jb(i}>209qLbi6!Ko(xuBF0avYms(qU3xmu(9^!UBsF!3c z6U)M~F$2n&G6PlXNTC!-v6M)KQIS*(6-&iY@l+yY>5Hjk$T-$gsbJ4cDi(5!c-j-< z))#gnfC*+oL3u?oF-$BIrztZBs1aSz^11kaK!ZZO2tS2~5@Apih=trI9&9_GNF%a{ z9AZCFNSq={z|!TQv#W?&(ApX$V?kPz4kQW~vFP^tRibkgff7&SWwom9u(H%O7*5ZDPJl8^8H9yQ9P_B8CH@8xql9| zpDLtIK?R_UDyJ#|r)nvLHUK?u0V>J?qK^eV*PHgFedz#Dp^-IDpt_JD8KY*XIU0ZlLxvQF zMxrr*_Hk%DnuyLv7o*8gt67VtqG@O*WKG$iS98(*Xg*qq76Bs^qa{$sDT8dd9Ib$i z_z7ACxqmHM2c>6S%m8vK3(OL-V_VDtbHw0}6ksgmSFV^l)*JZO6Y?xy%nu8|g0WD@ zw<5uxVzIcdd@2R9=2R^0vv1`s4{ud@Y4Y z1$4~@+{h=2h+@dAZxR)dWmH3UtqXaEIcW*mwIfucMA98Nzz1|vFzBQhV1q#}pFvx7;=tO!k;Cw3Z zV>T$Ge7XoQ^D=#tuAraL)sXAxGRBZUS~9kbBSSJGvrGSFU zgnT|16kZY3vMxi-rh<9GR5NvqE^Ex1vzDwa>j;%4k#%SLvp%dJ=&LX`hK&OixERnY zmCal4C=oElz%nUcyu{q&YZL4Y&l1cgnExV*Prv@{J3CH{4rb{mk8B> z6fPCGD4WaW^0^{VU6%p{@C6JE z1^kO;;vw@)X4W!kOcs*^3bYUyqJ$}9%9%>YIcgb%HDJwH3)UJcd??F8ouxPH3DvX! zHk6HIW7&9iKAQ|xfHctKIlv}`Q28r?+Fv>3U{!1_i*N><8E3&+a}FHJv7pj>L*>nv z3joCw$;EQ<+*w5l2gD=HvviN2xDL-YrqfubKm5h`>UgfEOATils8aCYso2hzkp?9s2WOd<^XWr=8E$?)_!{rgqnj z1#{SOSEx#O3O`Ia$t;OTao+pl?ydQ;AfP zl^mtyQ_Z+U4e#=3Y9J`;39OS0%u)jEVFoPW3ARbba=;!{m@#e!c7V?w7wRBIa6bZk zWr5m4FA?pH`T%c*0beCT|5V_oT;Qc*;G+t7QXQ({A8X(p7A)=wHV@V6mBqj*nO~Ts z2s`z~@)a;1LZE~z*e`&H1Z9x|mAh0>7WtqhP@aU{6~WKl!PEPLuls}!c&A-Y0#S0>hqmKrwtKl@dwDFms(<_VTp^$fct^-iiWQR%DG z5-d-_sUo#Xg*8SE^%`|G)ls);grNQPjJoQnbX5tATBVyNgSA_Ib*2ewsG~yCbTicP z2qXx<_tP~$l3p^W*I%kQ@; z>si0-en4H@DwIP_zRXJ12*w|yosQ06UA^Y&!Go|CXmdSi7&SL`9~UyNJNyA<>pl~M zu+}guINi9p+0?01orB?05L|K&iU`MSQ5(%Ao#t)7^neds!{>E_t^2rJdq+gXSa)|r z+qW`7X$-@_pEX~@TbU5h`qKP&O(Q{N^YsR(8X-CfswQA8m619@r9yU?wm4VOJ>GBk zyjOVvZ=;%R*?H4GW&V%V=UxMQ_y!o)#$W%T#VR~d{AssC;=+YDHyIg!*J}E*F4i<8=dMChpi>TY#z-k!G~uYY@X2cDc5SlIzBr6!Mn_BS6X3{cg~$@ zvr|#^OnT!m?bPn;6+>GU&9XGj$z8E^$liiIYo7kNtt#(Cma?j4$;b57j}81SrVdnt zx2ZMM)u)0{BXZK-SC<8j8W>J?`bFek4? z+qQMs@GAUN6Vys`xudQH+A{vHZ}`>^!3-)S!!-Z)-KSOeq9;ucPB~H&J+=(5=r(!u z&UuetUb*(`kiDCV&zU1-qE^1+Uu~O#{Z+u-8G3;kH$QoSAP3wNT0nUAMY{j^4R`q?BSV8*H?M=RJi{F z)xJI>HmMq|-!9o5E#5c#*o%mylkb8vTvwgZ*)P@~*kH0;>&MU90zQH-?2cCPjy))|Jl2P>%P0+1}@O|((bWOVT zEkDf9{}|xf;hZ^Ab?a--Z499s{XY#|40Qo3LFhVs3Ee@x-Eix#;#czt!bvgkH=W@# zcAw)I2j+tB-{Tk>^yenp``bCSLR)A?FluhvFoL57Pn#jO z`Hw^O*n_~tkP{1En;2yFI1@C%>nh*0TY=H!$pcbyjXi&|H>+=VDq{HrV zBim0oU2$^C6n@Z!3zvq|%T8{-UgE&_38n!J@4s!hjs4jXN)cEyLkSI8g%$u^Ia|c!@Bn| z{9xa4(3>Sem2I|<*xe32wtief?v1)3KKWMZ^R^$JKElY_rJv#HRoj;Ac~=^=$YV>i z<+DxGRg-F4m)4u~Ni0x(3e^PFe%PtpZ^KnT9yNyD{S>Zh_&v6knwFg=c#TmbJp&+| zMve4!3{W@Cd23xBWl>tsFd(V7D(OR*z6$M(c51jwt!mjeG$tmJcX9b6^t*KT9P~|` zSMR%H-LAg#&Wja+TlQqw?K#zon)nq?(C$e~GY{sBJ)H00)Xts0b#MIid^Ack1uNb0 zkd)(TXqt196%bb@2(y@;OV%`CU5pfo*!NL+N*EuGJvsZR^l+t>5A|R`uRm;VEAG*=IG!Gmbqb~%J5xSzqdC^%ne3e zcxbbUw0-%i?7nmO!DbFQnI4K&at`ZWajj~==ECky(?VUUy({{yUODh;d!t^&oR6OP zh3t-Z)_ARGy{ty+S#YM_$+hL+(2X~fSfAXJqq1K_xR~5O;dbx#0ezE3)BNHWo>g`^ z1nxUz(slU{OKN5$77TsZtL=$^vkEmmY~WQ}-IcA_@1IOrHKup*K6?xMJw4qw=T*60 zs=Sei&aGYO`61@{!>aJa;}d^-s`EU3M%0C;?N90NyVC%JCt# z_$?VKjYz|iTpG~eA468qB&QHei&}r`_K#5O_ip_)16%9%fM0%MzQDDP3hjbAG+-0J zwWVe@lm0WjHqg@xnPUtI2RbLQp%cJhEIQ?%gh7vnUZ^^$Tf@TtX&BT*)8}CNjDp`X z)mN$zB#ssnE3F!(v#0 zvCE_VuUkCN+!<&8LyMNG*6CRvPAqWJz4Tq`1#VS0^M396+1d5@Veq{%`x1I?yf?kk zm5_*nNF!rgwB^x~ANodGrMRu{o-u5Hn~mLf)~&DcyD{WKNZm{`HdAl8>Gofm^c%VL z|e^GSObe(PA-GZW($XO@|~cA;+7eBW(u>GtBAqqp^w?JiH%@$$ZZbXzB5 z?`{60{c~!k@%7C%^(49(|5Wlm127Qp zI*h{yWK7dugxbY}2N@LZ<3pYK--1eZJ&N!BGzf+vX^H*F<;_|W>c-O39MSosTJO1fg3ipOzmSpveK8t2Vt@~esVNl_pd+L0} zNqEZV= zd3RfV)8#GRAKdkm*RdtGJ8e(?+^I`?XNNX?l!IDyUcR}|uIb%W^IqxGLqm71-{xoS zcP(nS@v=i%wI`Z|ZaVLJ*42GW^Qs5I#&!nX@ICZGTXnrl^eoG(eR`~}9M-!IE%-}>QT!nzZjkHgS?9s3rU>h~bL%x0Fn zojD+M*28^i)l2ryuUK;=s6+DFBhB-NUOIkfmO<%wbA+vNZZAA5-uea~R_{MXDPRBi zUe8{7Z3fS3+-X)}#_P25Uu_iAkF!?2f3^9bjck$Kw4!RAPPi~P&hXN+k*B_I>~k;6 zFls{ic^k7Plg~#*dl>Dw?aKS*dEH5$W`1&jZAWxu{u41^e71{z@rSD4dR?3EIqJjM zi9-TAbzYF@^&sJ4PtOl2T^zSnOqLI>ZIU>96J}nzuNh?j6GubW5Dexnf%HowRkk?`bq&ubnsuniu4^x~L0q4m&G+4j z>(SMQVPq8)#~q>DjOx}}@lk&N$+La6m`>t9DbvvJKF zHRfxhL+M{PL4^bdbbV3teCU$6_SZ5u&OCf2|5pCC`ujE6LkD(}Z%0;kHb034mp3}M z5k4f*XJ)Q*WXL^Jdal!z`<*6P#!fWGD}J?-u3ul{vFW1zg$XYM?;KCF3wq)?jvqd1 zbJe>F>x~bm>==TMT-9>mI2Av;nb!@`d2rC2q8o$AQTNL?Zdki^ijT+iP4mPyVoX)~ zF#Flf^<%~uh@-Ev-R5u2_b|sVTdp&8jS31}WY&IwP2S5j*T!Gzpb#xbe7_~g)unyg zSw9{-o!Mq*i1O0*&HCFTE_B>poHw#P^QMKgv!6Qc)ZozG&d9l+U2?V*IA3~y zC%K3J%8aA=`aL&oTfHK4`0EE#(i7B>T&Nv?-#tAnLER2cwf;A{!5>ITZT45CZ;f6W zqob<^%cYG&Eq}9|FN{wJ9bx_#K9jn(U{Y=D(p~!=oOv4gT_xJcV{>6&=icW|&6m2AY(-I2{MR%^*@JKT^N7z2eApDl zzrwHJOHsa-t=x9(x9fI&@6EkO?)&ZagL&7@z3-}jcHR8%eXFnk<`YGQcYN)4=RPgG z_Jighe(=MqPMte-=`XIoPQBs}3#L4NX#NfFy>$BY_rLMoIX54?`A=(q_s25@KifO= zS@o$+s`uyrwtHU9lddQJ_PPltww-L6a8vKGj{AQZJAUVZfBvV=q6L5IwU-@!wzv9r zZ{3q0f3)wzuU&xRG_cRBC@X9^iU+hCz(FPJ@=3PIlNB{fQ63e&Q?7mvP#6A}AW!kQ z#WNmrWbe&yWf0s1Ge@pcl`O@B%BV#3%x{_W{9TsPc0^J3-e2}ax{+~^gr;k zilL z>#yCk;jZ9aiqg3n$f)mreB1GD`SXAw*UDl_*X00&!Gp>8UQ3dd`17DQ*KXRp>C4Cx zeMO%YI}-P%mGfM?>F#?UKtbv|@j#i5?_gTF#mN1izyBK?2)yvOOWa!FoRY=vzzY{G zcJoKSp(qW#hm1e=2FseXSPiXpzO>lh)ZQIh-Bhu7VyJMzVn@ieU~ztE(t^d4L%HFH zowneO1fRc$)QBkb1?P*)9nKdQ=l8s4pEQ7n$;N|IJhYyLEbR}xEmkHiR@NWuuO(ysuf^Qb^Ycj#_CHm?FJU8~kln_^0S$(%6wq(fGYU z^_OfD{ChN|48a9|t`zW(+B3kbseZPA|0)w)@bCStf`6IdgJS#zJeCQ5n&7(y{Ju=^ zLE?Wzz-uzW6{7FU0)9;z zue=3)%_mr7e+lcUG+>eUvZErqai3iQe&E(Z4rbGQuEt&?U7&?r$O<_$pF=20A{Kuc z;Py;#myS}k0?qo&)~J;j__R>5AfZSL6;P9+s%MUNn5r7>fj;J0A@f8<{X@bDXm8X8 zQ_2^gue@q0kNS#8Cbw5~zWVnj*Y}iK(t0OA)y5PQ33?rt^2CqzcT$&({#y87ZDpZ^ z$5xLHVV1>KsqFWnn1LVo3at3#creexap*yLSE9V2XI3JOkul_fdDd7_ z81xGHDM`qW7_SZ1l7uZ||CXlr&)}ct3s`}c`l7wtliJgKWl3q~@r>8L=-+xPJp$i? zr23j~UQ(KQ)ba5#&z+X>)P)~2!{CoGACe}M*&jjA?N)kBervvsRu&leEbxUFfG4pq zLw$@IwJiTKz*k%VUUUICxN2a}IQ|&5^TM}Z0KWeG@UACe&YDHi``7i@`Qg4 zUf(z80`TAk;M*<$_naTz_4xVe?|SM2@Mq2s_uYH`_I(8xfMXV=kFPNwO0B?*{O#(> zM4wULHBNm4UOWz5%=a~7erlm2vHn=5RH925?+ow+*39t4lrrQ+=tI{y`oj@heJU~} z*4tvVCbcbe`$D$b&g{{NtXhpOS6Q_^y4>Db?O^*lmOGO4z0fzzvmhgWEmSJ{S3(Od z)>j?BSlg3ii$=*puUPpr^^b*NWht^POL^wGH)H#vaXB8$le(mu_+zUlT2>i!zN`sr zvZ+4>|8$#x=rsOB{qg&kBzsiHpx2O(B;{&>3;DpxWRw?a%v6!acpZ%l&0;oxy*XAs zHoSKt*uuPaHhSv0b!+7SCDpG^!51{rLjT)!`m|7qU>S)5jTgzK7_9Y>WdonV&(tLr z@C@>rP~pk-wXU#ra>@Q@sDHaTiv<4h`HdMxy-56Jrsqzxm_d)=F9yR%>*Lc!l4ceL zS_4kyyXL^(w*oD2qkd^h5u?5i_a!YZ>Ggd{%Grd|cs=t1NHgit$0Iz3OzSL2ZVy(1 z6=>p<^EX@oV$QB{Kl+Wwxhvt4-2l*pFxzGi`;%giNMa z>l#Eu))oZ*amT-FD5bd0A0gk>=xz$XV7^+BOL(UKK6{@2TJ($7^-Kx@Mt`l$qXjV| z^D@wvkbI)vpg)O!U566*bgeAQCdvzW89=d={!1Z#yd^^d>byrKXWlx zWHK0VV?Gz9({GiJWMd^G{;r=`S!Cch`=fQenh9>`n>|*b1;0UGk}+w*#r!Bk((JF$ zhYQp7VUjUqDQ~o&WXzgyA%7)cuZiEFC&_p<%O~UoF}KwD4}J=K&jV!QGx@_jOH;;M z@IL_$??*keh>(XA`-_E#%_0W>CA} zfb&dnK|k$nSsPDlpM}3~t!%=@{BR&?%9~Das`; z{II8&Pm>4Dr<$cw>z9}i*(BhZ)@KpB(A!VL&pZy3YodPYe6a*3GQ;iG`c`>O9S*bq ziShO%MbTvcj(Lk}j}@2FN^J)0q;r$G{etn@_mr9tlRv-q7Dt9C;`!@4OI5VQY_cg# zV)7rb1RPENHytC!Y%!qm28=0qK}0WD#O5!cw;dkmT6)CYP2|K ztnXQG4ym<#nz5IP&tr^_jvv$1THgmZ#7LX+p5hWoILXf(Lw>~k5#zrhQD0x5EHhQI z&A@NylQL71GQyLCIkG?L<82Aa82AM}u#A$@FgA>IqJPOIH{coY!%>ywnd4*750gZP zWTfA>-~#ZaI$sfX^ zDiWB1@((4mxLw*vHp3Gl!{FtZAoD6C0LrSec3*1saN#zQD zrmZKlOe~q<^Q>@VKBQRs$@HVY%u{VvlRyi7M*kBlg<0R^KP>>{0$4YK4E|dBr&?Pv z;0Au56=-SSQa>q5XVkaA&$s?~5-aWb==YdZ82AnPk~UW?^cnEm&6*bcnf)mr$s+Kd zFa8G!lz5EKRCWQ@C@UX2uuok(&Q~6lH<@z8&@(4W?B1*=FIpKTr~P) zp*Lt{VdnZ9%_6eCSl{n8+sm|HsSmu-9?fquPK~raewLMxuo?P;CWp^hUozQ;%(GpR zWY7a2#3--Z3+tEa_%g*0S(tQditUtW|CqN#+H+=rn1#cl0?}wjRu~OPYBSYFRIxXkU~^ z@B`)3=AU&7KQlbx*N;PrKsdwV!!DZ!_mJc~L3xU0?Ni;%k}kX-42q z@-I19OjGSV_{8Ke#v`GrWrsz7GwC~BE6Dapf4PkLm?j_4ZOQX-9QhzGOX5qK&q8w< z6I9TXvVOqHN}E3x`O!6}r9Ub4nMGw}XumB*p9p>ldnQRUn)m@He%x;GBT;^-$p&4T z40)&Wp7ipGWidnf?UwRXe~l##IY(AP3!2q+{!;mkY2`h-OeRVj^jXKl;*6o7!7ss& zRAV6(o;ul0_%W|T+UIEpR3v^AuK8d?XQEHEpK5%W_!Iisl`;ed{ieKFgE_K(#`$Kb zJk-w!H%=9#<4H!#ayj)UJcferkk|EbP{rT-@WlvTv2Z^Bc&Far+!DW0)O zpOAO>^V=y$mKW>YwnSRWqeTtK%4Ye*_#`Z2S;T1Hq%UQcInmxTw5>z!XB-dXltwzf za8gKA!cBQ&$GBq=YR(oz(@d-9Dd!Y# zLFyp_vpl2HD2_JTnw4f-;8(OrrJrCJ zxBQ|1X8D8v&GHBSo8^Cb{_^0i%j*KaWp{};o(0756oq8;*Ttx`E$W4ZNc@o%Qk0iD ze`2d;dGPbXi%?M)tBuj=HrT#CJne{J{DMuNH_-9PuBMJm@5>Bd^?(j z{zMn6kfP{fJM$Jr7efMyql;adf0iMey8Mtn@w!ld7S%5m^-1o40+oRRl~Dqffucm9 zC^1o>{mkarVoZuK8-(#5JYNw z-I?0U5N`+%P{H(&1MrceBatj6LZRrzxi8q_=D{z+_aUC7w4Z#q!UDJOi&jc2zta6P z%dWMcCtY6pIiV==P^?7lYLcev9GN9KD@xX z3oZJaI^N+jvxw2(1ihZy&BkPZGw?IP^33=XS|c65)D*^;XMmqh@2|Cg$yT;#KZE`- zwu}WlLp%ktN>j?(RrEGZ{=!R5P6@Cnp9y{?AGt94W6W22qt)7opeJoS5(nc1JY7Cn zSRC9)Cpfu1t&7fESyfD?_Ovbz7F+EF(r3@mxe96DXPDoxT+=7F#69oq4_2 z7gj-Urt#Ec1>?eX-(0{m@DF}YI`a(rGnFqHx4dQj)Y8s$p?wS7deSFZehm58Zxwb) zPpbY{XcZyRzcl%oXBIKqx5#JGk(&%~p}Eg99|x@@W~kqN0eI4qm7#u;RgeLmw903I zKXZZhpT7V+NyVq*PmUU8fCp0McgpxBzao`hKRlF)K0`j}d~YWF20Zo1l*CWQmN+~- z&iMwbJ`JD9)IRJPt&2|7S(S-JK8^NMk36CM4C_VWR9I$s*d#%~GtK{vk_#E@dlH5h z;DZ0c9!rX>oAWQTy##wCeKkm550Z>C3qQ>Hrgf1#n_M&KvA{_l)8LYy(gu-~n)F)q zi8T^z!qfPz8NoS8UnYGk&&_}eNuRK17Z64xEjPS`i6I-(KLO8#&kTVJc&dJ~9GT1v zuQo+I(S8T9X*+H~|2?xT_7%=+{hGo;^2C-) zoYz8tqrfEFKDOZhRUK>LJvi4 z6ltkcF)N^=GM#tMG{338U196QqsH(j@MjvYdFLN5&{wM07nC5qFp(DHr6otg32OAu zs(+J@v>5$I0K_sLG(PLiwAbDjCcUflSrmyxe<)DUy2Q=>UV4>XWlC>gTNvr8M0%Lg zH<)R(7ia^jW*EeFey)+~IZW+j(Cc@;_@LTZnbY%utF1d&f|s&;2JMrEJ1cXMoZ@`3 zHm~P*MaZ4BZ&Dw^6^uS4L83ne^jf#e&q8*@ayzP2*3+>vx39{s;AQWQsvNxO-LW#S zKUbwLRoQJ?F3V*#uD+#Zs(9{LQKnK}&q=%S*l~NA%Jw01GND*{y_sD)wm0r7WaiCI5L=?@a=$0&Uyk$#Hm_a)LV z5d6hN+D_^3B+{i+{#%Lkvjl%MkuIV1mPGmxm2WcBQhp*2xs;GSQlU7X=*Do^CRM7? zh?Vw9m5z`)7g;aJ+d&Q;3Y?(&SDEz#a|r*mM0z2?a}((@N{`?k8C|}*Dg8kr{S!(b zG1HPB5gf)Oj@tSw)octiBEywpQ(nRa2=f|HlIy61(SRkx0YH!xrLsgR2x>AMkeu}T z-o*C5z~{A>ABftcc@l{BD%YUE>e^CwMgViU4*Ua&z> z=XNJctJ!}sf`v^LmG+QRr>AmaNTp$<;Y>8C^CNl0EyX0f@#O7$HH~T^9e9$4{K`r> zq#|yKi3*LA6gW=qPmP17bWuNzgVMiPm0xz)s#*ua)->Ha7U$Eqy<_p@CJb%Ia%U4_ z*;ZQh_8E|Y7P4!;>Lik=JXs!6AAY=sDy8bf)%M6u*+G@Y8YHmgYSbQEtjm~A-D`xv-5Aeuz-{Bg3I9|K0hq7~ZI^eKziDD2`~<(~0&v%P;5Bw?f695Xa5qsqI0qB zrYc)#M&#_dU}5LttedK`LQ^AWwV=IoarRAB*;Zkv{&?+?1&Z@=A;*$`;7-UD>9O-4 zyr^kdViJN5xRlq;H=E-L+d!U3NH@o%{%}RkmTVDv4{gi5iZ2K|NjRjPv@)iJkoJNmR!P#1V@@Uts!#f=Uo80j9#OsDgP8_o z9+G!-1C^=^`aRRAjHRwQzo0ZhF6}z?+o*ZW7eWxNv`V&YlG>yFDYN`V|IPBQ3zuJ= ziNCSMT4Z#_)+;kGcnVPR_ir-?$*S={uat)`FEr&r_oZlZ`%>7U>;EWTVh&T>RoGM} zv+)oJi1klLrt}8Fl+I10g|ZxR%fGcHvP9pt0 zrN5O(k5T&3MEYJzZ%L#TN;f6aMU?g@(o3nmDl=`!lUV;+pV+kvZMN1h**A8wBs3(;fQuTkB4Z-v*MGS;%EnXW6_Ss#b+0NR@*x| zD7axA11VqOy@XhawbEC};d}`*>Oqx%@{*=m3u8P`p6teE4`y8KQ7Z1^fuInDzDMJP zBzeUo{Hq-hBIiq4O;HoD0;9eMx`PnN@?w6ea&fE7!gm2^6$NzsSQ34zyH?%g3QcTco~$N!W!9!- z%T17@_ooR8rYTBGkXawfjSw2`6TBKU>>0%ENeT5r@R+y2N6Q^e8*&1UX`06D+D0{U zz*fuGU??L8w8;MA_HJi&kL-nPTkj7q!UV;l)Fku~n+SbGYhral<35${U-I*dWdSza z)L-R5*@@AWqR7eutZ~t*BDUBOttuw30W}i1b^LYydUlpAQx|>rd*7SrjLe5%vc@7$ zbQ!kFUC|{fbGmy%lcNnP%ZnD_{~CLIM!3bH1RY2^-L}w_=q2%dWFrClDLdL=XQ*{5 zyv?CF+uwi)F}Nf?6{cBF$jz49!w;eI0{2FHXd)YCulxBKC_yUodY{K(qX&p%CU`VywP1|Ak0M-)J{W(i!fL%tWQ$bS>bK@3aCYvG>h`w z)oLgw>Qm#Bkpr7ijk@C5Q6DbQh}Nn=Cpy%29SvU|?q?80!dtdSi|%OLSAY>N;y-XI zN+2*3_i;^MglNBz50k&=G%fG{6aM}k7A0b9X8s-n^uNj9??{CI@ALOQ82OUFFGJ-@ z{x)lY7p5+DZ`eiJ%C{jplfDsA5`2%|JsfS}{oXOk?DG!U*u~IQV(71DAy;Rk11Fv^ zp$@kl59YaFb3WY@&vAe1e5$9TW~l8z5H5Z^8+U_Ih2T2~E5u-szK*%PN(&A7_|L~Q zZQa^C7#4JU6jsRTK96eK5Y4B?@J`%57lZ#Tk-uGmS~aIp zTpuzTN_h>M*@gcz^i7lWmDKU|Xfrc?C291{`!CRU@)c+mlUl(~Kl`+vwbI6R@D5E~9BVM~LIH}p;=U-VMJDFj@$yC21seXZqw=R!uC{-%Hktk3VsRg_&rxKt4rV9tuwjMc_!hHCxVVYtC?#HR6E2|g_0Z;E_1 zeo(&*NX{3WX7ck=6l239RmHZDpFZnjJBor6>iNR!#8?D=0k5e(y4BIY%=OIu9yi~A z70kgMb0B&n%TybcoH|a)e?UnTTL&8|w$c;z4wDt&JxvF|IeBxh{X6JjO^!ah!auNVHlQE%sU#b8TEyit2SIf#a@f99^<7t4)&TrG3w)U z|D>Zx<)6Qv-$2+P((|{`y}+edU+c9afd%xvn|O(YPb7$O+L3j;Pvct{u7aL|dVU&{ zKC+0)Dr_{kHL{3GD#821i_X$R=FTKP*+@MWaN8vyBcafbo98a92Gz&Tj(c zv2C6hhTwHy%sb}edq|sv#@shL+kOY+C=cRw`KqXLIoriq(i&IA$^vKmFHoXlZBeL+ zgq!t+d~78QFvxi+`;<)+vcCxW;4?!XP!ni~e{+(e#2;o`R52;0vjHi;?1+0M&44W` zJ1A7_$3}&}q6)W&(p9WVYMdDu|H-1YGF@LI?)51f5L)GQ{8C|5ffg4TgOgC$BNfgt z9=#59uze1!tvig%unhUPoBX2Q)%p1}gd4yDHXIF&cHXLv^w^wj-v+2Y{NB0PSM2rZ zQ^&2UkG;m{fJ#Ka!M$N;+YS_AU#!^S3T>@eTM+aK;=gDxsK{i{94mw3pJOXk(Wi?b zAMOW<@K4z-A`AN9Q}=M_2l_(7T1G3j+GDq&2+b1+c_W0}k0;`A&jdwDTX7%{wc$mt z!l_hfP+^$|C&O>3Js;*QmeMcK8Cz>}S11LTi|tsoY*?rYzL9pK~mXPEWF^#SE=B#g0)b56SUA+9qBx~w%GyS zXtSNazm(LDV;!x)Sd0uM0Dize8ceef$i4%AuojUCL#9zQ#M#a4b(ro#vtP;TRM1=D zGZ`~rGUjzKrj{7uQFBgbQ*hDetwDI|d zA;D3DxQnwXYxDylHvDlk+K?d1LV*fa4ykGq$lKaF-H z-;ew#5LFdO_6 z6@2J~_2*CmK&3xN)t`6`wA^k{D95hn_2m@PQ-4m0S-jMInq@u}(GzrZf6hEJZ-M!= zP=D&nDZ^7%f6g3y6`=TD4;~;$+5I{6B*|H-Kk?s?y38kf0zPzcw7$|R z>iG8`fyS>n9rcbOmTIr_Xvx8wo0k39Egrsu*5R5__k$j1 z`{yB%AYnosKhr9>D0Nv%gaPsg3k`QpCf@HuZz*)Bl6!QhxrkqOt*9PVq8>Hs5n&FS z&0u+R3IEGA=Yjj1p{Du&LJ>9%BN=tU?1jpi3`2h{;qW(?0RHm0aGD=Q6qV^0t=Ll| zBm^%Z_`i$`*M;F2J0mp4401_+$=?Ti$R(-g_sN><9F0rxJ+R5r2=Je`en~yQ<^uJh z3Snv0v19CDv}R1K=(UE)e>seJskf%;>$gRFv6``XsbTeBqT9Ey{U@`-QJ8KXxfXvU zQ@E>=JtSB4Lh2`6F~w-1-&kWWLA%|!(!n&MYHE3>{eY=vE1%#|GJJlm=DVl=3~v+$?Y_G zu$a6q^zJ0AMU{fG;2&jy_*#+yY5KoC-l zK>_)z>Gq=!@rM+`NA zqe%`n!D4P6Hm#~7L8p7UYx_hXSQ~YThyr{@Nw&c*8V@k5g1uuPTuKP9hy5()PepaX zR>!8CijA(#x;<+&@O$?=!HeC?3pP#Nn&aN&+B6C6tg|$-5^cO$N0Q z|KDYQ1eQ(-L@_crWA*^hyfsjsLzyzZFZHpz#o=swf+TqcPBS3Z&>bsydIgMxVdsw! zwr(E@=0(nF!RGi%R{XU6D!8Te(?QKjomN-^CzVQsrfY@w;yE%}A1e3zEs$U-`Nn-Q z#}kC{t2RuoJik`B5ru(x+B$^lDV%_f=mE_v6zNxqsP=m>GuN#x??wqJ-?V>OA6wXd zCvcT_gFYuKr0%eTk@selAAaj#{VIL?o*!R`E@@^DJ8Ubyl3uqHr7!O+g3yYDf(=XBm z)--LCXoW?3R-!VVP(RR3+}=YU^wgZk&maaC+3y1J`Q|nY?N!SS7p-t%0@KUe!KA&C zQ|>qXY(6pS(l;Z&8^!iJ`~^?+`q(Y1dtYcom=DxmxW%r7u7%VtqVf4TjTp;CTazQB zS}@zEz0;oyF;TEv-+GP^hp@z(TtIyh{PDWP9*`qIKW^pc|M`1!4=Aga-;Uo7!3I#@ zqneWt9ni#9kP*K~s^47X=T9b8zF4nZb#Zb{$+q`Qd`(jQcf@XI zabMNsaq2@sK)uI&HqzIfc2C;@oLAUae!%}SoFOH)(Z>4D{Lb0cbLQBjfm%NK^TbOv zn&mNVhmOH2A?u z&?R{|z(mobx&U!7*3QpDWn;7UU*}^-B$4F{-2Qn?j1BZrh7UdowgQ}m&ZFU*sTEd(O6Y>6_^Mt+Cd$@%<=sA?XrU?UJtrGR*JNb~ zwcfn|YMePby}LwE1}#;%IPMzdLPTE2rqk!61 zr77zIH2OOJ0Ck@KcD17HrKi4}f5y*(p&yP|t*z5mDUOUBj8$Ty>?rQ+pd#V3cLpbh z&t4bIsc!Gy8Se`V_I38&k%*lVkHKHWPod&5G~9^+MA(l!z(2!{(;eT~ZMM$5Wul3* zVu+WOA7K5KA)Y-`3^5z7_cv>GCI@JMF}~SN(Oe4C1un_T!g_%BkVmyb1u#Dw z%;flu@}~{lp)bIKEz0qM zF9QnZj-LlM6S=fTJ`gAnIes&zF;FaWmYO+B#EkRvxn|Dwfd!&WiJ5b8V1>w;Z06*Y z)1kyY=th{nG3CTJM3cUyK0qho-|0NZN|en;`KuSiAQ%%`hF#KftsL`~Y{)ys#0_w)%Ra6k*onBO zfcSmfhMzZpCITwV5*N*ka{duwpqSOj%NRWn^R;!T0G5@X{|NQbHt9mJOz6UTUGoiL zH=!>_%y{U;{+tt}E%4W$=HICz#OTofO6n z0o@yi>l1`};q2qxLjH-{nHcEzwL*~IUh};a%j{HDi!UX;zg3r(^ zd4WABt-TX&nS|Ux(JV@=yF>33Nw%P?+2-TFLeGgmXi#Q`KJU|844|5i-m#xGAIp&u^u#J-Q4~gG!Bzuz1y%g+zm(p*s{G<3r(aNZJS|?R=U^~KmdY_6=UG6VgxhR^? zL(61;t-C{-TROMI{FsNS5Lq-pgC5L%!6rnbv(X-S66iqV8jO5^XzI9(9{Kaoqig^M zV>F-Yv>$M`IbirC#0F;pzQCq5PYfIeSX<@T{WcZrcDDVV7K}p5ZGSU#<6NmE5zlfl zfoV5Ed~Axg$}UUEif=mGo zb2>HcVguT$QZ|b9qiq6ZTz0!)GCKM87ib_bvr6kbyr;2S6c|K~kH0b^MbdlPC(9JB zK^08(W`&&zoIsh@58w$XqVA18e~0&7(kb3|1H+>JSNS*)dH7ye`qWvex^ZEE& z=$8b=+7HnTq}d;Md^Yv@t7t9uGs=zZFS?+5yz?@eW7s&6h-gtym^GF~y&1L~oHX+8 zXeqx|R>NX6vl%-~f(Xc{2Vn4EijR~AQO+kIXbN$TEP4zSDrEM`F#-9a$z^!#J*u+8|m?g%7^cFt}Ct{s0 zn}O$PLKafKY(ioMcAv_-QP3ziWR~OKO=JuGTkCu=hvv;*42&_&uyi}U12Hd|ps=Jm zYBatI`V(_1X*E4`D7=W1u=|~D^qOt6ZSOF#3w1KiYn5tQPl5l2J zA3u!~M!Tp0Itg}8+x-mC?0%L$o~MuR<6~{Fz9GB;m3`U~QASjv0Z1zxct$TqSd3y0 zE4sjdUV@r1O62Kn1y1NdYFY;dd00np0Fv#{pZ`Lsd|KAq58%3sETJC#wd^3Y<8G0SvlE7T)XO2< z0Wn_?StM+L(B=9ZTZ3QAG-rXBYlMT!>>?8ZqBB!3Nx$owUQ!kc=E>IVET5{jA3z4) zFwxfAh1+hpbHd+PB)Giy8R#asbB;Yv;eqy#oJ)Ir{`$c4NJ8{o!XkvsoW=Z$>@SEe zB7xB7Pjo&BMR1-zX@avO5^3-XAUG`%yuOL*0l^+1fP+&=%|ZcMq7h;~!=DACMXaft z;ulBsHu`gDj)Bow2}wlgDOhSqIu+bS3%I90M@(EmcT*bu)x}XDGs=*B5eB1-&Jm0^ z?c1{6dUB}Y4<`I+;RpF++iXeB*3T~%y*iJxm7jZlsgPKc6G~`xX~_ z2e$6zG(fY5I~}<(kFBFxgK?V^`4CerwBEHgrTt{jn{cHTO6mK|tD$-x1s@EZe|FNKR^0;E%)9W&xb=TlW$iZnccR zra0I0Iy(rQ=3G;zvWGs`_T^CTgwfTPBl3+b0Z&;E;6vOZED}{RsoBOWlF|ylTBbo8 z)=aW0@jL70PjVAKVZ5aBaP_BxhpDX7*)_Kt@rWCUe-_3~HyAg?|6`kEnh`DV&pn=; zVNPc`pT$DHGe1yLme7C3*`Gfqzw!Wjb$z+hX(>;ySnQ&$T#Vo;yihA|?U9jLJ!*;5 z5%RwGS_8q9Bm~4*;~?3mbUG_I4qe-_?=P&uzuQ;CFreOZN(8 zMP}+T%;10nnmJI4k8+K>H-eqRWX_BPYXkHuQLO!41g`6S{12C-0htm2A7A_cAu0l) zg)+a-dmJ47(>+odj{5oW`(#syB;Aju`q~dcjX-DkNM{_THS>RgYFpy3j>|c^C#Czn2S< zI!T%~uvBCHz1aA(XT^FnfpS?CXFSa;)k*!EkHhY~f9$-Cv>hzgCTrClzOkcLxeQwhut$!jUn{vo!SAoQc{2l@m zXvY213^N!^S-!v;;16t|4+>xLb01PCOJ0HNh(JVeD!Pqgi9W|G_^mL_Nn-XBgD4`4 z(15_jYdsKIQK7H>I0P3%n8dCIN6 zzF>(z@FW&}nCo}_wHP`dUk<5feUR_nRIYtwEm`Tpk`B$*E$iSFfo@rAwo$79wXhcO zcVUQ$23S7%mGC2SaUiTwdrvnrseLlWp_(W2f1|=O70ia6fig1Aln7mAig^05^?Ml; zt`627J^bKDaEX2wQbeBmbI5GP5Gg3?knWFwtE`axwtlgy>+oq-cz+JT2_kd*b3|~9 zFu`=DChputp|}1VGDN6ce~z%}s6=;gopeMl;Di)eosfk45uavtJojt^o>;2-|v%b)_ME{;Ze@J`NmD22VR)5Im=VvN!g&iol0Vt7RG&;!I^ z9q&XZXcq3T0%$g*nnD8WHOf}e+g zWnLR=SFkA+*a+tM_!a~}Xtfl12oh2}uDqMd?O6{QNbY~kI4eL=l<)rsG?$3@?ZIX! zOu}UMljPGZFZP@H_bC1%YP|7pR3rJq`^cgv$y*Cffk%J`8Mk2g8NI=|-9*N&F63J1 z+4XpGn&m$xtI^zEzpz|X5+f}?Ko8#k&|3*z)aTV;+l;mT4icrw9vcmZE<)5WR+#`3 zJD3euBjHx0lwXBQGyweRz7qFCCczu5D+sESM4?}kc8wtf5w%+`=P>$*DKUw5SFVFR zV#qDsJ!DXaXcBJdDA5iB=Omd)%B&cV0=={Co9GfNBz8e(ULILQj8cL{+I)JTpU#7F z6@_J?{v6^r%`Bl}39d?be-0rL5L0Cm>8OFGC?CtAUZS6piZ0PX1k&bwEEd8391?PZ zSv!ONlKifApvh8$^5FEyBGDjZ094GUXDPQSqA!?E^}R*d0^Ut>L(`o$RRYu+A3Q18 zw_9)oCgUkIkC(NfT%$EZc&$nIz8QY?41sH%bwa^?3GsStI+dx zYxUT>X$*l^z+=aGV;m4r`g1wvzW&m6774D1|@q3PY?)?av)R zI#QxU)~kvS&NS|?@$uc$@xEk(jss8HM zh11vxs=f}z(4Xs?Yf?oRCB@Ou7=OwNPOV!ffNG*{tWxc_5zRino*GQ;ijUudYDlJ{_f?DO%vH-d-h_7dtj3zvTv6ANa#bcZO`__afIUA z*rf$oB^!3ZJ5zrCD#m)MMs7x6}< zeZ1=5WskCQD|eH5IWprPp)kK5S-ccU zB+xZJL9`RPB+`Oo#TQ}qW;F%0U!xV?P7`M}ZtB6ktwns~duSQF;zz+V^u!T(iiE!I zC1m&Vmw!l^&bAo7iJ;%ZIchlh2lN$ffcHuW26#6r*!Z6jAmI-H0;fk@r@&iL7>S9f z_buc%#7~k!ri%31+fPtS3F2(i$qw|AR(@EhIgxX=&`!QW(sC6x{I8Jo3_?j@{6o&b z^F-boG8wFz+a14EjBzYWR9|MGip*QrmqXOp z^mA6tIs6?A&Y@;|V8J)wI-deHk-Nu~JvCoal%@*w)8h^`?pla1>Y~T(^CAelVlSPy zYO3fcBJj{`N+0XW&7n&kMN?k7i{qv46hO*KGV7YXyG9B zu%2FaH@&q^1?G11SJAi_&;=lgCV)7TIHA0IFUi_hB}2oDXbi9eP8%wrsWb(y#sJcH zF=FBk4Laimrx=dB5|?m76b0TIfYThx<14W15}zcQ{Q{mF&KzyHwEN8AE9r_aj2Yp2 z86?T zM$y~@pW$?GPs8I(iK?Za^;Vh4Q~M$3lW`7W7Gy&r)w+t z6+qPCegDU{j>bRG*hd!aAr3p+Ujei~hZ1Db^LmscpO)ufocMnL6+eoPKoFBGumK;u zghZ7@_iC*k?C_pQbUQ1wlD~^g{wYfHWgsRpQ?SDz6ndKi6kzxRLekO6 z0-|9GA3!xNbb{YxP%#8+ny3f~DqMjliHdI^6X(ll-=<;_(XbQed`?a#(+<1`CiiG? zVnoY=TiNJ}d)fRFT8$cA&=2_Ck`wXbIy$D7-~zo3dV)-geIQK0_$wg5%*JA(XXm3w zB0HklLi2#H3@=@wAAbZzWE$A{BdEBG+KYMzG5>IYkeV7W^ynarj+}^=9r}`Nr!LV> zaG4|&ShK6*H>S~uH*ji(@Op<<7P#!&9`dks=X4>$RgJc`iMYl(ufZfucJ1enzC)p!q$nUoiRM*Q`m-%u!8P#Dd$_fHN z(if&hoBs^s8TbhXO|01O=L2~1(_7_wFmnJyhx<25>&lNWnQ)m4=c}71^2hGBi8X|- zJ&N2tjNy#r6DSMkXzQbwQJq-JyLHZQvr~6O^Y98$^ftOhu-?JE@3NK?(ABMH?hoF5 zFZ1&Ge{=ucw?LIM@8JApci$g^`i5}Gs*VBNJbF$jnwkQ`n+IpegdYEh--3xq3#+ z={)8IJ!9MFHs`G=Kake0Y?3t&p6OLEnQ=_~^(-9+Ue+64w-$SOE+yC``>!G}f_7-u z(;lBaxRSnHL7X{t+73s(L($d4v^vxbM+S2vqq(7LcM;nn19n*vqM+=ioRQv=;MB-K ziOhyT%k1)QaXthL!tAfeY1;)C7={EyqjjhhmFt=>=EGm6vB9*evH$Ao=4}3FRPI+x z4}mCbK0vooXnDy53>;3PwLb>gj>bCZ^NBY4d^${@Kiy8BKih`SrpKOmR(!>t6kksV z#aBC>Uu}BqxqHRe4+8jl>g(-K;fs0IX#3-Mh|$9{c<2}H+OSK)JY&tiXge*QG4Jz4 z$zB*Wr~zX7z0X7Gc>2BHCp8@P{zNNmgJ+F1hikMm$5EW@WPxe=ag5lxUajyk3J>5- zY^|^ZPf*AX=vF&A4Sl9G2wp{I9>$31j#OZ9kH@`1n-8eMmX^Ar_m;Y1_&<9PzK~c+ zuZQ^khc9|JM??gYr%zL1p$~7^P4zy*t#-ruyQK~5WOStVvtBvb3L_4S-#d@--G`-J#bcXNEl zy!PFvDJ^8NKc@`OB-^_PxO)g(Mi>>JL^ndYcp`c3&l%RAn$oO%{>!m)N8ZayjR zqjO_QXmX;$AoPn~R&hqYi<)QpNnbhJpQh(N`Al=y`SKsKHs`ZkTz47Uf_EokJ5^+5 zZ=Q0>xnpwVq&>F9-sC*ujP10a>4S--1n+jf{6V%eLT3S+oDZx#9oupmdzsD$*194m z%kW)Qf{**lVq3~0XDR(wlk+C$F-Mbg=M1C|>zV`Ei3l3vNnTa8uI6ZIAnbZRJ>O%h-Q`W;F>fr7UBUw$v0yYFSmOse*hz7P!3e^qR!loyjvoDwn)ECW`#at zZwMLrA%vypWY($YBEQSlN}mwbN@H)Mb{BoTi~k(|$M9d5kuE}JeeSHXbu6>#Idm2X zaGBRxmDRB<%P1S0H#xS@DO#LQJ{J!4<{t|qwEyG8X2OszQ@Udk* zK6Y$8<=mNv|F@yo&UzHvxemp4{xyp2d;rCEZbh-3J2$qTB%Eh@!enoEq5GSzjC@=Y z`2;o0W^_c6lO<<*5SG?LzdqB0HC_uAf;C_e-owqqJd~NCI3lUe$S1bQ$2RH;y|MGD z&XssJlnQpf2Av2Fw7-vrAsX-P?D;S+*ks%$Kyxyeq@CuOpC;v6Ovjyh_AWO?ZKaCL)axH9=4?Ev3C`*)5?nI{A=ELjv^M5ww@F z0xGi)&pud-OQ1xp37ykAE*7<+HZY+dl>&G!w4?u~47Wrvztw-uD+ zeDjjvR6JZx4-@ck1s+1Tvg%?8-BMPoLgZ$UU%E=$Sj4{w%5=jo{`vB5T!BMI_K3}e z_@SqW*-;0-t69r7+AYNV0jJc-yW`d0k+Bh0*8G{Yz7|F8-^Ju%# z^Y=D#AGOdhVgp)eP%HciOf_j9OCCgqiey-?hDYw^3d~%(ZUz1jenb`*k`=)6AF6uM z&6g`nbgX@lN{o{&HKjKm&de0swIaRFDm-$ zH!$I2;Q}vAq)Wka3MDzjMl;O%J&+8b#SDlH{)GmqQr*BPGKNL2>2KB=Uno4!#>Jk2r*fpd8&kHs%YEpmPIScPpm0&eF!iN{~k&;ti1zQ%Rsf|MRC=y zN@uQ#`Pdx@??4lF?FNqD-cTAMSK;?eR0U(hzXWrX&*(;Y@&wp{4F|DBvJ&eIp7Z!5 zoEwx|B;Q3r*eg)a2>0HK1j6EkT}0HU^7W{}e+?9X!im&G(3~$vE{b9O*6BcZ9dK7h z&tbt|sb;@k?pVOr;|ww`7-1_NB8_ABCu@*pUH$d*B*jpoxHANs;|g11k8O6z>nHp^ zs6`t4XlNMx#m!?vWI3m)M6Y0+Bblo&1RMhrnaH!K~yQ$U|f?~>w^klWY z89EU^dTBTAJrklOXnGYo2Bc2$voasQ@WKzBq|`7R^>%1(sYpc z%ngtteXDg>37lm*fjCcYW`!pEc+t;5@vwk2Pymb4*bEp6I$O_49De>|!a;(JFq;UJ zKJZTn@Li8qc^bY zWjJ0$O;{LB>|-w2KGjV)H>{Q z>uU&@y&98%?mE72jQ<5w0k5_k#*L7_ZbaT{7H>UEXQ@Ludoh=lT7DcQ8XN97kR1Pp zqtlrgt}->!ty2UJzLGw-D?P;$S^l z0oWhePge-AB~X}eLkDVGi(=kAxRwFOXd4<}EbuRoyn3+EAL28_V?oqAzzgsg-R9yB zAiDPPjR@2e+c77*&{15^%zur3HwX)|k97L_65P020AgAn zR>LT=GuQd^C3f5pw*;oeAbZ$_czVszisgJ&S_ZF z+0q57hpOPVEfogOV0=O)YSK1%pKlf3sNugv2o~>hNrMO1*0s<*h3JXa@9jp*3deSV z!g{$1KJ^lNa9N)BZ73=&beR7HW_<&{2qd$bL%7VI+r{Gmc+mPqVTb!7J7I?}Z{2Cw z;X4gGe5bU-uValTA}#xs(A9Vic_w(y51s~6%*vujOSiGhSI?(VZUb1*c%rvi-E$T0 z2;?;@Z3=&43=G>=tb{Hjw)3~KgTY&ohb5g>%V>2m&xd)=fA9}dxkOq@=xu;v9B*xL z1hE#D$c-Kifp&W7(K`p0c^2!3BJuI7v30`mbIdo$Uu~=BPm%qJ6KW)=_%&Bttxxw} z3aCq5tw7=O$bR4m=GFW7OBinGR-u_lIl^`qY`Hly*L*VK&i4g|QJlVBu}O znMlCJm`Fx;xU!w?pP*vv4mm>8@E|;;d_0h+xQ8h9V021{B2ku2GYCxhM$ELj6^ z#X5)cQ4K7K)x0gPs(^uoJN{NcP}yoMY6b4qZ#yHup#r#-o-R%vj5Q2L8wW6pDk_Ja zU&k2?#a(&Y`E__?3af~=46}#eSK*R-jH~l&U#DFB)`Q2v>|}#_d9((%`5lU`J`t^X zxBbA5+1i$3Z7!THei&{CYzheOY;2FQ)hDW9y~3G6QQV*c&xS|5!>(#LRM-~2p4A*? zs}IFr(n5g1T`Pt4g0;Lv3k}d+8^e%eScy0g%6~<3YyTW{ht&+C3yUK?1<}<*=n3`h zk!vt2<;TM<#R|>}z~H+NJN^v~;TBv?b0^E23FwSPBukrCMs{L?I!2b2sKLcF0YeMv zIrP`s)?z>J12btvgN^Z-7#Hw$%Vi51i$k}_A42yLJ@iVHpSOY~uvqyn=p6`2=<~YW zLX8h&@1mh0R`V+V5DGhR8p=K9ebvWZFx>bH--2k}gIc_aKJLOt6jIxOZ%6>t74w#Y zd)RMu;2o86@-j5Z1_%Ex1P+P;q;f3K8m()!wPYl>ei4wcv+d8I3e0j4vc{swHoHRi zDQJcJ$sPmaQTXqd%kI(5F488i=jGzvH~RUI_GhW9U%~6N zZM*P9How^GqC-Bod;Sk(pw^5+$l%wx4{m-awh`N_#qO%p+rR9t8r`{;uEJG&2359w z!D+ba7csxe?sT0->F`%@KYU|RXaNdD`iHao(UTFy6M|_0f?_LAqk&r3Hdea+gQntY z+*CRTjiQ~(NM8Xwb@#zdv9qyruS>Fnn6<9Ju-K~jHj;bK)x zX(7^BnemGN5J__9hcOwUuOOXnXxHq0uyhd&(KZ!p*ZcTqVgN|GFCj0b=5%$W2hxqw zsD&NXoo~mpeoTi?NzV7Va3?vUoT2B}t?ktP*?&iLnTAamA2Ki_w$#CStP;e0iq*Ij zgp*uk6TFEVKiO&+DvroaN{hWc6`&BsIM8yG$XNnN z`EfW2Z~-XFI1%$@L4)1dX2S!VPrL|duPAcHJ|k|s!29+$x8+3o9NC`|yITs{-h8Np zB087u8v6(ADtVz35H>YWJe*(yqBHX4|C_itH>0R+z+ZPJLn$Hg5l_DY7=Z$BHM@IuYMj!Kj4{9kz=F0yR}zkmcK+}0kwpbs-h#T(19byDLBScnpar^OV@c?W)|+Ti4^D5r=_=@?;8bS2ve(_eY2rv_3GO$2 z9!-xdR-1w|D;~rhr+<%RMFluaEDlWs zwhh3h2G`2ALN`Soc4cpxSMhMcmh0H!VnjqSUNfC9dP`{`#BoHziy*0pH>@(Ehfv>i znv392H?nCMVUAV&O6W;IF|ek^gu8HI1nS$#4(hB;r)S3Dy_S5k4X?!KsYT9?8Suqme9o za5_X}M8UbUkt|yXw}5eC$LEd(Tq7*izo(N-KnzaYZgwo5j)mpIB&c7mrSp`x%yIOm&7%ED8a2C(gtI=s{e|;Up z+28Wxcq??IT+`mbuM;%(cCim}uXYa{?Z3vP6W{~%+Nkyc_K>iMfNjmns=!Gw3U8fI zG*gHx+GY2a+E>-0^#cBkXkBaom_Z|1cQrXBfvbN>=fm`9Xrpe$q%mNw7@O)bFyOV{ z2nM*AZ`LXVCs%ROCJ3CQ^`Ay{X{l?qulZcydbFY+c+m&b7sC#V9>QH(I*SIAhEWUN z6xm)n2N#67gQat}T!Ud`jvq&{!A0Y^{l^%{i{(Hr{jr_jhNc-k+>M9$OGLJQBt{>} z@@~jGU`p#lD$xL+zt({t=&ZmU&N*Uid%?@P+E>aDcZg3;JOh=34qYu#qxU#g*ZS5p z!2ickX@`6L{QFoq*+vzTZruku@)#7Q`1_yp5ZG)T{Gam>FOPQ~;_cV|FP(=F)kpVmlq;+-S<4OE~9{*p(f2ajI-_!L!=OM%)iT^ndA>~2e zlV|@&&O_9b^8hNJbZ211y z$&#VpvtuY1x-0U&IK^QULx~$Baho_I;JO21tREJdW*~94JqgVE$)*n_lAr{l+6XQv zgfX$MSDqC?oB#a3*?ar=sH$t>e<+ z&v)%JGYKl{?eqKV`TY1WnLX$1*R|JPd+oK?%O9gBPp&spTsw`PXkHs3Cpz4ZI-Jh> zzdyUs-pkjjiN{SDYQSo-m#fy?#e9 zWwU6Jx1042e(qBCoRk6Kyxnrc)O!qrr<3M!Ba*brtFCF1c_2I(Y`(P!1$@`Bf(N7? z1h^-q0u();mhW03ep}PZ)oKbbry@B&Q;Uo4mfUI*9p-}g56+OzU8*w4SJ~VSuPe9q z*fI)cpb{`DX@Ka&hK2#cI`nL`5Onu{}LeJ9|VwJH#cL7CUmunm_CRownmwTtf~ zGm6Dfg}GI?HVkxQQr)f&E6GJLLVJt|gg&Yu#GI)C!TTihxOxv387azqS0uE4y18(2 z(vW|;1Y}{2$dE)8;R~Amfi$}~eLhVOXgS4fPiqU{uY%JmzNoKS6!K42 zITtw{b*;G~MA<8zVCY5WDZS{DUU;Mz&wQpA0@@6_ALV(+3W6Ey$09KlX%p)wUA+wV zZd?Mp?T0sBi|TZ2fqqfmw@#C{3_?@V7jmLMK@401l!uBkLPeROqO4HS*icb+sAyuS zXfhFO+~Xp^@ZR=sD3VgZM7K!;~u;? zGvr5vJvQXe)VFSs4FNItxMR(a?5h#`n9rF;Jxp!JuS%)Nq3(g)hy3XS3rT#95)Z*h z#0Y;dpP+VU!a9bUELq7wLsrFH5xgk)+@dqbn(-f9c34wvTp=tTi>~QuUwUX^hAtewUMCR>AM-55xlRUCi*k-2L@T|sW(ME)5;=Yr;>qB%{H{TMe} z8WWmJJmI1Pv#zQ2dbhTEH#J2Huz-HYYhe>ai{4EQU0E~d`0$gYV~J?of#P|$rj)9# z+nI&PjaItfyNRD~)ybuKW$+{Y@-bd=F})_}GCGo|sd?yto;#XS{AjWcZSHE;uA+{_ zmyurim{e5M3@$U*r<-RR=Sko$*@G2-WFE{&=LJ#eF`1#>!OC9BP_$ zVT*AI^cr%M6gt~Jo$J|Ws>6555>X`?S{)@B>RsIqbuOsRux$y|Lv%T|fi7bkl@0V6 zARVgC4^@xt7WOCV&mfGW_eY#u9bDmfH~FU#J5&9E87H>45%C26Xhc$LUx-d@e0d*y z`wrC$23W<$!pYH4^~9#?+)#CPsCr6M^(-r&xA)20^GK}4t+q8TR6Utce>-#}MJt2E z3>JiyO5!A}g;+$2*co^)L8Ltk0(-Wqg+L z`2n9beAe-~gU{W3^ty_{<|;&3AjcQLrm;Q&o6AQ2Phj&?ZdE@Eo9_J@HYb4M>0whR zZv{5j4;l!Y69O`U&Fyj641<&SCt-5~9r-?=+oeN%?%{JUpP%!2jE{F~(KJJ42c{az z6&P&C8iLAKKx%-?Lw&EF){C=}XJ0?iR>K4Xa?))4jt zTLDAOjlVv>|MdqW;;)$&oI`)4=G(cFm`i_FsbHKvSGcF+eqRKG@thk@n{#o0PAJ}U z4%&lgH7}gj;h*L3Zra7lbS!I}RT{{bHp*hi@a_<@EzD>pP{cG`gw(B{#)gm)%v870 zQfxRE>;75{cWHHeoqg>Fww|tmto{c6GF-D!@doN{n|489aJXo4sS?l9?M6{1dr&6! zY3!JdEw=&t$ry9DHy2HtXwJ>-teic2}OlZ^Z zr|~{iHdfugJ~6g`(M`7-w@q;b|L)z|Vnk}ZcW_LAz^o@H^Da9Iv(KJg)QAL zgQJUTGOP+iU4!+BN)40?i3=VqBk%cOg|(Z+cbIw$*OeX7$9J>inFykF})-M+x;@6xN)$1afX6;#~KN}kt ziu7ltt;_AKLWgaAP<@d4{{UScWAeT(x}1&zZqRUMYtanGu#~X9Ow+OwnEj@ zLC&XB18KWd$e#~C7QPgKQ-t9EQN*i(k!12Gx9z7i3RWzw=n#L zL4t%$TNVDHvw83w9f9q2Fep@>uLA+;gG9xt(^N?>nI=F5O)ZGc>mqxU-lq%u>~YF? zeu4r57k5$rK*w^G_cJ*Y$z#K?2MI@DA zMiF!fKG7xR=NM9H?loT&N$(o@Q@%j{=3yxn7_EL4NN^)JvDnxbb!1q8%2ct@Ji>W1 z)0`hMOZ%)P0&6fd{urMPg?-i~Cbzx2EtH^6eVO8Yj<@H?V68Eqf4P;%ZtteTzI)BC z3Uht7*{Q2VnSA$#5o=KzS~aBi4P&>X_f6xK!qEC`nc1c51W9G!)-YpPcCQvr7WgNx zcL~Z7vm)r`@!N>25b7A85cnRgryc4+AZ&Rgbq*h@^k?0R`Cx_H8c8ygY7Je+_c9X6&Hk*WRGDv?zjm`MTkq2Ja8UjBItCjm%jO2& zqb73NZpTq>MrYAv=1LfAVUe{KH_Q7J3bLMy@;-=!f#f>*IarDfr{d=`?`!-7InM+Y zS=`gtLNq|)=|W1>C#z-s$KD7zkvD24*33Qx+QhU3=R1PqCD&-lHQa17-o50e!?~@I6xZ}d$#u*>)fvcC&)=Hp zUWg6XW_IFY7jd&_w+|vX4Wwj&G0|z>t;Hx(=h7Rj-*8QZG%?-qM6G1LqmG0;2(z}q zC{&?C!}DOKL_H3;qYleOUNecH&DJPPY?7jd9y7`G5D2!($uABMi5iSU8T~>zJ%4rU zXE_2@ravFO!g6!{bQBR=@Hg-@P6?94b4_Ut;r)(6|9VQ*aMmv5f=M{HptvV+PK@6| z9ad+tr9SU66FAk#5B|v-XAq~|%8F-Ooo{nxGPBQ;3-OyEpj;7**rMfcaq;2*T{mxH zseENOU-(+x6xMw}H*dzcW5A67;&X2B&?Aq{=y1~|Ga4L>f*dpCbaIt~vMkz=q6+Kk z6pnf*5>rtNjRY=4e2kbO)qJs39e`-^)5wnohZ`4P5FAlja|u>R+w8~leCzsxuZk|~ z#UgRrhQw`XOyU+3pqG`2qI;%^`9cH{FQPme=|d9)rCQFoYe1C#PF*G~fnCKpE0A(l zrQ?|-$vlFfTJG7l%Me9tHr;eObNOJzD{;Ez5-i|$W?5;zBRGGec#<>sT3};K0i{n~ z`?@67CF9T(q~Tgc6m|C=Z9jruEGqX3polK(VvI-*5m{`c`pGScB_j&%$OEl!FwDQh z$YW>1-Ww|3iR=-(n&IMCORrMn2&Bc98W-Ni)#kDiD#IdgKSxK~!Z)lY z0~ouQJ9Bm!Z7wboTHjCdwQ7fKZCqh3_V`1?BqVMRA#n$YvnRuF_pcoBz*rF&BsFi@ zO!GCR;l=~#fs47*pjI@iZD&HcOrJbDhGm_d0p*`i<6d%x8|7t4dq@d2%JhfA`{nP( zz4G_|SLN?hJLT_|m-vg5p@{wpAJSjRj=k?daE&A&>&+>KO-Hknbnc`bWk9-*lYe2*R<0kOTcis$XN&EQA*n?7~?8@A6ZdDlbIbPECou#GfHU>vE?YPGI+Zi#} zILRm^me)A9j>aWTIquF==qyWs=rRM`>QuLPe{vJ_K=|6K?h9^?CFNd{#fJocs6Slv zoDn&r)@8J2dpC`q7oHRQ*_I7DyM5aOZ{}=YYKoz{t|fk-Gr6GH6CACYsXZp{yOK^a z#^?rd_sQ!0YgPB%{ES%%d$evN9gNijy(By+YHgwi`^Ucln{^%-`cxJ-Tk2>vt-s=9 zjBKk^Z23*xFl~MW(7?eis!-qLDGRB`nws;8ca!^Ui7<+ue+?HasF3$~H@WyZk)P1k zOPMFuNZ|FHp1O5?nz-}~xcJovV^KI0Wi_qufM-Sr8V;UvTl-*9U|6$gHVCg8(?|Hw zOx5ZJF=YdsBG{@1%AD6nwsRT|2C^Qtl@0jf67m%^*sUSPhe?*l_|U~B_@TRBn*zy$ z){(f*8sCiCf)jm(*-iMs(7F`opQ=ZZ53j2IVMs=uiQL-v$3L39aixf+(Q*BRgnC5R zm#RnXKt1Aun0mzUe)WiWEz3fqxy7A3F{7y>NwgmL9e>r28s%)Y^K9I><$DR-$YbSd z+^{aTaYN517pSW<)x7>}>9W8(tTQppU3|Okt5B4Pg=opKi&>1LA?TyMMK;KGr?Ds# zbW*p9ivK!~t{rR|s<8>ALi>Bi>fvht@F~ zPr<0&{1l8bzMtU?h^Y09X4}?eMN+(58TaWwAIMb+zvU zIr$-&Ui%mO4xVLuYLOf%GOV6^bBe6=)G7gI?Yk6}hfdw3YFeR*INvb`@(4`Ig0 zv4M?mSYjDY4ws}e@&MZIg0pPN04^6Vj%)FkIC1^C>eq}mw#09Sb;o33aR$CMa7LFN z8Z0KKLe*p|4wvjzJ!rqPSBgJGc0Gk+KDT>W*eas8vLDu=y~b18RMn>*;OGmW>Gxat z#aS48!v)lRA_q)vcZ(xda@{96!J!yEG>`L>KNL)-Doh}>7srg?n&$Q?xw8ho1Zqhnyfy$QD$vCXmYF_AC#iRa^|u2q(G`% zE7VyTf6@eXkUUE2ean2SZrwpgwYMP~T5A^XH6GL&G2O%Dr)(a^p+ed(#|{ozqQ(=V zGq(gTLaPNliA-ESMQzY6Y89iom}-Ib1jc5UCY#0;;;EajX@096BP6h;MYX*x`GnOX zBmO9Mo`NsWC-CJcmXPXZVY4*K>^nWm3}aVoK6@Vdo2rh6)(O_&2cRUgCgU3L-s9Wu zZRE(}_~+0k9U;RNHG`LgiZd-gakTNiN)uqvcra)jFY%fpk&vPE2L+3ki~NV?$v&F5 zuF&F4T?)6Yx^M59t@oPSVHe8?*IpCFf>+%&!U-F^AG?3-Vq|U=#(vGMab$-96eMen zBRjtZ$y(#c&Tm1o?NJa^&VASW7H6)4<%NswF}8Vxiw_=LIjJ_;SFBc!<4O`JFgkN`5B`{*|a8=cGp<@LNOKSkW#&5r z8S2o#BuLlqFxgEo$2L|D;cAm(tA{{ZMOM0+yOuGO$glYmisNhwbQ8QG)BvX>=lY=- zw&>mHV)9z)@n4Ss2gVm?6%juS#t;1S!ufDUz6~oo-r}yJS*J3EUOvdH0U8$~Q&&h=!8-+)2l zKLZ6p5q@Mq3Zh0w{=E8=it2*DU5bBon$IdR{MPd+6Jd;o&v1h{4 z!Z?pqk?Rw4z6EKu9L&nl2dMzhTGbGC-2%+f=$u3d-a=2yRWa;*sk)aQvZ*8RO(v^_ zm=yb0#H3@@Gt_7-8|$bnS06MW?=aDTLztbhyi{~P*FFaF1+hNEMGLlb8(RR^NVT%R z7vGBY0_mR|y36ST+Eh}Jg+bXthsp%7T2HiGO_Ss)YNB$9i<;_LxSZIxsx7m$!pA)V~e$Md)JpoVCI8^VbC$8SA z?Wo$-FX>%73O#^l*5JUK^H8a?+se~}(5tqpJC|Vt&mYTprceUvA+u=%GgD3KAJO~B zs~OQMa)={pdmL}!&@0tW?x{oGFhm`xj>Ev(g#(sS^%^r>X|Tuf@-_WZI%qv<+;{+Q zP<=wN8CONQ`h@KPG>|!n+a;>l9PE8m&%puEjC1rs^^VjjiSNp`YcGYG!We~^Dytg3t)L1b*57%dN!b?ROFuIa73b9BzPRgIozHTZdXG@9F!sUBZTwDmU~+doDJK( z(497_9_A{#A+1$3_}c0hQXkc%Af2gSCh2ILIsTs&9~z}9{IQFdp8sj>6f;~l55 z%^4aRuLI@~lR*!C4=>oz`p)S3cNqJIv@R&`B*x&7R8|Np&sdw1`CdkxmA9KRjCRl| zqeZ=Kp*uMW>oX~uiUAUU@YVsD%)H%cqild|&nwQ%E0Nm0j%j{(Xw48O}67X zXjP(SEs9#I<2C-G9qqmtpUfmfjcfTEE@=oi-Yh@Y)!Ay&^3KMoQuQfP0dlB+nGH0z z1bE@77A0n>Fm{%W2{eN2NeO|51SNsHB4#{pm5GH_j6;pr!2baH7Kd7N z(O1@zdukRDe~58*%s5_&eh2hCh6eSAGMM9jK=TGbPLU&)CaYtx&5oT#4sh4St)ewP z9PZ&PhpPru$<^b`Q+e!3sSZ$q{K{NBv6>SL;>59OCE3BGCQ^ufROzn=0O_lme(;(^ z(>H!$)6-6A`W?{pOPc=kuLd-YD|T7z=8g(=&s?n*=D~A$H-5FaxcpI8Yh+~o{Q8e+` z&ZXB5b3OhydejT3v%%ED3XgylCi=@!>b>Gp>Mc2Lonh|iz!imhkW9^8;s>L+ht{++ zfQ(QT%>Bvm4~f>98_en`KIx?7YMoQ}C^zsSeb3vMUlsM<(|)<}*A%0DP^hY>pC@iL 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 U7wW=Hw7sGu%LMwXzHH3?AJ!P+F#rGn literal 265504 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 XpPk!xZpWAdV<*pEvj0pp`||$*H+~Cd diff --git a/com.rlabrecque.steamworks.net/README.md b/com.rlabrecque.steamworks.net/README.md index 81f2a91d..d6f0e156 100644 --- a/com.rlabrecque.steamworks.net/README.md +++ b/com.rlabrecque.steamworks.net/README.md @@ -5,7 +5,7 @@ _Steamworks.NET_ is a C# Wrapper for Valve's Steamworks API, it can be used eith _Steamworks.NET_ was designed to be as close as possible to the original C++ API, as such the documentation provided from Valve largely covers usage of _Steamworks.NET_. Niceties and C# Idioms can be easily implemented on top of _Steamworks.NET_. -_Steamworks.NET_ currently fully supports Windows, OSX, and Linux in both 32 and 64bit varieties. Currently building against Steamworks SDK 1.51. +_Steamworks.NET_ currently fully supports Windows, OSX, and Linux in both 32 and 64bit varieties. Currently building against Steamworks SDK 1.52. * Author: [Riley Labrecque](https://github.com/rlabrecque) * License: [MIT](http://www.opensource.org/licenses/mit-license.php) diff --git a/com.rlabrecque.steamworks.net/Runtime/Steam.cs b/com.rlabrecque.steamworks.net/Runtime/Steam.cs index 86b69652..e457c771 100644 --- a/com.rlabrecque.steamworks.net/Runtime/Steam.cs +++ b/com.rlabrecque.steamworks.net/Runtime/Steam.cs @@ -148,9 +148,10 @@ public static class GameServer { // - usGamePort is the port that clients will connect to for gameplay. You will usually open up your // own socket bound to this port. // - usQueryPort is the port that will manage server browser related duties and info - // pings from clients. If you pass MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE for usQueryPort, then it + // pings from clients. If you pass STEAMGAMESERVER_QUERY_PORT_SHARED for usQueryPort, then it // will use "GameSocketShare" mode, which means that the game is responsible for sending and receiving - // UDP packets for the master server updater. See references to GameSocketShare in isteamgameserver.h. + // UDP packets for the master server updater. (See ISteamGameServer::HandleIncomingPacket and + // ISteamGameServer::GetNextOutgoingPacket.) // - The version string should be in the form x.x.x.x, and is used by the master server to detect when the // server is out of date. (Only servers with the latest version will be listed.) public static bool Init(uint unIP, ushort usGamePort, ushort usQueryPort, EServerMode eServerMode, string pchVersionString) { @@ -476,7 +477,6 @@ internal static void Clear() { m_pSteamHTTP = IntPtr.Zero; m_pSteamInventory = IntPtr.Zero; m_pSteamUGC = IntPtr.Zero; - m_pSteamApps = IntPtr.Zero; m_pSteamNetworkingUtils = IntPtr.Zero; m_pSteamNetworkingSockets = IntPtr.Zero; m_pSteamNetworkingMessages = IntPtr.Zero; @@ -513,9 +513,6 @@ internal static bool Init() { m_pSteamUGC = SteamGameServerClient.GetISteamUGC(hSteamUser, hSteamPipe, Constants.STEAMUGC_INTERFACE_VERSION); if (m_pSteamUGC == IntPtr.Zero) { return false; } - m_pSteamApps = SteamGameServerClient.GetISteamApps(hSteamUser, hSteamPipe, Constants.STEAMAPPS_INTERFACE_VERSION); - if (m_pSteamApps == IntPtr.Zero) { return false; } - using (var pchVersionString = new InteropHelp.UTF8StringHandle(Constants.STEAMNETWORKINGUTILS_INTERFACE_VERSION)) { m_pSteamNetworkingUtils = @@ -550,7 +547,6 @@ internal static bool Init() { internal static IntPtr GetSteamHTTP() { return m_pSteamHTTP; } internal static IntPtr GetSteamInventory() { return m_pSteamInventory; } internal static IntPtr GetSteamUGC() { return m_pSteamUGC; } - internal static IntPtr GetSteamApps() { return m_pSteamApps; } internal static IntPtr GetSteamNetworkingUtils() { return m_pSteamNetworkingUtils; } internal static IntPtr GetSteamNetworkingSockets() { return m_pSteamNetworkingSockets; } internal static IntPtr GetSteamNetworkingMessages() { return m_pSteamNetworkingMessages; } @@ -563,7 +559,6 @@ internal static bool Init() { private static IntPtr m_pSteamHTTP; private static IntPtr m_pSteamInventory; private static IntPtr m_pSteamUGC; - private static IntPtr m_pSteamApps; private static IntPtr m_pSteamNetworkingUtils; private static IntPtr m_pSteamNetworkingSockets; private static IntPtr m_pSteamNetworkingMessages; diff --git a/com.rlabrecque.steamworks.net/Runtime/Version.cs b/com.rlabrecque.steamworks.net/Runtime/Version.cs index c730d203..65bb8d40 100644 --- a/com.rlabrecque.steamworks.net/Runtime/Version.cs +++ b/com.rlabrecque.steamworks.net/Runtime/Version.cs @@ -14,10 +14,10 @@ namespace Steamworks { public static class Version { public const string SteamworksNETVersion = "15.0.1"; - public const string SteamworksSDKVersion = "1.51"; - public const string SteamAPIDLLVersion = "06.28.18.86"; - public const int SteamAPIDLLSize = 239904; - public const int SteamAPI64DLLSize = 265504; + public const string SteamworksSDKVersion = "1.52"; + public const string SteamAPIDLLVersion = "06.75.97.18"; + public const int SteamAPIDLLSize = 260840; + public const int SteamAPI64DLLSize = 290536; } } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs index f51d1b90..9575b9ff 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs @@ -881,19 +881,8 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetRegion", CallingConvention = CallingConvention.Cdecl)] public static extern void ISteamGameServer_SetRegion(IntPtr instancePtr, InteropHelp.UTF8StringHandle pszRegion); - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate", CallingConvention = CallingConvention.Cdecl)] - [return: MarshalAs(UnmanagedType.I1)] - public static extern bool ISteamGameServer_SendUserConnectAndAuthenticate(IntPtr instancePtr, uint unIPClient, byte[] pvAuthBlob, uint cubAuthBlobSize, out CSteamID pSteamIDUser); - - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection", CallingConvention = CallingConvention.Cdecl)] - public static extern ulong ISteamGameServer_CreateUnauthenticatedUserConnection(IntPtr instancePtr); - - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SendUserDisconnect", CallingConvention = CallingConvention.Cdecl)] - public static extern void ISteamGameServer_SendUserDisconnect(IntPtr instancePtr, CSteamID steamIDUser); - - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_BUpdateUserData", CallingConvention = CallingConvention.Cdecl)] - [return: MarshalAs(UnmanagedType.I1)] - public static extern bool ISteamGameServer_BUpdateUserData(IntPtr instancePtr, CSteamID steamIDUser, InteropHelp.UTF8StringHandle pchPlayerName, uint uScore); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetAdvertiseServerActive", CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SetAdvertiseServerActive(IntPtr instancePtr, [MarshalAs(UnmanagedType.I1)] bool bActive); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_GetAuthSessionTicket", CallingConvention = CallingConvention.Cdecl)] public static extern uint ISteamGameServer_GetAuthSessionTicket(IntPtr instancePtr, byte[] pTicket, int cbMaxTicket, out uint pcbTicket); @@ -930,20 +919,25 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_GetNextOutgoingPacket", CallingConvention = CallingConvention.Cdecl)] public static extern int ISteamGameServer_GetNextOutgoingPacket(IntPtr instancePtr, byte[] pOut, int cbMaxOut, out uint pNetAdr, out ushort pPort); - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_EnableHeartbeats", CallingConvention = CallingConvention.Cdecl)] - public static extern void ISteamGameServer_EnableHeartbeats(IntPtr instancePtr, [MarshalAs(UnmanagedType.I1)] bool bActive); - - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SetHeartbeatInterval", CallingConvention = CallingConvention.Cdecl)] - public static extern void ISteamGameServer_SetHeartbeatInterval(IntPtr instancePtr, int iHeartbeatInterval); - - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_ForceHeartbeat", CallingConvention = CallingConvention.Cdecl)] - public static extern void ISteamGameServer_ForceHeartbeat(IntPtr instancePtr); - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_AssociateWithClan", CallingConvention = CallingConvention.Cdecl)] public static extern ulong ISteamGameServer_AssociateWithClan(IntPtr instancePtr, CSteamID steamIDClan); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_ComputeNewPlayerCompatibility", CallingConvention = CallingConvention.Cdecl)] public static extern ulong ISteamGameServer_ComputeNewPlayerCompatibility(IntPtr instancePtr, CSteamID steamIDNewPlayer); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SendUserConnectAndAuthenticate_DEPRECATED", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServer_SendUserConnectAndAuthenticate_DEPRECATED(IntPtr instancePtr, uint unIPClient, byte[] pvAuthBlob, uint cubAuthBlobSize, out CSteamID pSteamIDUser); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_CreateUnauthenticatedUserConnection", CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamGameServer_CreateUnauthenticatedUserConnection(IntPtr instancePtr); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_SendUserDisconnect_DEPRECATED", CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamGameServer_SendUserDisconnect_DEPRECATED(IntPtr instancePtr, CSteamID steamIDUser); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_BUpdateUserData", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamGameServer_BUpdateUserData(IntPtr instancePtr, CSteamID steamIDUser, InteropHelp.UTF8StringHandle pchPlayerName, uint uScore); #endregion #region SteamGameServerStats [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServerStats_RequestUserStats", CallingConvention = CallingConvention.Cdecl)] @@ -1200,18 +1194,36 @@ internal static class NativeMethods { #region SteamInput [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_Init", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] - public static extern bool ISteamInput_Init(IntPtr instancePtr); + public static extern bool ISteamInput_Init(IntPtr instancePtr, [MarshalAs(UnmanagedType.I1)] bool bExplicitlyCallRunFrame); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_Shutdown", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] public static extern bool ISteamInput_Shutdown(IntPtr instancePtr); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_SetInputActionManifestFilePath", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInput_SetInputActionManifestFilePath(IntPtr instancePtr, InteropHelp.UTF8StringHandle pchInputActionManifestAbsolutePath); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_RunFrame", CallingConvention = CallingConvention.Cdecl)] - public static extern void ISteamInput_RunFrame(IntPtr instancePtr); + public static extern void ISteamInput_RunFrame(IntPtr instancePtr, [MarshalAs(UnmanagedType.I1)] bool bReservedValue); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_BWaitForData", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInput_BWaitForData(IntPtr instancePtr, [MarshalAs(UnmanagedType.I1)] bool bWaitForever, uint unTimeout); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_BNewDataAvailable", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamInput_BNewDataAvailable(IntPtr instancePtr); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_GetConnectedControllers", CallingConvention = CallingConvention.Cdecl)] public static extern int ISteamInput_GetConnectedControllers(IntPtr instancePtr, [In, Out] InputHandle_t[] handlesOut); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_EnableDeviceCallbacks", CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamInput_EnableDeviceCallbacks(IntPtr instancePtr); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_EnableActionEventCallbacks", CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamInput_EnableActionEventCallbacks(IntPtr instancePtr, SteamInputActionEventCallbackPointer pCallback); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_GetActionSetHandle", CallingConvention = CallingConvention.Cdecl)] public static extern ulong ISteamInput_GetActionSetHandle(IntPtr instancePtr, InteropHelp.UTF8StringHandle pszActionSetName); @@ -1242,6 +1254,9 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_GetDigitalActionOrigins", CallingConvention = CallingConvention.Cdecl)] public static extern int ISteamInput_GetDigitalActionOrigins(IntPtr instancePtr, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputDigitalActionHandle_t digitalActionHandle, [In, Out] EInputActionOrigin[] originsOut); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_GetStringForDigitalActionName", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamInput_GetStringForDigitalActionName(IntPtr instancePtr, InputDigitalActionHandle_t eActionHandle); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_GetAnalogActionHandle", CallingConvention = CallingConvention.Cdecl)] public static extern ulong ISteamInput_GetAnalogActionHandle(IntPtr instancePtr, InteropHelp.UTF8StringHandle pszActionName); @@ -1251,12 +1266,21 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_GetAnalogActionOrigins", CallingConvention = CallingConvention.Cdecl)] public static extern int ISteamInput_GetAnalogActionOrigins(IntPtr instancePtr, InputHandle_t inputHandle, InputActionSetHandle_t actionSetHandle, InputAnalogActionHandle_t analogActionHandle, [In, Out] EInputActionOrigin[] originsOut); - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_GetGlyphForActionOrigin", CallingConvention = CallingConvention.Cdecl)] - public static extern IntPtr ISteamInput_GetGlyphForActionOrigin(IntPtr instancePtr, EInputActionOrigin eOrigin); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_GetGlyphPNGForActionOrigin", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamInput_GetGlyphPNGForActionOrigin(IntPtr instancePtr, EInputActionOrigin eOrigin, ESteamInputGlyphSize eSize, uint unFlags); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_GetGlyphSVGForActionOrigin", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamInput_GetGlyphSVGForActionOrigin(IntPtr instancePtr, EInputActionOrigin eOrigin, uint unFlags); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_GetGlyphForActionOrigin_Legacy", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamInput_GetGlyphForActionOrigin_Legacy(IntPtr instancePtr, EInputActionOrigin eOrigin); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_GetStringForActionOrigin", CallingConvention = CallingConvention.Cdecl)] public static extern IntPtr ISteamInput_GetStringForActionOrigin(IntPtr instancePtr, EInputActionOrigin eOrigin); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_GetStringForAnalogActionName", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamInput_GetStringForAnalogActionName(IntPtr instancePtr, InputAnalogActionHandle_t eActionHandle); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_StopAnalogActionMomentum", CallingConvention = CallingConvention.Cdecl)] public static extern void ISteamInput_StopAnalogActionMomentum(IntPtr instancePtr, InputHandle_t inputHandle, InputAnalogActionHandle_t eAction); @@ -1266,14 +1290,20 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_TriggerVibration", CallingConvention = CallingConvention.Cdecl)] public static extern void ISteamInput_TriggerVibration(IntPtr instancePtr, InputHandle_t inputHandle, ushort usLeftSpeed, ushort usRightSpeed); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_TriggerVibrationExtended", CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamInput_TriggerVibrationExtended(IntPtr instancePtr, InputHandle_t inputHandle, ushort usLeftSpeed, ushort usRightSpeed, ushort usLeftTriggerSpeed, ushort usRightTriggerSpeed); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_TriggerSimpleHapticEvent", CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamInput_TriggerSimpleHapticEvent(IntPtr instancePtr, InputHandle_t inputHandle, EControllerHapticLocation eHapticLocation, byte nIntensity, char nGainDB, byte nOtherIntensity, char nOtherGainDB); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_SetLEDColor", CallingConvention = CallingConvention.Cdecl)] public static extern void ISteamInput_SetLEDColor(IntPtr instancePtr, InputHandle_t inputHandle, byte nColorR, byte nColorG, byte nColorB, uint nFlags); - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_TriggerHapticPulse", CallingConvention = CallingConvention.Cdecl)] - public static extern void ISteamInput_TriggerHapticPulse(IntPtr instancePtr, InputHandle_t inputHandle, ESteamControllerPad eTargetPad, ushort usDurationMicroSec); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_Legacy_TriggerHapticPulse", CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamInput_Legacy_TriggerHapticPulse(IntPtr instancePtr, InputHandle_t inputHandle, ESteamControllerPad eTargetPad, ushort usDurationMicroSec); - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_TriggerRepeatedHapticPulse", CallingConvention = CallingConvention.Cdecl)] - public static extern void ISteamInput_TriggerRepeatedHapticPulse(IntPtr instancePtr, InputHandle_t inputHandle, ESteamControllerPad eTargetPad, ushort usDurationMicroSec, ushort usOffMicroSec, ushort unRepeat, uint nFlags); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_Legacy_TriggerRepeatedHapticPulse", CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamInput_Legacy_TriggerRepeatedHapticPulse(IntPtr instancePtr, InputHandle_t inputHandle, ESteamControllerPad eTargetPad, ushort usDurationMicroSec, ushort usOffMicroSec, ushort unRepeat, uint nFlags); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_ShowBindingPanel", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] @@ -1306,6 +1336,9 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_GetRemotePlaySessionID", CallingConvention = CallingConvention.Cdecl)] public static extern uint ISteamInput_GetRemotePlaySessionID(IntPtr instancePtr, InputHandle_t inputHandle); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_GetSessionInputConfigurationSettings", CallingConvention = CallingConvention.Cdecl)] + public static extern ushort ISteamInput_GetSessionInputConfigurationSettings(IntPtr instancePtr); #endregion #region SteamInventory [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInventory_GetResultStatus", CallingConvention = CallingConvention.Cdecl)] @@ -2103,7 +2136,7 @@ internal static class NativeMethods { public static extern uint ISteamNetworkingSockets_CreateHostedDedicatedServerListenSocket(IntPtr instancePtr, int nLocalVirtualPort, int nOptions, [In, Out] SteamNetworkingConfigValue_t[] pOptions); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetGameCoordinatorServerLogin", CallingConvention = CallingConvention.Cdecl)] - public static extern EResult ISteamNetworkingSockets_GetGameCoordinatorServerLogin(IntPtr instancePtr, out SteamDatagramGameCoordinatorServerLogin pLoginInfo, out int pcbSignedBlob, IntPtr pBlob); + public static extern EResult ISteamNetworkingSockets_GetGameCoordinatorServerLogin(IntPtr instancePtr, IntPtr pLoginInfo, out int pcbSignedBlob, IntPtr pBlob); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_ConnectP2PCustomSignaling", CallingConvention = CallingConvention.Cdecl)] public static extern uint ISteamNetworkingSockets_ConnectP2PCustomSignaling(IntPtr instancePtr, out ISteamNetworkingConnectionSignaling pSignaling, ref SteamNetworkingIdentity pPeerIdentity, int nRemoteVirtualPort, int nOptions, [In, Out] SteamNetworkingConfigValue_t[] pOptions); @@ -2353,30 +2386,7 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_GetCachedUGCHandle", CallingConvention = CallingConvention.Cdecl)] public static extern ulong ISteamRemoteStorage_GetCachedUGCHandle(IntPtr instancePtr, int iCachedContent); -#if _SERVER - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_GetFileListFromServer", CallingConvention = CallingConvention.Cdecl)] - public static extern void ISteamRemoteStorage_GetFileListFromServer(IntPtr instancePtr); - - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_FileFetch", CallingConvention = CallingConvention.Cdecl)] - [return: MarshalAs(UnmanagedType.I1)] - public static extern bool ISteamRemoteStorage_FileFetch(IntPtr instancePtr, InteropHelp.UTF8StringHandle pchFile); - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_FilePersist", CallingConvention = CallingConvention.Cdecl)] - [return: MarshalAs(UnmanagedType.I1)] - public static extern bool ISteamRemoteStorage_FilePersist(IntPtr instancePtr, InteropHelp.UTF8StringHandle pchFile); - - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_SynchronizeToClient", CallingConvention = CallingConvention.Cdecl)] - [return: MarshalAs(UnmanagedType.I1)] - public static extern bool ISteamRemoteStorage_SynchronizeToClient(IntPtr instancePtr); - - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_SynchronizeToServer", CallingConvention = CallingConvention.Cdecl)] - [return: MarshalAs(UnmanagedType.I1)] - public static extern bool ISteamRemoteStorage_SynchronizeToServer(IntPtr instancePtr); - - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_ResetFileRequestState", CallingConvention = CallingConvention.Cdecl)] - [return: MarshalAs(UnmanagedType.I1)] - public static extern bool ISteamRemoteStorage_ResetFileRequestState(IntPtr instancePtr); -#endif [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_PublishWorkshopFile", CallingConvention = CallingConvention.Cdecl)] public static extern ulong ISteamRemoteStorage_PublishWorkshopFile(IntPtr instancePtr, InteropHelp.UTF8StringHandle pchFile, InteropHelp.UTF8StringHandle pchPreviewFile, AppId_t nConsumerAppId, InteropHelp.UTF8StringHandle pchTitle, InteropHelp.UTF8StringHandle pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, IntPtr pTags, EWorkshopFileType eWorkshopFileType); @@ -2458,6 +2468,20 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_UGCDownloadToLocation", CallingConvention = CallingConvention.Cdecl)] public static extern ulong ISteamRemoteStorage_UGCDownloadToLocation(IntPtr instancePtr, UGCHandle_t hContent, InteropHelp.UTF8StringHandle pchLocation, uint unPriority); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_GetLocalFileChangeCount", CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamRemoteStorage_GetLocalFileChangeCount(IntPtr instancePtr); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_GetLocalFileChange", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamRemoteStorage_GetLocalFileChange(IntPtr instancePtr, int iFile, out ERemoteStorageLocalFileChange pEChangeType, out ERemoteStorageFilePathType pEFilePathType); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_BeginFileWriteBatch", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_BeginFileWriteBatch(IntPtr instancePtr); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamRemoteStorage_EndFileWriteBatch", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamRemoteStorage_EndFileWriteBatch(IntPtr instancePtr); #endregion #region SteamScreenshots [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamScreenshots_WriteScreenshot", CallingConvention = CallingConvention.Cdecl)] @@ -2787,6 +2811,13 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_DeleteItem", CallingConvention = CallingConvention.Cdecl)] public static extern ulong ISteamUGC_DeleteItem(IntPtr instancePtr, PublishedFileId_t nPublishedFileID); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_ShowWorkshopEULA", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_ShowWorkshopEULA(IntPtr instancePtr); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetWorkshopEULAStatus", CallingConvention = CallingConvention.Cdecl)] + public static extern ulong ISteamUGC_GetWorkshopEULAStatus(IntPtr instancePtr); #endregion #region SteamUser [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUser_GetHSteamUser", CallingConvention = CallingConvention.Cdecl)] @@ -2799,11 +2830,11 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUser_GetSteamID", CallingConvention = CallingConvention.Cdecl)] public static extern ulong ISteamUser_GetSteamID(IntPtr instancePtr); - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUser_InitiateGameConnection", CallingConvention = CallingConvention.Cdecl)] - public static extern int ISteamUser_InitiateGameConnection(IntPtr instancePtr, byte[] pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, uint unIPServer, ushort usPortServer, [MarshalAs(UnmanagedType.I1)] bool bSecure); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUser_InitiateGameConnection_DEPRECATED", CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamUser_InitiateGameConnection_DEPRECATED(IntPtr instancePtr, byte[] pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, uint unIPServer, ushort usPortServer, [MarshalAs(UnmanagedType.I1)] bool bSecure); - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUser_TerminateGameConnection", CallingConvention = CallingConvention.Cdecl)] - public static extern void ISteamUser_TerminateGameConnection(IntPtr instancePtr, uint unIPServer, ushort usPortServer); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUser_TerminateGameConnection_DEPRECATED", CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamUser_TerminateGameConnection_DEPRECATED(IntPtr instancePtr, uint unIPServer, ushort usPortServer); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUser_TrackAppUsageEvent", CallingConvention = CallingConvention.Cdecl)] public static extern void ISteamUser_TrackAppUsageEvent(IntPtr instancePtr, CGameID gameID, int eAppUsageEvent, InteropHelp.UTF8StringHandle pchExtraInfo); @@ -3162,6 +3193,17 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUtils_GetIPv6ConnectivityState", CallingConvention = CallingConvention.Cdecl)] public static extern ESteamIPv6ConnectivityState ISteamUtils_GetIPv6ConnectivityState(IntPtr instancePtr, ESteamIPv6ConnectivityProtocol eProtocol); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUtils_IsSteamRunningOnSteamDeck", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUtils_IsSteamRunningOnSteamDeck(IntPtr instancePtr); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUtils_ShowFloatingGamepadTextInput", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUtils_ShowFloatingGamepadTextInput(IntPtr instancePtr, EFloatingGamepadTextInputMode eKeyboardMode, int nTextFieldXPosition, int nTextFieldYPosition, int nTextFieldWidth, int nTextFieldHeight); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUtils_SetGameLauncherMode", CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamUtils_SetGameLauncherMode(IntPtr instancePtr, [MarshalAs(UnmanagedType.I1)] bool bLauncherMode); #endregion #region SteamVideo [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamVideo_GetVideoURL", CallingConvention = CallingConvention.Cdecl)] diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs index ce8f74b4..88fa3273 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs @@ -24,6 +24,7 @@ namespace Steamworks { public struct SteamAppInstalled_t { public const int k_iCallback = Constants.k_iSteamAppListCallbacks + 1; public AppId_t m_nAppID; // ID of the app that installs + public int m_iInstallFolderIndex; // library folder the app is installed } //--------------------------------------------------------------------------------- @@ -34,6 +35,7 @@ public struct SteamAppInstalled_t { public struct SteamAppUninstalled_t { public const int k_iCallback = Constants.k_iSteamAppListCallbacks + 2; public AppId_t m_nAppID; // ID of the app that installs + public int m_iInstallFolderIndex; // library folder the app was installed } // callbacks @@ -926,6 +928,49 @@ public struct HTTPRequestDataReceived_t { public uint m_cBytesReceived; } + //----------------------------------------------------------------------------- + // Purpose: called when a new controller has been connected, will fire once + // per controller if multiple new controllers connect in the same frame + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamControllerCallbacks + 1)] + public struct SteamInputDeviceConnected_t { + public const int k_iCallback = Constants.k_iSteamControllerCallbacks + 1; + public InputHandle_t m_ulConnectedDeviceHandle; // Handle for device + } + + //----------------------------------------------------------------------------- + // Purpose: called when a new controller has been connected, will fire once + // per controller if multiple new controllers connect in the same frame + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamControllerCallbacks + 2)] + public struct SteamInputDeviceDisconnected_t { + public const int k_iCallback = Constants.k_iSteamControllerCallbacks + 2; + public InputHandle_t m_ulDisconnectedDeviceHandle; // Handle for device + } + + //----------------------------------------------------------------------------- + // Purpose: called when a controller configuration has been loaded, will fire once + // per controller per focus change for Steam Input enabled controllers + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamControllerCallbacks + 3)] + public struct SteamInputConfigurationLoaded_t { + public const int k_iCallback = Constants.k_iSteamControllerCallbacks + 3; + public AppId_t m_unAppID; + public InputHandle_t m_ulDeviceHandle; // Handle for device + public CSteamID m_ulMappingCreator; // May differ from local user when using + // an unmodified community or official config + public uint m_unMajorRevision; // Binding revision from In-game Action File. + // Same value as queried by GetDeviceBindingRevision + public uint m_unMinorRevision; + [MarshalAs(UnmanagedType.I1)] + public bool m_bUsesSteamInputAPI; // Does the configuration contain any Analog/Digital actions? + [MarshalAs(UnmanagedType.I1)] + public bool m_bUsesGamepadAPI; // Does the configuration contain any Xinput bindings? + } + // SteamInventoryResultReady_t callbacks are fired whenever asynchronous // results transition from "Pending" to "OK" or an error state. There will // always be exactly one callback per handle. @@ -1659,69 +1704,9 @@ public struct SteamRemotePlaySessionDisconnected_t { } // callbacks - //----------------------------------------------------------------------------- - // Purpose: sent when the local file cache is fully synced with the server for an app - // That means that an application can be started and has all latest files - //----------------------------------------------------------------------------- - [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 1)] - public struct RemoteStorageAppSyncedClient_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 1; - public AppId_t m_nAppID; - public EResult m_eResult; - public int m_unNumDownloads; - } - - //----------------------------------------------------------------------------- - // Purpose: sent when the server is fully synced with the local file cache for an app - // That means that we can shutdown Steam and our data is stored on the server - //----------------------------------------------------------------------------- - [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 2)] - public struct RemoteStorageAppSyncedServer_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 2; - public AppId_t m_nAppID; - public EResult m_eResult; - public int m_unNumUploads; - } - - //----------------------------------------------------------------------------- - // Purpose: Status of up and downloads during a sync session // - //----------------------------------------------------------------------------- - [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 3)] - public struct RemoteStorageAppSyncProgress_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 3; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_cchFilenameMax)] - private byte[] m_rgchCurrentFile_; - public string m_rgchCurrentFile // Current file being transferred - { - get { return InteropHelp.ByteArrayToStringUTF8(m_rgchCurrentFile_); } - set { InteropHelp.StringToByteArrayUTF8(value, m_rgchCurrentFile_, Constants.k_cchFilenameMax); } - } - public AppId_t m_nAppID; // App this info relates to - public uint m_uBytesTransferredThisChunk; // Bytes transferred this chunk - public double m_dAppPercentComplete; // Percent complete that this app's transfers are - [MarshalAs(UnmanagedType.I1)] - public bool m_bUploading; // if false, downloading - } - - // - // IMPORTANT! k_iClientRemoteStorageCallbacks + 4 is used, see iclientremotestorage.h + // IMPORTANT! k_iClientRemoteStorageCallbacks 1 through 6 are used, see iclientremotestorage.h // - //----------------------------------------------------------------------------- - // Purpose: Sent after we've determined the list of files that are out of sync - // with the server. - //----------------------------------------------------------------------------- - [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 5)] - public struct RemoteStorageAppSyncStatusCheck_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 5; - public AppId_t m_nAppID; - public EResult m_eResult; - } - //----------------------------------------------------------------------------- // Purpose: The result of a call to FileShare() //----------------------------------------------------------------------------- @@ -1754,6 +1739,7 @@ public struct RemoteStoragePublishFileResult_t { public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; } + // k_iClientRemoteStorageCallbacks + 10 is deprecated! Do not reuse //----------------------------------------------------------------------------- // Purpose: The result of a call to DeletePublishedFile() //----------------------------------------------------------------------------- @@ -2081,6 +2067,17 @@ public struct RemoteStorageFileReadAsyncComplete_t { public uint m_cubRead; // amount read - will the <= the amount requested } + //----------------------------------------------------------------------------- + // Purpose: one or more files for this app have changed locally after syncing + // to remote session changes + // Note: only posted if this happens DURING the local app session + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 33)] + public struct RemoteStorageLocalFileChange_t { + public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 33; + } + // callbacks //----------------------------------------------------------------------------- // Purpose: Screenshot successfully written or otherwise added to the library @@ -2326,6 +2323,33 @@ public struct DeleteItemResult_t { public PublishedFileId_t m_nPublishedFileId; } + //----------------------------------------------------------------------------- + // Purpose: signal that the list of subscribed items changed + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientUGCCallbacks + 18)] + public struct UserSubscribedItemsListChanged_t { + public const int k_iCallback = Constants.k_iClientUGCCallbacks + 18; + public AppId_t m_nAppID; + } + + //----------------------------------------------------------------------------- + // Purpose: Status of the user's acceptable/rejection of the app's specific Workshop EULA + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iClientUGCCallbacks + 20)] + public struct WorkshopEULAStatus_t { + public const int k_iCallback = Constants.k_iClientUGCCallbacks + 20; + public EResult m_eResult; + public AppId_t m_nAppID; + public uint m_unVersion; + public RTime32 m_rtAction; + [MarshalAs(UnmanagedType.I1)] + public bool m_bAccepted; + [MarshalAs(UnmanagedType.I1)] + public bool m_bNeedsAction; + } + // callbacks //----------------------------------------------------------------------------- // Purpose: called when a connections to the Steam back-end has been established @@ -2747,7 +2771,7 @@ public struct CheckFileSignature_t { // k_iSteamUtilsCallbacks + 13 is taken //----------------------------------------------------------------------------- - // Big Picture gamepad text input has been closed + // Full Screen gamepad text input has been closed //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] [CallbackIdentity(Constants.k_iSteamUtilsCallbacks + 14)] @@ -2758,6 +2782,23 @@ public struct GamepadTextInputDismissed_t { public uint m_unSubmittedText; } + // k_iSteamUtilsCallbacks + 15 through 35 are taken + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iSteamUtilsCallbacks + 36)] + public struct AppResumingFromSuspend_t { + public const int k_iCallback = Constants.k_iSteamUtilsCallbacks + 36; + } + + // k_iSteamUtilsCallbacks + 37 is taken + //----------------------------------------------------------------------------- + // The floating on-screen keyboard has been closed + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] + [CallbackIdentity(Constants.k_iSteamUtilsCallbacks + 38)] + public struct FloatingGamepadTextInputDismissed_t { + public const int k_iCallback = Constants.k_iSteamUtilsCallbacks + 38; + } + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] [CallbackIdentity(Constants.k_iClientVideoCallbacks + 11)] public struct GetVideoURLResult_t { diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs index 6b730efb..2d4ddeda 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs @@ -22,11 +22,11 @@ public static class Constants { public const string STEAMCLIENT_INTERFACE_VERSION = "SteamClient020"; public const string STEAMFRIENDS_INTERFACE_VERSION = "SteamFriends017"; public const string STEAMGAMECOORDINATOR_INTERFACE_VERSION = "SteamGameCoordinator001"; - public const string STEAMGAMESERVER_INTERFACE_VERSION = "SteamGameServer013"; + public const string STEAMGAMESERVER_INTERFACE_VERSION = "SteamGameServer014"; public const string STEAMGAMESERVERSTATS_INTERFACE_VERSION = "SteamGameServerStats001"; public const string STEAMHTMLSURFACE_INTERFACE_VERSION = "STEAMHTMLSURFACE_INTERFACE_VERSION_005"; public const string STEAMHTTP_INTERFACE_VERSION = "STEAMHTTP_INTERFACE_VERSION003"; - public const string STEAMINPUT_INTERFACE_VERSION = "SteamInput002"; + public const string STEAMINPUT_INTERFACE_VERSION = "SteamInput005"; public const string STEAMINVENTORY_INTERFACE_VERSION = "STEAMINVENTORY_INTERFACE_V003"; public const string STEAMMATCHMAKING_INTERFACE_VERSION = "SteamMatchMaking009"; public const string STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION = "SteamMatchMakingServers002"; @@ -42,7 +42,7 @@ public static class Constants { public const string STEAMNETWORKINGUTILS_INTERFACE_VERSION = "SteamNetworkingUtils003"; public const string STEAMPARENTALSETTINGS_INTERFACE_VERSION = "STEAMPARENTALSETTINGS_INTERFACE_VERSION001"; public const string STEAMREMOTEPLAY_INTERFACE_VERSION = "STEAMREMOTEPLAY_INTERFACE_VERSION001"; - public const string STEAMREMOTESTORAGE_INTERFACE_VERSION = "STEAMREMOTESTORAGE_INTERFACE_VERSION014"; + public const string STEAMREMOTESTORAGE_INTERFACE_VERSION = "STEAMREMOTESTORAGE_INTERFACE_VERSION016"; public const string STEAMSCREENSHOTS_INTERFACE_VERSION = "STEAMSCREENSHOTS_INTERFACE_VERSION003"; public const string STEAMUGC_INTERFACE_VERSION = "STEAMUGC_INTERFACE_VERSION015"; public const string STEAMUSER_INTERFACE_VERSION = "SteamUser021"; @@ -173,18 +173,18 @@ public static class Constants { public const int k_iSteamRemotePlayCallbacks = 5700; public const int k_iClientCompatCallbacks = 5800; public const int k_iSteamChatCallbacks = 5900; + public const int k_iClientNetworkingUtilsCallbacks = 6000; + public const int k_iClientSystemManagerCallbacks = 6100; + public const int k_iClientStorageDeviceManagerCallbacks = 6200; + /// Pass to SteamGameServer_Init to indicate that the same UDP port will be used for game traffic + /// UDP queries for server browser pings and LAN discovery. In this case, Steam will not open up a + /// socket to handle server browser queries, and you must use ISteamGameServer::HandleIncomingPacket + /// and ISteamGameServer::GetNextOutgoingPacket to handle packets related to server discovery on your socket. + public const ushort STEAMGAMESERVER_QUERY_PORT_SHARED = 0xffff; public const int k_unSteamAccountIDMask = -1; public const int k_unSteamAccountInstanceMask = 0x000FFFFF; public const int k_unSteamUserDefaultInstance = 1; // fixed instance for all individual users public const int k_cchGameExtraInfoMax = 64; - /// Max length of serialized auth ticket. This is important so that we - /// can ensure that we always fit into a single UDP datagram (along with - /// other certs and signatures) and keep the implementation simple. - public const int k_cbSteamDatagramMaxSerializedTicket = 512; - /// Max size of user data blob - public const int k_cbMaxSteamDatagramGameCoordinatorServerLoginAppData = 2048; - /// Max size of serialized data blob - public const int k_cbMaxSteamDatagramGameCoordinatorServerLoginSerialized = 4096; public const int k_nSteamEncryptedAppTicketSymmetricKeyLen = 32; /// Max length of diagnostic error message public const int k_cchMaxSteamNetworkingErrMsg = 1024; @@ -318,15 +318,6 @@ public static class Constants { public const int k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Private = 2; // host addresses that appear to be link-local or RFC1918 addresses public const int k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Public = 4; // STUN reflexive addresses, or host address that isn't a "private" address public const int k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_All = 0x7fffffff; - public const int k_cubSaltSize = 8; - public const ulong k_GIDNil = 0xffffffffffffffff; - public const ulong k_TxnIDNil = k_GIDNil; - public const ulong k_TxnIDUnknown = 0; - public const int k_uPackageIdInvalid = -1; - public const ulong k_ulAssetClassIdInvalid = 0x0; - public const int k_uPhysicalItemIdInvalid = 0x0; - public const int k_uCellIDInvalid = -1; - public const int k_uPartnerIdInvalid = 0; public const ulong k_ulPartyBeaconIdInvalid = 0; public const int INVALID_HTTPREQUEST_HANDLE = 0; public const int STEAM_INPUT_MAX_COUNT = 16; @@ -342,16 +333,6 @@ public static class Constants { public const byte k_nMaxLobbyKeyLength = 255; public const int k_SteamMusicNameMaxLength = 255; public const int k_SteamMusicPNGMaxLength = 65535; - /// Pass to SteamGameServer_Init to indicate that the same UDP port will be used for game traffic - /// UDP queries. In this case, Steam will not open up a socket to handle server browser queries, - /// and you must use ISteamGameServer::HandleIncomingPacket and ISteamGameServer::GetNextOutgoingPacket - /// to handle packets related to server discovery on your socket. - public const ushort MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE = 0xFFFF; - //----------------------------------------------------------------------------- - // Constants used for query ports. - //----------------------------------------------------------------------------- - public const int QUERY_PORT_NOT_INITIALIZED = 0xFFFF; // We haven't asked the GS for this query port's actual value yet. - public const int QUERY_PORT_ERROR = 0xFFFE; // We were unable to get the query port for this server. } } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs index e0197769..71247ce9 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs @@ -378,11 +378,11 @@ public enum EInputActionOrigin : int { k_EInputActionOrigin_XBoxOne_DPad_West, k_EInputActionOrigin_XBoxOne_DPad_East, k_EInputActionOrigin_XBoxOne_DPad_Move, - k_EInputActionOrigin_XBoxOne_Reserved1, - k_EInputActionOrigin_XBoxOne_Reserved2, - k_EInputActionOrigin_XBoxOne_Reserved3, - k_EInputActionOrigin_XBoxOne_Reserved4, - k_EInputActionOrigin_XBoxOne_Reserved5, + k_EInputActionOrigin_XBoxOne_LeftGrip_Lower, + k_EInputActionOrigin_XBoxOne_LeftGrip_Upper, + k_EInputActionOrigin_XBoxOne_RightGrip_Lower, + k_EInputActionOrigin_XBoxOne_RightGrip_Upper, + k_EInputActionOrigin_XBoxOne_Share, // Xbox Series X controllers only k_EInputActionOrigin_XBoxOne_Reserved6, k_EInputActionOrigin_XBoxOne_Reserved7, k_EInputActionOrigin_XBoxOne_Reserved8, @@ -620,6 +620,18 @@ public enum ESteamControllerPad : int { k_ESteamControllerPad_Right } + public enum EControllerHapticLocation : int { + k_EControllerHapticLocation_Left = ( 1 << ESteamControllerPad.k_ESteamControllerPad_Left ), + k_EControllerHapticLocation_Right = ( 1 << ESteamControllerPad.k_ESteamControllerPad_Right ), + k_EControllerHapticLocation_Both = ( 1 << ESteamControllerPad.k_ESteamControllerPad_Left | 1 << ESteamControllerPad.k_ESteamControllerPad_Right ), + } + + public enum EControllerHapticType : int { + k_EControllerHapticType_Off, + k_EControllerHapticType_Tick, + k_EControllerHapticType_Click, + } + public enum ESteamInputType : int { k_ESteamInputType_Unknown, k_ESteamInputType_SteamController, @@ -639,6 +651,15 @@ public enum ESteamInputType : int { k_ESteamInputType_MaximumPossibleValue = 255, } + // Individual values are used by the GetSessionInputConfigurationSettings bitmask + public enum ESteamInputConfigurationEnableType : int { + k_ESteamInputConfigurationEnableType_None = 0x0000, + k_ESteamInputConfigurationEnableType_Playstation = 0x0001, + k_ESteamInputConfigurationEnableType_Xbox = 0x0002, + k_ESteamInputConfigurationEnableType_Generic = 0x0004, + k_ESteamInputConfigurationEnableType_Switch = 0x0008, + } + // These values are passed into SetLEDColor public enum ESteamInputLEDFlag : int { k_ESteamInputLEDFlag_SetColor, @@ -647,6 +668,18 @@ public enum ESteamInputLEDFlag : int { k_ESteamInputLEDFlag_RestoreUserDefault } + // These values are passed into GetGlyphPNGForActionOrigin + public enum ESteamInputGlyphSize : int { + k_ESteamInputGlyphSize_Small, + k_ESteamInputGlyphSize_Medium, + k_ESteamInputGlyphSize_Large, + } + + public enum ESteamInputActionEventType : int { + ESteamInputActionEventType_DigitalAction, + ESteamInputActionEventType_AnalogAction, + } + [Flags] public enum ESteamItemFlags : int { // Item status flags - these flags are permanently attached to specific item instances @@ -933,6 +966,26 @@ public enum EUGCReadAction : int { k_EUGCRead_Close = 2, } + public enum ERemoteStorageLocalFileChange : int { + k_ERemoteStorageLocalFileChange_Invalid = 0, + + // The file was updated from another device + k_ERemoteStorageLocalFileChange_FileUpdated = 1, + + // The file was deleted by another device + k_ERemoteStorageLocalFileChange_FileDeleted = 2, + } + + public enum ERemoteStorageFilePathType : int { + k_ERemoteStorageFilePathType_Invalid = 0, + + // The file is directly accessed by the game and this is the full path + k_ERemoteStorageFilePathType_Absolute = 1, + + // The file is accessed via the ISteamRemoteStorage API and this is the filename + k_ERemoteStorageFilePathType_APIFilename = 2, + } + public enum EVRScreenshotType : int { k_EVRScreenshotType_None = 0, k_EVRScreenshotType_Mono = 1, @@ -1006,6 +1059,7 @@ public enum EUGCQuery : int { k_EUGCQuery_RankedByLifetimeAveragePlaytime = 16, k_EUGCQuery_RankedByPlaytimeSessionsTrend = 17, k_EUGCQuery_RankedByLifetimePlaytimeSessions = 18, + k_EUGCQuery_RankedByLastUpdatedDate = 19, } public enum EItemUpdateStatus : int { @@ -1117,6 +1171,14 @@ public enum EGamepadTextInputLineMode : int { k_EGamepadTextInputLineModeMultipleLines = 1 } + public enum EFloatingGamepadTextInputMode : int { + k_EFloatingGamepadTextInputModeModeSingleLine = 0, // Enter dismisses the keyboard + k_EFloatingGamepadTextInputModeModeMultipleLines = 1, // User needs to explictly close the keyboard + k_EFloatingGamepadTextInputModeModeEmail = 2, + k_EFloatingGamepadTextInputModeModeNumeric = 3, + + } + // The context where text filtering is being done public enum ETextFilteringContext : int { k_ETextFilteringContextUnknown = 0, // Unknown context @@ -1271,6 +1333,9 @@ public enum EResult : int { k_EResultNoLauncherSpecified = 117, // No launcher was specified, but a launcher was needed to choose correct realm for operation. k_EResultMustAgreeToSSA = 118, // User must agree to china SSA or global SSA before login k_EResultLauncherMigrated = 119, // The specified launcher type is no longer supported; the user should be directed elsewhere + k_EResultSteamRealmMismatch = 120, // The user's realm does not match the realm of the requested resource + k_EResultInvalidSignature = 121, // signature check did not match + k_EResultParseFailure = 122, // Failed to parse input } // Error codes for use with the voice functions @@ -1357,93 +1422,6 @@ public enum EAccountType : int { k_EAccountTypeMax } - //----------------------------------------------------------------------------- - // Purpose: - //----------------------------------------------------------------------------- - public enum EAppReleaseState : int { - k_EAppReleaseState_Unknown = 0, // unknown, required appinfo or license info is missing - k_EAppReleaseState_Unavailable = 1, // even owners can't see game in library yet, no AppInfo released - k_EAppReleaseState_Prerelease = 2, // app can be purchased and is visible in library, nothing else. Only Common AppInfo section released - k_EAppReleaseState_PreloadOnly = 3, // owners can preload app, but not play it. All AppInfo sections fully released - k_EAppReleaseState_Released = 4, // owners can download and play app. - } - - //----------------------------------------------------------------------------- - // Purpose: - //----------------------------------------------------------------------------- - [Flags] - public enum EAppOwnershipFlags : int { - k_EAppOwnershipFlags_None = 0x0000, // unknown - k_EAppOwnershipFlags_OwnsLicense = 0x0001, // owns license for this game - k_EAppOwnershipFlags_FreeLicense = 0x0002, // not paid for game - k_EAppOwnershipFlags_RegionRestricted = 0x0004, // owns app, but not allowed to play in current region - k_EAppOwnershipFlags_LowViolence = 0x0008, // only low violence version - k_EAppOwnershipFlags_InvalidPlatform = 0x0010, // app not supported on current platform - k_EAppOwnershipFlags_SharedLicense = 0x0020, // license was granted by authorized local device - k_EAppOwnershipFlags_FreeWeekend = 0x0040, // owned by a free weekend licenses - k_EAppOwnershipFlags_RetailLicense = 0x0080, // has a retail license for game, (CD-Key etc) - k_EAppOwnershipFlags_LicenseLocked = 0x0100, // shared license is locked (in use) by other user - k_EAppOwnershipFlags_LicensePending = 0x0200, // owns app, but transaction is still pending. Can't install or play - k_EAppOwnershipFlags_LicenseExpired = 0x0400, // doesn't own app anymore since license expired - k_EAppOwnershipFlags_LicensePermanent = 0x0800, // permanent license, not borrowed, or guest or freeweekend etc - k_EAppOwnershipFlags_LicenseRecurring = 0x1000, // Recurring license, user is charged periodically - k_EAppOwnershipFlags_LicenseCanceled = 0x2000, // Mark as canceled, but might be still active if recurring - k_EAppOwnershipFlags_AutoGrant = 0x4000, // Ownership is based on any kind of autogrant license - k_EAppOwnershipFlags_PendingGift = 0x8000, // user has pending gift to redeem - k_EAppOwnershipFlags_RentalNotActivated = 0x10000, // Rental hasn't been activated yet - k_EAppOwnershipFlags_Rental = 0x20000, // Is a rental - k_EAppOwnershipFlags_SiteLicense = 0x40000, // Is from a site license - k_EAppOwnershipFlags_LegacyFreeSub = 0x80000, // App only owned through Steam's legacy free sub - k_EAppOwnershipFlags_InvalidOSType = 0x100000, // app not supported on current OS version, used to indicate a game is 32-bit on post-catalina. Currently it's own flag so the library will display a notice. - k_EAppOwnershipFlags_TimedTrial = 0x200000, // App is playable only for limited time - } - - //----------------------------------------------------------------------------- - // Purpose: designed as flags to allow filters masks - // NOTE: If you add to this, please update PackageAppType (SteamConfig) as well as populatePackageAppType - //----------------------------------------------------------------------------- - [Flags] - public enum EAppType : int { - k_EAppType_Invalid = 0x000, // unknown / invalid - k_EAppType_Game = 0x001, // playable game, default type - k_EAppType_Application = 0x002, // software application - k_EAppType_Tool = 0x004, // SDKs, editors & dedicated servers - k_EAppType_Demo = 0x008, // game demo - k_EAppType_Media_DEPRECATED = 0x010, // legacy - was used for game trailers, which are now just videos on the web - k_EAppType_DLC = 0x020, // down loadable content - k_EAppType_Guide = 0x040, // game guide, PDF etc - k_EAppType_Driver = 0x080, // hardware driver updater (ATI, Razor etc) - k_EAppType_Config = 0x100, // hidden app used to config Steam features (backpack, sales, etc) - k_EAppType_Hardware = 0x200, // a hardware device (Steam Machine, Steam Controller, Steam Link, etc.) - k_EAppType_Franchise = 0x400, // A hub for collections of multiple apps, eg films, series, games - k_EAppType_Video = 0x800, // A video component of either a Film or TVSeries (may be the feature, an episode, preview, making-of, etc) - k_EAppType_Plugin = 0x1000, // Plug-in types for other Apps - k_EAppType_MusicAlbum = 0x2000, // "Video game soundtrack album" - k_EAppType_Series = 0x4000, // Container app for video series - k_EAppType_Comic_UNUSED = 0x8000, // Comic Book - k_EAppType_Beta = 0x10000, // this is a beta version of a game - - k_EAppType_Shortcut = 0x40000000, // just a shortcut, client side only - k_EAppType_DepotOnly_DEPRECATED = -2147483647, // there shouldn't be any appinfo for depots - } - - //----------------------------------------------------------------------------- - // types of user game stats fields - // WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN DATABASE - //----------------------------------------------------------------------------- - public enum ESteamUserStatType : int { - k_ESteamUserStatTypeINVALID = 0, - k_ESteamUserStatTypeINT = 1, - k_ESteamUserStatTypeFLOAT = 2, - // Read as FLOAT, set with count / session length - k_ESteamUserStatTypeAVGRATE = 3, - k_ESteamUserStatTypeACHIEVEMENTS = 4, - k_ESteamUserStatTypeGROUPACHIEVEMENTS = 5, - - // max, for sanity checks - k_ESteamUserStatTypeMAX - } - //----------------------------------------------------------------------------- // Purpose: Chat Entry Types (previously was only friend-to-friend message types) //----------------------------------------------------------------------------- @@ -1500,24 +1478,6 @@ public enum EChatSteamIDInstanceFlags : int { // Max of 8 flags } - //----------------------------------------------------------------------------- - // Purpose: Marketing message flags that change how a client should handle them - //----------------------------------------------------------------------------- - [Flags] - public enum EMarketingMessageFlags : int { - k_EMarketingMessageFlagsNone = 0, - k_EMarketingMessageFlagsHighPriority = 1 << 0, - k_EMarketingMessageFlagsPlatformWindows = 1 << 1, - k_EMarketingMessageFlagsPlatformMac = 1 << 2, - k_EMarketingMessageFlagsPlatformLinux = 1 << 3, - - //aggregate flags - k_EMarketingMessageFlagsPlatformRestrictions = - k_EMarketingMessageFlagsPlatformWindows | - k_EMarketingMessageFlagsPlatformMac | - k_EMarketingMessageFlagsPlatformLinux, - } - //----------------------------------------------------------------------------- // Purpose: Possible positions to tell the overlay to show notifications in //----------------------------------------------------------------------------- @@ -1558,87 +1518,6 @@ public enum EBroadcastUploadResult : int { k_EBroadcastUploadResultAudioInitFailed = 23, // invalid audio settings } - //----------------------------------------------------------------------------- - // Purpose: codes for well defined launch options - //----------------------------------------------------------------------------- - public enum ELaunchOptionType : int { - k_ELaunchOptionType_None = 0, // unknown what launch option does - k_ELaunchOptionType_Default = 1, // runs the game, app, whatever in default mode - k_ELaunchOptionType_SafeMode = 2, // runs the game in safe mode - k_ELaunchOptionType_Multiplayer = 3, // runs the game in multiplayer mode - k_ELaunchOptionType_Config = 4, // runs config tool for this game - k_ELaunchOptionType_OpenVR = 5, // runs game in VR mode using OpenVR - k_ELaunchOptionType_Server = 6, // runs dedicated server for this game - k_ELaunchOptionType_Editor = 7, // runs game editor - k_ELaunchOptionType_Manual = 8, // shows game manual - k_ELaunchOptionType_Benchmark = 9, // runs game benchmark - k_ELaunchOptionType_Option1 = 10, // generic run option, uses description field for game name - k_ELaunchOptionType_Option2 = 11, // generic run option, uses description field for game name - k_ELaunchOptionType_Option3 = 12, // generic run option, uses description field for game name - k_ELaunchOptionType_OculusVR = 13, // runs game in VR mode using the Oculus SDK - k_ELaunchOptionType_OpenVROverlay = 14, // runs an OpenVR dashboard overlay - k_ELaunchOptionType_OSVR = 15, // runs game in VR mode using the OSVR SDK - - - k_ELaunchOptionType_Dialog = 1000, // show launch options dialog - } - - //----------------------------------------------------------------------------- - // Purpose: code points for VR HMD vendors and models - // WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN A DATABASE - //----------------------------------------------------------------------------- - public enum EVRHMDType : int { - k_eEVRHMDType_None = -1, // unknown vendor and model - - k_eEVRHMDType_Unknown = 0, // unknown vendor and model - - k_eEVRHMDType_HTC_Dev = 1, // original HTC dev kits - k_eEVRHMDType_HTC_VivePre = 2, // htc vive pre - k_eEVRHMDType_HTC_Vive = 3, // htc vive consumer release - k_eEVRHMDType_HTC_VivePro = 4, // htc vive pro release - k_eEVRHMDType_HTC_ViveCosmos = 5, // HTC Vive Cosmos - - k_eEVRHMDType_HTC_Unknown = 20, // unknown htc hmd - - k_eEVRHMDType_Oculus_DK1 = 21, // Oculus DK1 - k_eEVRHMDType_Oculus_DK2 = 22, // Oculus DK2 - k_eEVRHMDType_Oculus_Rift = 23, // Oculus Rift - k_eEVRHMDType_Oculus_RiftS = 24, // Oculus Rift S - k_eEVRHMDType_Oculus_Quest = 25, // Oculus Quest - - k_eEVRHMDType_Oculus_Unknown = 40, // // Oculus unknown HMD - - k_eEVRHMDType_Acer_Unknown = 50, // Acer unknown HMD - k_eEVRHMDType_Acer_WindowsMR = 51, // Acer QHMD Windows MR headset - - k_eEVRHMDType_Dell_Unknown = 60, // Dell unknown HMD - k_eEVRHMDType_Dell_Visor = 61, // Dell Visor Windows MR headset - - k_eEVRHMDType_Lenovo_Unknown = 70, // Lenovo unknown HMD - k_eEVRHMDType_Lenovo_Explorer = 71, // Lenovo Explorer Windows MR headset - - k_eEVRHMDType_HP_Unknown = 80, // HP unknown HMD - k_eEVRHMDType_HP_WindowsMR = 81, // HP Windows MR headset - k_eEVRHMDType_HP_Reverb = 82, // HP Reverb Windows MR headset - k_eEVRHMDType_HP_ReverbG2 = 1463, // HP Reverb G2 Windows MR headset - - k_eEVRHMDType_Samsung_Unknown = 90, // Samsung unknown HMD - k_eEVRHMDType_Samsung_Odyssey = 91, // Samsung Odyssey Windows MR headset - - k_eEVRHMDType_Unannounced_Unknown = 100, // Unannounced unknown HMD - k_eEVRHMDType_Unannounced_WindowsMR = 101, // Unannounced Windows MR headset - - k_eEVRHMDType_vridge = 110, // VRIDGE tool - - k_eEVRHMDType_Huawei_Unknown = 120, // Huawei unknown HMD - k_eEVRHMDType_Huawei_VR2 = 121, // Huawei VR2 3DOF headset - k_eEVRHMDType_Huawei_EndOfRange = 129, // end of Huawei HMD range - - k_eEVRHmdType_Valve_Unknown = 130, // Valve Unknown HMD - k_eEVRHmdType_Valve_Index = 131, // Valve Index HMD - - } - //----------------------------------------------------------------------------- // Purpose: Reasons a user may not use the Community Market. // Used in MarketEligibilityResponse_t. @@ -1886,7 +1765,7 @@ public enum ESteamNetworkingAvailability : int { /// Different methods of describing the identity of a network host public enum ESteamNetworkingIdentityType : int { // Dummy/empty/invalid. - // Plese note that if we parse a string that we don't recognize + // Please note that if we parse a string that we don't recognize // but that appears reasonable, we will NOT use this type. Instead // we'll use k_ESteamNetworkingIdentityType_UnknownType. k_ESteamNetworkingIdentityType_Invalid = 0, @@ -2155,13 +2034,9 @@ public enum ESteamNetConnectionEnd : int { // - etc k_ESteamNetConnectionEnd_Remote_BadCert = 4003, - // We couldn't rendezvous with the remote host because - // they aren't logged into Steam - k_ESteamNetConnectionEnd_Remote_NotLoggedIn = 4004, - - // We couldn't rendezvous with the remote host because - // they aren't running the right application. - k_ESteamNetConnectionEnd_Remote_NotRunningApp = 4005, + // These will never be returned + //k_ESteamNetConnectionEnd_Remote_NotLoggedIn_DEPRECATED = 4004, + //k_ESteamNetConnectionEnd_Remote_NotRunningApp_DEPRECATED = 4005, // Something wrong with the protocol version you are using. // (Probably the code you are running is too old.) @@ -2195,10 +2070,7 @@ public enum ESteamNetConnectionEnd : int { // or on their end. k_ESteamNetConnectionEnd_Misc_Timeout = 5003, - // We're having trouble talking to the relevant relay. - // We don't have enough information to say whether the - // problem is on our end or not. - k_ESteamNetConnectionEnd_Misc_RelayConnectivity = 5004, + //k_ESteamNetConnectionEnd_Misc_RelayConnectivity_DEPRECATED = 5004, // There's some trouble talking to Steam. k_ESteamNetConnectionEnd_Misc_SteamConnectivity = 5005, @@ -2288,31 +2160,9 @@ public enum ESteamNetworkingConfigDataType : int { public enum ESteamNetworkingConfigValue : int { k_ESteamNetworkingConfig_Invalid = 0, - /// [global float, 0--100] Randomly discard N pct of packets instead of sending/recv - /// This is a global option only, since it is applied at a low level - /// where we don't have much context - k_ESteamNetworkingConfig_FakePacketLoss_Send = 2, - k_ESteamNetworkingConfig_FakePacketLoss_Recv = 3, - - /// [global int32]. Delay all outbound/inbound packets by N ms - k_ESteamNetworkingConfig_FakePacketLag_Send = 4, - k_ESteamNetworkingConfig_FakePacketLag_Recv = 5, - - /// [global float] 0-100 Percentage of packets we will add additional delay - /// to (causing them to be reordered) - k_ESteamNetworkingConfig_FakePacketReorder_Send = 6, - k_ESteamNetworkingConfig_FakePacketReorder_Recv = 7, - - /// [global int32] Extra delay, in ms, to apply to reordered packets. - k_ESteamNetworkingConfig_FakePacketReorder_Time = 8, - - /// [global float 0--100] Globally duplicate some percentage of packets we send - k_ESteamNetworkingConfig_FakePacketDup_Send = 26, - k_ESteamNetworkingConfig_FakePacketDup_Recv = 27, - - /// [global int32] Amount of delay, in ms, to delay duplicated packets. - /// (We chose a random delay between 0 and this value) - k_ESteamNetworkingConfig_FakePacketDup_TimeMax = 28, + // + // Connection options + // /// [connection int32] Timeout value (in ms) to use when first connecting k_ESteamNetworkingConfig_TimeoutInitial = 24, @@ -2325,6 +2175,41 @@ public enum ESteamNetworkingConfigValue : int { /// Default is 512k (524288 bytes) k_ESteamNetworkingConfig_SendBufferSize = 9, + /// [connection int64] Get/set userdata as a configuration option. + /// The default value is -1. You may want to set the user data as + /// a config value, instead of using ISteamNetworkingSockets::SetConnectionUserData + /// in two specific instances: + /// + /// - You wish to set the userdata atomically when creating + /// an outbound connection, so that the userdata is filled in properly + /// for any callbacks that happen. However, note that this trick + /// only works for connections initiated locally! For incoming + /// connections, multiple state transitions may happen and + /// callbacks be queued, before you are able to service the first + /// callback! Be careful! + /// + /// - You can set the default userdata for all newly created connections + /// by setting this value at a higher level (e.g. on the listen + /// socket or at the global level.) Then this default + /// value will be inherited when the connection is created. + /// This is useful in case -1 is a valid userdata value, and you + /// wish to use something else as the default value so you can + /// tell if it has been set or not. + /// + /// HOWEVER: once a connection is created, the effective value is + /// then bound to the connection. Unlike other connection options, + /// if you change it again at a higher level, the new value will not + /// be inherited by connections. + /// + /// Using the userdata field in callback structs is not advised because + /// of tricky race conditions. Instead, you might try one of these methods: + /// + /// - Use a separate map with the HSteamNetConnection as the key. + /// - Fetch the userdata from the connection in your callback + /// using ISteamNetworkingSockets::GetConnectionUserData, to + // ensure you have the current value. + k_ESteamNetworkingConfig_ConnectionUserData = 40, + /// [connection int32] Minimum/maximum send rate clamp, 0 is no limit. /// This value will control the min/max allowed sending rate that /// bandwidth estimation is allowed to reach. Default is 0 (no-limit) @@ -2484,9 +2369,62 @@ public enum ESteamNetworkingConfigValue : int { /// This value should not be read or written in any other context. k_ESteamNetworkingConfig_LocalVirtualPort = 38, - // - // Callbacks - // + + // + // Simulating network conditions + // + // These are global (not per-connection) because they apply at + // a relatively low UDP layer. + // + + /// [global float, 0--100] Randomly discard N pct of packets instead of sending/recv + /// This is a global option only, since it is applied at a low level + /// where we don't have much context + k_ESteamNetworkingConfig_FakePacketLoss_Send = 2, + k_ESteamNetworkingConfig_FakePacketLoss_Recv = 3, + + /// [global int32]. Delay all outbound/inbound packets by N ms + k_ESteamNetworkingConfig_FakePacketLag_Send = 4, + k_ESteamNetworkingConfig_FakePacketLag_Recv = 5, + + /// [global float] 0-100 Percentage of packets we will add additional delay + /// to (causing them to be reordered) + k_ESteamNetworkingConfig_FakePacketReorder_Send = 6, + k_ESteamNetworkingConfig_FakePacketReorder_Recv = 7, + + /// [global int32] Extra delay, in ms, to apply to reordered packets. + k_ESteamNetworkingConfig_FakePacketReorder_Time = 8, + + /// [global float 0--100] Globally duplicate some percentage of packets we send + k_ESteamNetworkingConfig_FakePacketDup_Send = 26, + k_ESteamNetworkingConfig_FakePacketDup_Recv = 27, + + /// [global int32] Amount of delay, in ms, to delay duplicated packets. + /// (We chose a random delay between 0 and this value) + k_ESteamNetworkingConfig_FakePacketDup_TimeMax = 28, + + /// [global int32] Trace every UDP packet, similar to Wireshark or tcpdump. + /// Value is max number of bytes to dump. -1 disables tracing. + // 0 only traces the info but no actual data bytes + k_ESteamNetworkingConfig_PacketTraceMaxBytes = 41, + + + // [global int32] Global UDP token bucket rate limits. + // "Rate" refers to the steady state rate. (Bytes/sec, the + // rate that tokens are put into the bucket.) "Burst" + // refers to the max amount that could be sent in a single + // burst. (In bytes, the max capacity of the bucket.) + // Rate=0 disables the limiter entirely, which is the default. + // Burst=0 disables burst. (This is not realistic. A + // burst of at least 4K is recommended; the default is higher.) + k_ESteamNetworkingConfig_FakeRateLimit_Send_Rate = 42, + k_ESteamNetworkingConfig_FakeRateLimit_Send_Burst = 43, + k_ESteamNetworkingConfig_FakeRateLimit_Recv_Rate = 44, + k_ESteamNetworkingConfig_FakeRateLimit_Recv_Burst = 45, + + // + // Callbacks + // // On Steam, you may use the default Steam callback dispatch mechanism. If you prefer // to not use this dispatch mechanism (or you are not running with Steam), or you want @@ -2551,9 +2489,9 @@ public enum ESteamNetworkingConfigValue : int { /// ISteamNetworkingMessages. k_ESteamNetworkingConfig_Callback_CreateConnectionSignaling = 206, - // - // P2P settings - // + // + // P2P connection settings + // // /// [listen socket int32] When you create a P2P listen socket, we will automatically // /// open up a UDP port to listen for LAN connections. LAN connections can be made @@ -2584,9 +2522,9 @@ public enum ESteamNetworkingConfigValue : int { k_ESteamNetworkingConfig_P2P_Transport_SDR_Penalty = 106, //k_ESteamNetworkingConfig_P2P_Transport_LANBeacon_Penalty = 107, - // - // Settings for SDR relayed connections - // + // + // Settings for SDR relayed connections + // /// [int32 global] If the first N pings to a port all fail, mark that port as unavailable for /// a while, and try a different one. Some ISPs and routers may drop the first @@ -2633,14 +2571,14 @@ public enum ESteamNetworkingConfigValue : int { /// in production. k_ESteamNetworkingConfig_SDRClient_FakeClusterPing = 36, - // - // Log levels for debugging information of various subsystems. - // Higher numeric values will cause more stuff to be printed. - // See ISteamNetworkingUtils::SetDebugOutputFunction for more - // information - // - // The default for all values is k_ESteamNetworkingSocketsDebugOutputType_Warning. - // + // + // Log levels for debugging information of various subsystems. + // Higher numeric values will cause more stuff to be printed. + // See ISteamNetworkingUtils::SetDebugOutputFunction for more + // information + // + // The default for all values is k_ESteamNetworkingSocketsDebugOutputType_Warning. + // k_ESteamNetworkingConfig_LogLevel_AckRTT = 13, // [connection int32] RTT calculations for inline pings and replies k_ESteamNetworkingConfig_LogLevel_PacketDecode = 14, // [connection int32] log SNP packets send/recv k_ESteamNetworkingConfig_LogLevel_Message = 15, // [connection int32] log each message send/recv diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs index 66e5b8dc..0b18701f 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs @@ -208,43 +208,6 @@ public struct CallbackMsg_t { public int m_cubParam; // Size of the data pointed to by m_pubParam } - /// Structure that describes a gameserver attempting to authenticate - /// with your central server allocator / matchmaking service ("game coordinator"). - /// This is useful because the game coordinator needs to know: - /// - /// - What data center is the gameserver running in? - /// - The routing blob of the gameserver - /// - Is the gameserver actually trusted? - /// - /// Using this structure, you can securely communicate this information - /// to your server, and you can do this WITHOUT maintaining any - /// whitelists or tables of IP addresses. - /// - /// See ISteamNetworkingSockets::GetGameCoordinatorServerLogin - [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - public struct SteamDatagramGameCoordinatorServerLogin { - /// Server's identity - public SteamNetworkingIdentity m_identity; - - /// Routing info. Note that this includes the POPID - public SteamDatagramHostedAddress m_routing; - - /// AppID that the server thinks it is running - public AppId_t m_nAppID; - - /// Unix timestamp when this was generated - public RTime32 m_rtime; - - /// Size of application data - public int m_cbAppData; - - /// Application data. This is any additional information - /// that you need to identify the server not contained above. - /// (E.g. perhaps a public IP as seen by the coordinator service.) - [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_cbMaxSteamDatagramGameCoordinatorServerLoginAppData)] - public byte[] m_appData; - } - /// Describe the state of a connection. [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] public struct SteamNetConnectionInfo_t { diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserver.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserver.cs index 03a7cc29..f6af7f2b 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserver.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserver.cs @@ -153,7 +153,7 @@ public static void SetServerName(string pszServerName) { ///

/// / Set name of map to report in the server browser /// / - /// / @see k_cbMaxGameServerName + /// / @see k_cbMaxGameServerMapName /// public static void SetMapName(string pszMapName) { InteropHelp.TestIfAvailableGameServer(); @@ -171,8 +171,17 @@ public static void SetPasswordProtected(bool bPasswordProtected) { } /// - /// / Spectator server. The default value is zero, meaning the service - /// / is not used. + /// / Spectator server port to advertise. The default value is zero, meaning the + /// / service is not used. If your server receives any info requests on the LAN, + /// / this is the value that will be placed into the reply for such local queries. + /// / + /// / This is also the value that will be advertised by the master server. + /// / The only exception is if your server is using a FakeIP. Then then the second + /// / fake port number (index 1) assigned to your server will be listed on the master + /// / server as the spectator port, if you set this value to any nonzero value. + /// / + /// / This function merely controls the values that are advertised -- it's up to you to + /// / configure the server to actually listen on this port and handle any spectator traffic /// public static void SetSpectatorPort(ushort unSpectatorPort) { InteropHelp.TestIfAvailableGameServer(); @@ -226,8 +235,6 @@ public static void SetGameTags(string pchGameTags) { /// /// / Sets a string defining the "gamedata" for this server, this is optional, but if it is set /// / it allows users to filter in the matchmaking/server-browser interfaces based on the value - /// / don't set this unless it actually changes, its only uploaded to the master once (when - /// / acknowledged) /// / /// / @see k_cbMaxGameServerGameData /// @@ -249,57 +256,22 @@ public static void SetRegion(string pszRegion) { } /// - /// Player list management / authentication - /// Handles receiving a new connection from a Steam user. This call will ask the Steam - /// servers to validate the users identity, app ownership, and VAC status. If the Steam servers - /// are off-line, then it will validate the cached ticket itself which will validate app ownership - /// and identity. The AuthBlob here should be acquired on the game client using SteamUser()->InitiateGameConnection() - /// and must then be sent up to the game server for authentication. - /// Return Value: returns true if the users ticket passes basic checks. pSteamIDUser will contain the Steam ID of this user. pSteamIDUser must NOT be NULL - /// If the call succeeds then you should expect a GSClientApprove_t or GSClientDeny_t callback which will tell you whether authentication - /// for the user has succeeded or failed (the steamid in the callback will match the one returned by this call) - /// - public static bool SendUserConnectAndAuthenticate(uint unIPClient, byte[] pvAuthBlob, uint cubAuthBlobSize, out CSteamID pSteamIDUser) { - InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamGameServer_SendUserConnectAndAuthenticate(CSteamGameServerAPIContext.GetSteamGameServer(), unIPClient, pvAuthBlob, cubAuthBlobSize, out pSteamIDUser); - } - - /// - /// Creates a fake user (ie, a bot) which will be listed as playing on the server, but skips validation. - /// Return Value: Returns a SteamID for the user to be tracked with, you should call HandleUserDisconnect() - /// when this user leaves the server just like you would for a real user. - /// - public static CSteamID CreateUnauthenticatedUserConnection() { - InteropHelp.TestIfAvailableGameServer(); - return (CSteamID)NativeMethods.ISteamGameServer_CreateUnauthenticatedUserConnection(CSteamGameServerAPIContext.GetSteamGameServer()); - } - - /// - /// Should be called whenever a user leaves our game server, this lets Steam internally - /// track which users are currently on which servers for the purposes of preventing a single - /// account being logged into multiple servers, showing who is currently on a server, etc. + /// / Indicate whether you wish to be listed on the master server list + /// / and/or respond to server browser / LAN discovery packets. + /// / The server starts with this value set to false. You should set all + /// / relevant server parameters before enabling advertisement on the server. + /// / + /// / (This function used to be named EnableHeartbeats, so if you are wondering + /// / where that function went, it's right here. It does the same thing as before, + /// / the old name was just confusing.) /// - public static void SendUserDisconnect(CSteamID steamIDUser) { + public static void SetAdvertiseServerActive(bool bActive) { InteropHelp.TestIfAvailableGameServer(); - NativeMethods.ISteamGameServer_SendUserDisconnect(CSteamGameServerAPIContext.GetSteamGameServer(), steamIDUser); + NativeMethods.ISteamGameServer_SetAdvertiseServerActive(CSteamGameServerAPIContext.GetSteamGameServer(), bActive); } /// - /// Update the data to be displayed in the server browser and matchmaking interfaces for a user - /// currently connected to the server. For regular users you must call this after you receive a - /// GSUserValidationSuccess callback. - /// Return Value: true if successful, false if failure (ie, steamIDUser wasn't for an active player) - /// - public static bool BUpdateUserData(CSteamID steamIDUser, string pchPlayerName, uint uScore) { - InteropHelp.TestIfAvailableGameServer(); - using (var pchPlayerName2 = new InteropHelp.UTF8StringHandle(pchPlayerName)) { - return NativeMethods.ISteamGameServer_BUpdateUserData(CSteamGameServerAPIContext.GetSteamGameServer(), steamIDUser, pchPlayerName2, uScore); - } - } - - /// - /// New auth system APIs - do not mix with the old auth system APIs. - /// ---------------------------------------------------------------- + /// Player list management / authentication. /// Retrieve ticket to be sent to the entity who wishes to authenticate you ( using BeginAuthSession API ). /// pcbTicket retrieves the length of the actual ticket. /// @@ -376,11 +348,9 @@ public static SteamIPAddress_t GetPublicIP() { } /// - /// These are in GameSocketShare mode, where instead of ISteamGameServer creating its own - /// socket to talk to the master server on, it lets the game use its socket to forward messages - /// back and forth. This prevents us from requiring server ops to open up yet another port - /// in their firewalls. - /// the IP address and port should be in host order, i.e 127.0.0.1 == 0x7f000001 + /// Server browser related query packet processing for shared socket mode. These are used + /// when you pass STEAMGAMESERVER_QUERY_PORT_SHARED as the query port to SteamGameServer_Init. + /// IP address and port are in host order, i.e 127.0.0.1 == 0x7f000001 /// These are used when you've elected to multiplex the game server's UDP socket /// rather than having the master server updater use its own sockets. /// Source games use this to simplify the job of the server admins, so they @@ -405,47 +375,72 @@ public static int GetNextOutgoingPacket(byte[] pOut, int cbMaxOut, out uint pNet } /// - /// Control heartbeats / advertisement with master server - /// Call this as often as you like to tell the master server updater whether or not - /// you want it to be active (default: off). + /// Server clan association + /// associate this game server with this clan for the purposes of computing player compat /// - public static void EnableHeartbeats(bool bActive) { + public static SteamAPICall_t AssociateWithClan(CSteamID steamIDClan) { InteropHelp.TestIfAvailableGameServer(); - NativeMethods.ISteamGameServer_EnableHeartbeats(CSteamGameServerAPIContext.GetSteamGameServer(), bActive); + return (SteamAPICall_t)NativeMethods.ISteamGameServer_AssociateWithClan(CSteamGameServerAPIContext.GetSteamGameServer(), steamIDClan); } /// - /// You usually don't need to modify this. - /// Pass -1 to use the default value for iHeartbeatInterval. - /// Some mods change this. + /// ask if any of the current players dont want to play with this new player - or vice versa /// - public static void SetHeartbeatInterval(int iHeartbeatInterval) { + public static SteamAPICall_t ComputeNewPlayerCompatibility(CSteamID steamIDNewPlayer) { InteropHelp.TestIfAvailableGameServer(); - NativeMethods.ISteamGameServer_SetHeartbeatInterval(CSteamGameServerAPIContext.GetSteamGameServer(), iHeartbeatInterval); + return (SteamAPICall_t)NativeMethods.ISteamGameServer_ComputeNewPlayerCompatibility(CSteamGameServerAPIContext.GetSteamGameServer(), steamIDNewPlayer); } /// - /// Force a heartbeat to steam at the next opportunity + /// Handles receiving a new connection from a Steam user. This call will ask the Steam + /// servers to validate the users identity, app ownership, and VAC status. If the Steam servers + /// are off-line, then it will validate the cached ticket itself which will validate app ownership + /// and identity. The AuthBlob here should be acquired on the game client using SteamUser()->InitiateGameConnection() + /// and must then be sent up to the game server for authentication. + /// Return Value: returns true if the users ticket passes basic checks. pSteamIDUser will contain the Steam ID of this user. pSteamIDUser must NOT be NULL + /// If the call succeeds then you should expect a GSClientApprove_t or GSClientDeny_t callback which will tell you whether authentication + /// for the user has succeeded or failed (the steamid in the callback will match the one returned by this call) + /// DEPRECATED! This function will be removed from the SDK in an upcoming version. + /// Please migrate to BeginAuthSession and related functions. /// - public static void ForceHeartbeat() { + public static bool SendUserConnectAndAuthenticate_DEPRECATED(uint unIPClient, byte[] pvAuthBlob, uint cubAuthBlobSize, out CSteamID pSteamIDUser) { InteropHelp.TestIfAvailableGameServer(); - NativeMethods.ISteamGameServer_ForceHeartbeat(CSteamGameServerAPIContext.GetSteamGameServer()); + return NativeMethods.ISteamGameServer_SendUserConnectAndAuthenticate_DEPRECATED(CSteamGameServerAPIContext.GetSteamGameServer(), unIPClient, pvAuthBlob, cubAuthBlobSize, out pSteamIDUser); } /// - /// associate this game server with this clan for the purposes of computing player compat + /// Creates a fake user (ie, a bot) which will be listed as playing on the server, but skips validation. + /// Return Value: Returns a SteamID for the user to be tracked with, you should call EndAuthSession() + /// when this user leaves the server just like you would for a real user. /// - public static SteamAPICall_t AssociateWithClan(CSteamID steamIDClan) { + public static CSteamID CreateUnauthenticatedUserConnection() { InteropHelp.TestIfAvailableGameServer(); - return (SteamAPICall_t)NativeMethods.ISteamGameServer_AssociateWithClan(CSteamGameServerAPIContext.GetSteamGameServer(), steamIDClan); + return (CSteamID)NativeMethods.ISteamGameServer_CreateUnauthenticatedUserConnection(CSteamGameServerAPIContext.GetSteamGameServer()); } /// - /// ask if any of the current players dont want to play with this new player - or vice versa + /// Should be called whenever a user leaves our game server, this lets Steam internally + /// track which users are currently on which servers for the purposes of preventing a single + /// account being logged into multiple servers, showing who is currently on a server, etc. + /// DEPRECATED! This function will be removed from the SDK in an upcoming version. + /// Please migrate to BeginAuthSession and related functions. /// - public static SteamAPICall_t ComputeNewPlayerCompatibility(CSteamID steamIDNewPlayer) { + public static void SendUserDisconnect_DEPRECATED(CSteamID steamIDUser) { InteropHelp.TestIfAvailableGameServer(); - return (SteamAPICall_t)NativeMethods.ISteamGameServer_ComputeNewPlayerCompatibility(CSteamGameServerAPIContext.GetSteamGameServer(), steamIDNewPlayer); + NativeMethods.ISteamGameServer_SendUserDisconnect_DEPRECATED(CSteamGameServerAPIContext.GetSteamGameServer(), steamIDUser); + } + + /// + /// Update the data to be displayed in the server browser and matchmaking interfaces for a user + /// currently connected to the server. For regular users you must call this after you receive a + /// GSUserValidationSuccess callback. + /// Return Value: true if successful, false if failure (ie, steamIDUser wasn't for an active player) + /// + public static bool BUpdateUserData(CSteamID steamIDUser, string pchPlayerName, uint uScore) { + InteropHelp.TestIfAvailableGameServer(); + using (var pchPlayerName2 = new InteropHelp.UTF8StringHandle(pchPlayerName)) { + return NativeMethods.ISteamGameServer_BUpdateUserData(CSteamGameServerAPIContext.GetSteamGameServer(), steamIDUser, pchPlayerName2, uScore); + } } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverapps.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverapps.cs deleted file mode 100644 index 928c3604..00000000 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverapps.cs +++ /dev/null @@ -1,269 +0,0 @@ -// This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque -// Please see the included LICENSE.txt for additional information. - -// This file is automatically generated. -// Changes to this file will be reverted when you update Steamworks.NET - -#if !(UNITY_STANDALONE_WIN || UNITY_STANDALONE_LINUX || UNITY_STANDALONE_OSX || STEAMWORKS_WIN || STEAMWORKS_LIN_OSX) - #define DISABLESTEAMWORKS -#endif - -#if !DISABLESTEAMWORKS - -using System.Runtime.InteropServices; -using IntPtr = System.IntPtr; - -namespace Steamworks { - public static class SteamGameServerApps { - public static bool BIsSubscribed() { - InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamApps_BIsSubscribed(CSteamGameServerAPIContext.GetSteamApps()); - } - - public static bool BIsLowViolence() { - InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamApps_BIsLowViolence(CSteamGameServerAPIContext.GetSteamApps()); - } - - public static bool BIsCybercafe() { - InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamApps_BIsCybercafe(CSteamGameServerAPIContext.GetSteamApps()); - } - - public static bool BIsVACBanned() { - InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamApps_BIsVACBanned(CSteamGameServerAPIContext.GetSteamApps()); - } - - public static string GetCurrentGameLanguage() { - InteropHelp.TestIfAvailableGameServer(); - return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamApps_GetCurrentGameLanguage(CSteamGameServerAPIContext.GetSteamApps())); - } - - public static string GetAvailableGameLanguages() { - InteropHelp.TestIfAvailableGameServer(); - return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamApps_GetAvailableGameLanguages(CSteamGameServerAPIContext.GetSteamApps())); - } - - /// - /// only use this member if you need to check ownership of another game related to yours, a demo for example - /// - public static bool BIsSubscribedApp(AppId_t appID) { - InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamApps_BIsSubscribedApp(CSteamGameServerAPIContext.GetSteamApps(), appID); - } - - /// - /// Takes AppID of DLC and checks if the user owns the DLC & if the DLC is installed - /// - public static bool BIsDlcInstalled(AppId_t appID) { - InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamApps_BIsDlcInstalled(CSteamGameServerAPIContext.GetSteamApps(), appID); - } - - /// - /// returns the Unix time of the purchase of the app - /// - public static uint GetEarliestPurchaseUnixTime(AppId_t nAppID) { - InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamApps_GetEarliestPurchaseUnixTime(CSteamGameServerAPIContext.GetSteamApps(), nAppID); - } - - /// - /// Checks if the user is subscribed to the current app through a free weekend - /// This function will return false for users who have a retail or other type of license - /// Before using, please ask your Valve technical contact how to package and secure your free weekened - /// - public static bool BIsSubscribedFromFreeWeekend() { - InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamApps_BIsSubscribedFromFreeWeekend(CSteamGameServerAPIContext.GetSteamApps()); - } - - /// - /// Returns the number of DLC pieces for the running app - /// - public static int GetDLCCount() { - InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamApps_GetDLCCount(CSteamGameServerAPIContext.GetSteamApps()); - } - - /// - /// Returns metadata for DLC by index, of range [0, GetDLCCount()] - /// - public static bool BGetDLCDataByIndex(int iDLC, out AppId_t pAppID, out bool pbAvailable, out string pchName, int cchNameBufferSize) { - InteropHelp.TestIfAvailableGameServer(); - IntPtr pchName2 = Marshal.AllocHGlobal(cchNameBufferSize); - bool ret = NativeMethods.ISteamApps_BGetDLCDataByIndex(CSteamGameServerAPIContext.GetSteamApps(), iDLC, out pAppID, out pbAvailable, pchName2, cchNameBufferSize); - pchName = ret ? InteropHelp.PtrToStringUTF8(pchName2) : null; - Marshal.FreeHGlobal(pchName2); - return ret; - } - - /// - /// Install/Uninstall control for optional DLC - /// - public static void InstallDLC(AppId_t nAppID) { - InteropHelp.TestIfAvailableGameServer(); - NativeMethods.ISteamApps_InstallDLC(CSteamGameServerAPIContext.GetSteamApps(), nAppID); - } - - public static void UninstallDLC(AppId_t nAppID) { - InteropHelp.TestIfAvailableGameServer(); - NativeMethods.ISteamApps_UninstallDLC(CSteamGameServerAPIContext.GetSteamApps(), nAppID); - } - - /// - /// Request legacy cd-key for yourself or owned DLC. If you are interested in this - /// data then make sure you provide us with a list of valid keys to be distributed - /// to users when they purchase the game, before the game ships. - /// You'll receive an AppProofOfPurchaseKeyResponse_t callback when - /// the key is available (which may be immediately). - /// - public static void RequestAppProofOfPurchaseKey(AppId_t nAppID) { - InteropHelp.TestIfAvailableGameServer(); - NativeMethods.ISteamApps_RequestAppProofOfPurchaseKey(CSteamGameServerAPIContext.GetSteamApps(), nAppID); - } - - /// - /// returns current beta branch name, 'public' is the default branch - /// - public static bool GetCurrentBetaName(out string pchName, int cchNameBufferSize) { - InteropHelp.TestIfAvailableGameServer(); - IntPtr pchName2 = Marshal.AllocHGlobal(cchNameBufferSize); - bool ret = NativeMethods.ISteamApps_GetCurrentBetaName(CSteamGameServerAPIContext.GetSteamApps(), pchName2, cchNameBufferSize); - pchName = ret ? InteropHelp.PtrToStringUTF8(pchName2) : null; - Marshal.FreeHGlobal(pchName2); - return ret; - } - - /// - /// signal Steam that game files seems corrupt or missing - /// - public static bool MarkContentCorrupt(bool bMissingFilesOnly) { - InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamApps_MarkContentCorrupt(CSteamGameServerAPIContext.GetSteamApps(), bMissingFilesOnly); - } - - /// - /// return installed depots in mount order - /// - public static uint GetInstalledDepots(AppId_t appID, DepotId_t[] pvecDepots, uint cMaxDepots) { - InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamApps_GetInstalledDepots(CSteamGameServerAPIContext.GetSteamApps(), appID, pvecDepots, cMaxDepots); - } - - /// - /// returns current app install folder for AppID, returns folder name length - /// - public static uint GetAppInstallDir(AppId_t appID, out string pchFolder, uint cchFolderBufferSize) { - InteropHelp.TestIfAvailableGameServer(); - IntPtr pchFolder2 = Marshal.AllocHGlobal((int)cchFolderBufferSize); - uint ret = NativeMethods.ISteamApps_GetAppInstallDir(CSteamGameServerAPIContext.GetSteamApps(), appID, pchFolder2, cchFolderBufferSize); - pchFolder = ret != 0 ? InteropHelp.PtrToStringUTF8(pchFolder2) : null; - Marshal.FreeHGlobal(pchFolder2); - return ret; - } - - /// - /// returns true if that app is installed (not necessarily owned) - /// - public static bool BIsAppInstalled(AppId_t appID) { - InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamApps_BIsAppInstalled(CSteamGameServerAPIContext.GetSteamApps(), appID); - } - - /// - /// returns the SteamID of the original owner. If this CSteamID is different from ISteamUser::GetSteamID(), - /// the user has a temporary license borrowed via Family Sharing - /// - public static CSteamID GetAppOwner() { - InteropHelp.TestIfAvailableGameServer(); - return (CSteamID)NativeMethods.ISteamApps_GetAppOwner(CSteamGameServerAPIContext.GetSteamApps()); - } - - /// - /// Returns the associated launch param if the game is run via steam://run/<appid>//?param1=value1&param2=value2&param3=value3 etc. - /// Parameter names starting with the character '@' are reserved for internal use and will always return and empty string. - /// Parameter names starting with an underscore '_' are reserved for steam features -- they can be queried by the game, - /// but it is advised that you not param names beginning with an underscore for your own features. - /// Check for new launch parameters on callback NewUrlLaunchParameters_t - /// - public static string GetLaunchQueryParam(string pchKey) { - InteropHelp.TestIfAvailableGameServer(); - using (var pchKey2 = new InteropHelp.UTF8StringHandle(pchKey)) { - return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamApps_GetLaunchQueryParam(CSteamGameServerAPIContext.GetSteamApps(), pchKey2)); - } - } - - /// - /// get download progress for optional DLC - /// - public static bool GetDlcDownloadProgress(AppId_t nAppID, out ulong punBytesDownloaded, out ulong punBytesTotal) { - InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamApps_GetDlcDownloadProgress(CSteamGameServerAPIContext.GetSteamApps(), nAppID, out punBytesDownloaded, out punBytesTotal); - } - - /// - /// return the buildid of this app, may change at any time based on backend updates to the game - /// - public static int GetAppBuildId() { - InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamApps_GetAppBuildId(CSteamGameServerAPIContext.GetSteamApps()); - } - - /// - /// Request all proof of purchase keys for the calling appid and asociated DLC. - /// A series of AppProofOfPurchaseKeyResponse_t callbacks will be sent with - /// appropriate appid values, ending with a final callback where the m_nAppId - /// member is k_uAppIdInvalid (zero). - /// - public static void RequestAllProofOfPurchaseKeys() { - InteropHelp.TestIfAvailableGameServer(); - NativeMethods.ISteamApps_RequestAllProofOfPurchaseKeys(CSteamGameServerAPIContext.GetSteamApps()); - } - - public static SteamAPICall_t GetFileDetails(string pszFileName) { - InteropHelp.TestIfAvailableGameServer(); - using (var pszFileName2 = new InteropHelp.UTF8StringHandle(pszFileName)) { - return (SteamAPICall_t)NativeMethods.ISteamApps_GetFileDetails(CSteamGameServerAPIContext.GetSteamApps(), pszFileName2); - } - } - - /// - /// Get command line if game was launched via Steam URL, e.g. steam://run/<appid>//<command line>/. - /// This method of passing a connect string (used when joining via rich presence, accepting an - /// invite, etc) is preferable to passing the connect string on the operating system command - /// line, which is a security risk. In order for rich presence joins to go through this - /// path and not be placed on the OS command line, you must set a value in your app's - /// configuration on Steam. Ask Valve for help with this. - /// If game was already running and launched again, the NewUrlLaunchParameters_t will be fired. - /// - public static int GetLaunchCommandLine(out string pszCommandLine, int cubCommandLine) { - InteropHelp.TestIfAvailableGameServer(); - IntPtr pszCommandLine2 = Marshal.AllocHGlobal(cubCommandLine); - int ret = NativeMethods.ISteamApps_GetLaunchCommandLine(CSteamGameServerAPIContext.GetSteamApps(), pszCommandLine2, cubCommandLine); - pszCommandLine = ret != -1 ? InteropHelp.PtrToStringUTF8(pszCommandLine2) : null; - Marshal.FreeHGlobal(pszCommandLine2); - return ret; - } - - /// - /// Check if user borrowed this game via Family Sharing, If true, call GetAppOwner() to get the lender SteamID - /// - public static bool BIsSubscribedFromFamilySharing() { - InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamApps_BIsSubscribedFromFamilySharing(CSteamGameServerAPIContext.GetSteamApps()); - } - - /// - /// check if game is a timed trial with limited playtime - /// - public static bool BIsTimedTrial(out uint punSecondsAllowed, out uint punSecondsPlayed) { - InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamApps_BIsTimedTrial(CSteamGameServerAPIContext.GetSteamApps(), out punSecondsAllowed, out punSecondsPlayed); - } - } -} - -#endif // !DISABLESTEAMWORKS diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverapps.cs.meta b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverapps.cs.meta deleted file mode 100644 index fd44daca..00000000 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverapps.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 250a4a520119857448e934ea3e53f5cb -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs index dae1dd10..91644435 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs @@ -209,7 +209,23 @@ public static bool CloseListenSocket(HSteamListenSocket hSocket) { /// / Set connection user data. the data is returned in the following places /// / - You can query it using GetConnectionUserData. /// / - The SteamNetworkingmessage_t structure. - /// / - The SteamNetConnectionInfo_t structure. (Which is a member of SteamNetConnectionStatusChangedCallback_t.) + /// / - The SteamNetConnectionInfo_t structure. + /// / (Which is a member of SteamNetConnectionStatusChangedCallback_t -- but see WARNINGS below!!!!) + /// / + /// / Do you need to set this atomically when the connection is created? + /// / See k_ESteamNetworkingConfig_ConnectionUserData. + /// / + /// / WARNING: Be *very careful* when using the value provided in callbacks structs. + /// / Callbacks are queued, and the value that you will receive in your + /// / callback is the userdata that was effective at the time the callback + /// / was queued. There are subtle race conditions that can happen if you + /// / don't understand this! + /// / + /// / If any incoming messages for this connection are queued, the userdata + /// / field is updated, so that when when you receive messages (e.g. with + /// / ReceiveMessagesOnConnection), they will always have the very latest + /// / userdata. So the tricky race conditions that can happen with callbacks + /// / do not apply to retrieving messages. /// / /// / Returns false if the handle is invalid. /// @@ -306,7 +322,7 @@ public static EResult SendMessageToConnection(HSteamNetConnection hConn, IntPtr /// / m_pData at your buffer and set the callback to the appropriate function /// / to free it. Note that if you use your own buffer, it MUST remain valid /// / until the callback is executed. And also note that your callback can be - /// / invoked at ant time from any thread (perhaps even before SendMessages + /// / invoked at any time from any thread (perhaps even before SendMessages /// / returns!), so it MUST be fast and threadsafe. /// / /// / You MUST also fill in: @@ -732,9 +748,9 @@ public static HSteamListenSocket CreateHostedDedicatedServerListenSocket(int nLo /// / NOTE: The routing blob returned here is not encrypted. Send it to your backend /// / and don't share it directly with clients. ///

- public static EResult GetGameCoordinatorServerLogin(out SteamDatagramGameCoordinatorServerLogin pLoginInfo, out int pcbSignedBlob, IntPtr pBlob) { + public static EResult GetGameCoordinatorServerLogin(IntPtr pLoginInfo, out int pcbSignedBlob, IntPtr pBlob) { InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamNetworkingSockets_GetGameCoordinatorServerLogin(CSteamGameServerAPIContext.GetSteamNetworkingSockets(), out pLoginInfo, out pcbSignedBlob, pBlob); + return NativeMethods.ISteamNetworkingSockets_GetGameCoordinatorServerLogin(CSteamGameServerAPIContext.GetSteamNetworkingSockets(), pLoginInfo, out pcbSignedBlob, pBlob); } /// @@ -822,7 +838,7 @@ public static bool ReceivedP2PCustomSignal(IntPtr pMsg, int cbMsg, out ISteamNet /// / Get blob that describes a certificate request. You can send this to your game coordinator. /// / Upon entry, *pcbBlob should contain the size of the buffer. On successful exit, it will /// / return the number of bytes that were populated. You can pass pBlob=NULL to query for the required - /// / size. (256 bytes is a very conservative estimate.) + /// / size. (512 bytes is a conservative estimate.) /// / /// / Pass this blob to your game coordinator and call SteamDatagram_CreateCert. /// diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs index 12f3327d..0a830cc1 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs @@ -134,7 +134,7 @@ public static float GetLocalPingLocation(out SteamNetworkPingLocation_t result) /// / currently answer the question for some other reason. /// / /// / Do you need to be able to do this from a backend/matchmaking server? - /// / You are looking for the "ticketgen" library. + /// / You are looking for the "game coordinator" library. /// public static int EstimatePingTimeBetweenTwoLocations(ref SteamNetworkPingLocation_t location1, ref SteamNetworkPingLocation_t location2) { InteropHelp.TestIfAvailableGameServer(); diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs index 3d91ed22..85f4c7d8 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs @@ -662,6 +662,22 @@ public static SteamAPICall_t DeleteItem(PublishedFileId_t nPublishedFileID) { InteropHelp.TestIfAvailableGameServer(); return (SteamAPICall_t)NativeMethods.ISteamUGC_DeleteItem(CSteamGameServerAPIContext.GetSteamUGC(), nPublishedFileID); } + + /// + /// Show the app's latest Workshop EULA to the user in an overlay window, where they can accept it or not + /// + public static bool ShowWorkshopEULA() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamUGC_ShowWorkshopEULA(CSteamGameServerAPIContext.GetSteamUGC()); + } + + /// + /// Retrieve information related to the user's acceptance or not of the app's specific Workshop EULA + /// + public static SteamAPICall_t GetWorkshopEULAStatus() { + InteropHelp.TestIfAvailableGameServer(); + return (SteamAPICall_t)NativeMethods.ISteamUGC_GetWorkshopEULAStatus(CSteamGameServerAPIContext.GetSteamUGC()); + } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs index 6efe003b..a65bf302 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs @@ -180,7 +180,7 @@ public static SteamAPICall_t CheckFileSignature(string szFileName) { } /// - /// Activates the Big Picture text input dialog which only supports gamepad input + /// Activates the full-screen text input dialog which takes a initial text string and returns the text the user has typed /// public static bool ShowGamepadTextInput(EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, string pchDescription, uint unCharMax, string pchExistingText) { InteropHelp.TestIfAvailableGameServer(); @@ -317,6 +317,31 @@ public static ESteamIPv6ConnectivityState GetIPv6ConnectivityState(ESteamIPv6Con InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamUtils_GetIPv6ConnectivityState(CSteamGameServerAPIContext.GetSteamUtils(), eProtocol); } + + /// + /// returns true if currently running on the Steam Deck device + /// + public static bool IsSteamRunningOnSteamDeck() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamUtils_IsSteamRunningOnSteamDeck(CSteamGameServerAPIContext.GetSteamUtils()); + } + + /// + /// Opens a floating keyboard over the game content and sends OS keyboard keys directly to the game. + /// The text field position is specified in pixels relative the origin of the game window and is used to position the floating keyboard in a way that doesn't cover the text field + /// + public static bool ShowFloatingGamepadTextInput(EFloatingGamepadTextInputMode eKeyboardMode, int nTextFieldXPosition, int nTextFieldYPosition, int nTextFieldWidth, int nTextFieldHeight) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamUtils_ShowFloatingGamepadTextInput(CSteamGameServerAPIContext.GetSteamUtils(), eKeyboardMode, nTextFieldXPosition, nTextFieldYPosition, nTextFieldWidth, nTextFieldHeight); + } + + /// + /// In game launchers that don't have controller support you can call this to have Steam Input translate the controller input into mouse/kb to navigate the launcher + /// + public static void SetGameLauncherMode(bool bLauncherMode) { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamUtils_SetGameLauncherMode(CSteamGameServerAPIContext.GetSteamUtils(), bLauncherMode); + } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs index 810390b8..e1ad7bbc 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs @@ -17,11 +17,13 @@ namespace Steamworks { public static class SteamInput { /// - /// Init and Shutdown must be called when starting/ending use of this interface + /// Init and Shutdown must be called when starting/ending use of this interface. + /// if bExplicitlyCallRunFrame is called then you will need to manually call RunFrame + /// each frame, otherwise Steam Input will updated when SteamAPI_RunCallbacks() is called /// - public static bool Init() { + public static bool Init(bool bExplicitlyCallRunFrame) { InteropHelp.TestIfAvailableClient(); - return NativeMethods.ISteamInput_Init(CSteamAPIContext.GetSteamInput()); + return NativeMethods.ISteamInput_Init(CSteamAPIContext.GetSteamInput(), bExplicitlyCallRunFrame); } public static bool Shutdown() { @@ -30,14 +32,47 @@ public static bool Shutdown() { } /// - /// Synchronize API state with the latest Steam Controller inputs available. This + /// Set the absolute path to the Input Action Manifest file containing the in-game actions + /// and file paths to the official configurations. Used in games that bundle Steam Input + /// configurations inside of the game depot instead of using the Steam Workshop + /// + public static bool SetInputActionManifestFilePath(string pchInputActionManifestAbsolutePath) { + InteropHelp.TestIfAvailableClient(); + using (var pchInputActionManifestAbsolutePath2 = new InteropHelp.UTF8StringHandle(pchInputActionManifestAbsolutePath)) { + return NativeMethods.ISteamInput_SetInputActionManifestFilePath(CSteamAPIContext.GetSteamInput(), pchInputActionManifestAbsolutePath2); + } + } + + /// + /// Synchronize API state with the latest Steam Input action data available. This /// is performed automatically by SteamAPI_RunCallbacks, but for the absolute lowest - /// possible latency, you call this directly before reading controller state. This must - /// be called from somewhere before GetConnectedControllers will return any handles + /// possible latency, you call this directly before reading controller state. + /// Note: This must be called from somewhere before GetConnectedControllers will + /// return any handles + /// + public static void RunFrame(bool bReservedValue = true) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamInput_RunFrame(CSteamAPIContext.GetSteamInput(), bReservedValue); + } + + /// + /// Waits on an IPC event from Steam sent when there is new data to be fetched from + /// the data drop. Returns true when data was recievied before the timeout expires. + /// Useful for games with a dedicated input thread + /// + public static bool BWaitForData(bool bWaitForever, uint unTimeout) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInput_BWaitForData(CSteamAPIContext.GetSteamInput(), bWaitForever, unTimeout); + } + + /// + /// Returns true if new data has been received since the last time action data was accessed + /// via GetDigitalActionData or GetAnalogActionData. The game will still need to call + /// SteamInput()->RunFrame() or SteamAPI_RunCallbacks() before this to update the data stream /// - public static void RunFrame() { + public static bool BNewDataAvailable() { InteropHelp.TestIfAvailableClient(); - NativeMethods.ISteamInput_RunFrame(CSteamAPIContext.GetSteamInput()); + return NativeMethods.ISteamInput_BNewDataAvailable(CSteamAPIContext.GetSteamInput()); } /// @@ -54,6 +89,35 @@ public static int GetConnectedControllers(InputHandle_t[] handlesOut) { return NativeMethods.ISteamInput_GetConnectedControllers(CSteamAPIContext.GetSteamInput(), handlesOut); } + /// + /// ----------------------------------------------------------------------------- + /// CALLBACKS + /// ----------------------------------------------------------------------------- + /// Controller configuration loaded - these callbacks will always fire if you have + /// a handler. Note: this is called within either SteamInput()->RunFrame or by SteamAPI_RunCallbacks + /// Enable SteamInputDeviceConnected_t and SteamInputDeviceDisconnected_t callbacks. + /// Each controller that is already connected will generate a device connected + /// callback when you enable them + /// + public static void EnableDeviceCallbacks() { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamInput_EnableDeviceCallbacks(CSteamAPIContext.GetSteamInput()); + } + + /// + /// Controller Connected - provides info about a single newly connected controller + /// Note: this is called within either SteamInput()->RunFrame or by SteamAPI_RunCallbacks + /// Controller Disconnected - provides info about a single disconnected controller + /// Note: this is called within either SteamInput()->RunFrame or by SteamAPI_RunCallbacks + /// Enable SteamInputActionEvent_t callbacks. Directly calls your callback function + /// for lower latency than standard Steam callbacks. Supports one callback at a time. + /// Note: this is called within either SteamInput()->RunFrame or by SteamAPI_RunCallbacks + /// + public static void EnableActionEventCallbacks(SteamInputActionEventCallbackPointer pCallback) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamInput_EnableActionEventCallbacks(CSteamAPIContext.GetSteamInput(), pCallback); + } + /// /// ----------------------------------------------------------------------------- /// ACTION SETS @@ -102,7 +166,7 @@ public static void DeactivateAllActionSetLayers(InputHandle_t inputHandle) { /// /// Enumerate currently active layers. - /// handlesOut should point to a STEAM_INPUT_MAX_ACTIVE_LAYERS sized array of ControllerActionSetHandle_t handles + /// handlesOut should point to a STEAM_INPUT_MAX_ACTIVE_LAYERS sized array of InputActionSetHandle_t handles /// Returns the number of handles written to handlesOut /// public static int GetActiveActionSetLayers(InputHandle_t inputHandle, InputActionSetHandle_t[] handlesOut) { @@ -147,6 +211,14 @@ public static int GetDigitalActionOrigins(InputHandle_t inputHandle, InputAction return NativeMethods.ISteamInput_GetDigitalActionOrigins(CSteamAPIContext.GetSteamInput(), inputHandle, actionSetHandle, digitalActionHandle, originsOut); } + /// + /// Returns a localized string (from Steam's language setting) for the user-facing action name corresponding to the specified handle + /// + public static string GetStringForDigitalActionName(InputDigitalActionHandle_t eActionHandle) { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamInput_GetStringForDigitalActionName(CSteamAPIContext.GetSteamInput(), eActionHandle)); + } + /// /// Lookup the handle for an analog action. Best to do this once on startup, and store the handles for all future API calls. /// @@ -179,11 +251,27 @@ public static int GetAnalogActionOrigins(InputHandle_t inputHandle, InputActionS } /// - /// Get a local path to art for on-screen glyph for a particular origin + /// Get a local path to a PNG file for the provided origin's glyph. + /// + public static string GetGlyphPNGForActionOrigin(EInputActionOrigin eOrigin, ESteamInputGlyphSize eSize, uint unFlags) { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamInput_GetGlyphPNGForActionOrigin(CSteamAPIContext.GetSteamInput(), eOrigin, eSize, unFlags)); + } + + /// + /// Get a local path to a SVG file for the provided origin's glyph. + /// + public static string GetGlyphSVGForActionOrigin(EInputActionOrigin eOrigin, uint unFlags) { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamInput_GetGlyphSVGForActionOrigin(CSteamAPIContext.GetSteamInput(), eOrigin, unFlags)); + } + + /// + /// Get a local path to an older, Big Picture Mode-style PNG file for a particular origin /// - public static string GetGlyphForActionOrigin(EInputActionOrigin eOrigin) { + public static string GetGlyphForActionOrigin_Legacy(EInputActionOrigin eOrigin) { InteropHelp.TestIfAvailableClient(); - return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamInput_GetGlyphForActionOrigin(CSteamAPIContext.GetSteamInput(), eOrigin)); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamInput_GetGlyphForActionOrigin_Legacy(CSteamAPIContext.GetSteamInput(), eOrigin)); } /// @@ -194,6 +282,14 @@ public static string GetStringForActionOrigin(EInputActionOrigin eOrigin) { return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamInput_GetStringForActionOrigin(CSteamAPIContext.GetSteamInput(), eOrigin)); } + /// + /// Returns a localized string (from Steam's language setting) for the user-facing action name corresponding to the specified handle + /// + public static string GetStringForAnalogActionName(InputAnalogActionHandle_t eActionHandle) { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamInput_GetStringForAnalogActionName(CSteamAPIContext.GetSteamInput(), eActionHandle)); + } + /// /// Stop analog momentum for the action if it is a mouse action in trackball mode /// @@ -221,6 +317,22 @@ public static void TriggerVibration(InputHandle_t inputHandle, ushort usLeftSpee NativeMethods.ISteamInput_TriggerVibration(CSteamAPIContext.GetSteamInput(), inputHandle, usLeftSpeed, usRightSpeed); } + /// + /// Trigger a vibration event on supported controllers including Xbox trigger impulse rumble - Steam will translate these commands into haptic pulses for Steam Controllers + /// + public static void TriggerVibrationExtended(InputHandle_t inputHandle, ushort usLeftSpeed, ushort usRightSpeed, ushort usLeftTriggerSpeed, ushort usRightTriggerSpeed) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamInput_TriggerVibrationExtended(CSteamAPIContext.GetSteamInput(), inputHandle, usLeftSpeed, usRightSpeed, usLeftTriggerSpeed, usRightTriggerSpeed); + } + + /// + /// Send a haptic pulse, works on Steam Deck and Steam Controller devices + /// + public static void TriggerSimpleHapticEvent(InputHandle_t inputHandle, EControllerHapticLocation eHapticLocation, byte nIntensity, char nGainDB, byte nOtherIntensity, char nOtherGainDB) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamInput_TriggerSimpleHapticEvent(CSteamAPIContext.GetSteamInput(), inputHandle, eHapticLocation, nIntensity, nGainDB, nOtherIntensity, nOtherGainDB); + } + /// /// Set the controller LED color on supported controllers. nFlags is a bitmask of values from ESteamInputLEDFlag - 0 will default to setting a color. Steam will handle /// the behavior on exit of your program so you don't need to try restore the default as you are shutting down @@ -234,23 +346,23 @@ public static void SetLEDColor(InputHandle_t inputHandle, byte nColorR, byte nCo /// Trigger a haptic pulse on a Steam Controller - if you are approximating rumble you may want to use TriggerVibration instead. /// Good uses for Haptic pulses include chimes, noises, or directional gameplay feedback (taking damage, footstep locations, etc). /// - public static void TriggerHapticPulse(InputHandle_t inputHandle, ESteamControllerPad eTargetPad, ushort usDurationMicroSec) { + public static void Legacy_TriggerHapticPulse(InputHandle_t inputHandle, ESteamControllerPad eTargetPad, ushort usDurationMicroSec) { InteropHelp.TestIfAvailableClient(); - NativeMethods.ISteamInput_TriggerHapticPulse(CSteamAPIContext.GetSteamInput(), inputHandle, eTargetPad, usDurationMicroSec); + NativeMethods.ISteamInput_Legacy_TriggerHapticPulse(CSteamAPIContext.GetSteamInput(), inputHandle, eTargetPad, usDurationMicroSec); } /// /// Trigger a haptic pulse with a duty cycle of usDurationMicroSec / usOffMicroSec, unRepeat times. If you are approximating rumble you may want to use TriggerVibration instead. /// nFlags is currently unused and reserved for future use. /// - public static void TriggerRepeatedHapticPulse(InputHandle_t inputHandle, ESteamControllerPad eTargetPad, ushort usDurationMicroSec, ushort usOffMicroSec, ushort unRepeat, uint nFlags) { + public static void Legacy_TriggerRepeatedHapticPulse(InputHandle_t inputHandle, ESteamControllerPad eTargetPad, ushort usDurationMicroSec, ushort usOffMicroSec, ushort unRepeat, uint nFlags) { InteropHelp.TestIfAvailableClient(); - NativeMethods.ISteamInput_TriggerRepeatedHapticPulse(CSteamAPIContext.GetSteamInput(), inputHandle, eTargetPad, usDurationMicroSec, usOffMicroSec, unRepeat, nFlags); + NativeMethods.ISteamInput_Legacy_TriggerRepeatedHapticPulse(CSteamAPIContext.GetSteamInput(), inputHandle, eTargetPad, usDurationMicroSec, usOffMicroSec, unRepeat, nFlags); } /// /// ----------------------------------------------------------------------------- - /// Utility functions availible without using the rest of Steam Input API + /// Utility functions available without using the rest of Steam Input API /// ----------------------------------------------------------------------------- /// Invokes the Steam overlay and brings up the binding screen if the user is using Big Picture Mode /// If the user is not in Big Picture Mode it will open up the binding in a new window @@ -337,6 +449,15 @@ public static uint GetRemotePlaySessionID(InputHandle_t inputHandle) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamInput_GetRemotePlaySessionID(CSteamAPIContext.GetSteamInput(), inputHandle); } + + /// + /// Get a bitmask of the Steam Input Configuration types opted in for the current session. Returns ESteamInputConfigurationEnableType values.? + /// Note: user can override the settings from the Steamworks Partner site so the returned values may not exactly match your default configuration + /// + public static ushort GetSessionInputConfigurationSettings() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamInput_GetSessionInputConfigurationSettings(CSteamAPIContext.GetSteamInput()); + } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs index a0324edf..c892a223 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs @@ -209,7 +209,23 @@ public static bool CloseListenSocket(HSteamListenSocket hSocket) { /// / Set connection user data. the data is returned in the following places /// / - You can query it using GetConnectionUserData. /// / - The SteamNetworkingmessage_t structure. - /// / - The SteamNetConnectionInfo_t structure. (Which is a member of SteamNetConnectionStatusChangedCallback_t.) + /// / - The SteamNetConnectionInfo_t structure. + /// / (Which is a member of SteamNetConnectionStatusChangedCallback_t -- but see WARNINGS below!!!!) + /// / + /// / Do you need to set this atomically when the connection is created? + /// / See k_ESteamNetworkingConfig_ConnectionUserData. + /// / + /// / WARNING: Be *very careful* when using the value provided in callbacks structs. + /// / Callbacks are queued, and the value that you will receive in your + /// / callback is the userdata that was effective at the time the callback + /// / was queued. There are subtle race conditions that can happen if you + /// / don't understand this! + /// / + /// / If any incoming messages for this connection are queued, the userdata + /// / field is updated, so that when when you receive messages (e.g. with + /// / ReceiveMessagesOnConnection), they will always have the very latest + /// / userdata. So the tricky race conditions that can happen with callbacks + /// / do not apply to retrieving messages. /// / /// / Returns false if the handle is invalid. /// @@ -306,7 +322,7 @@ public static EResult SendMessageToConnection(HSteamNetConnection hConn, IntPtr /// / m_pData at your buffer and set the callback to the appropriate function /// / to free it. Note that if you use your own buffer, it MUST remain valid /// / until the callback is executed. And also note that your callback can be - /// / invoked at ant time from any thread (perhaps even before SendMessages + /// / invoked at any time from any thread (perhaps even before SendMessages /// / returns!), so it MUST be fast and threadsafe. /// / /// / You MUST also fill in: @@ -732,9 +748,9 @@ public static HSteamListenSocket CreateHostedDedicatedServerListenSocket(int nLo /// / NOTE: The routing blob returned here is not encrypted. Send it to your backend /// / and don't share it directly with clients. /// - public static EResult GetGameCoordinatorServerLogin(out SteamDatagramGameCoordinatorServerLogin pLoginInfo, out int pcbSignedBlob, IntPtr pBlob) { + public static EResult GetGameCoordinatorServerLogin(IntPtr pLoginInfo, out int pcbSignedBlob, IntPtr pBlob) { InteropHelp.TestIfAvailableClient(); - return NativeMethods.ISteamNetworkingSockets_GetGameCoordinatorServerLogin(CSteamAPIContext.GetSteamNetworkingSockets(), out pLoginInfo, out pcbSignedBlob, pBlob); + return NativeMethods.ISteamNetworkingSockets_GetGameCoordinatorServerLogin(CSteamAPIContext.GetSteamNetworkingSockets(), pLoginInfo, out pcbSignedBlob, pBlob); } /// @@ -822,7 +838,7 @@ public static bool ReceivedP2PCustomSignal(IntPtr pMsg, int cbMsg, out ISteamNet /// / Get blob that describes a certificate request. You can send this to your game coordinator. /// / Upon entry, *pcbBlob should contain the size of the buffer. On successful exit, it will /// / return the number of bytes that were populated. You can pass pBlob=NULL to query for the required - /// / size. (256 bytes is a very conservative estimate.) + /// / size. (512 bytes is a conservative estimate.) /// / /// / Pass this blob to your game coordinator and call SteamDatagram_CreateCert. /// diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs index 6e22a20b..06ee5eeb 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs @@ -134,7 +134,7 @@ public static float GetLocalPingLocation(out SteamNetworkPingLocation_t result) /// / currently answer the question for some other reason. /// / /// / Do you need to be able to do this from a backend/matchmaking server? - /// / You are looking for the "ticketgen" library. + /// / You are looking for the "game coordinator" library. /// public static int EstimatePingTimeBetweenTwoLocations(ref SteamNetworkPingLocation_t location1, ref SteamNetworkPingLocation_t location2) { InteropHelp.TestIfAvailableClient(); diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremotestorage.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremotestorage.cs index bbe93142..a7c23f4d 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremotestorage.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremotestorage.cs @@ -239,61 +239,7 @@ public static UGCHandle_t GetCachedUGCHandle(int iCachedContent) { InteropHelp.TestIfAvailableClient(); return (UGCHandle_t)NativeMethods.ISteamRemoteStorage_GetCachedUGCHandle(CSteamAPIContext.GetSteamRemoteStorage(), iCachedContent); } -#if _SERVER - /// - /// The following functions are only necessary on the Playstation 3. On PC & Mac, the Steam client will handle these operations for you - /// On Playstation 3, the game controls which files are stored in the cloud, via FilePersist, FileFetch, and FileForget. - /// Connect to Steam and get a list of files in the Cloud - results in a RemoteStorageAppSyncStatusCheck_t callback - /// - public static void GetFileListFromServer() { - InteropHelp.TestIfAvailableClient(); - NativeMethods.ISteamRemoteStorage_GetFileListFromServer(CSteamAPIContext.GetSteamRemoteStorage()); - } - /// - /// Indicate this file should be downloaded in the next sync - /// - public static bool FileFetch(string pchFile) { - InteropHelp.TestIfAvailableClient(); - using (var pchFile2 = new InteropHelp.UTF8StringHandle(pchFile)) { - return NativeMethods.ISteamRemoteStorage_FileFetch(CSteamAPIContext.GetSteamRemoteStorage(), pchFile2); - } - } - - /// - /// Indicate this file should be persisted in the next sync - /// - public static bool FilePersist(string pchFile) { - InteropHelp.TestIfAvailableClient(); - using (var pchFile2 = new InteropHelp.UTF8StringHandle(pchFile)) { - return NativeMethods.ISteamRemoteStorage_FilePersist(CSteamAPIContext.GetSteamRemoteStorage(), pchFile2); - } - } - - /// - /// Pull any requested files down from the Cloud - results in a RemoteStorageAppSyncedClient_t callback - /// - public static bool SynchronizeToClient() { - InteropHelp.TestIfAvailableClient(); - return NativeMethods.ISteamRemoteStorage_SynchronizeToClient(CSteamAPIContext.GetSteamRemoteStorage()); - } - - /// - /// Upload any requested files to the Cloud - results in a RemoteStorageAppSyncedServer_t callback - /// - public static bool SynchronizeToServer() { - InteropHelp.TestIfAvailableClient(); - return NativeMethods.ISteamRemoteStorage_SynchronizeToServer(CSteamAPIContext.GetSteamRemoteStorage()); - } - - /// - /// Reset any fetch/persist/etc requests - /// - public static bool ResetFileRequestState() { - InteropHelp.TestIfAvailableClient(); - return NativeMethods.ISteamRemoteStorage_ResetFileRequestState(CSteamAPIContext.GetSteamRemoteStorage()); - } -#endif /// /// publishing UGC /// @@ -455,6 +401,33 @@ public static SteamAPICall_t UGCDownloadToLocation(UGCHandle_t hContent, string return (SteamAPICall_t)NativeMethods.ISteamRemoteStorage_UGCDownloadToLocation(CSteamAPIContext.GetSteamRemoteStorage(), hContent, pchLocation2, unPriority); } } + + /// + /// Cloud dynamic state change notification + /// + public static int GetLocalFileChangeCount() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemoteStorage_GetLocalFileChangeCount(CSteamAPIContext.GetSteamRemoteStorage()); + } + + public static string GetLocalFileChange(int iFile, out ERemoteStorageLocalFileChange pEChangeType, out ERemoteStorageFilePathType pEFilePathType) { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamRemoteStorage_GetLocalFileChange(CSteamAPIContext.GetSteamRemoteStorage(), iFile, out pEChangeType, out pEFilePathType)); + } + + /// + /// Indicate to Steam the beginning / end of a set of local file + /// operations - for example, writing a game save that requires updating two files. + /// + public static bool BeginFileWriteBatch() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemoteStorage_BeginFileWriteBatch(CSteamAPIContext.GetSteamRemoteStorage()); + } + + public static bool EndFileWriteBatch() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemoteStorage_EndFileWriteBatch(CSteamAPIContext.GetSteamRemoteStorage()); + } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs index 28685bdb..2ad523af 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs @@ -662,6 +662,22 @@ public static SteamAPICall_t DeleteItem(PublishedFileId_t nPublishedFileID) { InteropHelp.TestIfAvailableClient(); return (SteamAPICall_t)NativeMethods.ISteamUGC_DeleteItem(CSteamAPIContext.GetSteamUGC(), nPublishedFileID); } + + /// + /// Show the app's latest Workshop EULA to the user in an overlay window, where they can accept it or not + /// + public static bool ShowWorkshopEULA() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_ShowWorkshopEULA(CSteamAPIContext.GetSteamUGC()); + } + + /// + /// Retrieve information related to the user's acceptance or not of the app's specific Workshop EULA + /// + public static SteamAPICall_t GetWorkshopEULAStatus() { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamUGC_GetWorkshopEULAStatus(CSteamAPIContext.GetSteamUGC()); + } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuser.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuser.cs index 95479900..4a4db5e4 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuser.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuser.cs @@ -57,19 +57,23 @@ public static CSteamID GetSteamID() { /// bool bSecure - whether or not the client thinks that the game server is reporting itself as secure (i.e. VAC is running) /// return value - returns the number of bytes written to pBlob. If the return is 0, then the buffer passed in was too small, and the call has failed /// The contents of pBlob should then be sent to the game server, for it to use to complete the authentication process. + /// DEPRECATED! This function will be removed from the SDK in an upcoming version. + /// Please migrate to BeginAuthSession and related functions. /// - public static int InitiateGameConnection(byte[] pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, uint unIPServer, ushort usPortServer, bool bSecure) { + public static int InitiateGameConnection_DEPRECATED(byte[] pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, uint unIPServer, ushort usPortServer, bool bSecure) { InteropHelp.TestIfAvailableClient(); - return NativeMethods.ISteamUser_InitiateGameConnection(CSteamAPIContext.GetSteamUser(), pAuthBlob, cbMaxAuthBlob, steamIDGameServer, unIPServer, usPortServer, bSecure); + return NativeMethods.ISteamUser_InitiateGameConnection_DEPRECATED(CSteamAPIContext.GetSteamUser(), pAuthBlob, cbMaxAuthBlob, steamIDGameServer, unIPServer, usPortServer, bSecure); } /// /// notify of disconnect /// needs to occur when the game client leaves the specified game server, needs to match with the InitiateGameConnection() call + /// DEPRECATED! This function will be removed from the SDK in an upcoming version. + /// Please migrate to BeginAuthSession and related functions. /// - public static void TerminateGameConnection(uint unIPServer, ushort usPortServer) { + public static void TerminateGameConnection_DEPRECATED(uint unIPServer, ushort usPortServer) { InteropHelp.TestIfAvailableClient(); - NativeMethods.ISteamUser_TerminateGameConnection(CSteamAPIContext.GetSteamUser(), unIPServer, usPortServer); + NativeMethods.ISteamUser_TerminateGameConnection_DEPRECATED(CSteamAPIContext.GetSteamUser(), unIPServer, usPortServer); } /// diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs index 6fc941de..87577658 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs @@ -180,7 +180,7 @@ public static SteamAPICall_t CheckFileSignature(string szFileName) { } /// - /// Activates the Big Picture text input dialog which only supports gamepad input + /// Activates the full-screen text input dialog which takes a initial text string and returns the text the user has typed /// public static bool ShowGamepadTextInput(EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, string pchDescription, uint unCharMax, string pchExistingText) { InteropHelp.TestIfAvailableClient(); @@ -317,6 +317,31 @@ public static ESteamIPv6ConnectivityState GetIPv6ConnectivityState(ESteamIPv6Con InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamUtils_GetIPv6ConnectivityState(CSteamAPIContext.GetSteamUtils(), eProtocol); } + + /// + /// returns true if currently running on the Steam Deck device + /// + public static bool IsSteamRunningOnSteamDeck() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_IsSteamRunningOnSteamDeck(CSteamAPIContext.GetSteamUtils()); + } + + /// + /// Opens a floating keyboard over the game content and sends OS keyboard keys directly to the game. + /// The text field position is specified in pixels relative the origin of the game window and is used to position the floating keyboard in a way that doesn't cover the text field + /// + public static bool ShowFloatingGamepadTextInput(EFloatingGamepadTextInputMode eKeyboardMode, int nTextFieldXPosition, int nTextFieldYPosition, int nTextFieldWidth, int nTextFieldHeight) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_ShowFloatingGamepadTextInput(CSteamAPIContext.GetSteamUtils(), eKeyboardMode, nTextFieldXPosition, nTextFieldYPosition, nTextFieldWidth, nTextFieldHeight); + } + + /// + /// In game launchers that don't have controller support you can call this to have Steam Input translate the controller input into mouse/kb to navigate the launcher + /// + public static void SetGameLauncherMode(bool bLauncherMode) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamUtils_SetGameLauncherMode(CSteamAPIContext.GetSteamUtils(), bLauncherMode); + } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEventCallbackPointer.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEventCallbackPointer.cs new file mode 100644 index 00000000..931e22ac --- /dev/null +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEventCallbackPointer.cs @@ -0,0 +1,22 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2019 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +#if !(UNITY_STANDALONE_WIN || UNITY_STANDALONE_LINUX || UNITY_STANDALONE_OSX || STEAMWORKS_WIN || STEAMWORKS_LIN_OSX) + #define DISABLESTEAMWORKS +#endif + +#if !DISABLESTEAMWORKS + +using System.Runtime.InteropServices; +using IntPtr = System.IntPtr; + +namespace Steamworks { + [System.Runtime.InteropServices.UnmanagedFunctionPointer(System.Runtime.InteropServices.CallingConvention.Cdecl)] + public delegate void SteamInputActionEventCallbackPointer(IntPtr /* SteamInputActionEvent_t* */ SteamInputActionEvent); +} + +#endif // !DISABLESTEAMWORKS diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs new file mode 100644 index 00000000..c60cfc8d --- /dev/null +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs @@ -0,0 +1,65 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2019 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +#if !(UNITY_STANDALONE_WIN || UNITY_STANDALONE_LINUX || UNITY_STANDALONE_OSX || STEAMWORKS_WIN || STEAMWORKS_LIN_OSX) + #define DISABLESTEAMWORKS +#endif + +#if !DISABLESTEAMWORKS + +using System.Runtime.InteropServices; +using IntPtr = System.IntPtr; + +namespace Steamworks +{ + //----------------------------------------------------------------------------- + // Purpose: when callbacks are enabled this fires each time a controller action + // state changes + //----------------------------------------------------------------------------- + [System.Serializable] + [StructLayout(LayoutKind.Sequential)] + public struct SteamInputActionEvent_t + { + public InputHandle_t controllerHandle; + + public ESteamInputActionEventType eEventType; + + /// Option value + public OptionValue m_val; + + [System.Serializable] + [StructLayout(LayoutKind.Sequential)] + public struct SteamInputAnalogActionEvent_t + { + public InputAnalogActionHandle_t actionHandle; + + public InputAnalogActionData_t analogActionData; + } + + [System.Serializable] + [StructLayout(LayoutKind.Sequential)] + public struct SteamInputDigitalActionEvent_t + { + public InputDigitalActionHandle_t actionHandle; + + public InputDigitalActionData_t digitalActionData; + } + + [System.Serializable] + [StructLayout(LayoutKind.Explicit)] + public struct OptionValue + { + [FieldOffset(0)] + public SteamInputAnalogActionEvent_t analogAction; + + [FieldOffset(0)] + public SteamInputDigitalActionEvent_t digitalAction; + } + } +} + +#endif // !DISABLESTEAMWORKS \ No newline at end of file diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/ManifestId_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/ManifestId_t.cs deleted file mode 100644 index 28144537..00000000 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/ManifestId_t.cs +++ /dev/null @@ -1,65 +0,0 @@ -// This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque -// Please see the included LICENSE.txt for additional information. - -// This file is automatically generated. -// Changes to this file will be reverted when you update Steamworks.NET - -#if !(UNITY_STANDALONE_WIN || UNITY_STANDALONE_LINUX || UNITY_STANDALONE_OSX || STEAMWORKS_WIN || STEAMWORKS_LIN_OSX) - #define DISABLESTEAMWORKS -#endif - -#if !DISABLESTEAMWORKS - -using System.Runtime.InteropServices; -using IntPtr = System.IntPtr; - -namespace Steamworks { - [System.Serializable] - public struct ManifestId_t : System.IEquatable, System.IComparable { - public static readonly ManifestId_t Invalid = new ManifestId_t(0x0); - public ulong m_ManifestId; - - public ManifestId_t(ulong value) { - m_ManifestId = value; - } - - public override string ToString() { - return m_ManifestId.ToString(); - } - - public override bool Equals(object other) { - return other is ManifestId_t && this == (ManifestId_t)other; - } - - public override int GetHashCode() { - return m_ManifestId.GetHashCode(); - } - - public static bool operator ==(ManifestId_t x, ManifestId_t y) { - return x.m_ManifestId == y.m_ManifestId; - } - - public static bool operator !=(ManifestId_t x, ManifestId_t y) { - return !(x == y); - } - - public static explicit operator ManifestId_t(ulong value) { - return new ManifestId_t(value); - } - - public static explicit operator ulong(ManifestId_t that) { - return that.m_ManifestId; - } - - public bool Equals(ManifestId_t other) { - return m_ManifestId == other.m_ManifestId; - } - - public int CompareTo(ManifestId_t other) { - return m_ManifestId.CompareTo(other.m_ManifestId); - } - } -} - -#endif // !DISABLESTEAMWORKS diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SiteId_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SiteId_t.cs deleted file mode 100644 index 8de40529..00000000 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SiteId_t.cs +++ /dev/null @@ -1,65 +0,0 @@ -// This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque -// Please see the included LICENSE.txt for additional information. - -// This file is automatically generated. -// Changes to this file will be reverted when you update Steamworks.NET - -#if !(UNITY_STANDALONE_WIN || UNITY_STANDALONE_LINUX || UNITY_STANDALONE_OSX || STEAMWORKS_WIN || STEAMWORKS_LIN_OSX) - #define DISABLESTEAMWORKS -#endif - -#if !DISABLESTEAMWORKS - -using System.Runtime.InteropServices; -using IntPtr = System.IntPtr; - -namespace Steamworks { - [System.Serializable] - public struct SiteId_t : System.IEquatable, System.IComparable { - public static readonly SiteId_t Invalid = new SiteId_t(0); - public ulong m_SiteId; - - public SiteId_t(ulong value) { - m_SiteId = value; - } - - public override string ToString() { - return m_SiteId.ToString(); - } - - public override bool Equals(object other) { - return other is SiteId_t && this == (SiteId_t)other; - } - - public override int GetHashCode() { - return m_SiteId.GetHashCode(); - } - - public static bool operator ==(SiteId_t x, SiteId_t y) { - return x.m_SiteId == y.m_SiteId; - } - - public static bool operator !=(SiteId_t x, SiteId_t y) { - return !(x == y); - } - - public static explicit operator SiteId_t(ulong value) { - return new SiteId_t(value); - } - - public static explicit operator ulong(SiteId_t that) { - return that.m_SiteId; - } - - public bool Equals(SiteId_t other) { - return m_SiteId == other.m_SiteId; - } - - public int CompareTo(SiteId_t other) { - return m_SiteId.CompareTo(other.m_SiteId); - } - } -} - -#endif // !DISABLESTEAMWORKS From ff36f26c7b1fd85aa9fe4f9b85329aa790411c3b Mon Sep 17 00:00:00 2001 From: James McGhee Date: Sun, 10 Oct 2021 13:15:52 +0100 Subject: [PATCH 10/55] Cleaned metadata - Cleaned up the metadata removing 2 un used ones and adding in the 2 missing ones - Updated the Readme.md to instruct on install from Package Manager --- README.md | 11 +++++++++++ .../SteamInputActionEventCallbackPointer.cs.meta} | 2 +- .../SteamInputActionEvent_t.cs.meta} | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) rename com.rlabrecque.steamworks.net/Runtime/types/{SteamTypes/ManifestId_t.cs.meta => SteamInput/SteamInputActionEventCallbackPointer.cs.meta} (83%) rename com.rlabrecque.steamworks.net/Runtime/types/{SteamTypes/SiteId_t.cs.meta => SteamInput/SteamInputActionEvent_t.cs.meta} (83%) diff --git a/README.md b/README.md index 98b5ea3d..bb5697df 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,17 @@ _Steamworks.NET_ currently fully supports Windows, OSX, and Linux in both 32 and ## Installation +### Package Manager + +1. Open the Package Manager +2. Click the "+" (plus) button located in the upper left of the window +3. Select the "Add package from git URL..." option +4. Enter the following URL: + `https://github.com/rlabrecque/Steamworks.NET.git?path=/com.rlabrecque.steamworks.net` +6. Click the "Add" button and wait several seconds for the system to download and install the Steamworks.NET package from GitHub. + +### Traditional + You can find the installation instructions [here](http://steamworks.github.io/installation/). ## Samples diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/ManifestId_t.cs.meta b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEventCallbackPointer.cs.meta similarity index 83% rename from com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/ManifestId_t.cs.meta rename to com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEventCallbackPointer.cs.meta index 77693a05..6415ad7c 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/ManifestId_t.cs.meta +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEventCallbackPointer.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8cf4b17fbf6c053459494656501b68ef +guid: 40f4d6fda0f15ff47a9866d0afa2be32 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SiteId_t.cs.meta b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs.meta similarity index 83% rename from com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SiteId_t.cs.meta rename to com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs.meta index a39e43c1..43f2d64f 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SiteId_t.cs.meta +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f8388094e92bfcd4b994fc81e66fc362 +guid: 31fd8b9eec8549a4f94d7059185ef204 MonoImporter: externalObjects: {} serializedVersion: 2 From ec8e556cd22266b9b9d9e4d638378b90804d3e56 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 7 Nov 2021 14:05:10 -0800 Subject: [PATCH 11/55] Update Copyright --- CodeGen/LICENSE.txt | 2 +- CodeGen/templates/header.txt | 2 +- CodeGen/templates/nativemethods.txt | 2 +- LICENSE.txt | 2 +- Standalone/Properties/AssemblyInfo.cs | 4 ++-- com.rlabrecque.steamworks.net/Editor/RedistCopy.cs | 2 +- com.rlabrecque.steamworks.net/Editor/RedistInstall.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/CallbackDispatcher.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/CallbackIdentity.cs | 2 +- .../Runtime/ISteamMatchmakingResponses.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/InteropHelp.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/Packsize.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/Steam.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/Version.cs | 2 +- .../Runtime/autogen/NativeMethods.cs | 2 +- .../Runtime/autogen/SteamCallbacks.cs | 2 +- .../Runtime/autogen/SteamConstants.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs | 2 +- .../Runtime/autogen/isteamapplist.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteamapps.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteamclient.cs | 2 +- .../Runtime/autogen/isteamfriends.cs | 2 +- .../Runtime/autogen/isteamgameserver.cs | 2 +- .../Runtime/autogen/isteamgameserverclient.cs | 2 +- .../Runtime/autogen/isteamgameserverhttp.cs | 2 +- .../Runtime/autogen/isteamgameserverinventory.cs | 2 +- .../Runtime/autogen/isteamgameservernetworking.cs | 2 +- .../Runtime/autogen/isteamgameservernetworkingsockets.cs | 2 +- .../Runtime/autogen/isteamgameservernetworkingutils.cs | 2 +- .../Runtime/autogen/isteamgameserverstats.cs | 2 +- .../Runtime/autogen/isteamgameserverugc.cs | 2 +- .../Runtime/autogen/isteamgameserverutils.cs | 2 +- .../Runtime/autogen/isteamhtmlsurface.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteamhttp.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs | 2 +- .../Runtime/autogen/isteaminventory.cs | 2 +- .../Runtime/autogen/isteammatchmaking.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteammusic.cs | 2 +- .../Runtime/autogen/isteammusicremote.cs | 2 +- .../Runtime/autogen/isteamnetworking.cs | 2 +- .../Runtime/autogen/isteamnetworkingmessages.cs | 2 +- .../Runtime/autogen/isteamnetworkingsockets.cs | 2 +- .../Runtime/autogen/isteamnetworkingutils.cs | 2 +- .../Runtime/autogen/isteamparentalsettings.cs | 2 +- .../Runtime/autogen/isteamremoteplay.cs | 2 +- .../Runtime/autogen/isteamremotestorage.cs | 2 +- .../Runtime/autogen/isteamscreenshots.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs | 2 +- .../Runtime/autogen/isteamunifiedmessages.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteamuser.cs | 2 +- .../Runtime/autogen/isteamuserstats.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteamvideo.cs | 2 +- .../Runtime/types/MatchmakingTypes/gameserveritem_t.cs | 2 +- .../Runtime/types/MatchmakingTypes/servernetadr_t.cs | 2 +- .../Runtime/types/SteamClient/SteamAPIWarningMessageHook_t.cs | 2 +- .../types/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs | 2 +- .../types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs | 2 +- .../Runtime/types/SteamClientPublic/CGameID.cs | 2 +- .../Runtime/types/SteamClientPublic/CSteamID.cs | 2 +- .../Runtime/types/SteamClientPublic/HAuthTicket.cs | 2 +- .../types/SteamDatagramTickets/SteamDatagramHostedAddress.cs | 2 +- .../SteamDatagramTickets/SteamDatagramRelayAuthTicket.cs | 2 +- .../Runtime/types/SteamFriends/FriendsGroupID_t.cs | 2 +- .../Runtime/types/SteamHTMLSurface/HHTMLBrowser.cs | 2 +- .../Runtime/types/SteamHTTP/HTTPCookieContainerHandle.cs | 2 +- .../Runtime/types/SteamHTTP/HTTPRequestHandle.cs | 2 +- .../Runtime/types/SteamInput/InputActionSetHandle_t.cs | 2 +- .../Runtime/types/SteamInput/InputAnalogActionHandle_t.cs | 2 +- .../Runtime/types/SteamInput/InputDigitalActionHandle_t.cs | 2 +- .../Runtime/types/SteamInput/InputHandle_t.cs | 2 +- .../types/SteamInput/SteamInputActionEventCallbackPointer.cs | 2 +- .../Runtime/types/SteamInput/SteamInputActionEvent_t.cs | 2 +- .../Runtime/types/SteamInventory/SteamInventoryResult_t.cs | 2 +- .../types/SteamInventory/SteamInventoryUpdateHandle_t.cs | 2 +- .../Runtime/types/SteamInventory/SteamItemDef_t.cs | 2 +- .../Runtime/types/SteamInventory/SteamItemInstanceID_t.cs | 2 +- .../Runtime/types/SteamMatchmaking/HServerListRequest.cs | 2 +- .../Runtime/types/SteamMatchmaking/HServerQuery.cs | 2 +- .../Runtime/types/SteamNetworking/SNetListenSocket_t.cs | 2 +- .../Runtime/types/SteamNetworking/SNetSocket_t.cs | 2 +- .../ISteamNetworkingConnectionSignaling.cs | 2 +- .../ISteamNetworkingSignalingRecvContext.cs | 2 +- .../FSteamNetworkingSocketsDebugOutput.cs | 2 +- .../Runtime/types/SteamNetworkingTypes/HSteamListenSocket.cs | 2 +- .../Runtime/types/SteamNetworkingTypes/HSteamNetConnection.cs | 2 +- .../Runtime/types/SteamNetworkingTypes/HSteamNetPollGroup.cs | 2 +- .../SteamNetworkingTypes/SteamNetworkingConfigValue_t.cs | 2 +- .../types/SteamNetworkingTypes/SteamNetworkingErrMsg.cs | 2 +- .../types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs | 2 +- .../types/SteamNetworkingTypes/SteamNetworkingIdentity.cs | 2 +- .../types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs | 2 +- .../types/SteamNetworkingTypes/SteamNetworkingMicroseconds.cs | 2 +- .../types/SteamNetworkingTypes/SteamNetworkingPOPID.cs | 2 +- .../Runtime/types/SteamRemotePlay/RemotePlaySessionID_t.cs | 2 +- .../Runtime/types/SteamRemoteStorage/PublishedFileId_t.cs | 2 +- .../types/SteamRemoteStorage/PublishedFileUpdateHandle_t.cs | 2 +- .../types/SteamRemoteStorage/UGCFileWriteStreamHandle_t.cs | 2 +- .../Runtime/types/SteamRemoteStorage/UGCHandle_t.cs | 2 +- .../Runtime/types/SteamScreenshots/ScreenshotHandle.cs | 2 +- .../Runtime/types/SteamTypes/AccountID_t.cs | 2 +- .../Runtime/types/SteamTypes/AppId_t.cs | 2 +- .../Runtime/types/SteamTypes/DepotId_t.cs | 2 +- .../Runtime/types/SteamTypes/PartyBeaconID_t.cs | 2 +- .../Runtime/types/SteamTypes/RTime32.cs | 2 +- .../Runtime/types/SteamTypes/SteamAPICall_t.cs | 2 +- .../Runtime/types/SteamTypes/SteamIPAddress_t.cs | 2 +- .../Runtime/types/SteamUGC/UGCQueryHandle_t.cs | 2 +- .../Runtime/types/SteamUGC/UGCUpdateHandle_t.cs | 2 +- .../types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs | 2 +- .../Runtime/types/SteamUserStats/SteamLeaderboardEntries_t.cs | 2 +- .../Runtime/types/SteamUserStats/SteamLeaderboard_t.cs | 2 +- .../Runtime/types/Steam_api_common/HSteamPipe.cs | 2 +- .../Runtime/types/Steam_api_common/HSteamUser.cs | 2 +- 115 files changed, 116 insertions(+), 116 deletions(-) diff --git a/CodeGen/LICENSE.txt b/CodeGen/LICENSE.txt index a237de10..d6384bce 100644 --- a/CodeGen/LICENSE.txt +++ b/CodeGen/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2013-2019 Riley Labrecque +Copyright (c) 2013-2021 Riley Labrecque Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/CodeGen/templates/header.txt b/CodeGen/templates/header.txt index 65aef1af..12c4a136 100644 --- a/CodeGen/templates/header.txt +++ b/CodeGen/templates/header.txt @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/CodeGen/templates/nativemethods.txt b/CodeGen/templates/nativemethods.txt index 338a1cc8..aa56dcf0 100644 --- a/CodeGen/templates/nativemethods.txt +++ b/CodeGen/templates/nativemethods.txt @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/LICENSE.txt b/LICENSE.txt index 71e8f887..d6384bce 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2013-2020 Riley Labrecque +Copyright (c) 2013-2021 Riley Labrecque Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Standalone/Properties/AssemblyInfo.cs b/Standalone/Properties/AssemblyInfo.cs index 425ad42f..1c4859f1 100644 --- a/Standalone/Properties/AssemblyInfo.cs +++ b/Standalone/Properties/AssemblyInfo.cs @@ -9,7 +9,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Riley Labrecque")] [assembly: AssemblyProduct("Steamworks.NET")] -[assembly: AssemblyCopyright("Copyright © Riley Labrecque 2013-2019")] +[assembly: AssemblyCopyright("Copyright © Riley Labrecque 2013-2021")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -24,7 +24,7 @@ // Version information for an assembly consists of the following four values: // // Major Version -// Minor Version +// Minor Version // Build Number // Revision // diff --git a/com.rlabrecque.steamworks.net/Editor/RedistCopy.cs b/com.rlabrecque.steamworks.net/Editor/RedistCopy.cs index 3c7a1953..9eebe598 100644 --- a/com.rlabrecque.steamworks.net/Editor/RedistCopy.cs +++ b/com.rlabrecque.steamworks.net/Editor/RedistCopy.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. #if !(UNITY_STANDALONE_WIN || UNITY_STANDALONE_LINUX || UNITY_STANDALONE_OSX || STEAMWORKS_WIN || STEAMWORKS_LIN_OSX) diff --git a/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs b/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs index 2b730948..997b5ca4 100644 --- a/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs +++ b/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. using UnityEngine; diff --git a/com.rlabrecque.steamworks.net/Runtime/CallbackDispatcher.cs b/com.rlabrecque.steamworks.net/Runtime/CallbackDispatcher.cs index 9fb5de3a..b44d9100 100644 --- a/com.rlabrecque.steamworks.net/Runtime/CallbackDispatcher.cs +++ b/com.rlabrecque.steamworks.net/Runtime/CallbackDispatcher.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/CallbackIdentity.cs b/com.rlabrecque.steamworks.net/Runtime/CallbackIdentity.cs index 3ca3e16b..30e47146 100644 --- a/com.rlabrecque.steamworks.net/Runtime/CallbackIdentity.cs +++ b/com.rlabrecque.steamworks.net/Runtime/CallbackIdentity.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/ISteamMatchmakingResponses.cs b/com.rlabrecque.steamworks.net/Runtime/ISteamMatchmakingResponses.cs index 8943b70a..d1b6d57b 100644 --- a/com.rlabrecque.steamworks.net/Runtime/ISteamMatchmakingResponses.cs +++ b/com.rlabrecque.steamworks.net/Runtime/ISteamMatchmakingResponses.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/InteropHelp.cs b/com.rlabrecque.steamworks.net/Runtime/InteropHelp.cs index ad305e32..8a4ef0d3 100644 --- a/com.rlabrecque.steamworks.net/Runtime/InteropHelp.cs +++ b/com.rlabrecque.steamworks.net/Runtime/InteropHelp.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/Packsize.cs b/com.rlabrecque.steamworks.net/Runtime/Packsize.cs index 1d9d1109..5340069e 100644 --- a/com.rlabrecque.steamworks.net/Runtime/Packsize.cs +++ b/com.rlabrecque.steamworks.net/Runtime/Packsize.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/Steam.cs b/com.rlabrecque.steamworks.net/Runtime/Steam.cs index e457c771..0fae754e 100644 --- a/com.rlabrecque.steamworks.net/Runtime/Steam.cs +++ b/com.rlabrecque.steamworks.net/Runtime/Steam.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/Version.cs b/com.rlabrecque.steamworks.net/Runtime/Version.cs index 65bb8d40..9001f4f8 100644 --- a/com.rlabrecque.steamworks.net/Runtime/Version.cs +++ b/com.rlabrecque.steamworks.net/Runtime/Version.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs index 9575b9ff..26865ac5 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs index 88fa3273..4b732965 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs index 2d4ddeda..3231d35e 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs index 71247ce9..008494e8 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs index 0b18701f..58526cf8 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapplist.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapplist.cs index 262bf8c8..922406d3 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapplist.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapplist.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapps.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapps.cs index 38a62faa..b7f61bbb 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapps.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapps.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamclient.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamclient.cs index 23e66a2d..f5ab6eff 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamclient.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamclient.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamfriends.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamfriends.cs index aa766a4a..69f179a8 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamfriends.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamfriends.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserver.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserver.cs index f6af7f2b..61aeb9e4 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserver.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserver.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverclient.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverclient.cs index 26dd4376..738cbdbf 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverclient.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverclient.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverhttp.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverhttp.cs index 63deaffa..94fc1b50 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverhttp.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverhttp.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverinventory.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverinventory.cs index 2a9dc1ab..f74fb329 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverinventory.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverinventory.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworking.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworking.cs index f6e884d7..64c8d7c8 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworking.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworking.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs index 91644435..a55872e0 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs @@ -1,6 +1,6 @@ #define STEAMNETWORKINGSOCKETS_ENABLE_SDR // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs index 0a830cc1..37dcdc1c 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs @@ -1,6 +1,6 @@ #define STEAMNETWORKINGSOCKETS_ENABLE_SDR // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverstats.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverstats.cs index 2aad90fe..0f7944a9 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverstats.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverstats.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs index 85f4c7d8..fb315933 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs index a65bf302..031436cc 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamhtmlsurface.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamhtmlsurface.cs index f8d584cd..65b68100 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamhtmlsurface.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamhtmlsurface.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamhttp.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamhttp.cs index 2953227d..e7ff7d52 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamhttp.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamhttp.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs index e1ad7bbc..3680b9dd 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminventory.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminventory.cs index 29fcc391..a50acced 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminventory.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminventory.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteammatchmaking.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteammatchmaking.cs index 1ec7c372..caa424b3 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteammatchmaking.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteammatchmaking.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteammusic.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteammusic.cs index 23c7800e..762e45c9 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteammusic.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteammusic.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteammusicremote.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteammusicremote.cs index 54bfa3f3..b8068435 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteammusicremote.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteammusicremote.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworking.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworking.cs index 467ba04d..60e2c769 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworking.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworking.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingmessages.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingmessages.cs index ff35c500..5c8e7bc7 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingmessages.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingmessages.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs index c892a223..d9f469ba 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs @@ -1,6 +1,6 @@ #define STEAMNETWORKINGSOCKETS_ENABLE_SDR // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs index 06ee5eeb..813c3aeb 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs @@ -1,6 +1,6 @@ #define STEAMNETWORKINGSOCKETS_ENABLE_SDR // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamparentalsettings.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamparentalsettings.cs index b1f8cf30..f19e6768 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamparentalsettings.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamparentalsettings.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremoteplay.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremoteplay.cs index 56746842..fe49627c 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremoteplay.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremoteplay.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremotestorage.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremotestorage.cs index a7c23f4d..de90c78f 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremotestorage.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremotestorage.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamscreenshots.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamscreenshots.cs index 766fb0d8..d4f8c085 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamscreenshots.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamscreenshots.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs index 2ad523af..43069b33 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamunifiedmessages.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamunifiedmessages.cs index 1ac74a56..004f31ec 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamunifiedmessages.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamunifiedmessages.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuser.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuser.cs index 4a4db5e4..12e20cbb 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuser.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuser.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuserstats.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuserstats.cs index a8e36f61..ef4f648f 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuserstats.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuserstats.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs index 87577658..11347ed7 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamvideo.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamvideo.cs index 61f8d723..df6fed60 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamvideo.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamvideo.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/MatchmakingTypes/gameserveritem_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/MatchmakingTypes/gameserveritem_t.cs index f3c46f7a..cb6d49c7 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/MatchmakingTypes/gameserveritem_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/MatchmakingTypes/gameserveritem_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/MatchmakingTypes/servernetadr_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/MatchmakingTypes/servernetadr_t.cs index b5230c65..7d0705ae 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/MatchmakingTypes/servernetadr_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/MatchmakingTypes/servernetadr_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPIWarningMessageHook_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPIWarningMessageHook_t.cs index 2bec7bf6..63303997 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPIWarningMessageHook_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPIWarningMessageHook_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs index 88687643..2660c453 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs index 1ac74a56..004f31ec 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/CGameID.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/CGameID.cs index 7cfd423c..5cd42697 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/CGameID.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/CGameID.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/CSteamID.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/CSteamID.cs index 2666162f..a8e4db35 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/CSteamID.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/CSteamID.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/HAuthTicket.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/HAuthTicket.cs index c0f37eb2..08454d76 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/HAuthTicket.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/HAuthTicket.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamDatagramTickets/SteamDatagramHostedAddress.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamDatagramTickets/SteamDatagramHostedAddress.cs index 573668df..04031d14 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamDatagramTickets/SteamDatagramHostedAddress.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamDatagramTickets/SteamDatagramHostedAddress.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamDatagramTickets/SteamDatagramRelayAuthTicket.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamDatagramTickets/SteamDatagramRelayAuthTicket.cs index 24c153ea..89d155e4 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamDatagramTickets/SteamDatagramRelayAuthTicket.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamDatagramTickets/SteamDatagramRelayAuthTicket.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamFriends/FriendsGroupID_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamFriends/FriendsGroupID_t.cs index 3b71fad8..e50e4687 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamFriends/FriendsGroupID_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamFriends/FriendsGroupID_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamHTMLSurface/HHTMLBrowser.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamHTMLSurface/HHTMLBrowser.cs index 5b474f19..ae4a1fae 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamHTMLSurface/HHTMLBrowser.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamHTMLSurface/HHTMLBrowser.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamHTTP/HTTPCookieContainerHandle.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamHTTP/HTTPCookieContainerHandle.cs index 874a742a..ffa82cd3 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamHTTP/HTTPCookieContainerHandle.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamHTTP/HTTPCookieContainerHandle.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamHTTP/HTTPRequestHandle.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamHTTP/HTTPRequestHandle.cs index 5198e324..ba5ca7cd 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamHTTP/HTTPRequestHandle.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamHTTP/HTTPRequestHandle.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputActionSetHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputActionSetHandle_t.cs index b76fec6c..02837ca3 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputActionSetHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputActionSetHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputAnalogActionHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputAnalogActionHandle_t.cs index cce02bd6..3b2f7c69 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputAnalogActionHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputAnalogActionHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputDigitalActionHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputDigitalActionHandle_t.cs index 24fc11d8..b2b30bfc 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputDigitalActionHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputDigitalActionHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputHandle_t.cs index 742aee26..13387b98 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEventCallbackPointer.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEventCallbackPointer.cs index 931e22ac..82abd1d5 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEventCallbackPointer.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEventCallbackPointer.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs index c60cfc8d..8716f908 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamInventoryResult_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamInventoryResult_t.cs index 534663b8..44536cf7 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamInventoryResult_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamInventoryResult_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamInventoryUpdateHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamInventoryUpdateHandle_t.cs index 474b905e..769ffd01 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamInventoryUpdateHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamInventoryUpdateHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamItemDef_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamItemDef_t.cs index b9ee213b..5027509b 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamItemDef_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamItemDef_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamItemInstanceID_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamItemInstanceID_t.cs index b180d04f..c0c0f3ed 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamItemInstanceID_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamItemInstanceID_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamMatchmaking/HServerListRequest.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamMatchmaking/HServerListRequest.cs index ab741b13..06040e53 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamMatchmaking/HServerListRequest.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamMatchmaking/HServerListRequest.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamMatchmaking/HServerQuery.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamMatchmaking/HServerQuery.cs index b764a9db..ac02ed0e 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamMatchmaking/HServerQuery.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamMatchmaking/HServerQuery.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworking/SNetListenSocket_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworking/SNetListenSocket_t.cs index 331a70cc..88619dab 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworking/SNetListenSocket_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworking/SNetListenSocket_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworking/SNetSocket_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworking/SNetSocket_t.cs index ceeb3215..37da3bbd 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworking/SNetSocket_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworking/SNetSocket_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingSockets/ISteamNetworkingConnectionSignaling.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingSockets/ISteamNetworkingConnectionSignaling.cs index c7905dba..2e14bb4f 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingSockets/ISteamNetworkingConnectionSignaling.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingSockets/ISteamNetworkingConnectionSignaling.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingSockets/ISteamNetworkingSignalingRecvContext.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingSockets/ISteamNetworkingSignalingRecvContext.cs index a76c5922..6c6d622e 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingSockets/ISteamNetworkingSignalingRecvContext.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingSockets/ISteamNetworkingSignalingRecvContext.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/FSteamNetworkingSocketsDebugOutput.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/FSteamNetworkingSocketsDebugOutput.cs index f7399c89..052f4711 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/FSteamNetworkingSocketsDebugOutput.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/FSteamNetworkingSocketsDebugOutput.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamListenSocket.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamListenSocket.cs index 446b2568..5ba1584e 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamListenSocket.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamListenSocket.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamNetConnection.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamNetConnection.cs index 8b0feef8..0c979cca 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamNetConnection.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamNetConnection.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamNetPollGroup.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamNetPollGroup.cs index a26ce481..b72c12af 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamNetPollGroup.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamNetPollGroup.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingConfigValue_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingConfigValue_t.cs index 4b6753f2..98b124d5 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingConfigValue_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingConfigValue_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingErrMsg.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingErrMsg.cs index 2fae69ec..13796817 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingErrMsg.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingErrMsg.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs index f1c1adca..af87dab4 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs index 56276e8c..c982b0b4 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs index 31b5f843..e348c726 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMicroseconds.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMicroseconds.cs index b6f0d75b..a7a1a2c5 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMicroseconds.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMicroseconds.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingPOPID.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingPOPID.cs index 5724cd11..ec30439e 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingPOPID.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingPOPID.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemotePlay/RemotePlaySessionID_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemotePlay/RemotePlaySessionID_t.cs index b2984a3c..aa671f0c 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemotePlay/RemotePlaySessionID_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemotePlay/RemotePlaySessionID_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/PublishedFileId_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/PublishedFileId_t.cs index 6ac76bb4..561ec92f 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/PublishedFileId_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/PublishedFileId_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/PublishedFileUpdateHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/PublishedFileUpdateHandle_t.cs index 02f2e17a..4274aaf0 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/PublishedFileUpdateHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/PublishedFileUpdateHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/UGCFileWriteStreamHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/UGCFileWriteStreamHandle_t.cs index e13ced5c..56a83a6b 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/UGCFileWriteStreamHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/UGCFileWriteStreamHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/UGCHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/UGCHandle_t.cs index 14e59609..2c6bab58 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/UGCHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/UGCHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamScreenshots/ScreenshotHandle.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamScreenshots/ScreenshotHandle.cs index 3758398a..297f44d0 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamScreenshots/ScreenshotHandle.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamScreenshots/ScreenshotHandle.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AccountID_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AccountID_t.cs index e30f3794..9d904809 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AccountID_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AccountID_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AppId_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AppId_t.cs index d128b306..defb9c11 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AppId_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AppId_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/DepotId_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/DepotId_t.cs index 70eb8d91..bf4a6c33 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/DepotId_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/DepotId_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/PartyBeaconID_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/PartyBeaconID_t.cs index dea9dd19..c13063c6 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/PartyBeaconID_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/PartyBeaconID_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/RTime32.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/RTime32.cs index 93def41a..44881226 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/RTime32.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/RTime32.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SteamAPICall_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SteamAPICall_t.cs index 706530e8..1888300d 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SteamAPICall_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SteamAPICall_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SteamIPAddress_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SteamIPAddress_t.cs index 86f0e22f..984cdcaa 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SteamIPAddress_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SteamIPAddress_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamUGC/UGCQueryHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamUGC/UGCQueryHandle_t.cs index 21b04136..b1682965 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamUGC/UGCQueryHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamUGC/UGCQueryHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamUGC/UGCUpdateHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamUGC/UGCUpdateHandle_t.cs index f2de08a9..2fb85ff0 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamUGC/UGCUpdateHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamUGC/UGCUpdateHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs index 1ac74a56..004f31ec 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamUserStats/SteamLeaderboardEntries_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamUserStats/SteamLeaderboardEntries_t.cs index 40050d30..b2539a18 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamUserStats/SteamLeaderboardEntries_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamUserStats/SteamLeaderboardEntries_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamUserStats/SteamLeaderboard_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamUserStats/SteamLeaderboard_t.cs index b2a7777c..232c1577 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamUserStats/SteamLeaderboard_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamUserStats/SteamLeaderboard_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/Steam_api_common/HSteamPipe.cs b/com.rlabrecque.steamworks.net/Runtime/types/Steam_api_common/HSteamPipe.cs index 12b0cefe..2d24a8ca 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/Steam_api_common/HSteamPipe.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/Steam_api_common/HSteamPipe.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/Steam_api_common/HSteamUser.cs b/com.rlabrecque.steamworks.net/Runtime/types/Steam_api_common/HSteamUser.cs index 0a011105..4e894f98 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/Steam_api_common/HSteamUser.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/Steam_api_common/HSteamUser.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2019 Riley Labrecque +// Copyright (c) 2013-2021 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. From 96da919bc428724b15f394bc7c0a5ef487a7fefd Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 7 Nov 2021 14:18:31 -0800 Subject: [PATCH 12/55] CodeGen: Generate directly into com.rlabrecque.steamworks.net/Runtime --- CodeGen/constants.py | 4 ++-- CodeGen/enums.py | 4 ++-- CodeGen/interfaces.py | 6 +++--- CodeGen/output_dummy_files.py | 6 +++--- CodeGen/structs.py | 6 +++--- CodeGen/typedefs.py | 13 +++---------- 6 files changed, 16 insertions(+), 23 deletions(-) diff --git a/CodeGen/constants.py b/CodeGen/constants.py index 1add96bb..21f25af7 100644 --- a/CodeGen/constants.py +++ b/CodeGen/constants.py @@ -139,7 +139,7 @@ def __init__(self, name, value, type_, precomments, comment, spacing): def main(parser): try: - os.makedirs("autogen/") + os.makedirs("../com.rlabrecque.steamworks.net/Runtime/autogen/") except OSError: pass @@ -150,7 +150,7 @@ def main(parser): lines.append("//" + precomment) lines.append("public const " + constant.type + " " + constant.name + constant.spacing + "= " + constant.value + ";" + constant.comment) - with open("autogen/SteamConstants.cs", "wb") as out: + with open("../com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs", "wb") as out: with open("templates/header.txt", "r") as f: out.write(bytes(f.read(), "utf-8")) out.write(bytes("namespace Steamworks {\n", "utf-8")) diff --git a/CodeGen/enums.py b/CodeGen/enums.py index 8fad1f22..e15bac69 100644 --- a/CodeGen/enums.py +++ b/CodeGen/enums.py @@ -49,7 +49,7 @@ def main(parser): try: - os.makedirs("autogen/") + os.makedirs("../com.rlabrecque.steamworks.net/Runtime/autogen/") except OSError: pass @@ -105,7 +105,7 @@ def main(parser): lines.append("\t}") lines.append("") - with open("autogen/SteamEnums.cs", "wb") as out: + with open("../com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs", "wb") as out: with open("templates/header.txt", "r") as f: out.write(bytes(f.read(), "utf-8")) out.write(bytes("using Flags = System.FlagsAttribute;\n\n", "utf-8")) diff --git a/CodeGen/interfaces.py b/CodeGen/interfaces.py index 8328e219..73664be6 100644 --- a/CodeGen/interfaces.py +++ b/CodeGen/interfaces.py @@ -499,7 +499,7 @@ def main(parser): try: - os.makedirs("autogen/") + os.makedirs("../com.rlabrecque.steamworks.net/Runtime/autogen/") except OSError: pass @@ -512,7 +512,7 @@ def main(parser): for f in parser.files: parse(f) - with open("autogen/NativeMethods.cs", "wb") as out: + with open("../com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs", "wb") as out: #out.write(bytes(HEADER, "utf-8")) with open("templates/nativemethods.txt", "r") as f: out.write(bytes(f.read(), "utf-8")) @@ -534,7 +534,7 @@ def parse(f): parse_interface(f, interface) if g_Output: - with open('autogen/' + os.path.splitext(f.name)[0] + '.cs', 'wb') as out: + with open('../com.rlabrecque.steamworks.net/Runtime/autogen/' + os.path.splitext(f.name)[0] + '.cs', 'wb') as out: if f.name in ["isteamnetworkingutils.h", "isteamnetworkingsockets.h", "isteamgameservernetworkingutils.h", "isteamgameservernetworkingsockets.h"]: out.write(bytes("#define STEAMNETWORKINGSOCKETS_ENABLE_SDR\n", "utf-8")) out.write(bytes(HEADER, "utf-8")) diff --git a/CodeGen/output_dummy_files.py b/CodeGen/output_dummy_files.py index 193b763f..b729e4ba 100644 --- a/CodeGen/output_dummy_files.py +++ b/CodeGen/output_dummy_files.py @@ -6,9 +6,9 @@ """ def main(): list_of_files = ( - ("autogen", "isteamunifiedmessages.cs"), - ("types/SteamUnifiedMessages", "ClientUnifiedMessageHandle.cs"), - ("types/SteamClient", "SteamAPI_PostAPIResultInProcess_t.cs"), + ("../com.rlabrecque.steamworks.net/Runtime/autogen", "isteamunifiedmessages.cs"), + ("../com.rlabrecque.steamworks.net/Runtime/types/SteamUnifiedMessages", "ClientUnifiedMessageHandle.cs"), + ("../com.rlabrecque.steamworks.net/Runtime/types/SteamClient", "SteamAPI_PostAPIResultInProcess_t.cs"), ) for f in list_of_files: diff --git a/CodeGen/structs.py b/CodeGen/structs.py index e05f0609..efc1a2d5 100644 --- a/CodeGen/structs.py +++ b/CodeGen/structs.py @@ -99,7 +99,7 @@ def main(parser): try: - os.makedirs("autogen/") + os.makedirs("../com.rlabrecque.steamworks.net/Runtime/autogen/") except OSError: pass @@ -111,7 +111,7 @@ def main(parser): for callback in f.callbacks: callbacklines.extend(parse(callback)) - with open("autogen/SteamStructs.cs", "wb") as out: + with open("../com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs", "wb") as out: with open("templates/header.txt", "r") as f: out.write(bytes(f.read(), "utf-8")) out.write(bytes("namespace Steamworks {\n", "utf-8")) @@ -120,7 +120,7 @@ def main(parser): out.write(bytes("}\n\n", "utf-8")) out.write(bytes("#endif // !DISABLESTEAMWORKS\n", "utf-8")) - with open("autogen/SteamCallbacks.cs", "wb") as out: + with open("../com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs", "wb") as out: with open("templates/header.txt", "r") as f: out.write(bytes(f.read(), "utf-8")) out.write(bytes("namespace Steamworks {\n", "utf-8")) diff --git a/CodeGen/typedefs.py b/CodeGen/typedefs.py index 0cce1ba3..24403e1f 100644 --- a/CodeGen/typedefs.py +++ b/CodeGen/typedefs.py @@ -1,7 +1,5 @@ import os import sys -import errno -import shutil from collections import OrderedDict from SteamworksParser import steamworksparser @@ -148,11 +146,6 @@ def main(parser): - try: - shutil.rmtree("types/") - except FileNotFoundError: - pass - with open("templates/header.txt", "r") as f: HEADER = f.read() @@ -161,7 +154,7 @@ def main(parser): for root, directories, filenames in os.walk('CustomTypes/'): for filename in filenames: - outputdir = "types/" + root[len('CustomTypes/'):] + outputdir = "../com.rlabrecque.steamworks.net/Runtime/types/" + root[len('CustomTypes/'):] try: os.makedirs(outputdir) except OSError: @@ -204,11 +197,11 @@ def main(parser): foldername = g_PrettyFilenames.get(foldername, foldername) try: - os.makedirs("types/" + foldername) + os.makedirs("../com.rlabrecque.steamworks.net/Runtime/types/" + foldername) except OSError: pass - with open("types/" + foldername + "/" + t.name + ".cs", "wb") as out: + with open("../com.rlabrecque.steamworks.net/Runtime/types/" + foldername + "/" + t.name + ".cs", "wb") as out: out.write(bytes(HEADER, "utf-8")) out.write(bytes(ourtemplate, "utf-8")) From fec45d69ef7f045d07b4b881a1a90e3ae90bf78d Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 7 Nov 2021 14:25:13 -0800 Subject: [PATCH 13/55] CodeGen: Remove output_dummy_files.py --- CodeGen/Steamworks.NET_CodeGen.py | 2 -- CodeGen/output_dummy_files.py | 29 ------------------- .../Runtime/autogen/isteamunifiedmessages.cs | 20 ------------- .../autogen/isteamunifiedmessages.cs.meta | 11 ------- .../SteamAPI_PostAPIResultInProcess_t.cs | 20 ------------- .../SteamAPI_PostAPIResultInProcess_t.cs.meta | 11 ------- .../ClientUnifiedMessageHandle.cs | 20 ------------- .../ClientUnifiedMessageHandle.cs.meta | 11 ------- 8 files changed, 124 deletions(-) delete mode 100644 CodeGen/output_dummy_files.py delete mode 100644 com.rlabrecque.steamworks.net/Runtime/autogen/isteamunifiedmessages.cs delete mode 100644 com.rlabrecque.steamworks.net/Runtime/autogen/isteamunifiedmessages.cs.meta delete mode 100644 com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs delete mode 100644 com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs.meta delete mode 100644 com.rlabrecque.steamworks.net/Runtime/types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs delete mode 100644 com.rlabrecque.steamworks.net/Runtime/types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs.meta diff --git a/CodeGen/Steamworks.NET_CodeGen.py b/CodeGen/Steamworks.NET_CodeGen.py index 72a25fa9..0fadc90f 100644 --- a/CodeGen/Steamworks.NET_CodeGen.py +++ b/CodeGen/Steamworks.NET_CodeGen.py @@ -5,7 +5,6 @@ import enums import structs import typedefs -import output_dummy_files def main(): if len(sys.argv) == 2: @@ -25,7 +24,6 @@ def main(): enums.main(___parser) structs.main(___parser) typedefs.main(___parser) - output_dummy_files.main() if __name__ == "__main__": main() diff --git a/CodeGen/output_dummy_files.py b/CodeGen/output_dummy_files.py deleted file mode 100644 index b729e4ba..00000000 --- a/CodeGen/output_dummy_files.py +++ /dev/null @@ -1,29 +0,0 @@ -import os -import sys - -""" -Outputs empty files when Valve removes interfaces so that people upgrading don't have old bad data. -""" -def main(): - list_of_files = ( - ("../com.rlabrecque.steamworks.net/Runtime/autogen", "isteamunifiedmessages.cs"), - ("../com.rlabrecque.steamworks.net/Runtime/types/SteamUnifiedMessages", "ClientUnifiedMessageHandle.cs"), - ("../com.rlabrecque.steamworks.net/Runtime/types/SteamClient", "SteamAPI_PostAPIResultInProcess_t.cs"), - ) - - for f in list_of_files: - try: - os.makedirs(f[0]) - except OSError: - pass - - with open(os.path.join(f[0], f[1]), "wb") as out: - with open("templates/header.txt", "r") as f: - out.write(bytes(f.read(), "utf-8")) - out.write(bytes("#endif // !DISABLESTEAMWORKS\n", "utf-8")) - out.write(bytes("\n", "utf-8")) - out.write(bytes("// This file is no longer needed. Valve has removed the functionality.\n", "utf-8")) - out.write(bytes("// We continue to generate this file to provide a small amount of backwards compatability.\n", "utf-8")) - -if __name__ == "__main__": - main() diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamunifiedmessages.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamunifiedmessages.cs deleted file mode 100644 index 004f31ec..00000000 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamunifiedmessages.cs +++ /dev/null @@ -1,20 +0,0 @@ -// This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque -// Please see the included LICENSE.txt for additional information. - -// This file is automatically generated. -// Changes to this file will be reverted when you update Steamworks.NET - -#if !(UNITY_STANDALONE_WIN || UNITY_STANDALONE_LINUX || UNITY_STANDALONE_OSX || STEAMWORKS_WIN || STEAMWORKS_LIN_OSX) - #define DISABLESTEAMWORKS -#endif - -#if !DISABLESTEAMWORKS - -using System.Runtime.InteropServices; -using IntPtr = System.IntPtr; - -#endif // !DISABLESTEAMWORKS - -// This file is no longer needed. Valve has removed the functionality. -// We continue to generate this file to provide a small amount of backwards compatability. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamunifiedmessages.cs.meta b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamunifiedmessages.cs.meta deleted file mode 100644 index c02f9864..00000000 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamunifiedmessages.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f5ef2bdd247581f428bc766a1f45eeb8 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs deleted file mode 100644 index 004f31ec..00000000 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs +++ /dev/null @@ -1,20 +0,0 @@ -// This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque -// Please see the included LICENSE.txt for additional information. - -// This file is automatically generated. -// Changes to this file will be reverted when you update Steamworks.NET - -#if !(UNITY_STANDALONE_WIN || UNITY_STANDALONE_LINUX || UNITY_STANDALONE_OSX || STEAMWORKS_WIN || STEAMWORKS_LIN_OSX) - #define DISABLESTEAMWORKS -#endif - -#if !DISABLESTEAMWORKS - -using System.Runtime.InteropServices; -using IntPtr = System.IntPtr; - -#endif // !DISABLESTEAMWORKS - -// This file is no longer needed. Valve has removed the functionality. -// We continue to generate this file to provide a small amount of backwards compatability. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs.meta b/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs.meta deleted file mode 100644 index 1c3f0253..00000000 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_PostAPIResultInProcess_t.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a94afc0efc98cd249ba9fe5363755f3d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs deleted file mode 100644 index 004f31ec..00000000 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs +++ /dev/null @@ -1,20 +0,0 @@ -// This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque -// Please see the included LICENSE.txt for additional information. - -// This file is automatically generated. -// Changes to this file will be reverted when you update Steamworks.NET - -#if !(UNITY_STANDALONE_WIN || UNITY_STANDALONE_LINUX || UNITY_STANDALONE_OSX || STEAMWORKS_WIN || STEAMWORKS_LIN_OSX) - #define DISABLESTEAMWORKS -#endif - -#if !DISABLESTEAMWORKS - -using System.Runtime.InteropServices; -using IntPtr = System.IntPtr; - -#endif // !DISABLESTEAMWORKS - -// This file is no longer needed. Valve has removed the functionality. -// We continue to generate this file to provide a small amount of backwards compatability. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs.meta b/com.rlabrecque.steamworks.net/Runtime/types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs.meta deleted file mode 100644 index 3eae8291..00000000 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamUnifiedMessages/ClientUnifiedMessageHandle.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 392713f5eba8b5642b7048d8b6e32df7 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: From ef90d1679ea2b1e4d0107a5ebe7e74ce4ecf2f5f Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 7 Nov 2021 14:40:06 -0800 Subject: [PATCH 14/55] CodeGen: Clean up the directory and README a bit --- CodeGen/README.md | 15 ++++++++++++--- CodeGen/Steamworks.NET_CodeGen.py | 21 +++++++-------------- CodeGen/src/__init__.py | 0 CodeGen/{ => src}/constants.py | 0 CodeGen/{ => src}/enums.py | 0 CodeGen/{ => src}/interfaces.py | 0 CodeGen/{ => src}/structs.py | 0 CodeGen/{ => src}/typedefs.py | 0 8 files changed, 19 insertions(+), 17 deletions(-) create mode 100644 CodeGen/src/__init__.py rename CodeGen/{ => src}/constants.py (100%) rename CodeGen/{ => src}/enums.py (100%) rename CodeGen/{ => src}/interfaces.py (100%) rename CodeGen/{ => src}/structs.py (100%) rename CodeGen/{ => src}/typedefs.py (100%) diff --git a/CodeGen/README.md b/CodeGen/README.md index df539853..f9b9741f 100644 --- a/CodeGen/README.md +++ b/CodeGen/README.md @@ -1,4 +1,13 @@ -Steamworks.NET -======= +Steamworks.NET CodeGen +====================== -The special sauce that generates the autogen/ folder of [Steamworks.NET](https://github.com/rlabrecque/Steamworks.NET) +This is special sauce that generates the autogen/ and types/ directories. + +It uses [SteamworksParser](https://github.com/rlabrecque/SteamworksParser) to parse the Steamworks C++ header files, then converts them to C#. + +Usage +----- + +1. If necessary update the files in `steam/` +2. Open a command prompt to the CodeGen directory. (The script must be run from this directory or the relative paths will be broken.) +3. Run `python3 Steamworks.NET_CodeGen.py`, preferably on a linux based OS to generate proper line endings. (I use WSL for this.) diff --git a/CodeGen/Steamworks.NET_CodeGen.py b/CodeGen/Steamworks.NET_CodeGen.py index 0fadc90f..40918e96 100644 --- a/CodeGen/Steamworks.NET_CodeGen.py +++ b/CodeGen/Steamworks.NET_CodeGen.py @@ -1,23 +1,16 @@ import sys from SteamworksParser import steamworksparser -import interfaces -import constants -import enums -import structs -import typedefs +from src import interfaces +from src import constants +from src import enums +from src import structs +from src import typedefs def main(): - if len(sys.argv) == 2: - path = sys.argv[1] - elif len(sys.argv) == 1: - path = "steam" - else: - print("Usage: Steamworks.NET_CodeGen.py [path/to/sdk/public/steam]") - print(" If a path is not included then a steam/ folder must exist within the cwd.") - return + steam_path = "steam/" steamworksparser.Settings.fake_gameserver_interfaces = True - ___parser = steamworksparser.parse(path) + ___parser = steamworksparser.parse(steam_path) interfaces.main(___parser) constants.main(___parser) diff --git a/CodeGen/src/__init__.py b/CodeGen/src/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/CodeGen/constants.py b/CodeGen/src/constants.py similarity index 100% rename from CodeGen/constants.py rename to CodeGen/src/constants.py diff --git a/CodeGen/enums.py b/CodeGen/src/enums.py similarity index 100% rename from CodeGen/enums.py rename to CodeGen/src/enums.py diff --git a/CodeGen/interfaces.py b/CodeGen/src/interfaces.py similarity index 100% rename from CodeGen/interfaces.py rename to CodeGen/src/interfaces.py diff --git a/CodeGen/structs.py b/CodeGen/src/structs.py similarity index 100% rename from CodeGen/structs.py rename to CodeGen/src/structs.py diff --git a/CodeGen/typedefs.py b/CodeGen/src/typedefs.py similarity index 100% rename from CodeGen/typedefs.py rename to CodeGen/src/typedefs.py From 8dc3a972409dd331068e4e66f3dfdc8199d2d11b Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 7 Nov 2021 14:43:19 -0800 Subject: [PATCH 15/55] CodeGen: Move CustomTypes to templates/custom_types --- CodeGen/src/typedefs.py | 4 ++-- .../custom_types}/MatchmakingTypes/gameserveritem_t.cs | 0 .../custom_types}/MatchmakingTypes/servernetadr_t.cs | 0 .../custom_types}/SteamClient/SteamAPIWarningMessageHook_t.cs | 0 .../SteamClient/SteamAPI_CheckCallbackRegistered_t.cs | 0 .../custom_types}/SteamClientPublic/CGameID.cs | 0 .../custom_types}/SteamClientPublic/CSteamID.cs | 0 .../SteamDatagramTickets/SteamDatagramHostedAddress.cs | 0 .../SteamDatagramTickets/SteamDatagramRelayAuthTicket.cs | 0 .../SteamInput/SteamInputActionEventCallbackPointer.cs | 0 .../custom_types}/SteamInput/SteamInputActionEvent_t.cs | 0 .../ISteamNetworkingConnectionSignaling.cs | 0 .../ISteamNetworkingSignalingRecvContext.cs | 0 .../FSteamNetworkingSocketsDebugOutput.cs | 0 .../SteamNetworkingTypes/SteamNetworkingConfigValue_t.cs | 0 .../SteamNetworkingTypes/SteamNetworkingErrMsg.cs | 0 .../SteamNetworkingTypes/SteamNetworkingIPAddr.cs | 0 .../SteamNetworkingTypes/SteamNetworkingIdentity.cs | 0 .../SteamNetworkingTypes/SteamNetworkingMessage_t.cs | 0 .../custom_types}/SteamTypes/SteamIPAddress_t.cs | 0 20 files changed, 2 insertions(+), 2 deletions(-) rename CodeGen/{CustomTypes => templates/custom_types}/MatchmakingTypes/gameserveritem_t.cs (100%) rename CodeGen/{CustomTypes => templates/custom_types}/MatchmakingTypes/servernetadr_t.cs (100%) rename CodeGen/{CustomTypes => templates/custom_types}/SteamClient/SteamAPIWarningMessageHook_t.cs (100%) rename CodeGen/{CustomTypes => templates/custom_types}/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs (100%) rename CodeGen/{CustomTypes => templates/custom_types}/SteamClientPublic/CGameID.cs (100%) rename CodeGen/{CustomTypes => templates/custom_types}/SteamClientPublic/CSteamID.cs (100%) rename CodeGen/{CustomTypes => templates/custom_types}/SteamDatagramTickets/SteamDatagramHostedAddress.cs (100%) rename CodeGen/{CustomTypes => templates/custom_types}/SteamDatagramTickets/SteamDatagramRelayAuthTicket.cs (100%) rename CodeGen/{CustomTypes => templates/custom_types}/SteamInput/SteamInputActionEventCallbackPointer.cs (100%) rename CodeGen/{CustomTypes => templates/custom_types}/SteamInput/SteamInputActionEvent_t.cs (100%) rename CodeGen/{CustomTypes => templates/custom_types}/SteamNetworkingSockets/ISteamNetworkingConnectionSignaling.cs (100%) rename CodeGen/{CustomTypes => templates/custom_types}/SteamNetworkingSockets/ISteamNetworkingSignalingRecvContext.cs (100%) rename CodeGen/{CustomTypes => templates/custom_types}/SteamNetworkingTypes/FSteamNetworkingSocketsDebugOutput.cs (100%) rename CodeGen/{CustomTypes => templates/custom_types}/SteamNetworkingTypes/SteamNetworkingConfigValue_t.cs (100%) rename CodeGen/{CustomTypes => templates/custom_types}/SteamNetworkingTypes/SteamNetworkingErrMsg.cs (100%) rename CodeGen/{CustomTypes => templates/custom_types}/SteamNetworkingTypes/SteamNetworkingIPAddr.cs (100%) rename CodeGen/{CustomTypes => templates/custom_types}/SteamNetworkingTypes/SteamNetworkingIdentity.cs (100%) rename CodeGen/{CustomTypes => templates/custom_types}/SteamNetworkingTypes/SteamNetworkingMessage_t.cs (100%) rename CodeGen/{CustomTypes => templates/custom_types}/SteamTypes/SteamIPAddress_t.cs (100%) diff --git a/CodeGen/src/typedefs.py b/CodeGen/src/typedefs.py index 24403e1f..207b2b5b 100644 --- a/CodeGen/src/typedefs.py +++ b/CodeGen/src/typedefs.py @@ -152,9 +152,9 @@ def main(parser): with open("templates/typetemplate.txt", "r") as f: template = f.read() - for root, directories, filenames in os.walk('CustomTypes/'): + for root, directories, filenames in os.walk('templates/custom_types/'): for filename in filenames: - outputdir = "../com.rlabrecque.steamworks.net/Runtime/types/" + root[len('CustomTypes/'):] + outputdir = "../com.rlabrecque.steamworks.net/Runtime/types/" + root[len('templates/custom_types/'):] try: os.makedirs(outputdir) except OSError: diff --git a/CodeGen/CustomTypes/MatchmakingTypes/gameserveritem_t.cs b/CodeGen/templates/custom_types/MatchmakingTypes/gameserveritem_t.cs similarity index 100% rename from CodeGen/CustomTypes/MatchmakingTypes/gameserveritem_t.cs rename to CodeGen/templates/custom_types/MatchmakingTypes/gameserveritem_t.cs diff --git a/CodeGen/CustomTypes/MatchmakingTypes/servernetadr_t.cs b/CodeGen/templates/custom_types/MatchmakingTypes/servernetadr_t.cs similarity index 100% rename from CodeGen/CustomTypes/MatchmakingTypes/servernetadr_t.cs rename to CodeGen/templates/custom_types/MatchmakingTypes/servernetadr_t.cs diff --git a/CodeGen/CustomTypes/SteamClient/SteamAPIWarningMessageHook_t.cs b/CodeGen/templates/custom_types/SteamClient/SteamAPIWarningMessageHook_t.cs similarity index 100% rename from CodeGen/CustomTypes/SteamClient/SteamAPIWarningMessageHook_t.cs rename to CodeGen/templates/custom_types/SteamClient/SteamAPIWarningMessageHook_t.cs diff --git a/CodeGen/CustomTypes/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs b/CodeGen/templates/custom_types/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs similarity index 100% rename from CodeGen/CustomTypes/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs rename to CodeGen/templates/custom_types/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs diff --git a/CodeGen/CustomTypes/SteamClientPublic/CGameID.cs b/CodeGen/templates/custom_types/SteamClientPublic/CGameID.cs similarity index 100% rename from CodeGen/CustomTypes/SteamClientPublic/CGameID.cs rename to CodeGen/templates/custom_types/SteamClientPublic/CGameID.cs diff --git a/CodeGen/CustomTypes/SteamClientPublic/CSteamID.cs b/CodeGen/templates/custom_types/SteamClientPublic/CSteamID.cs similarity index 100% rename from CodeGen/CustomTypes/SteamClientPublic/CSteamID.cs rename to CodeGen/templates/custom_types/SteamClientPublic/CSteamID.cs diff --git a/CodeGen/CustomTypes/SteamDatagramTickets/SteamDatagramHostedAddress.cs b/CodeGen/templates/custom_types/SteamDatagramTickets/SteamDatagramHostedAddress.cs similarity index 100% rename from CodeGen/CustomTypes/SteamDatagramTickets/SteamDatagramHostedAddress.cs rename to CodeGen/templates/custom_types/SteamDatagramTickets/SteamDatagramHostedAddress.cs diff --git a/CodeGen/CustomTypes/SteamDatagramTickets/SteamDatagramRelayAuthTicket.cs b/CodeGen/templates/custom_types/SteamDatagramTickets/SteamDatagramRelayAuthTicket.cs similarity index 100% rename from CodeGen/CustomTypes/SteamDatagramTickets/SteamDatagramRelayAuthTicket.cs rename to CodeGen/templates/custom_types/SteamDatagramTickets/SteamDatagramRelayAuthTicket.cs diff --git a/CodeGen/CustomTypes/SteamInput/SteamInputActionEventCallbackPointer.cs b/CodeGen/templates/custom_types/SteamInput/SteamInputActionEventCallbackPointer.cs similarity index 100% rename from CodeGen/CustomTypes/SteamInput/SteamInputActionEventCallbackPointer.cs rename to CodeGen/templates/custom_types/SteamInput/SteamInputActionEventCallbackPointer.cs diff --git a/CodeGen/CustomTypes/SteamInput/SteamInputActionEvent_t.cs b/CodeGen/templates/custom_types/SteamInput/SteamInputActionEvent_t.cs similarity index 100% rename from CodeGen/CustomTypes/SteamInput/SteamInputActionEvent_t.cs rename to CodeGen/templates/custom_types/SteamInput/SteamInputActionEvent_t.cs diff --git a/CodeGen/CustomTypes/SteamNetworkingSockets/ISteamNetworkingConnectionSignaling.cs b/CodeGen/templates/custom_types/SteamNetworkingSockets/ISteamNetworkingConnectionSignaling.cs similarity index 100% rename from CodeGen/CustomTypes/SteamNetworkingSockets/ISteamNetworkingConnectionSignaling.cs rename to CodeGen/templates/custom_types/SteamNetworkingSockets/ISteamNetworkingConnectionSignaling.cs diff --git a/CodeGen/CustomTypes/SteamNetworkingSockets/ISteamNetworkingSignalingRecvContext.cs b/CodeGen/templates/custom_types/SteamNetworkingSockets/ISteamNetworkingSignalingRecvContext.cs similarity index 100% rename from CodeGen/CustomTypes/SteamNetworkingSockets/ISteamNetworkingSignalingRecvContext.cs rename to CodeGen/templates/custom_types/SteamNetworkingSockets/ISteamNetworkingSignalingRecvContext.cs diff --git a/CodeGen/CustomTypes/SteamNetworkingTypes/FSteamNetworkingSocketsDebugOutput.cs b/CodeGen/templates/custom_types/SteamNetworkingTypes/FSteamNetworkingSocketsDebugOutput.cs similarity index 100% rename from CodeGen/CustomTypes/SteamNetworkingTypes/FSteamNetworkingSocketsDebugOutput.cs rename to CodeGen/templates/custom_types/SteamNetworkingTypes/FSteamNetworkingSocketsDebugOutput.cs diff --git a/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingConfigValue_t.cs b/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingConfigValue_t.cs similarity index 100% rename from CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingConfigValue_t.cs rename to CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingConfigValue_t.cs diff --git a/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingErrMsg.cs b/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingErrMsg.cs similarity index 100% rename from CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingErrMsg.cs rename to CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingErrMsg.cs diff --git a/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingIPAddr.cs b/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs similarity index 100% rename from CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingIPAddr.cs rename to CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs diff --git a/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingIdentity.cs b/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIdentity.cs similarity index 100% rename from CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingIdentity.cs rename to CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIdentity.cs diff --git a/CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingMessage_t.cs b/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs similarity index 100% rename from CodeGen/CustomTypes/SteamNetworkingTypes/SteamNetworkingMessage_t.cs rename to CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs diff --git a/CodeGen/CustomTypes/SteamTypes/SteamIPAddress_t.cs b/CodeGen/templates/custom_types/SteamTypes/SteamIPAddress_t.cs similarity index 100% rename from CodeGen/CustomTypes/SteamTypes/SteamIPAddress_t.cs rename to CodeGen/templates/custom_types/SteamTypes/SteamIPAddress_t.cs From 4dafa26fbd032c83c1970298cc93d66f47edfb59 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 7 Nov 2021 17:58:03 -0800 Subject: [PATCH 16/55] Bump version to 20.0.0 --- README.md | 15 ++++++++------- Standalone/README.md | 4 ++-- com.rlabrecque.steamworks.net/README.md | 2 +- com.rlabrecque.steamworks.net/Runtime/Version.cs | 2 +- com.rlabrecque.steamworks.net/package.json | 2 +- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index bb5697df..9b2defa9 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ _Steamworks.NET_ is a C# Wrapper for Valve's Steamworks API, it can be used eith _Steamworks.NET_ was designed to be as close as possible to the original C++ API, as such the documentation provided from Valve largely covers usage of _Steamworks.NET_. Niceties and C# Idioms can be easily implemented on top of _Steamworks.NET_. -_Steamworks.NET_ currently fully supports Windows, OSX, and Linux in both 32 and 64bit varieties. Currently building against Steamworks SDK 1.52. +_Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.52. * Author: [Riley Labrecque](https://github.com/rlabrecque) * License: [MIT](http://www.opensource.org/licenses/mit-license.php) @@ -18,18 +18,19 @@ _Steamworks.NET_ currently fully supports Windows, OSX, and Linux in both 32 and ## Installation -### Package Manager +You can find the installation instructions [here](http://steamworks.github.io/installation/). + +### Unity Package Manager + +Unity Package Manager support is still fairly new but you can use it like so: 1. Open the Package Manager 2. Click the "+" (plus) button located in the upper left of the window 3. Select the "Add package from git URL..." option 4. Enter the following URL: `https://github.com/rlabrecque/Steamworks.NET.git?path=/com.rlabrecque.steamworks.net` -6. Click the "Add" button and wait several seconds for the system to download and install the Steamworks.NET package from GitHub. - -### Traditional - -You can find the installation instructions [here](http://steamworks.github.io/installation/). +5. Click the "Add" button and wait several seconds for the system to download and install the Steamworks.NET package from GitHub. +6. Optionally: Manually download and import the [SteamManager](https://github.com/rlabrecque/Steamworks.NET-SteamManager/blob/master/SteamManager.cs) MonoBehavior which contains a starting point for using the Steamworks API in your project. ## Samples diff --git a/Standalone/README.md b/Standalone/README.md index 7253d07d..a50e4616 100644 --- a/Standalone/README.md +++ b/Standalone/README.md @@ -1,5 +1,5 @@ -Steamworks.NET -======= +Steamworks.NET Standalone +============== This is the project file for the standalone version of _Steamworks.NET_. This is designed to be used with non Unity applications. diff --git a/com.rlabrecque.steamworks.net/README.md b/com.rlabrecque.steamworks.net/README.md index d6f0e156..6455cf66 100644 --- a/com.rlabrecque.steamworks.net/README.md +++ b/com.rlabrecque.steamworks.net/README.md @@ -5,7 +5,7 @@ _Steamworks.NET_ is a C# Wrapper for Valve's Steamworks API, it can be used eith _Steamworks.NET_ was designed to be as close as possible to the original C++ API, as such the documentation provided from Valve largely covers usage of _Steamworks.NET_. Niceties and C# Idioms can be easily implemented on top of _Steamworks.NET_. -_Steamworks.NET_ currently fully supports Windows, OSX, and Linux in both 32 and 64bit varieties. Currently building against Steamworks SDK 1.52. +_Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.52. * Author: [Riley Labrecque](https://github.com/rlabrecque) * License: [MIT](http://www.opensource.org/licenses/mit-license.php) diff --git a/com.rlabrecque.steamworks.net/Runtime/Version.cs b/com.rlabrecque.steamworks.net/Runtime/Version.cs index 9001f4f8..2195ce57 100644 --- a/com.rlabrecque.steamworks.net/Runtime/Version.cs +++ b/com.rlabrecque.steamworks.net/Runtime/Version.cs @@ -13,7 +13,7 @@ namespace Steamworks { public static class Version { - public const string SteamworksNETVersion = "15.0.1"; + public const string SteamworksNETVersion = "20.0.0"; public const string SteamworksSDKVersion = "1.52"; public const string SteamAPIDLLVersion = "06.75.97.18"; public const int SteamAPIDLLSize = 260840; diff --git a/com.rlabrecque.steamworks.net/package.json b/com.rlabrecque.steamworks.net/package.json index 40612ae2..b61ebcf0 100644 --- a/com.rlabrecque.steamworks.net/package.json +++ b/com.rlabrecque.steamworks.net/package.json @@ -1,7 +1,7 @@ { "name": "com.rlabrecque.steamworks.net", "displayName": "Steamworks.NET", - "version": "15.0.1-preview.1", + "version": "20.0.0", "unity": "2019.4", "author": { "name": "Riley Labrecque", From deb9eb3a2875c9c34d7f5ec8486468833ee4b526 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 12 Dec 2021 10:37:34 -0800 Subject: [PATCH 17/55] Remove unused SteamUnifiedMessages.meta (Fixes #464) --- .../Runtime/types/SteamUnifiedMessages.meta | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 com.rlabrecque.steamworks.net/Runtime/types/SteamUnifiedMessages.meta diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamUnifiedMessages.meta b/com.rlabrecque.steamworks.net/Runtime/types/SteamUnifiedMessages.meta deleted file mode 100644 index 23044e80..00000000 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamUnifiedMessages.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 99b26d065c093fa439fa8aab4d34594d -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: From 0461aa7bc0f5a925f26ef4b18d8d3d6f36f1477e Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 12 Dec 2021 10:37:56 -0800 Subject: [PATCH 18/55] CodeGen: Remove extra "import sys" --- CodeGen/Steamworks.NET_CodeGen.py | 1 - 1 file changed, 1 deletion(-) diff --git a/CodeGen/Steamworks.NET_CodeGen.py b/CodeGen/Steamworks.NET_CodeGen.py index 40918e96..660dcd35 100644 --- a/CodeGen/Steamworks.NET_CodeGen.py +++ b/CodeGen/Steamworks.NET_CodeGen.py @@ -1,4 +1,3 @@ -import sys from SteamworksParser import steamworksparser from src import interfaces from src import constants From 27b1a1561c9b9ace7de1f8da17454d29547a63f7 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Thu, 23 Dec 2021 15:41:13 -0800 Subject: [PATCH 19/55] Update to Steamworks SDK 1.53 --- CodeGen/SteamworksParser | 2 +- CodeGen/src/interfaces.py | 14 +- CodeGen/steam/isteamcontroller.h | 75 +++ CodeGen/steam/isteamhttp.h | 6 +- CodeGen/steam/isteaminput.h | 117 +++- CodeGen/steam/isteaminventory.h | 12 +- CodeGen/steam/isteamnetworkingmessages.h | 12 +- CodeGen/steam/isteamnetworkingsockets.h | 240 ++++++++- CodeGen/steam/isteamnetworkingutils.h | 74 ++- CodeGen/steam/isteamremotestorage.h | 58 +- CodeGen/steam/isteamugc.h | 42 +- CodeGen/steam/isteamutils.h | 3 + CodeGen/steam/isteamvideo.h | 4 +- CodeGen/steam/steam_api.json | 509 +++++++++++++++--- CodeGen/steam/steam_api_flat.h | 195 ++++++- CodeGen/steam/steam_api_internal.h | 39 +- CodeGen/steam/steamclientpublic.h | 1 + CodeGen/steam/steamnetworkingfakeip.h | 135 +++++ CodeGen/steam/steamnetworkingtypes.h | 140 +++-- .../SteamInput/SteamInputActionEvent_t.cs | 8 +- .../SteamNetworkingIPAddr.cs | 11 + .../SteamNetworkingIdentity.cs | 19 + .../SteamNetworkingMessage_t.cs | 14 +- CodeGen/templates/nativemethods.txt | 20 + README.md | 2 +- .../Plugins/libsteam_api.so | Bin 415926 -> 416413 bytes .../steam_api.bundle/Contents/Info.plist | 2 +- .../Contents/MacOS/libsteam_api.dylib | Bin 608768 -> 609584 bytes .../Plugins/steam_api.dll | Bin 260840 -> 263080 bytes .../Plugins/steam_api64.dll | Bin 290536 -> 295336 bytes com.rlabrecque.steamworks.net/README.md | 2 +- .../Runtime/Version.cs | 10 +- .../Runtime/autogen/NativeMethods.cs | 81 ++- .../Runtime/autogen/SteamCallbacks.cs | 266 +++++---- .../Runtime/autogen/SteamConstants.cs | 61 +-- .../Runtime/autogen/SteamEnums.cs | 137 ++++- .../Runtime/autogen/SteamStructs.cs | 58 +- .../isteamgameservernetworkingsockets.cs | 246 ++++++++- .../isteamgameservernetworkingutils.cs | 68 ++- .../Runtime/autogen/isteamgameserverugc.cs | 10 + .../Runtime/autogen/isteamgameserverutils.cs | 8 + .../autogen/isteamnetworkingmessages.cs | 12 +- .../autogen/isteamnetworkingsockets.cs | 246 ++++++++- .../Runtime/autogen/isteamnetworkingutils.cs | 68 ++- .../Runtime/autogen/isteamugc.cs | 10 + .../Runtime/autogen/isteamutils.cs | 8 + .../SteamInput/SteamInputActionEvent_t.cs | 8 +- .../SteamNetworkingIPAddr.cs | 11 + .../SteamNetworkingIdentity.cs | 19 + .../SteamNetworkingMessage_t.cs | 14 +- 50 files changed, 2577 insertions(+), 520 deletions(-) create mode 100644 CodeGen/steam/steamnetworkingfakeip.h diff --git a/CodeGen/SteamworksParser b/CodeGen/SteamworksParser index 59e460e3..27010524 160000 --- a/CodeGen/SteamworksParser +++ b/CodeGen/SteamworksParser @@ -1 +1 @@ -Subproject commit 59e460e330800f3e5bc756c655b9dd1857b00430 +Subproject commit 270105244015cce1030ca094026466c58e69dbf3 diff --git a/CodeGen/src/interfaces.py b/CodeGen/src/interfaces.py index 73664be6..4203e29e 100644 --- a/CodeGen/src/interfaces.py +++ b/CodeGen/src/interfaces.py @@ -17,6 +17,7 @@ "ISteamGameServerNetworkingConnectionCustomSignaling", "ISteamNetworkingCustomSignalingRecvContext", "ISteamGameServerNetworkingCustomSignalingRecvContext", + "ISteamNetworkingFakeUDPPort", ) g_TypeDict = { @@ -80,7 +81,7 @@ # SteamNetworkingTypes which are stubbed "SteamDatagramGameCoordinatorServerLogin *": "IntPtr", - + "ISteamNetworkingFakeUDPPort *": "IntPtr", } g_WrapperArgsTypeDict = { @@ -425,6 +426,15 @@ "pMessages": "SteamNetworkingMessage_t[]", "pOutMessageNumberOrResult": "long[]", }, + + "ISteamNetworkingSockets_GetConnectionRealTimeStatus": { + "pStatus": "ref SteamNetConnectionRealTimeStatus_t", + "pLanes": "ref SteamNetConnectionRealTimeLaneStatus_t", + }, + "ISteamGameServerNetworkingSockets_GetConnectionRealTimeStatus": { + "pStatus": "ref SteamNetConnectionRealTimeStatus_t", + "pLanes": "ref SteamNetConnectionRealTimeLaneStatus_t", + }, } g_SpecialWrapperArgsDict = { @@ -779,7 +789,7 @@ def parse_args(strEntryPoint, args): for arg in args: argtype = g_TypeDict.get(arg.type, arg.type) if argtype.endswith("*"): - potentialtype = arg.type.rstrip("*").rstrip() + potentialtype = arg.type.rstrip("*").lstrip("const ").rstrip() argtype = "out " + g_TypeDict.get(potentialtype, potentialtype) argtype = g_SpecialArgsDict.get(strEntryPoint, dict()).get(arg.name, argtype) diff --git a/CodeGen/steam/isteamcontroller.h b/CodeGen/steam/isteamcontroller.h index e041ed20..53a49e6e 100644 --- a/CodeGen/steam/isteamcontroller.h +++ b/CodeGen/steam/isteamcontroller.h @@ -373,6 +373,81 @@ enum EControllerActionOrigin k_EControllerActionOrigin_XBoxOne_RightGrip_Upper, k_EControllerActionOrigin_XBoxOne_Share, + // Added in SDK 1.53 + k_EControllerActionOrigin_SteamDeck_A, + k_EControllerActionOrigin_SteamDeck_B, + k_EControllerActionOrigin_SteamDeck_X, + k_EControllerActionOrigin_SteamDeck_Y, + k_EControllerActionOrigin_SteamDeck_L1, + k_EControllerActionOrigin_SteamDeck_R1, + k_EControllerActionOrigin_SteamDeck_Menu, + k_EControllerActionOrigin_SteamDeck_View, + k_EControllerActionOrigin_SteamDeck_LeftPad_Touch, + k_EControllerActionOrigin_SteamDeck_LeftPad_Swipe, + k_EControllerActionOrigin_SteamDeck_LeftPad_Click, + k_EControllerActionOrigin_SteamDeck_LeftPad_DPadNorth, + k_EControllerActionOrigin_SteamDeck_LeftPad_DPadSouth, + k_EControllerActionOrigin_SteamDeck_LeftPad_DPadWest, + k_EControllerActionOrigin_SteamDeck_LeftPad_DPadEast, + k_EControllerActionOrigin_SteamDeck_RightPad_Touch, + k_EControllerActionOrigin_SteamDeck_RightPad_Swipe, + k_EControllerActionOrigin_SteamDeck_RightPad_Click, + k_EControllerActionOrigin_SteamDeck_RightPad_DPadNorth, + k_EControllerActionOrigin_SteamDeck_RightPad_DPadSouth, + k_EControllerActionOrigin_SteamDeck_RightPad_DPadWest, + k_EControllerActionOrigin_SteamDeck_RightPad_DPadEast, + k_EControllerActionOrigin_SteamDeck_L2_SoftPull, + k_EControllerActionOrigin_SteamDeck_L2, + k_EControllerActionOrigin_SteamDeck_R2_SoftPull, + k_EControllerActionOrigin_SteamDeck_R2, + k_EControllerActionOrigin_SteamDeck_LeftStick_Move, + k_EControllerActionOrigin_SteamDeck_L3, + k_EControllerActionOrigin_SteamDeck_LeftStick_DPadNorth, + k_EControllerActionOrigin_SteamDeck_LeftStick_DPadSouth, + k_EControllerActionOrigin_SteamDeck_LeftStick_DPadWest, + k_EControllerActionOrigin_SteamDeck_LeftStick_DPadEast, + k_EControllerActionOrigin_SteamDeck_LeftStick_Touch, + k_EControllerActionOrigin_SteamDeck_RightStick_Move, + k_EControllerActionOrigin_SteamDeck_R3, + k_EControllerActionOrigin_SteamDeck_RightStick_DPadNorth, + k_EControllerActionOrigin_SteamDeck_RightStick_DPadSouth, + k_EControllerActionOrigin_SteamDeck_RightStick_DPadWest, + k_EControllerActionOrigin_SteamDeck_RightStick_DPadEast, + k_EControllerActionOrigin_SteamDeck_RightStick_Touch, + k_EControllerActionOrigin_SteamDeck_L4, + k_EControllerActionOrigin_SteamDeck_R4, + k_EControllerActionOrigin_SteamDeck_L5, + k_EControllerActionOrigin_SteamDeck_R5, + k_EControllerActionOrigin_SteamDeck_DPad_Move, + k_EControllerActionOrigin_SteamDeck_DPad_North, + k_EControllerActionOrigin_SteamDeck_DPad_South, + k_EControllerActionOrigin_SteamDeck_DPad_West, + k_EControllerActionOrigin_SteamDeck_DPad_East, + k_EControllerActionOrigin_SteamDeck_Gyro_Move, + k_EControllerActionOrigin_SteamDeck_Gyro_Pitch, + k_EControllerActionOrigin_SteamDeck_Gyro_Yaw, + k_EControllerActionOrigin_SteamDeck_Gyro_Roll, + k_EControllerActionOrigin_SteamDeck_Reserved1, + k_EControllerActionOrigin_SteamDeck_Reserved2, + k_EControllerActionOrigin_SteamDeck_Reserved3, + k_EControllerActionOrigin_SteamDeck_Reserved4, + k_EControllerActionOrigin_SteamDeck_Reserved5, + k_EControllerActionOrigin_SteamDeck_Reserved6, + k_EControllerActionOrigin_SteamDeck_Reserved7, + k_EControllerActionOrigin_SteamDeck_Reserved8, + k_EControllerActionOrigin_SteamDeck_Reserved9, + k_EControllerActionOrigin_SteamDeck_Reserved10, + k_EControllerActionOrigin_SteamDeck_Reserved11, + k_EControllerActionOrigin_SteamDeck_Reserved12, + k_EControllerActionOrigin_SteamDeck_Reserved13, + k_EControllerActionOrigin_SteamDeck_Reserved14, + k_EControllerActionOrigin_SteamDeck_Reserved15, + k_EControllerActionOrigin_SteamDeck_Reserved16, + k_EControllerActionOrigin_SteamDeck_Reserved17, + k_EControllerActionOrigin_SteamDeck_Reserved18, + k_EControllerActionOrigin_SteamDeck_Reserved19, + k_EControllerActionOrigin_SteamDeck_Reserved20, + k_EControllerActionOrigin_Count, // If Steam has added support for new controllers origins will go here. k_EControllerActionOrigin_MaximumPossibleValue = 32767, // Origins are currently a maximum of 16 bits. }; diff --git a/CodeGen/steam/isteamhttp.h b/CodeGen/steam/isteamhttp.h index 26a02b35..fb034ca1 100644 --- a/CodeGen/steam/isteamhttp.h +++ b/CodeGen/steam/isteamhttp.h @@ -161,7 +161,7 @@ STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamHTTP *, SteamGameServerHTTP, S struct HTTPRequestCompleted_t { - enum { k_iCallback = k_iClientHTTPCallbacks + 1 }; + enum { k_iCallback = k_iSteamHTTPCallbacks + 1 }; // Handle value for the request that has completed. HTTPRequestHandle m_hRequest; @@ -184,7 +184,7 @@ struct HTTPRequestCompleted_t struct HTTPRequestHeadersReceived_t { - enum { k_iCallback = k_iClientHTTPCallbacks + 2 }; + enum { k_iCallback = k_iSteamHTTPCallbacks + 2 }; // Handle value for the request that has received headers. HTTPRequestHandle m_hRequest; @@ -196,7 +196,7 @@ struct HTTPRequestHeadersReceived_t struct HTTPRequestDataReceived_t { - enum { k_iCallback = k_iClientHTTPCallbacks + 3 }; + enum { k_iCallback = k_iSteamHTTPCallbacks + 3 }; // Handle value for the request that has received data. HTTPRequestHandle m_hRequest; diff --git a/CodeGen/steam/isteaminput.h b/CodeGen/steam/isteaminput.h index c5c70622..1c18f033 100644 --- a/CodeGen/steam/isteaminput.h +++ b/CodeGen/steam/isteaminput.h @@ -407,6 +407,81 @@ enum EInputActionOrigin k_EInputActionOrigin_PS5_Reserved19, k_EInputActionOrigin_PS5_Reserved20, + // Added in SDK 1.53 + k_EInputActionOrigin_SteamDeck_A, + k_EInputActionOrigin_SteamDeck_B, + k_EInputActionOrigin_SteamDeck_X, + k_EInputActionOrigin_SteamDeck_Y, + k_EInputActionOrigin_SteamDeck_L1, + k_EInputActionOrigin_SteamDeck_R1, + k_EInputActionOrigin_SteamDeck_Menu, + k_EInputActionOrigin_SteamDeck_View, + k_EInputActionOrigin_SteamDeck_LeftPad_Touch, + k_EInputActionOrigin_SteamDeck_LeftPad_Swipe, + k_EInputActionOrigin_SteamDeck_LeftPad_Click, + k_EInputActionOrigin_SteamDeck_LeftPad_DPadNorth, + k_EInputActionOrigin_SteamDeck_LeftPad_DPadSouth, + k_EInputActionOrigin_SteamDeck_LeftPad_DPadWest, + k_EInputActionOrigin_SteamDeck_LeftPad_DPadEast, + k_EInputActionOrigin_SteamDeck_RightPad_Touch, + k_EInputActionOrigin_SteamDeck_RightPad_Swipe, + k_EInputActionOrigin_SteamDeck_RightPad_Click, + k_EInputActionOrigin_SteamDeck_RightPad_DPadNorth, + k_EInputActionOrigin_SteamDeck_RightPad_DPadSouth, + k_EInputActionOrigin_SteamDeck_RightPad_DPadWest, + k_EInputActionOrigin_SteamDeck_RightPad_DPadEast, + k_EInputActionOrigin_SteamDeck_L2_SoftPull, + k_EInputActionOrigin_SteamDeck_L2, + k_EInputActionOrigin_SteamDeck_R2_SoftPull, + k_EInputActionOrigin_SteamDeck_R2, + k_EInputActionOrigin_SteamDeck_LeftStick_Move, + k_EInputActionOrigin_SteamDeck_L3, + k_EInputActionOrigin_SteamDeck_LeftStick_DPadNorth, + k_EInputActionOrigin_SteamDeck_LeftStick_DPadSouth, + k_EInputActionOrigin_SteamDeck_LeftStick_DPadWest, + k_EInputActionOrigin_SteamDeck_LeftStick_DPadEast, + k_EInputActionOrigin_SteamDeck_LeftStick_Touch, + k_EInputActionOrigin_SteamDeck_RightStick_Move, + k_EInputActionOrigin_SteamDeck_R3, + k_EInputActionOrigin_SteamDeck_RightStick_DPadNorth, + k_EInputActionOrigin_SteamDeck_RightStick_DPadSouth, + k_EInputActionOrigin_SteamDeck_RightStick_DPadWest, + k_EInputActionOrigin_SteamDeck_RightStick_DPadEast, + k_EInputActionOrigin_SteamDeck_RightStick_Touch, + k_EInputActionOrigin_SteamDeck_L4, + k_EInputActionOrigin_SteamDeck_R4, + k_EInputActionOrigin_SteamDeck_L5, + k_EInputActionOrigin_SteamDeck_R5, + k_EInputActionOrigin_SteamDeck_DPad_Move, + k_EInputActionOrigin_SteamDeck_DPad_North, + k_EInputActionOrigin_SteamDeck_DPad_South, + k_EInputActionOrigin_SteamDeck_DPad_West, + k_EInputActionOrigin_SteamDeck_DPad_East, + k_EInputActionOrigin_SteamDeck_Gyro_Move, + k_EInputActionOrigin_SteamDeck_Gyro_Pitch, + k_EInputActionOrigin_SteamDeck_Gyro_Yaw, + k_EInputActionOrigin_SteamDeck_Gyro_Roll, + k_EInputActionOrigin_SteamDeck_Reserved1, + k_EInputActionOrigin_SteamDeck_Reserved2, + k_EInputActionOrigin_SteamDeck_Reserved3, + k_EInputActionOrigin_SteamDeck_Reserved4, + k_EInputActionOrigin_SteamDeck_Reserved5, + k_EInputActionOrigin_SteamDeck_Reserved6, + k_EInputActionOrigin_SteamDeck_Reserved7, + k_EInputActionOrigin_SteamDeck_Reserved8, + k_EInputActionOrigin_SteamDeck_Reserved9, + k_EInputActionOrigin_SteamDeck_Reserved10, + k_EInputActionOrigin_SteamDeck_Reserved11, + k_EInputActionOrigin_SteamDeck_Reserved12, + k_EInputActionOrigin_SteamDeck_Reserved13, + k_EInputActionOrigin_SteamDeck_Reserved14, + k_EInputActionOrigin_SteamDeck_Reserved15, + k_EInputActionOrigin_SteamDeck_Reserved16, + k_EInputActionOrigin_SteamDeck_Reserved17, + k_EInputActionOrigin_SteamDeck_Reserved18, + k_EInputActionOrigin_SteamDeck_Reserved19, + k_EInputActionOrigin_SteamDeck_Reserved20, + k_EInputActionOrigin_Count, // If Steam has added support for new controllers origins will go here. k_EInputActionOrigin_MaximumPossibleValue = 32767, // Origins are currently a maximum of 16 bits. }; @@ -480,6 +555,7 @@ enum ESteamInputType k_ESteamInputType_MobileTouch, // Steam Link App On-screen Virtual Controller k_ESteamInputType_PS3Controller, // Currently uses PS4 Origins k_ESteamInputType_PS5Controller, // Added in SDK 151 + k_ESteamInputType_SteamDeckController, // Added in SDK 153 k_ESteamInputType_Count, k_ESteamInputType_MaximumPossibleValue = 255, }; @@ -506,9 +582,24 @@ enum ESteamInputLEDFlag // These values are passed into GetGlyphPNGForActionOrigin enum ESteamInputGlyphSize { - k_ESteamInputGlyphSize_Small, - k_ESteamInputGlyphSize_Medium, - k_ESteamInputGlyphSize_Large, + k_ESteamInputGlyphSize_Small, // 32x32 pixels + k_ESteamInputGlyphSize_Medium, // 128x128 pixels + k_ESteamInputGlyphSize_Large, // 256x256 pixels + k_ESteamInputGlyphSize_Count, +}; + +enum ESteamInputGlyphStyle +{ + // Base-styles - cannot mix + ESteamInputGlyphStyle_Knockout = 0x0, // Face buttons will have colored labels/outlines on a knocked out background + // Rest of inputs will have white detail/borders on a knocked out background + ESteamInputGlyphStyle_Light = 0x1, // Black detail/borders on a white background + ESteamInputGlyphStyle_Dark = 0x2, // White detail/borders on a black background + + // Modifiers + // Default ABXY/PS equivalent glyphs have a solid fill w/ color matching the physical buttons on the device + ESteamInputGlyphStyle_NeutralColorABXY = 0x10, // ABXY Buttons will match the base style color instead of their normal associated color + ESteamInputGlyphStyle_SolidABXY = 0x20, // ABXY Buttons will have a solid fill }; enum ESteamInputActionEventType @@ -577,15 +668,17 @@ struct SteamInputActionEvent_t { InputHandle_t controllerHandle; ESteamInputActionEventType eEventType; + struct AnalogAction_t { + InputAnalogActionHandle_t actionHandle; + InputAnalogActionData_t analogActionData; + }; + struct DigitalAction_t { + InputDigitalActionHandle_t actionHandle; + InputDigitalActionData_t digitalActionData; + }; union { - struct { - InputAnalogActionHandle_t actionHandle; - InputAnalogActionData_t analogActionData; - } analogAction; - struct { - InputDigitalActionHandle_t actionHandle; - InputDigitalActionData_t digitalActionData; - } digitalAction; + AnalogAction_t analogAction; + DigitalAction_t digitalAction; }; }; @@ -804,7 +897,7 @@ class ISteamInput virtual uint16 GetSessionInputConfigurationSettings() = 0; }; -#define STEAMINPUT_INTERFACE_VERSION "SteamInput005" +#define STEAMINPUT_INTERFACE_VERSION "SteamInput006" // Global interface accessor inline ISteamInput *SteamInput(); diff --git a/CodeGen/steam/isteaminventory.h b/CodeGen/steam/isteaminventory.h index 51ecbf0e..70665920 100644 --- a/CodeGen/steam/isteaminventory.h +++ b/CodeGen/steam/isteaminventory.h @@ -372,7 +372,7 @@ STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamInventory *, SteamGameServerIn // always be exactly one callback per handle. struct SteamInventoryResultReady_t { - enum { k_iCallback = k_iClientInventoryCallbacks + 0 }; + enum { k_iCallback = k_iSteamInventoryCallbacks + 0 }; SteamInventoryResult_t m_handle; EResult m_result; }; @@ -387,7 +387,7 @@ struct SteamInventoryResultReady_t // afterwards; this is an additional notification for your convenience. struct SteamInventoryFullUpdate_t { - enum { k_iCallback = k_iClientInventoryCallbacks + 1 }; + enum { k_iCallback = k_iSteamInventoryCallbacks + 1 }; SteamInventoryResult_t m_handle; }; @@ -398,13 +398,13 @@ struct SteamInventoryFullUpdate_t // a definition update in order to process results from the server. struct SteamInventoryDefinitionUpdate_t { - enum { k_iCallback = k_iClientInventoryCallbacks + 2 }; + enum { k_iCallback = k_iSteamInventoryCallbacks + 2 }; }; // Returned struct SteamInventoryEligiblePromoItemDefIDs_t { - enum { k_iCallback = k_iClientInventoryCallbacks + 3 }; + enum { k_iCallback = k_iSteamInventoryCallbacks + 3 }; EResult m_result; CSteamID m_steamID; int m_numEligiblePromoItemDefs; @@ -414,7 +414,7 @@ struct SteamInventoryEligiblePromoItemDefIDs_t // Triggered from StartPurchase call struct SteamInventoryStartPurchaseResult_t { - enum { k_iCallback = k_iClientInventoryCallbacks + 4 }; + enum { k_iCallback = k_iSteamInventoryCallbacks + 4 }; EResult m_result; uint64 m_ulOrderID; uint64 m_ulTransID; @@ -424,7 +424,7 @@ struct SteamInventoryStartPurchaseResult_t // Triggered from RequestPrices struct SteamInventoryRequestPricesResult_t { - enum { k_iCallback = k_iClientInventoryCallbacks + 5 }; + enum { k_iCallback = k_iSteamInventoryCallbacks + 5 }; EResult m_result; char m_rgchCurrency[4]; }; diff --git a/CodeGen/steam/isteamnetworkingmessages.h b/CodeGen/steam/isteamnetworkingmessages.h index a12a32f7..a3d58aea 100644 --- a/CodeGen/steam/isteamnetworkingmessages.h +++ b/CodeGen/steam/isteamnetworkingmessages.h @@ -73,10 +73,12 @@ class ISteamNetworkingMessages /// /// Returns: /// - k_EREsultOK on success. - /// - k_EResultNoConnection will be returned if the session has failed or was closed by the peer, - /// and k_nSteamNetworkingSend_AutoRestartBrokenSession is not used. (You can use - /// GetSessionConnectionInfo to get the details.) In order to acknowledge the broken session - /// and start a new one, you must call CloseSessionWithUser + /// - k_EResultNoConnection, if the session has failed or was closed by the peer and + /// k_nSteamNetworkingSend_AutoRestartBrokenSession was not specified. (You can + /// use GetSessionConnectionInfo to get the details.) In order to acknowledge the + /// broken session and start a new one, you must call CloseSessionWithUser, or you may + /// repeat the call with k_nSteamNetworkingSend_AutoRestartBrokenSession. See + /// k_nSteamNetworkingSend_AutoRestartBrokenSession for more details. /// - See ISteamNetworkingSockets::SendMessageToConnection for more possible return values virtual EResult SendMessageToUser( const SteamNetworkingIdentity &identityRemote, const void *pubData, uint32 cubData, int nSendFlags, int nRemoteChannel ) = 0; @@ -120,7 +122,7 @@ class ISteamNetworkingMessages /// you do not need the corresponding details. Note that sessions time out after a while, /// so if a connection fails, or SendMessageToUser returns k_EResultNoConnection, you cannot wait /// indefinitely to obtain the reason for failure. - virtual ESteamNetworkingConnectionState GetSessionConnectionInfo( const SteamNetworkingIdentity &identityRemote, SteamNetConnectionInfo_t *pConnectionInfo, SteamNetworkingQuickConnectionStatus *pQuickStatus ) = 0; + virtual ESteamNetworkingConnectionState GetSessionConnectionInfo( const SteamNetworkingIdentity &identityRemote, SteamNetConnectionInfo_t *pConnectionInfo, SteamNetConnectionRealTimeStatus_t *pQuickStatus ) = 0; }; #define STEAMNETWORKINGMESSAGES_INTERFACE_VERSION "SteamNetworkingMessages002" diff --git a/CodeGen/steam/isteamnetworkingsockets.h b/CodeGen/steam/isteamnetworkingsockets.h index 1923fee7..157e12cb 100644 --- a/CodeGen/steam/isteamnetworkingsockets.h +++ b/CodeGen/steam/isteamnetworkingsockets.h @@ -8,8 +8,10 @@ #include "steam_api_common.h" struct SteamNetAuthenticationStatus_t; +struct SteamNetworkingFakeIPResult_t; class ISteamNetworkingConnectionSignaling; class ISteamNetworkingSignalingRecvContext; +class ISteamNetworkingFakeUDPPort; //----------------------------------------------------------------------------- /// Lower level networking API. @@ -204,7 +206,7 @@ class ISteamNetworkingSockets /// WARNING: Be *very careful* when using the value provided in callbacks structs. /// Callbacks are queued, and the value that you will receive in your /// callback is the userdata that was effective at the time the callback - /// was queued. There are subtle race conditions that can happen if you + /// was queued. There are subtle race conditions that can hapen if you /// don't understand this! /// /// If any incoming messages for this connection are queued, the userdata @@ -335,8 +337,21 @@ class ISteamNetworkingSockets virtual bool GetConnectionInfo( HSteamNetConnection hConn, SteamNetConnectionInfo_t *pInfo ) = 0; /// Returns a small set of information about the real-time state of the connection - /// Returns false if the connection handle is invalid, or the connection has ended. - virtual bool GetQuickConnectionStatus( HSteamNetConnection hConn, SteamNetworkingQuickConnectionStatus *pStats ) = 0; + /// and the queue status of each lane. + /// + /// - pStatus may be NULL if the information is not desired. (E.g. you are only interested + /// in the lane information.) + /// - On entry, nLanes specifies the length of the pLanes array. This may be 0 + /// if you do not wish to receive any lane data. It's OK for this to be smaller than + /// the total number of configured lanes. + /// - pLanes points to an array that will receive lane-specific info. It can be NULL + /// if this is not needed. + /// + /// Return value: + /// - k_EResultNoConnection - connection handle is invalid or connection has been closed. + /// - k_EResultInvalidParam - nLanes is bad + virtual EResult GetConnectionRealTimeStatus( HSteamNetConnection hConn, SteamNetConnectionRealTimeStatus_t *pStatus, + int nLanes, SteamNetConnectionRealTimeLaneStatus_t *pLanes ) = 0; /// Returns detailed connection stats in text format. Useful /// for dumping to a log, etc. @@ -376,6 +391,80 @@ class ISteamNetworkingSockets /// actual bound loopback port. Otherwise, the port will be zero. virtual bool CreateSocketPair( HSteamNetConnection *pOutConnection1, HSteamNetConnection *pOutConnection2, bool bUseNetworkLoopback, const SteamNetworkingIdentity *pIdentity1, const SteamNetworkingIdentity *pIdentity2 ) = 0; + /// Configure multiple outbound messages streams ("lanes") on a connection, and + /// control head-of-line blocking between them. Messages within a given lane + /// are always sent in the order they are queued, but messages from different + /// lanes may be sent out of order. Each lane has its own message number + /// sequence. The first message sent on each lane will be assigned the number 1. + /// + /// Each lane has a "priority". Lower priority lanes will only be processed + /// when all higher-priority lanes are empty. The magnitudes of the priority + /// values are not relevant, only their sort order. Higher numeric values + /// take priority over lower numeric values. + /// + /// Each lane also is assigned a weight, which controls the approximate proportion + /// of the bandwidth that will be consumed by the lane, relative to other lanes + /// of the same priority. (This is assuming the lane stays busy. An idle lane + /// does not build up "credits" to be be spent once a message is queued.) + /// This value is only meaningful as a proportion, relative to other lanes with + /// the same priority. For lanes with different priorities, the strict priority + /// order will prevail, and their weights relative to each other are not relevant. + /// Thus, if a lane has a unique priority value, the weight value for that lane is + /// not relevant. + /// + /// Example: 3 lanes, with priorities [ 0, 10, 10 ] and weights [ (NA), 20, 5 ]. + /// Messages sent on the first will always be sent first, before messages in the + /// other two lanes. Its weight value is irrelevant, since there are no other + /// lanes with priority=0. The other two lanes will share bandwidth, with the second + /// and third lanes sharing bandwidth using a ratio of approximately 4:1. + /// (The weights [ NA, 4, 1 ] would be equivalent.) + /// + /// Notes: + /// - At the time of this writing, some code has performance cost that is linear + /// in the number of lanes, so keep the number of lanes to an absolute minimum. + /// 3 or so is fine; >8 is a lot. The max number of lanes on Steam is 255, + /// which is a very large number and not recommended! If you are compiling this + /// library from source, see STEAMNETWORKINGSOCKETS_MAX_LANES.) + /// - Lane priority values may be any int. Their absolute value is not relevant, + /// only the order matters. + /// - Weights must be positive, and due to implementation details, they are restricted + /// to 16-bit values. The absolute magnitudes don't matter, just the proportions. + /// - Messages sent on a lane index other than 0 have a small overhead on the wire, + /// so for maximum wire efficiency, lane 0 should be the "most common" lane, regardless + /// of priorities or weights. + /// - A connection has a single lane by default. Calling this function with + /// nNumLanes=1 is legal, but pointless, since the priority and weight values are + /// irrelevant in that case. + /// - You may reconfigure connection lanes at any time, however reducing the number of + /// lanes is not allowed. + /// - Reconfiguring lanes might restart any bandwidth sharing balancing. Usually you + /// will call this function once, near the start of the connection, perhaps after + /// exchanging a few messages. + /// - To assign all lanes the same priority, you may use pLanePriorities=NULL. + /// - If you wish all lanes with the same priority to share bandwidth equally (or + /// if no two lanes have the same priority value, and thus priority values are + /// irrelevant), you may use pLaneWeights=NULL + /// - Priorities and weights determine the order that messages are SENT on the wire. + /// There are NO GUARANTEES on the order that messages are RECEIVED! Due to packet + /// loss, out-of-order delivery, and subtle details of packet serialization, messages + /// might still be received slightly out-of-order! The *only* strong guarantee is that + /// *reliable* messages on the *same lane* will be delivered in the order they are sent. + /// - Each host configures the lanes for the packets they send; the lanes for the flow + /// in one direction are completely unrelated to the lanes in the opposite direction. + /// + /// Return value: + /// - k_EResultNoConnection - bad hConn + /// - k_EResultInvalidParam - Invalid number of lanes, bad weights, or you tried to reduce the number of lanes + /// - k_EResultInvalidState - Connection is already dead, etc + /// + /// See also: + /// SteamNetworkingMessage_t::m_idxLane + virtual EResult ConfigureConnectionLanes( HSteamNetConnection hConn, int nNumLanes, const int *pLanePriorities, const uint16 *pLaneWeights ) = 0; + + // + // Identity and authentication + // + /// Get the identity assigned to this interface. /// E.g. on Steam, this is the user's SteamID, or for the gameserver interface, the SteamID assigned /// to the gameserver. Returns false and sets the result to an invalid identity if we don't know @@ -690,36 +779,165 @@ class ISteamNetworkingSockets /// SteamDatagram_CreateCert. virtual bool SetCertificate( const void *pCertificate, int cbCertificate, SteamNetworkingErrMsg &errMsg ) = 0; + /// Reset the identity associated with this instance. + /// Any open connections are closed. Any previous certificates, etc are discarded. + /// You can pass a specific identity that you want to use, or you can pass NULL, + /// in which case the identity will be invalid until you set it using SetCertificate + /// + /// NOTE: This function is not actually supported on Steam! It is included + /// for use on other platforms where the active user can sign out and + /// a new user can sign in. + virtual void ResetIdentity( const SteamNetworkingIdentity *pIdentity ) = 0; + + // + // Misc + // + /// Invoke all callback functions queued for this interface. /// See k_ESteamNetworkingConfig_Callback_ConnectionStatusChanged, etc /// /// You don't need to call this if you are using Steam's callback dispatch /// mechanism (SteamAPI_RunCallbacks and SteamGameserver_RunCallbacks). virtual void RunCallbacks() = 0; + + // + // "FakeIP" system. + // + // A FakeIP is essentially a temporary, arbitrary identifier that + // happens to be a valid IPv4 address. The purpose of this system is to make it + // easy to integrate with existing code that identifies hosts using IPv4 addresses. + // The FakeIP address will never actually be used to send or receive any packets + // on the Internet, it is strictly an identifier. + // + // FakeIP addresses are designed to (hopefully) pass through existing code as + // transparently as possible, while conflicting with "real" addresses that might + // be in use on networks (both the Internet and LANs) in the same code as little + // as possible. At the time this comment is being written, they come from the + // 169.254.0.0/16 range, and the port number will always be >1024. HOWEVER, + // this is subject to change! Do not make assumptions about these addresses, + // or your code might break in the future. In particular, you should use + // functions such as ISteamNetworkingUtils::IsFakeIP to determine if an IP + // address is a "fake" one used by this system. + // + + /// Begin asynchronous process of allocating a fake IPv4 address that other + /// peers can use to contact us via P2P. IP addresses returned by this + /// function are globally unique for a given appid. + /// + /// nNumPorts is the numbers of ports you wish to reserve. This is useful + /// for the same reason that listening on multiple UDP ports is useful for + /// different types of traffic. Because these allocations come from a global + /// namespace, there is a relatively strict limit on the maximum number of + /// ports you may request. (At the time of this writing, the limit is 4.) + /// The Port assignments are *not* guaranteed to have any particular order + /// or relationship! Do *not* assume they are contiguous, even though that + /// may often occur in practice. + /// + /// Returns false if a request was already in progress, true if a new request + /// was started. A SteamNetworkingFakeIPResult_t will be posted when the request + /// completes. + /// + /// For gameservers, you *must* call this after initializing the SDK but before + /// beginning login. Steam needs to know in advance that FakeIP will be used. + /// Everywhere your public IP would normally appear (such as the server browser) will be + /// replaced by the FakeIP, and the fake port at index 0. The request is actually queued + /// until the logon completes, so you must not wait until the allocation completes + /// before logging in. Except for trivial failures that can be detected locally + /// (e.g. invalid parameter), a SteamNetworkingFakeIPResult_t callback (whether success or + /// failure) will not be posted until after we have logged in. Furthermore, it is assumed + /// that FakeIP allocation is essential for your application to function, and so failure + /// will not be reported until *several* retries have been attempted. This process may + /// last several minutes. It is *highly* recommended to treat failure as fatal. + /// + /// To communicate using a connection-oriented (TCP-style) API: + /// - Server creates a listen socket using CreateListenSocketP2PFakeIP + /// - Client connects using ConnectByIPAddress, passing in the FakeIP address. + /// - The connection will behave mostly like a P2P connection. The identities + /// that appear in SteamNetConnectionInfo_t will be the FakeIP identity until + /// we know the real identity. Then it will be the real identity. If the + /// SteamNetConnectionInfo_t::m_addrRemote is valid, it will be a real IPv4 + /// address of a NAT-punched connection. Otherwise, it will not be valid. + /// + /// To communicate using an ad-hoc sendto/recv from (UDP-style) API, + /// use CreateFakeUDPPort. + virtual bool BeginAsyncRequestFakeIP( int nNumPorts ) = 0; + + /// Return info about the FakeIP and port(s) that we have been assigned, + /// if any. idxFirstPort is currently reserved and must be zero. + /// Make sure and check SteamNetworkingFakeIPResult_t::m_eResult + virtual void GetFakeIP( int idxFirstPort, SteamNetworkingFakeIPResult_t *pInfo ) = 0; + + /// Create a listen socket that will listen for P2P connections sent + /// to our FakeIP. A peer can initiate connections to this listen + /// socket by calling ConnectByIPAddress. + /// + /// idxFakePort refers to the *index* of the fake port requested, + /// not the actual port number. For example, pass 0 to refer to the + /// first port in the reservation. You must call this only after calling + /// BeginAsyncRequestFakeIP. However, you do not need to wait for the + /// request to complete before creating the listen socket. + virtual HSteamListenSocket CreateListenSocketP2PFakeIP( int idxFakePort, int nOptions, const SteamNetworkingConfigValue_t *pOptions ) = 0; + + /// If the connection was initiated using the "FakeIP" system, then we + /// we can get an IP address for the remote host. If the remote host had + /// a global FakeIP at the time the connection was established, this + /// function will return that global IP. Otherwise, a FakeIP that is + /// unique locally will be allocated from the local FakeIP address space, + /// and that will be returned. + /// + /// The allocation of local FakeIPs attempts to assign addresses in + /// a consistent manner. If multiple connections are made to the + /// same remote host, they *probably* will return the same FakeIP. + /// However, since the namespace is limited, this cannot be guaranteed. + /// + /// On failure, returns: + /// - k_EResultInvalidParam: invalid connection handle + /// - k_EResultIPNotFound: This connection wasn't made using FakeIP system + virtual EResult GetRemoteFakeIPForConnection( HSteamNetConnection hConn, SteamNetworkingIPAddr *pOutAddr ) = 0; + + /// Get an interface that can be used like a UDP port to send/receive + /// datagrams to a FakeIP address. This is intended to make it easy + /// to port existing UDP-based code to take advantage of SDR. + /// + /// idxFakeServerPort refers to the *index* of the port allocated using + /// BeginAsyncRequestFakeIP and is used to create "server" ports. You may + /// call this before the allocation has completed. However, any attempts + /// to send packets will fail until the allocation has succeeded. When + /// the peer receives packets sent from this interface, the from address + /// of the packet will be the globally-unique FakeIP. If you call this + /// function multiple times and pass the same (nonnegative) fake port index, + /// the same object will be returned, and this object is not reference counted. + /// + /// To create a "client" port (e.g. the equivalent of an ephemeral UDP port) + /// pass -1. In this case, a distinct object will be returned for each call. + /// When the peer receives packets sent from this interface, the peer will + /// assign a FakeIP from its own locally-controlled namespace. + virtual ISteamNetworkingFakeUDPPort *CreateFakeUDPPort( int idxFakeServerPort ) = 0; + protected: ~ISteamNetworkingSockets(); // Silence some warnings }; -#define STEAMNETWORKINGSOCKETS_INTERFACE_VERSION "SteamNetworkingSockets009" +#define STEAMNETWORKINGSOCKETS_INTERFACE_VERSION "SteamNetworkingSockets012" // Global accessors // Using standalone lib #ifdef STEAMNETWORKINGSOCKETS_STANDALONELIB // Standalone lib. - static_assert( STEAMNETWORKINGSOCKETS_INTERFACE_VERSION[24] == '9', "Version mismatch" ); - STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingSockets *SteamNetworkingSockets_LibV9(); - inline ISteamNetworkingSockets *SteamNetworkingSockets_Lib() { return SteamNetworkingSockets_LibV9(); } + static_assert( STEAMNETWORKINGSOCKETS_INTERFACE_VERSION[24] == '2', "Version mismatch" ); + STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingSockets *SteamNetworkingSockets_LibV12(); + inline ISteamNetworkingSockets *SteamNetworkingSockets_Lib() { return SteamNetworkingSockets_LibV12(); } // If running in context of steam, we also define a gameserver instance. #ifdef STEAMNETWORKINGSOCKETS_STEAM - STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingSockets *SteamGameServerNetworkingSockets_LibV9(); - inline ISteamNetworkingSockets *SteamGameServerNetworkingSockets_Lib() { return SteamGameServerNetworkingSockets_LibV9(); } + STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingSockets *SteamGameServerNetworkingSockets_LibV12(); + inline ISteamNetworkingSockets *SteamGameServerNetworkingSockets_Lib() { return SteamGameServerNetworkingSockets_LibV12(); } #endif #ifndef STEAMNETWORKINGSOCKETS_STEAMAPI - inline ISteamNetworkingSockets *SteamNetworkingSockets() { return SteamNetworkingSockets_LibV9(); } + inline ISteamNetworkingSockets *SteamNetworkingSockets() { return SteamNetworkingSockets_LibV12(); } #ifdef STEAMNETWORKINGSOCKETS_STEAM - inline ISteamNetworkingSockets *SteamGameServerNetworkingSockets() { return SteamGameServerNetworkingSockets_LibV9(); } + inline ISteamNetworkingSockets *SteamGameServerNetworkingSockets() { return SteamGameServerNetworkingSockets_LibV12(); } #endif #endif #endif diff --git a/CodeGen/steam/isteamnetworkingutils.h b/CodeGen/steam/isteamnetworkingutils.h index 7c441960..626efedf 100644 --- a/CodeGen/steam/isteamnetworkingutils.h +++ b/CodeGen/steam/isteamnetworkingutils.h @@ -241,6 +241,32 @@ class ISteamNetworkingUtils /// Steamworks calls from within the handler. virtual void SetDebugOutputFunction( ESteamNetworkingSocketsDebugOutputType eDetailLevel, FSteamNetworkingSocketsDebugOutput pfnFunc ) = 0; + // + // Fake IP + // + // Useful for interfacing with code that assumes peers are identified using an IPv4 address + // + + /// Return true if an IPv4 address is one that might be used as a "fake" one. + /// This function is fast; it just does some logical tests on the IP and does + /// not need to do any lookup operations. + inline bool IsFakeIPv4( uint32 nIPv4 ) { return GetIPv4FakeIPType( nIPv4 ) > k_ESteamNetworkingFakeIPType_NotFake; } + virtual ESteamNetworkingFakeIPType GetIPv4FakeIPType( uint32 nIPv4 ) = 0; + + /// Get the real identity associated with a given FakeIP. + /// + /// On failure, returns: + /// - k_EResultInvalidParam: the IP is not a FakeIP. + /// - k_EResultNoMatch: we don't recognize that FakeIP and don't know the corresponding identity. + /// + /// FakeIP's used by active connections, or the FakeIPs assigned to local identities, + /// will always work. FakeIPs for recently destroyed connections will continue to + /// return results for a little while, but not forever. At some point, we will forget + /// FakeIPs to save space. It's reasonably safe to assume that you can read back the + /// real identity of a connection very soon after it is destroyed. But do not wait + /// indefinitely. + virtual EResult GetRealIdentityForFakeIP( const SteamNetworkingIPAddr &fakeIP, SteamNetworkingIdentity *pOutRealIdentity ) = 0; + // // Set and get configuration values, see ESteamNetworkingConfigValue for individual descriptions. // @@ -263,6 +289,7 @@ class ISteamNetworkingUtils bool SetGlobalCallback_SteamNetConnectionStatusChanged( FnSteamNetConnectionStatusChanged fnCallback ); bool SetGlobalCallback_SteamNetAuthenticationStatusChanged( FnSteamNetAuthenticationStatusChanged fnCallback ); bool SetGlobalCallback_SteamRelayNetworkStatusChanged( FnSteamRelayNetworkStatusChanged fnCallback ); + bool SetGlobalCallback_FakeIPResult( FnSteamNetworkingFakeIPResult fnCallback ); bool SetGlobalCallback_MessagesSessionRequest( FnSteamNetworkingMessagesSessionRequest fnCallback ); bool SetGlobalCallback_MessagesSessionFailed( FnSteamNetworkingMessagesSessionFailed fnCallback ); @@ -295,41 +322,48 @@ class ISteamNetworkingUtils virtual ESteamNetworkingGetConfigValueResult GetConfigValue( ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj, ESteamNetworkingConfigDataType *pOutDataType, void *pResult, size_t *cbResult ) = 0; - /// Returns info about a configuration value. Returns false if the value does not exist. - /// pOutNextValue can be used to iterate through all of the known configuration values. - /// (Use GetFirstConfigValue() to begin the iteration, will be k_ESteamNetworkingConfig_Invalid on the last value) - /// Any of the output parameters can be NULL if you do not need that information. - /// - /// See k_ESteamNetworkingConfig_EnumerateDevVars for some more info about "dev" variables, - /// which are usually excluded from the set of variables enumerated using this function. - virtual bool GetConfigValueInfo( ESteamNetworkingConfigValue eValue, const char **pOutName, ESteamNetworkingConfigDataType *pOutDataType, ESteamNetworkingConfigScope *pOutScope, ESteamNetworkingConfigValue *pOutNextValue ) = 0; + /// Get info about a configuration value. Returns the name of the value, + /// or NULL if the value doesn't exist. Other output parameters can be NULL + /// if you do not need them. + virtual const char *GetConfigValueInfo( ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigDataType *pOutDataType, + ESteamNetworkingConfigScope *pOutScope ) = 0; - /// Return the lowest numbered configuration value available in the current environment. - virtual ESteamNetworkingConfigValue GetFirstConfigValue() = 0; + /// Iterate the list of all configuration values in the current environment that it might + /// be possible to display or edit using a generic UI. To get the first iterable value, + /// pass k_ESteamNetworkingConfig_Invalid. Returns k_ESteamNetworkingConfig_Invalid + /// to signal end of list. + /// + /// The bEnumerateDevVars argument can be used to include "dev" vars. These are vars that + /// are recommended to only be editable in "debug" or "dev" mode and typically should not be + /// shown in a retail environment where a malicious local user might use this to cheat. + virtual ESteamNetworkingConfigValue IterateGenericEditableConfigValues( ESteamNetworkingConfigValue eCurrent, bool bEnumerateDevVars ) = 0; + // // String conversions. You'll usually access these using the respective // inline methods. + // virtual void SteamNetworkingIPAddr_ToString( const SteamNetworkingIPAddr &addr, char *buf, size_t cbBuf, bool bWithPort ) = 0; virtual bool SteamNetworkingIPAddr_ParseString( SteamNetworkingIPAddr *pAddr, const char *pszStr ) = 0; + virtual ESteamNetworkingFakeIPType SteamNetworkingIPAddr_GetFakeIPType( const SteamNetworkingIPAddr &addr ) = 0; virtual void SteamNetworkingIdentity_ToString( const SteamNetworkingIdentity &identity, char *buf, size_t cbBuf ) = 0; virtual bool SteamNetworkingIdentity_ParseString( SteamNetworkingIdentity *pIdentity, const char *pszStr ) = 0; protected: ~ISteamNetworkingUtils(); // Silence some warnings }; -#define STEAMNETWORKINGUTILS_INTERFACE_VERSION "SteamNetworkingUtils003" +#define STEAMNETWORKINGUTILS_INTERFACE_VERSION "SteamNetworkingUtils004" // Global accessors // Using standalone lib #ifdef STEAMNETWORKINGSOCKETS_STANDALONELIB // Standalone lib - static_assert( STEAMNETWORKINGUTILS_INTERFACE_VERSION[22] == '3', "Version mismatch" ); - STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingUtils *SteamNetworkingUtils_LibV3(); - inline ISteamNetworkingUtils *SteamNetworkingUtils_Lib() { return SteamNetworkingUtils_LibV3(); } + static_assert( STEAMNETWORKINGUTILS_INTERFACE_VERSION[22] == '4', "Version mismatch" ); + STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingUtils *SteamNetworkingUtils_LibV4(); + inline ISteamNetworkingUtils *SteamNetworkingUtils_Lib() { return SteamNetworkingUtils_LibV4(); } #ifndef STEAMNETWORKINGSOCKETS_STEAMAPI - inline ISteamNetworkingUtils *SteamNetworkingUtils() { return SteamNetworkingUtils_LibV3(); } + inline ISteamNetworkingUtils *SteamNetworkingUtils() { return SteamNetworkingUtils_LibV4(); } #endif #endif @@ -385,6 +419,8 @@ struct SteamRelayNetworkStatus_t char m_debugMsg[ 256 ]; }; +#ifndef API_GEN + /// Utility class for printing a SteamNetworkingIdentity. /// E.g. printf( "Identity is '%s'\n", SteamNetworkingIdentityRender( identity ).c_str() ); struct SteamNetworkingIdentityRender @@ -404,6 +440,8 @@ struct SteamNetworkingIPAddrRender char buf[ SteamNetworkingIPAddr::k_cchMaxString ]; }; +#endif + /////////////////////////////////////////////////////////////////////////////// // // Internal stuff @@ -419,6 +457,7 @@ inline bool ISteamNetworkingUtils::SetConnectionConfigValueString( HSteamNetConn inline bool ISteamNetworkingUtils::SetGlobalCallback_SteamNetConnectionStatusChanged( FnSteamNetConnectionStatusChanged fnCallback ) { return SetGlobalConfigValuePtr( k_ESteamNetworkingConfig_Callback_ConnectionStatusChanged, (void*)fnCallback ); } inline bool ISteamNetworkingUtils::SetGlobalCallback_SteamNetAuthenticationStatusChanged( FnSteamNetAuthenticationStatusChanged fnCallback ) { return SetGlobalConfigValuePtr( k_ESteamNetworkingConfig_Callback_AuthStatusChanged, (void*)fnCallback ); } inline bool ISteamNetworkingUtils::SetGlobalCallback_SteamRelayNetworkStatusChanged( FnSteamRelayNetworkStatusChanged fnCallback ) { return SetGlobalConfigValuePtr( k_ESteamNetworkingConfig_Callback_RelayNetworkStatusChanged, (void*)fnCallback ); } +inline bool ISteamNetworkingUtils::SetGlobalCallback_FakeIPResult( FnSteamNetworkingFakeIPResult fnCallback ) { return SetGlobalConfigValuePtr( k_ESteamNetworkingConfig_Callback_FakeIPResult, (void*)fnCallback ); } inline bool ISteamNetworkingUtils::SetGlobalCallback_MessagesSessionRequest( FnSteamNetworkingMessagesSessionRequest fnCallback ) { return SetGlobalConfigValuePtr( k_ESteamNetworkingConfig_Callback_MessagesSessionRequest, (void*)fnCallback ); } inline bool ISteamNetworkingUtils::SetGlobalCallback_MessagesSessionFailed( FnSteamNetworkingMessagesSessionFailed fnCallback ) { return SetGlobalConfigValuePtr( k_ESteamNetworkingConfig_Callback_MessagesSessionFailed, (void*)fnCallback ); } @@ -433,15 +472,17 @@ inline bool ISteamNetworkingUtils::SetConfigValueStruct( const SteamNetworkingCo } // How to get helper functions. -#if defined( STEAMNETWORKINGSOCKETS_STATIC_LINK ) || defined( STEAMNETWORKINGSOCKETS_STANDALONELIB ) +#if defined( STEAMNETWORKINGSOCKETS_STATIC_LINK ) || defined(STEAMNETWORKINGSOCKETS_FOREXPORT) || defined( STEAMNETWORKINGSOCKETS_STANDALONELIB ) // Call direct to static functions STEAMNETWORKINGSOCKETS_INTERFACE void SteamNetworkingIPAddr_ToString( const SteamNetworkingIPAddr *pAddr, char *buf, size_t cbBuf, bool bWithPort ); STEAMNETWORKINGSOCKETS_INTERFACE bool SteamNetworkingIPAddr_ParseString( SteamNetworkingIPAddr *pAddr, const char *pszStr ); + STEAMNETWORKINGSOCKETS_INTERFACE ESteamNetworkingFakeIPType SteamNetworkingIPAddr_GetFakeIPType( const SteamNetworkingIPAddr *pAddr ); STEAMNETWORKINGSOCKETS_INTERFACE void SteamNetworkingIdentity_ToString( const SteamNetworkingIdentity *pIdentity, char *buf, size_t cbBuf ); STEAMNETWORKINGSOCKETS_INTERFACE bool SteamNetworkingIdentity_ParseString( SteamNetworkingIdentity *pIdentity, size_t sizeofIdentity, const char *pszStr ); inline void SteamNetworkingIPAddr::ToString( char *buf, size_t cbBuf, bool bWithPort ) const { SteamNetworkingIPAddr_ToString( this, buf, cbBuf, bWithPort ); } inline bool SteamNetworkingIPAddr::ParseString( const char *pszStr ) { return SteamNetworkingIPAddr_ParseString( this, pszStr ); } + inline ESteamNetworkingFakeIPType SteamNetworkingIPAddr::GetFakeIPType() const { return SteamNetworkingIPAddr_GetFakeIPType( this ); } inline void SteamNetworkingIdentity::ToString( char *buf, size_t cbBuf ) const { SteamNetworkingIdentity_ToString( this, buf, cbBuf ); } inline bool SteamNetworkingIdentity::ParseString( const char *pszStr ) { return SteamNetworkingIdentity_ParseString( this, sizeof(*this), pszStr ); } @@ -449,6 +490,7 @@ inline bool ISteamNetworkingUtils::SetConfigValueStruct( const SteamNetworkingCo // Using steamworks SDK - go through SteamNetworkingUtils() inline void SteamNetworkingIPAddr::ToString( char *buf, size_t cbBuf, bool bWithPort ) const { SteamNetworkingUtils()->SteamNetworkingIPAddr_ToString( *this, buf, cbBuf, bWithPort ); } inline bool SteamNetworkingIPAddr::ParseString( const char *pszStr ) { return SteamNetworkingUtils()->SteamNetworkingIPAddr_ParseString( this, pszStr ); } + inline ESteamNetworkingFakeIPType SteamNetworkingIPAddr::GetFakeIPType() const { return SteamNetworkingUtils()->SteamNetworkingIPAddr_GetFakeIPType( *this ); } inline void SteamNetworkingIdentity::ToString( char *buf, size_t cbBuf ) const { SteamNetworkingUtils()->SteamNetworkingIdentity_ToString( *this, buf, cbBuf ); } inline bool SteamNetworkingIdentity::ParseString( const char *pszStr ) { return SteamNetworkingUtils()->SteamNetworkingIdentity_ParseString( this, pszStr ); } #else diff --git a/CodeGen/steam/isteamremotestorage.h b/CodeGen/steam/isteamremotestorage.h index add5a341..01b8dae3 100644 --- a/CodeGen/steam/isteamremotestorage.h +++ b/CodeGen/steam/isteamremotestorage.h @@ -337,24 +337,20 @@ STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamRemoteStorage *, SteamRemoteStorage, -// -// IMPORTANT! k_iClientRemoteStorageCallbacks 1 through 6 are used, see iclientremotestorage.h -// - //----------------------------------------------------------------------------- // Purpose: The result of a call to FileShare() //----------------------------------------------------------------------------- struct RemoteStorageFileShareResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 7 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 7 }; EResult m_eResult; // The result of the operation UGCHandle_t m_hFile; // The handle that can be shared with users and features char m_rgchFilename[k_cchFilenameMax]; // The name of the file that was shared }; -// k_iClientRemoteStorageCallbacks + 8 is deprecated! Do not reuse +// k_iSteamRemoteStorageCallbacks + 8 is deprecated! Do not reuse //----------------------------------------------------------------------------- @@ -362,13 +358,13 @@ struct RemoteStorageFileShareResult_t //----------------------------------------------------------------------------- struct RemoteStoragePublishFileResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 9 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 9 }; EResult m_eResult; // The result of the operation. PublishedFileId_t m_nPublishedFileId; bool m_bUserNeedsToAcceptWorkshopLegalAgreement; }; -// k_iClientRemoteStorageCallbacks + 10 is deprecated! Do not reuse +// k_iSteamRemoteStorageCallbacks + 10 is deprecated! Do not reuse @@ -377,7 +373,7 @@ struct RemoteStoragePublishFileResult_t //----------------------------------------------------------------------------- struct RemoteStorageDeletePublishedFileResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 11 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 11 }; EResult m_eResult; // The result of the operation. PublishedFileId_t m_nPublishedFileId; }; @@ -388,7 +384,7 @@ struct RemoteStorageDeletePublishedFileResult_t //----------------------------------------------------------------------------- struct RemoteStorageEnumerateUserPublishedFilesResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 12 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 12 }; EResult m_eResult; // The result of the operation. int32 m_nResultsReturned; int32 m_nTotalResultCount; @@ -401,7 +397,7 @@ struct RemoteStorageEnumerateUserPublishedFilesResult_t //----------------------------------------------------------------------------- struct RemoteStorageSubscribePublishedFileResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 13 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 13 }; EResult m_eResult; // The result of the operation. PublishedFileId_t m_nPublishedFileId; }; @@ -412,7 +408,7 @@ struct RemoteStorageSubscribePublishedFileResult_t //----------------------------------------------------------------------------- struct RemoteStorageEnumerateUserSubscribedFilesResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 14 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 14 }; EResult m_eResult; // The result of the operation. int32 m_nResultsReturned; int32 m_nTotalResultCount; @@ -433,7 +429,7 @@ struct RemoteStorageEnumerateUserSubscribedFilesResult_t //----------------------------------------------------------------------------- struct RemoteStorageUnsubscribePublishedFileResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 15 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 15 }; EResult m_eResult; // The result of the operation. PublishedFileId_t m_nPublishedFileId; }; @@ -444,7 +440,7 @@ struct RemoteStorageUnsubscribePublishedFileResult_t //----------------------------------------------------------------------------- struct RemoteStorageUpdatePublishedFileResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 16 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 16 }; EResult m_eResult; // The result of the operation. PublishedFileId_t m_nPublishedFileId; bool m_bUserNeedsToAcceptWorkshopLegalAgreement; @@ -456,7 +452,7 @@ struct RemoteStorageUpdatePublishedFileResult_t //----------------------------------------------------------------------------- struct RemoteStorageDownloadUGCResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 17 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 17 }; EResult m_eResult; // The result of the operation. UGCHandle_t m_hFile; // The handle to the file that was attempted to be downloaded. AppId_t m_nAppID; // ID of the app that created this file. @@ -471,7 +467,7 @@ struct RemoteStorageDownloadUGCResult_t //----------------------------------------------------------------------------- struct RemoteStorageGetPublishedFileDetailsResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 18 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 18 }; EResult m_eResult; // The result of the operation. PublishedFileId_t m_nPublishedFileId; AppId_t m_nCreatorAppID; // ID of the app that created this file. @@ -498,7 +494,7 @@ struct RemoteStorageGetPublishedFileDetailsResult_t struct RemoteStorageEnumerateWorkshopFilesResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 19 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 19 }; EResult m_eResult; int32 m_nResultsReturned; int32 m_nTotalResultCount; @@ -514,7 +510,7 @@ struct RemoteStorageEnumerateWorkshopFilesResult_t //----------------------------------------------------------------------------- struct RemoteStorageGetPublishedItemVoteDetailsResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 20 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 20 }; EResult m_eResult; PublishedFileId_t m_unPublishedFileId; int32 m_nVotesFor; @@ -529,7 +525,7 @@ struct RemoteStorageGetPublishedItemVoteDetailsResult_t //----------------------------------------------------------------------------- struct RemoteStoragePublishedFileSubscribed_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 21 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 21 }; PublishedFileId_t m_nPublishedFileId; // The published file id AppId_t m_nAppID; // ID of the app that will consume this file. }; @@ -539,7 +535,7 @@ struct RemoteStoragePublishedFileSubscribed_t //----------------------------------------------------------------------------- struct RemoteStoragePublishedFileUnsubscribed_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 22 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 22 }; PublishedFileId_t m_nPublishedFileId; // The published file id AppId_t m_nAppID; // ID of the app that will consume this file. }; @@ -550,7 +546,7 @@ struct RemoteStoragePublishedFileUnsubscribed_t //----------------------------------------------------------------------------- struct RemoteStoragePublishedFileDeleted_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 23 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 23 }; PublishedFileId_t m_nPublishedFileId; // The published file id AppId_t m_nAppID; // ID of the app that will consume this file. }; @@ -561,7 +557,7 @@ struct RemoteStoragePublishedFileDeleted_t //----------------------------------------------------------------------------- struct RemoteStorageUpdateUserPublishedItemVoteResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 24 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 24 }; EResult m_eResult; // The result of the operation. PublishedFileId_t m_nPublishedFileId; // The published file id }; @@ -572,7 +568,7 @@ struct RemoteStorageUpdateUserPublishedItemVoteResult_t //----------------------------------------------------------------------------- struct RemoteStorageUserVoteDetails_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 25 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 25 }; EResult m_eResult; // The result of the operation. PublishedFileId_t m_nPublishedFileId; // The published file id EWorkshopVote m_eVote; // what the user voted @@ -580,7 +576,7 @@ struct RemoteStorageUserVoteDetails_t struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 26 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 26 }; EResult m_eResult; // The result of the operation. int32 m_nResultsReturned; int32 m_nTotalResultCount; @@ -589,7 +585,7 @@ struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t struct RemoteStorageSetUserPublishedFileActionResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 27 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 27 }; EResult m_eResult; // The result of the operation. PublishedFileId_t m_nPublishedFileId; // The published file id EWorkshopFileAction m_eAction; // the action that was attempted @@ -597,7 +593,7 @@ struct RemoteStorageSetUserPublishedFileActionResult_t struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 28 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 28 }; EResult m_eResult; // The result of the operation. EWorkshopFileAction m_eAction; // the action that was filtered on int32 m_nResultsReturned; @@ -612,7 +608,7 @@ struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t //----------------------------------------------------------------------------- struct RemoteStoragePublishFileProgress_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 29 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 29 }; double m_dPercentFile; bool m_bPreview; }; @@ -623,7 +619,7 @@ struct RemoteStoragePublishFileProgress_t //----------------------------------------------------------------------------- struct RemoteStoragePublishedFileUpdated_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 30 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 30 }; PublishedFileId_t m_nPublishedFileId; // The published file id AppId_t m_nAppID; // ID of the app that will consume this file. uint64 m_ulUnused; // not used anymore @@ -634,7 +630,7 @@ struct RemoteStoragePublishedFileUpdated_t //----------------------------------------------------------------------------- struct RemoteStorageFileWriteAsyncComplete_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 31 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 31 }; EResult m_eResult; // result }; @@ -643,7 +639,7 @@ struct RemoteStorageFileWriteAsyncComplete_t //----------------------------------------------------------------------------- struct RemoteStorageFileReadAsyncComplete_t { - enum { k_iCallback = k_iClientRemoteStorageCallbacks + 32 }; + enum { k_iCallback = k_iSteamRemoteStorageCallbacks + 32 }; SteamAPICall_t m_hFileReadAsync; // call handle of the async read which was made EResult m_eResult; // result uint32 m_nOffset; // offset in the file this read was at @@ -655,7 +651,7 @@ struct RemoteStorageFileReadAsyncComplete_t // to remote session changes // Note: only posted if this happens DURING the local app session //----------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( RemoteStorageLocalFileChange_t, k_iClientRemoteStorageCallbacks + 33 ) +STEAM_CALLBACK_BEGIN( RemoteStorageLocalFileChange_t, k_iSteamRemoteStorageCallbacks + 33 ) STEAM_CALLBACK_END( 0 ) #pragma pack( pop ) diff --git a/CodeGen/steam/isteamugc.h b/CodeGen/steam/isteamugc.h index 3cc522e5..f6e43a8d 100644 --- a/CodeGen/steam/isteamugc.h +++ b/CodeGen/steam/isteamugc.h @@ -262,6 +262,8 @@ class ISteamUGC virtual bool SetMatchAnyTag( UGCQueryHandle_t handle, bool bMatchAnyTag ) = 0; virtual bool SetSearchText( UGCQueryHandle_t handle, const char *pSearchText ) = 0; virtual bool SetRankedByTrendDays( UGCQueryHandle_t handle, uint32 unDays ) = 0; + virtual bool SetTimeCreatedDateRange( UGCQueryHandle_t handle, RTime32 rtStart, RTime32 rtEnd ) = 0; + virtual bool SetTimeUpdatedDateRange( UGCQueryHandle_t handle, RTime32 rtStart, RTime32 rtEnd ) = 0; virtual bool AddRequiredKeyValueTag( UGCQueryHandle_t handle, const char *pKey, const char *pValue ) = 0; // DEPRECATED - Use CreateQueryUGCDetailsRequest call above instead! @@ -369,7 +371,7 @@ class ISteamUGC virtual SteamAPICall_t GetWorkshopEULAStatus() = 0; }; -#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION015" +#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION016" // Global interface accessor inline ISteamUGC *SteamUGC(); @@ -384,7 +386,7 @@ STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamUGC *, SteamGameServerUGC, STE //----------------------------------------------------------------------------- struct SteamUGCQueryCompleted_t { - enum { k_iCallback = k_iClientUGCCallbacks + 1 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 1 }; UGCQueryHandle_t m_handle; EResult m_eResult; uint32 m_unNumResultsReturned; @@ -399,7 +401,7 @@ struct SteamUGCQueryCompleted_t //----------------------------------------------------------------------------- struct SteamUGCRequestUGCDetailsResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 2 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 2 }; SteamUGCDetails_t m_details; bool m_bCachedData; // indicates whether this data was retrieved from the local on-disk cache }; @@ -410,7 +412,7 @@ struct SteamUGCRequestUGCDetailsResult_t //----------------------------------------------------------------------------- struct CreateItemResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 3 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 3 }; EResult m_eResult; PublishedFileId_t m_nPublishedFileId; // new item got this UGC PublishFileID bool m_bUserNeedsToAcceptWorkshopLegalAgreement; @@ -422,7 +424,7 @@ struct CreateItemResult_t //----------------------------------------------------------------------------- struct SubmitItemUpdateResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 4 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 4 }; EResult m_eResult; bool m_bUserNeedsToAcceptWorkshopLegalAgreement; PublishedFileId_t m_nPublishedFileId; @@ -434,7 +436,7 @@ struct SubmitItemUpdateResult_t //----------------------------------------------------------------------------- struct ItemInstalled_t { - enum { k_iCallback = k_iClientUGCCallbacks + 5 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 5 }; AppId_t m_unAppID; PublishedFileId_t m_nPublishedFileId; }; @@ -445,7 +447,7 @@ struct ItemInstalled_t //----------------------------------------------------------------------------- struct DownloadItemResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 6 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 6 }; AppId_t m_unAppID; PublishedFileId_t m_nPublishedFileId; EResult m_eResult; @@ -456,7 +458,7 @@ struct DownloadItemResult_t //----------------------------------------------------------------------------- struct UserFavoriteItemsListChanged_t { - enum { k_iCallback = k_iClientUGCCallbacks + 7 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 7 }; PublishedFileId_t m_nPublishedFileId; EResult m_eResult; bool m_bWasAddRequest; @@ -467,7 +469,7 @@ struct UserFavoriteItemsListChanged_t //----------------------------------------------------------------------------- struct SetUserItemVoteResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 8 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 8 }; PublishedFileId_t m_nPublishedFileId; EResult m_eResult; bool m_bVoteUp; @@ -478,7 +480,7 @@ struct SetUserItemVoteResult_t //----------------------------------------------------------------------------- struct GetUserItemVoteResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 9 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 9 }; PublishedFileId_t m_nPublishedFileId; EResult m_eResult; bool m_bVotedUp; @@ -491,7 +493,7 @@ struct GetUserItemVoteResult_t //----------------------------------------------------------------------------- struct StartPlaytimeTrackingResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 10 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 10 }; EResult m_eResult; }; @@ -500,7 +502,7 @@ struct StartPlaytimeTrackingResult_t //----------------------------------------------------------------------------- struct StopPlaytimeTrackingResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 11 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 11 }; EResult m_eResult; }; @@ -509,7 +511,7 @@ struct StopPlaytimeTrackingResult_t //----------------------------------------------------------------------------- struct AddUGCDependencyResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 12 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 12 }; EResult m_eResult; PublishedFileId_t m_nPublishedFileId; PublishedFileId_t m_nChildPublishedFileId; @@ -520,7 +522,7 @@ struct AddUGCDependencyResult_t //----------------------------------------------------------------------------- struct RemoveUGCDependencyResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 13 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 13 }; EResult m_eResult; PublishedFileId_t m_nPublishedFileId; PublishedFileId_t m_nChildPublishedFileId; @@ -532,7 +534,7 @@ struct RemoveUGCDependencyResult_t //----------------------------------------------------------------------------- struct AddAppDependencyResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 14 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 14 }; EResult m_eResult; PublishedFileId_t m_nPublishedFileId; AppId_t m_nAppID; @@ -543,7 +545,7 @@ struct AddAppDependencyResult_t //----------------------------------------------------------------------------- struct RemoveAppDependencyResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 15 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 15 }; EResult m_eResult; PublishedFileId_t m_nPublishedFileId; AppId_t m_nAppID; @@ -555,7 +557,7 @@ struct RemoveAppDependencyResult_t //----------------------------------------------------------------------------- struct GetAppDependenciesResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 16 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 16 }; EResult m_eResult; PublishedFileId_t m_nPublishedFileId; AppId_t m_rgAppIDs[32]; @@ -568,7 +570,7 @@ struct GetAppDependenciesResult_t //----------------------------------------------------------------------------- struct DeleteItemResult_t { - enum { k_iCallback = k_iClientUGCCallbacks + 17 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 17 }; EResult m_eResult; PublishedFileId_t m_nPublishedFileId; }; @@ -579,7 +581,7 @@ struct DeleteItemResult_t //----------------------------------------------------------------------------- struct UserSubscribedItemsListChanged_t { - enum { k_iCallback = k_iClientUGCCallbacks + 18 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 18 }; AppId_t m_nAppID; }; @@ -589,7 +591,7 @@ struct UserSubscribedItemsListChanged_t //----------------------------------------------------------------------------- struct WorkshopEULAStatus_t { - enum { k_iCallback = k_iClientUGCCallbacks + 20 }; + enum { k_iCallback = k_iSteamUGCCallbacks + 20 }; EResult m_eResult; AppId_t m_nAppID; uint32 m_unVersion; diff --git a/CodeGen/steam/isteamutils.h b/CodeGen/steam/isteamutils.h index 30a93a0d..7962f185 100644 --- a/CodeGen/steam/isteamutils.h +++ b/CodeGen/steam/isteamutils.h @@ -221,6 +221,9 @@ class ISteamUtils // In game launchers that don't have controller support you can call this to have Steam Input translate the controller input into mouse/kb to navigate the launcher virtual void SetGameLauncherMode( bool bLauncherMode ) = 0; + + // Dismisses the floating keyboard. + virtual bool DismissFloatingGamepadTextInput() = 0; }; #define STEAMUTILS_INTERFACE_VERSION "SteamUtils010" diff --git a/CodeGen/steam/isteamvideo.h b/CodeGen/steam/isteamvideo.h index 3dbe987b..4832d7b6 100644 --- a/CodeGen/steam/isteamvideo.h +++ b/CodeGen/steam/isteamvideo.h @@ -49,14 +49,14 @@ class ISteamVideo inline ISteamVideo *SteamVideo(); STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamVideo *, SteamVideo, STEAMVIDEO_INTERFACE_VERSION ); -STEAM_CALLBACK_BEGIN( GetVideoURLResult_t, k_iClientVideoCallbacks + 11 ) +STEAM_CALLBACK_BEGIN( GetVideoURLResult_t, k_iSteamVideoCallbacks + 11 ) STEAM_CALLBACK_MEMBER( 0, EResult, m_eResult ) STEAM_CALLBACK_MEMBER( 1, AppId_t, m_unVideoAppID ) STEAM_CALLBACK_MEMBER( 2, char, m_rgchURL[256] ) STEAM_CALLBACK_END(3) -STEAM_CALLBACK_BEGIN( GetOPFSettingsResult_t, k_iClientVideoCallbacks + 24 ) +STEAM_CALLBACK_BEGIN( GetOPFSettingsResult_t, k_iSteamVideoCallbacks + 24 ) STEAM_CALLBACK_MEMBER( 0, EResult, m_eResult ) STEAM_CALLBACK_MEMBER( 1, AppId_t, m_unVideoAppID ) STEAM_CALLBACK_END(2) diff --git a/CodeGen/steam/steam_api.json b/CodeGen/steam/steam_api.json index ff2d01df..a848b797 100644 --- a/CodeGen/steam/steam_api.json +++ b/CodeGen/steam/steam_api.json @@ -339,7 +339,7 @@ { "callback_id": 738, "fields": [], - "struct": "ModalGamepadTextInputDismissed_t" + "struct": "FloatingGamepadTextInputDismissed_t" }, { "callback_id": 502, @@ -1825,6 +1825,19 @@ { "fieldname":"m_steamIDUser", "fieldtype":"CSteamID" } ], "struct": "GSStatsUnloaded_t" + }, + { + "callback_id": 1223, + "consts": [ + { "constname":"k_nMaxReturnPorts", "consttype":"int", "constval":"8" } + ], + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_identity", "fieldtype":"SteamNetworkingIdentity" }, + { "fieldname":"m_unIP", "fieldtype":"uint32" }, + { "fieldname":"m_unPorts", "fieldtype":"uint16 [8]" } + ], + "struct": "SteamNetworkingFakeIPResult_t" } ], "consts": [ @@ -1884,6 +1897,7 @@ { "constname":"k_cchMaxSteamNetworkingErrMsg", "consttype":"int", "constval":"1024" }, { "constname":"k_cchSteamNetworkingMaxConnectionCloseReason", "consttype":"int", "constval":"128" }, { "constname":"k_cchSteamNetworkingMaxConnectionDescription", "consttype":"int", "constval":"128" }, + { "constname":"k_cchSteamNetworkingMaxConnectionAppName", "consttype":"int", "constval":"32" }, { "constname":"k_nSteamNetworkConnectionInfoFlags_Unauthenticated", "consttype":"int", "constval":"1" }, { "constname":"k_nSteamNetworkConnectionInfoFlags_Unencrypted", "consttype":"int", "constval":"2" }, { "constname":"k_nSteamNetworkConnectionInfoFlags_LoopbackBuffers", "consttype":"int", "constval":"4" }, @@ -1914,7 +1928,9 @@ { "constname":"MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE", "consttype":"uint16", "constval":"STEAMGAMESERVER_QUERY_PORT_SHARED" }, { "constname":"k_cbSteamDatagramMaxSerializedTicket", "consttype":"uint32", "constval":"512" }, { "constname":"k_cbMaxSteamDatagramGameCoordinatorServerLoginAppData", "consttype":"uint32", "constval":"2048" }, - { "constname":"k_cbMaxSteamDatagramGameCoordinatorServerLoginSerialized", "consttype":"uint32", "constval":"4096" } + { "constname":"k_cbMaxSteamDatagramGameCoordinatorServerLoginSerialized", "consttype":"uint32", "constval":"4096" }, + { "constname":"k_cbSteamNetworkingSocketsFakeUDPPortRecommendedMTU", "consttype":"int", "constval":"1200" }, + { "constname":"k_cbSteamNetworkingSocketsFakeUDPPortMaxMessageSize", "consttype":"int", "constval":"4096" } ], "enums": [ { @@ -2059,7 +2075,8 @@ { "name":"k_EResultLauncherMigrated", "value":"119" }, { "name":"k_EResultSteamRealmMismatch", "value":"120" }, { "name":"k_EResultInvalidSignature", "value":"121" }, - { "name":"k_EResultParseFailure", "value":"122" } + { "name":"k_EResultParseFailure", "value":"122" }, + { "name":"k_EResultNoVerifiedPhone", "value":"123" } ] }, { @@ -2442,6 +2459,15 @@ { "name":"k_EGamepadTextInputLineModeMultipleLines", "value":"1" } ] }, + { + "enumname": "EFloatingGamepadTextInputMode", + "values": [ + { "name":"k_EFloatingGamepadTextInputModeModeSingleLine", "value":"0" }, + { "name":"k_EFloatingGamepadTextInputModeModeMultipleLines", "value":"1" }, + { "name":"k_EFloatingGamepadTextInputModeModeEmail", "value":"2" }, + { "name":"k_EFloatingGamepadTextInputModeModeNumeric", "value":"3" } + ] + }, { "enumname": "ETextFilteringContext", "values": [ @@ -3161,7 +3187,80 @@ { "name":"k_EInputActionOrigin_PS5_Reserved18", "value":"330" }, { "name":"k_EInputActionOrigin_PS5_Reserved19", "value":"331" }, { "name":"k_EInputActionOrigin_PS5_Reserved20", "value":"332" }, - { "name":"k_EInputActionOrigin_Count", "value":"333" }, + { "name":"k_EInputActionOrigin_SteamDeck_A", "value":"333" }, + { "name":"k_EInputActionOrigin_SteamDeck_B", "value":"334" }, + { "name":"k_EInputActionOrigin_SteamDeck_X", "value":"335" }, + { "name":"k_EInputActionOrigin_SteamDeck_Y", "value":"336" }, + { "name":"k_EInputActionOrigin_SteamDeck_L1", "value":"337" }, + { "name":"k_EInputActionOrigin_SteamDeck_R1", "value":"338" }, + { "name":"k_EInputActionOrigin_SteamDeck_Menu", "value":"339" }, + { "name":"k_EInputActionOrigin_SteamDeck_View", "value":"340" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftPad_Touch", "value":"341" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftPad_Swipe", "value":"342" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftPad_Click", "value":"343" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftPad_DPadNorth", "value":"344" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftPad_DPadSouth", "value":"345" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftPad_DPadWest", "value":"346" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftPad_DPadEast", "value":"347" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightPad_Touch", "value":"348" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightPad_Swipe", "value":"349" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightPad_Click", "value":"350" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightPad_DPadNorth", "value":"351" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightPad_DPadSouth", "value":"352" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightPad_DPadWest", "value":"353" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightPad_DPadEast", "value":"354" }, + { "name":"k_EInputActionOrigin_SteamDeck_L2_SoftPull", "value":"355" }, + { "name":"k_EInputActionOrigin_SteamDeck_L2", "value":"356" }, + { "name":"k_EInputActionOrigin_SteamDeck_R2_SoftPull", "value":"357" }, + { "name":"k_EInputActionOrigin_SteamDeck_R2", "value":"358" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftStick_Move", "value":"359" }, + { "name":"k_EInputActionOrigin_SteamDeck_L3", "value":"360" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftStick_DPadNorth", "value":"361" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftStick_DPadSouth", "value":"362" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftStick_DPadWest", "value":"363" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftStick_DPadEast", "value":"364" }, + { "name":"k_EInputActionOrigin_SteamDeck_LeftStick_Touch", "value":"365" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightStick_Move", "value":"366" }, + { "name":"k_EInputActionOrigin_SteamDeck_R3", "value":"367" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightStick_DPadNorth", "value":"368" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightStick_DPadSouth", "value":"369" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightStick_DPadWest", "value":"370" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightStick_DPadEast", "value":"371" }, + { "name":"k_EInputActionOrigin_SteamDeck_RightStick_Touch", "value":"372" }, + { "name":"k_EInputActionOrigin_SteamDeck_L4", "value":"373" }, + { "name":"k_EInputActionOrigin_SteamDeck_R4", "value":"374" }, + { "name":"k_EInputActionOrigin_SteamDeck_L5", "value":"375" }, + { "name":"k_EInputActionOrigin_SteamDeck_R5", "value":"376" }, + { "name":"k_EInputActionOrigin_SteamDeck_DPad_Move", "value":"377" }, + { "name":"k_EInputActionOrigin_SteamDeck_DPad_North", "value":"378" }, + { "name":"k_EInputActionOrigin_SteamDeck_DPad_South", "value":"379" }, + { "name":"k_EInputActionOrigin_SteamDeck_DPad_West", "value":"380" }, + { "name":"k_EInputActionOrigin_SteamDeck_DPad_East", "value":"381" }, + { "name":"k_EInputActionOrigin_SteamDeck_Gyro_Move", "value":"382" }, + { "name":"k_EInputActionOrigin_SteamDeck_Gyro_Pitch", "value":"383" }, + { "name":"k_EInputActionOrigin_SteamDeck_Gyro_Yaw", "value":"384" }, + { "name":"k_EInputActionOrigin_SteamDeck_Gyro_Roll", "value":"385" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved1", "value":"386" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved2", "value":"387" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved3", "value":"388" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved4", "value":"389" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved5", "value":"390" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved6", "value":"391" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved7", "value":"392" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved8", "value":"393" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved9", "value":"394" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved10", "value":"395" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved11", "value":"396" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved12", "value":"397" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved13", "value":"398" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved14", "value":"399" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved15", "value":"400" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved16", "value":"401" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved17", "value":"402" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved18", "value":"403" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved19", "value":"404" }, + { "name":"k_EInputActionOrigin_SteamDeck_Reserved20", "value":"405" }, + { "name":"k_EInputActionOrigin_Count", "value":"406" }, { "name":"k_EInputActionOrigin_MaximumPossibleValue", "value":"32767" } ] }, @@ -3239,7 +3338,8 @@ { "name":"k_ESteamInputType_MobileTouch", "value":"11" }, { "name":"k_ESteamInputType_PS3Controller", "value":"12" }, { "name":"k_ESteamInputType_PS5Controller", "value":"13" }, - { "name":"k_ESteamInputType_Count", "value":"14" }, + { "name":"k_ESteamInputType_SteamDeckController", "value":"14" }, + { "name":"k_ESteamInputType_Count", "value":"15" }, { "name":"k_ESteamInputType_MaximumPossibleValue", "value":"255" } ] }, @@ -3265,7 +3365,18 @@ "values": [ { "name":"k_ESteamInputGlyphSize_Small", "value":"0" }, { "name":"k_ESteamInputGlyphSize_Medium", "value":"1" }, - { "name":"k_ESteamInputGlyphSize_Large", "value":"2" } + { "name":"k_ESteamInputGlyphSize_Large", "value":"2" }, + { "name":"k_ESteamInputGlyphSize_Count", "value":"3" } + ] + }, + { + "enumname": "ESteamInputGlyphStyle", + "values": [ + { "name":"ESteamInputGlyphStyle_Knockout", "value":"0" }, + { "name":"ESteamInputGlyphStyle_Light", "value":"1" }, + { "name":"ESteamInputGlyphStyle_Dark", "value":"2" }, + { "name":"ESteamInputGlyphStyle_NeutralColorABXY", "value":"16" }, + { "name":"ESteamInputGlyphStyle_SolidABXY", "value":"32" } ] }, { @@ -3583,7 +3694,80 @@ { "name":"k_EControllerActionOrigin_XBoxOne_RightGrip_Lower", "value":"302" }, { "name":"k_EControllerActionOrigin_XBoxOne_RightGrip_Upper", "value":"303" }, { "name":"k_EControllerActionOrigin_XBoxOne_Share", "value":"304" }, - { "name":"k_EControllerActionOrigin_Count", "value":"305" }, + { "name":"k_EControllerActionOrigin_SteamDeck_A", "value":"305" }, + { "name":"k_EControllerActionOrigin_SteamDeck_B", "value":"306" }, + { "name":"k_EControllerActionOrigin_SteamDeck_X", "value":"307" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Y", "value":"308" }, + { "name":"k_EControllerActionOrigin_SteamDeck_L1", "value":"309" }, + { "name":"k_EControllerActionOrigin_SteamDeck_R1", "value":"310" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Menu", "value":"311" }, + { "name":"k_EControllerActionOrigin_SteamDeck_View", "value":"312" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftPad_Touch", "value":"313" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftPad_Swipe", "value":"314" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftPad_Click", "value":"315" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftPad_DPadNorth", "value":"316" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftPad_DPadSouth", "value":"317" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftPad_DPadWest", "value":"318" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftPad_DPadEast", "value":"319" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightPad_Touch", "value":"320" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightPad_Swipe", "value":"321" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightPad_Click", "value":"322" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightPad_DPadNorth", "value":"323" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightPad_DPadSouth", "value":"324" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightPad_DPadWest", "value":"325" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightPad_DPadEast", "value":"326" }, + { "name":"k_EControllerActionOrigin_SteamDeck_L2_SoftPull", "value":"327" }, + { "name":"k_EControllerActionOrigin_SteamDeck_L2", "value":"328" }, + { "name":"k_EControllerActionOrigin_SteamDeck_R2_SoftPull", "value":"329" }, + { "name":"k_EControllerActionOrigin_SteamDeck_R2", "value":"330" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftStick_Move", "value":"331" }, + { "name":"k_EControllerActionOrigin_SteamDeck_L3", "value":"332" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftStick_DPadNorth", "value":"333" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftStick_DPadSouth", "value":"334" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftStick_DPadWest", "value":"335" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftStick_DPadEast", "value":"336" }, + { "name":"k_EControllerActionOrigin_SteamDeck_LeftStick_Touch", "value":"337" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightStick_Move", "value":"338" }, + { "name":"k_EControllerActionOrigin_SteamDeck_R3", "value":"339" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightStick_DPadNorth", "value":"340" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightStick_DPadSouth", "value":"341" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightStick_DPadWest", "value":"342" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightStick_DPadEast", "value":"343" }, + { "name":"k_EControllerActionOrigin_SteamDeck_RightStick_Touch", "value":"344" }, + { "name":"k_EControllerActionOrigin_SteamDeck_L4", "value":"345" }, + { "name":"k_EControllerActionOrigin_SteamDeck_R4", "value":"346" }, + { "name":"k_EControllerActionOrigin_SteamDeck_L5", "value":"347" }, + { "name":"k_EControllerActionOrigin_SteamDeck_R5", "value":"348" }, + { "name":"k_EControllerActionOrigin_SteamDeck_DPad_Move", "value":"349" }, + { "name":"k_EControllerActionOrigin_SteamDeck_DPad_North", "value":"350" }, + { "name":"k_EControllerActionOrigin_SteamDeck_DPad_South", "value":"351" }, + { "name":"k_EControllerActionOrigin_SteamDeck_DPad_West", "value":"352" }, + { "name":"k_EControllerActionOrigin_SteamDeck_DPad_East", "value":"353" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Gyro_Move", "value":"354" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Gyro_Pitch", "value":"355" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Gyro_Yaw", "value":"356" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Gyro_Roll", "value":"357" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved1", "value":"358" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved2", "value":"359" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved3", "value":"360" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved4", "value":"361" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved5", "value":"362" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved6", "value":"363" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved7", "value":"364" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved8", "value":"365" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved9", "value":"366" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved10", "value":"367" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved11", "value":"368" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved12", "value":"369" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved13", "value":"370" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved14", "value":"371" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved15", "value":"372" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved16", "value":"373" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved17", "value":"374" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved18", "value":"375" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved19", "value":"376" }, + { "name":"k_EControllerActionOrigin_SteamDeck_Reserved20", "value":"377" }, + { "name":"k_EControllerActionOrigin_Count", "value":"378" }, { "name":"k_EControllerActionOrigin_MaximumPossibleValue", "value":"32767" } ] }, @@ -3784,6 +3968,16 @@ { "name":"k_ESteamNetworkingIdentityType__Force32bit", "value":"2147483647" } ] }, + { + "enumname": "ESteamNetworkingFakeIPType", + "values": [ + { "name":"k_ESteamNetworkingFakeIPType_Invalid", "value":"0" }, + { "name":"k_ESteamNetworkingFakeIPType_NotFake", "value":"1" }, + { "name":"k_ESteamNetworkingFakeIPType_GlobalIPv4", "value":"2" }, + { "name":"k_ESteamNetworkingFakeIPType_LocalIPv4", "value":"3" }, + { "name":"k_ESteamNetworkingFakeIPType__Force32Bit", "value":"2147483647" } + ] + }, { "enumname": "ESteamNetworkingConnectionState", "values": [ @@ -3876,6 +4070,7 @@ { "name":"k_ESteamNetworkingConfig_SymmetricConnect", "value":"37" }, { "name":"k_ESteamNetworkingConfig_LocalVirtualPort", "value":"38" }, { "name":"k_ESteamNetworkingConfig_DualWifi_Enable", "value":"39" }, + { "name":"k_ESteamNetworkingConfig_EnableDiagnosticsUI", "value":"46" }, { "name":"k_ESteamNetworkingConfig_FakePacketLoss_Send", "value":"2" }, { "name":"k_ESteamNetworkingConfig_FakePacketLoss_Recv", "value":"3" }, { "name":"k_ESteamNetworkingConfig_FakePacketLag_Send", "value":"4" }, @@ -3897,6 +4092,7 @@ { "name":"k_ESteamNetworkingConfig_Callback_MessagesSessionRequest", "value":"204" }, { "name":"k_ESteamNetworkingConfig_Callback_MessagesSessionFailed", "value":"205" }, { "name":"k_ESteamNetworkingConfig_Callback_CreateConnectionSignaling", "value":"206" }, + { "name":"k_ESteamNetworkingConfig_Callback_FakeIPResult", "value":"207" }, { "name":"k_ESteamNetworkingConfig_P2P_STUN_ServerList", "value":"103" }, { "name":"k_ESteamNetworkingConfig_P2P_Transport_ICE_Enable", "value":"104" }, { "name":"k_ESteamNetworkingConfig_P2P_Transport_ICE_Penalty", "value":"105" }, @@ -5518,10 +5714,14 @@ "returntype": "bool" }, { - "methodname": "ShowModalGamepadTextInput", - "methodname_flat": "SteamAPI_ISteamUtils_ShowModalGamepadTextInput", + "methodname": "ShowFloatingGamepadTextInput", + "methodname_flat": "SteamAPI_ISteamUtils_ShowFloatingGamepadTextInput", "params": [ - { "paramname":"eLineInputMode", "paramtype":"EGamepadTextInputLineMode" } + { "paramname":"eKeyboardMode", "paramtype":"EFloatingGamepadTextInputMode" }, + { "paramname":"nTextFieldXPosition", "paramtype":"int" }, + { "paramname":"nTextFieldYPosition", "paramtype":"int" }, + { "paramname":"nTextFieldWidth", "paramtype":"int" }, + { "paramname":"nTextFieldHeight", "paramtype":"int" } ], "returntype": "bool" }, @@ -5532,6 +5732,12 @@ { "paramname":"bLauncherMode", "paramtype":"bool" } ], "returntype": "void" + }, + { + "methodname": "DismissFloatingGamepadTextInput", + "methodname_flat": "SteamAPI_ISteamUtils_DismissFloatingGamepadTextInput", + "params": [], + "returntype": "bool" } ], "version_string": "SteamUtils010" @@ -8642,7 +8848,7 @@ { "kind": "user", "name": "SteamInput", - "name_flat": "SteamAPI_SteamInput_v005" + "name_flat": "SteamAPI_SteamInput_v006" } ], "classname": "ISteamInput", @@ -9082,7 +9288,7 @@ "returntype": "uint16" } ], - "version_string": "SteamInput005" + "version_string": "SteamInput006" }, { "accessors": [ @@ -9419,12 +9625,12 @@ { "kind": "user", "name": "SteamUGC", - "name_flat": "SteamAPI_SteamUGC_v015" + "name_flat": "SteamAPI_SteamUGC_v016" }, { "kind": "gameserver", "name": "SteamGameServerUGC", - "name_flat": "SteamAPI_SteamGameServerUGC_v015" + "name_flat": "SteamAPI_SteamGameServerUGC_v016" } ], "classname": "ISteamUGC", @@ -9829,6 +10035,26 @@ ], "returntype": "bool" }, + { + "methodname": "SetTimeCreatedDateRange", + "methodname_flat": "SteamAPI_ISteamUGC_SetTimeCreatedDateRange", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"rtStart", "paramtype":"RTime32" }, + { "paramname":"rtEnd", "paramtype":"RTime32" } + ], + "returntype": "bool" + }, + { + "methodname": "SetTimeUpdatedDateRange", + "methodname_flat": "SteamAPI_ISteamUGC_SetTimeUpdatedDateRange", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"rtStart", "paramtype":"RTime32" }, + { "paramname":"rtEnd", "paramtype":"RTime32" } + ], + "returntype": "bool" + }, { "methodname": "AddRequiredKeyValueTag", "methodname_flat": "SteamAPI_ISteamUGC_AddRequiredKeyValueTag", @@ -10275,7 +10501,7 @@ "returntype": "SteamAPICall_t" } ], - "version_string": "STEAMUGC_INTERFACE_VERSION015" + "version_string": "STEAMUGC_INTERFACE_VERSION016" }, { "accessors": [ @@ -11501,7 +11727,7 @@ "params": [ { "paramname":"identityRemote", "paramtype":"const SteamNetworkingIdentity &" }, { "paramname":"pConnectionInfo", "paramtype":"SteamNetConnectionInfo_t *" }, - { "paramname":"pQuickStatus", "paramtype":"SteamNetworkingQuickConnectionStatus *" } + { "paramname":"pQuickStatus", "paramtype":"SteamNetConnectionRealTimeStatus_t *" } ], "returntype": "ESteamNetworkingConnectionState" } @@ -11513,12 +11739,12 @@ { "kind": "user", "name": "SteamNetworkingSockets_SteamAPI", - "name_flat": "SteamAPI_SteamNetworkingSockets_SteamAPI_v011" + "name_flat": "SteamAPI_SteamNetworkingSockets_SteamAPI_v012" }, { "kind": "gameserver", "name": "SteamGameServerNetworkingSockets_SteamAPI", - "name_flat": "SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v011" + "name_flat": "SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v012" } ], "classname": "ISteamNetworkingSockets", @@ -11678,13 +11904,15 @@ "returntype": "bool" }, { - "methodname": "GetQuickConnectionStatus", - "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetQuickConnectionStatus", + "methodname": "GetConnectionRealTimeStatus", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetConnectionRealTimeStatus", "params": [ { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, - { "paramname":"pStats", "paramtype":"SteamNetworkingQuickConnectionStatus *" } + { "paramname":"pStatus", "paramtype":"SteamNetConnectionRealTimeStatus_t *" }, + { "paramname":"nLanes", "paramtype":"int" }, + { "paramname":"pLanes", "paramtype":"SteamNetConnectionRealTimeLaneStatus_t *" } ], - "returntype": "bool" + "returntype": "EResult" }, { "methodname": "GetDetailedConnectionStatus", @@ -11717,6 +11945,17 @@ ], "returntype": "bool" }, + { + "methodname": "ConfigureConnectionLanes", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_ConfigureConnectionLanes", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"nNumLanes", "paramtype":"int" }, + { "paramname":"pLanePriorities", "paramtype":"const int *" }, + { "paramname":"pLaneWeights", "paramtype":"const uint16 *" } + ], + "returntype": "EResult" + }, { "methodname": "GetIdentity", "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetIdentity", @@ -11898,9 +12137,53 @@ "methodname_flat": "SteamAPI_ISteamNetworkingSockets_RunCallbacks", "params": [], "returntype": "void" + }, + { + "methodname": "BeginAsyncRequestFakeIP", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_BeginAsyncRequestFakeIP", + "params": [ + { "paramname":"nNumPorts", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "GetFakeIP", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetFakeIP", + "params": [ + { "paramname":"idxFirstPort", "paramtype":"int" }, + { "paramname":"pInfo", "paramtype":"SteamNetworkingFakeIPResult_t *" } + ], + "returntype": "void" + }, + { + "methodname": "CreateListenSocketP2PFakeIP", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreateListenSocketP2PFakeIP", + "params": [ + { "paramname":"idxFakePort", "paramtype":"int" }, + { "paramname":"nOptions", "paramtype":"int" }, + { "paramname":"pOptions", "paramtype":"const SteamNetworkingConfigValue_t *" } + ], + "returntype": "HSteamListenSocket" + }, + { + "methodname": "GetRemoteFakeIPForConnection", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_GetRemoteFakeIPForConnection", + "params": [ + { "paramname":"hConn", "paramtype":"HSteamNetConnection" }, + { "paramname":"pOutAddr", "paramtype":"SteamNetworkingIPAddr *" } + ], + "returntype": "EResult" + }, + { + "methodname": "CreateFakeUDPPort", + "methodname_flat": "SteamAPI_ISteamNetworkingSockets_CreateFakeUDPPort", + "params": [ + { "paramname":"idxFakeServerPort", "paramtype":"int" } + ], + "returntype": "ISteamNetworkingFakeUDPPort *" } ], - "version_string": "SteamNetworkingSockets011" + "version_string": "SteamNetworkingSockets012" }, { "accessors": [ @@ -12034,6 +12317,31 @@ ], "returntype": "void" }, + { + "methodname": "IsFakeIPv4", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_IsFakeIPv4", + "params": [ + { "paramname":"nIPv4", "paramtype":"uint32" } + ], + "returntype": "bool" + }, + { + "methodname": "GetIPv4FakeIPType", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetIPv4FakeIPType", + "params": [ + { "paramname":"nIPv4", "paramtype":"uint32" } + ], + "returntype": "ESteamNetworkingFakeIPType" + }, + { + "methodname": "GetRealIdentityForFakeIP", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_GetRealIdentityForFakeIP", + "params": [ + { "paramname":"fakeIP", "paramtype":"const SteamNetworkingIPAddr &" }, + { "paramname":"pOutRealIdentity", "paramtype":"SteamNetworkingIdentity *" } + ], + "returntype": "EResult" + }, { "methodname": "SetGlobalConfigValueInt32", "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueInt32", @@ -12124,6 +12432,14 @@ ], "returntype": "bool" }, + { + "methodname": "SetGlobalCallback_FakeIPResult", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_FakeIPResult", + "params": [ + { "paramname":"fnCallback", "paramtype":"FnSteamNetworkingFakeIPResult" } + ], + "returntype": "bool" + }, { "methodname": "SetGlobalCallback_MessagesSessionRequest", "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_MessagesSessionRequest", @@ -12214,6 +12530,14 @@ ], "returntype": "bool" }, + { + "methodname": "SteamNetworkingIPAddr_GetFakeIPType", + "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_GetFakeIPType", + "params": [ + { "paramname":"addr", "paramtype":"const SteamNetworkingIPAddr &" } + ], + "returntype": "ESteamNetworkingFakeIPType" + }, { "methodname": "SteamNetworkingIdentity_ToString", "methodname_flat": "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ToString", @@ -12689,6 +13013,46 @@ } ], "version_string": "SteamGameServerStats001" + }, + { + "classname": "ISteamNetworkingFakeUDPPort", + "fields": [], + "methods": [ + { + "methodname": "DestroyFakeUDPPort", + "methodname_flat": "SteamAPI_ISteamNetworkingFakeUDPPort_DestroyFakeUDPPort", + "params": [], + "returntype": "void" + }, + { + "methodname": "SendMessageToFakeIP", + "methodname_flat": "SteamAPI_ISteamNetworkingFakeUDPPort_SendMessageToFakeIP", + "params": [ + { "paramname":"remoteAddress", "paramtype":"const SteamNetworkingIPAddr &" }, + { "paramname":"pData", "paramtype":"const void *" }, + { "paramname":"cbData", "paramtype":"uint32" }, + { "paramname":"nSendFlags", "paramtype":"int" } + ], + "returntype": "EResult" + }, + { + "methodname": "ReceiveMessages", + "methodname_flat": "SteamAPI_ISteamNetworkingFakeUDPPort_ReceiveMessages", + "params": [ + { "paramname":"ppOutMessages", "paramtype":"SteamNetworkingMessage_t **" }, + { "paramname":"nMaxMessages", "paramtype":"int" } + ], + "returntype": "int" + }, + { + "methodname": "ScheduleCleanup", + "methodname_flat": "SteamAPI_ISteamNetworkingFakeUDPPort_ScheduleCleanup", + "params": [ + { "paramname":"remoteAddress", "paramtype":"const SteamNetworkingIPAddr &" } + ], + "returntype": "void" + } + ] } ], "structs": [ @@ -12961,8 +13325,7 @@ "fields": [ { "fieldname":"controllerHandle", "fieldtype":"InputHandle_t" }, { "fieldname":"eEventType", "fieldtype":"ESteamInputActionEventType" }, - { "fieldname":"analogAction_actionHandle", "fieldtype":"InputAnalogActionHandle_t" }, - { "fieldname":"analogAction_analogActionData", "fieldtype":"InputAnalogActionData_t" } + { "fieldname":"analogAction", "fieldtype":"SteamInputActionEvent_t::AnalogAction_t" } ], "struct": "SteamInputActionEvent_t" }, @@ -13096,6 +13459,18 @@ { "paramname":"x", "paramtype":"const SteamNetworkingIPAddr &" } ], "returntype": "bool" + }, + { + "methodname": "GetFakeIPType", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_GetFakeIPType", + "params": [], + "returntype": "ESteamNetworkingFakeIPType" + }, + { + "methodname": "IsFakeIP", + "methodname_flat": "SteamAPI_SteamNetworkingIPAddr_IsFakeIP", + "params": [], + "returntype": "bool" } ], "struct": "SteamNetworkingIPAddr" @@ -13225,6 +13600,18 @@ "params": [], "returntype": "uint32" }, + { + "methodname": "GetFakeIPType", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_GetFakeIPType", + "params": [], + "returntype": "ESteamNetworkingFakeIPType" + }, + { + "methodname": "IsFakeIP", + "methodname_flat": "SteamAPI_SteamNetworkingIdentity_IsFakeIP", + "params": [], + "returntype": "bool" + }, { "methodname": "SetLocalHost", "methodname_flat": "SteamAPI_SteamNetworkingIdentity_SetLocalHost", @@ -13331,7 +13718,18 @@ { "fieldname":"m_usecQueueTime", "fieldtype":"SteamNetworkingMicroseconds" }, { "fieldname":"reserved", "fieldtype":"uint32 [16]" } ], - "struct": "SteamNetworkingQuickConnectionStatus" + "struct": "SteamNetConnectionRealTimeStatus_t" + }, + { + "fields": [ + { "fieldname":"m_cbPendingUnreliable", "fieldtype":"int" }, + { "fieldname":"m_cbPendingReliable", "fieldtype":"int" }, + { "fieldname":"m_cbSentUnackedReliable", "fieldtype":"int" }, + { "fieldname":"_reservePad1", "fieldtype":"int" }, + { "fieldname":"m_usecQueueTime", "fieldtype":"SteamNetworkingMicroseconds" }, + { "fieldname":"reserved", "fieldtype":"uint32 [10]" } + ], + "struct": "SteamNetConnectionRealTimeLaneStatus_t" }, { "fields": [ @@ -13346,7 +13744,9 @@ { "fieldname":"m_pfnRelease", "fieldtype":"void (*)(SteamNetworkingMessage_t *)" }, { "fieldname":"m_nChannel", "fieldtype":"int" }, { "fieldname":"m_nFlags", "fieldtype":"int" }, - { "fieldname":"m_nUserData", "fieldtype":"int64" } + { "fieldname":"m_nUserData", "fieldtype":"int64" }, + { "fieldname":"m_idxLane", "fieldtype":"uint16" }, + { "fieldname":"_pad1__", "fieldtype":"uint16" } ], "methods": [ { @@ -13419,60 +13819,6 @@ ], "struct": "SteamNetworkingConfigValue_t" }, - { - "fields": [ - { - "fieldname": "buf", - "fieldtype": "char [8]", - "private": true - } - ], - "methods": [ - { - "methodname": "c_str", - "methodname_flat": "SteamAPI_SteamNetworkingPOPIDRender_c_str", - "params": [], - "returntype": "const char *" - } - ], - "struct": "SteamNetworkingPOPIDRender" - }, - { - "fields": [ - { - "fieldname": "buf", - "fieldtype": "char [128]", - "private": true - } - ], - "methods": [ - { - "methodname": "c_str", - "methodname_flat": "SteamAPI_SteamNetworkingIdentityRender_c_str", - "params": [], - "returntype": "const char *" - } - ], - "struct": "SteamNetworkingIdentityRender" - }, - { - "fields": [ - { - "fieldname": "buf", - "fieldtype": "char [48]", - "private": true - } - ], - "methods": [ - { - "methodname": "c_str", - "methodname_flat": "SteamAPI_SteamNetworkingIPAddrRender_c_str", - "params": [], - "returntype": "const char *" - } - ], - "struct": "SteamNetworkingIPAddrRender" - }, { "fields": [ { "fieldname":"m_cbSize", "fieldtype":"int" }, @@ -13575,6 +13921,7 @@ { "typedef":"FnSteamRelayNetworkStatusChanged", "type":"void (*)(SteamRelayNetworkStatus_t *)" }, { "typedef":"FnSteamNetworkingMessagesSessionRequest", "type":"void (*)(SteamNetworkingMessagesSessionRequest_t *)" }, { "typedef":"FnSteamNetworkingMessagesSessionFailed", "type":"void (*)(SteamNetworkingMessagesSessionFailed_t *)" }, + { "typedef":"FnSteamNetworkingFakeIPResult", "type":"void (*)(SteamNetworkingFakeIPResult_t *)" }, { "typedef":"HSteamNetConnection", "type":"unsigned int" }, { "typedef":"HSteamListenSocket", "type":"unsigned int" }, { "typedef":"HSteamNetPollGroup", "type":"unsigned int" }, diff --git a/CodeGen/steam/steam_api_flat.h b/CodeGen/steam/steam_api_flat.h index c9eb0784..5b213f70 100644 --- a/CodeGen/steam/steam_api_flat.h +++ b/CodeGen/steam/steam_api_flat.h @@ -56,7 +56,11 @@ S_API ISteamParties * SteamAPI_ISteamClient_GetISteamParties( ISteamClient* self S_API ISteamRemotePlay * SteamAPI_ISteamClient_GetISteamRemotePlay( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); // ISteamUser + +// A versioned accessor is exported by the library S_API ISteamUser *SteamAPI_SteamUser_v021(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamUser(), but using this ensures that you are using a matching library. +inline ISteamUser *SteamAPI_SteamUser() { return SteamAPI_SteamUser_v021(); } S_API HSteamUser SteamAPI_ISteamUser_GetHSteamUser( ISteamUser* self ); S_API bool SteamAPI_ISteamUser_BLoggedOn( ISteamUser* self ); S_API uint64_steamid SteamAPI_ISteamUser_GetSteamID( ISteamUser* self ); @@ -91,7 +95,11 @@ S_API SteamAPICall_t SteamAPI_ISteamUser_GetDurationControl( ISteamUser* self ); S_API bool SteamAPI_ISteamUser_BSetDurationControlOnlineState( ISteamUser* self, EDurationControlOnlineState eNewState ); // ISteamFriends + +// A versioned accessor is exported by the library S_API ISteamFriends *SteamAPI_SteamFriends_v017(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamFriends(), but using this ensures that you are using a matching library. +inline ISteamFriends *SteamAPI_SteamFriends() { return SteamAPI_SteamFriends_v017(); } S_API const char * SteamAPI_ISteamFriends_GetPersonaName( ISteamFriends* self ); S_API SteamAPICall_t SteamAPI_ISteamFriends_SetPersonaName( ISteamFriends* self, const char * pchPersonaName ); S_API EPersonaState SteamAPI_ISteamFriends_GetPersonaState( ISteamFriends* self ); @@ -170,8 +178,16 @@ S_API bool SteamAPI_ISteamFriends_RegisterProtocolInOverlayBrowser( ISteamFriend S_API void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialogConnectString( ISteamFriends* self, const char * pchConnectString ); // ISteamUtils + +// A versioned accessor is exported by the library S_API ISteamUtils *SteamAPI_SteamUtils_v010(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamUtils(), but using this ensures that you are using a matching library. +inline ISteamUtils *SteamAPI_SteamUtils() { return SteamAPI_SteamUtils_v010(); } + +// A versioned accessor is exported by the library S_API ISteamUtils *SteamAPI_SteamGameServerUtils_v010(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerUtils(), but using this ensures that you are using a matching library. +inline ISteamUtils *SteamAPI_SteamGameServerUtils() { return SteamAPI_SteamGameServerUtils_v010(); } S_API uint32 SteamAPI_ISteamUtils_GetSecondsSinceAppActive( ISteamUtils* self ); S_API uint32 SteamAPI_ISteamUtils_GetSecondsSinceComputerActive( ISteamUtils* self ); S_API EUniverse SteamAPI_ISteamUtils_GetConnectedUniverse( ISteamUtils* self ); @@ -205,11 +221,16 @@ S_API bool SteamAPI_ISteamUtils_InitFilterText( ISteamUtils* self, uint32 unFilt S_API int SteamAPI_ISteamUtils_FilterText( ISteamUtils* self, ETextFilteringContext eContext, uint64_steamid sourceSteamID, const char * pchInputMessage, char * pchOutFilteredText, uint32 nByteSizeOutFilteredText ); S_API ESteamIPv6ConnectivityState SteamAPI_ISteamUtils_GetIPv6ConnectivityState( ISteamUtils* self, ESteamIPv6ConnectivityProtocol eProtocol ); S_API bool SteamAPI_ISteamUtils_IsSteamRunningOnSteamDeck( ISteamUtils* self ); -S_API bool SteamAPI_ISteamUtils_ShowModalGamepadTextInput( ISteamUtils* self, EGamepadTextInputLineMode eLineInputMode ); +S_API bool SteamAPI_ISteamUtils_ShowFloatingGamepadTextInput( ISteamUtils* self, EFloatingGamepadTextInputMode eKeyboardMode, int nTextFieldXPosition, int nTextFieldYPosition, int nTextFieldWidth, int nTextFieldHeight ); S_API void SteamAPI_ISteamUtils_SetGameLauncherMode( ISteamUtils* self, bool bLauncherMode ); +S_API bool SteamAPI_ISteamUtils_DismissFloatingGamepadTextInput( ISteamUtils* self ); // ISteamMatchmaking + +// A versioned accessor is exported by the library S_API ISteamMatchmaking *SteamAPI_SteamMatchmaking_v009(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamMatchmaking(), but using this ensures that you are using a matching library. +inline ISteamMatchmaking *SteamAPI_SteamMatchmaking() { return SteamAPI_SteamMatchmaking_v009(); } S_API int SteamAPI_ISteamMatchmaking_GetFavoriteGameCount( ISteamMatchmaking* self ); S_API bool SteamAPI_ISteamMatchmaking_GetFavoriteGame( ISteamMatchmaking* self, int iGame, AppId_t * pnAppID, uint32 * pnIP, uint16 * pnConnPort, uint16 * pnQueryPort, uint32 * punFlags, uint32 * pRTime32LastPlayedOnServer ); S_API int SteamAPI_ISteamMatchmaking_AddFavoriteGame( ISteamMatchmaking* self, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer ); @@ -269,7 +290,11 @@ S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesFailedToRespond( ISteamM S_API void SteamAPI_ISteamMatchmakingRulesResponse_RulesRefreshComplete( ISteamMatchmakingRulesResponse* self ); // ISteamMatchmakingServers + +// A versioned accessor is exported by the library S_API ISteamMatchmakingServers *SteamAPI_SteamMatchmakingServers_v002(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamMatchmakingServers(), but using this ensures that you are using a matching library. +inline ISteamMatchmakingServers *SteamAPI_SteamMatchmakingServers() { return SteamAPI_SteamMatchmakingServers_v002(); } S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestInternetServerList( ISteamMatchmakingServers* self, AppId_t iApp, MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse * pRequestServersResponse ); S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestLANServerList( ISteamMatchmakingServers* self, AppId_t iApp, ISteamMatchmakingServerListResponse * pRequestServersResponse ); S_API HServerListRequest SteamAPI_ISteamMatchmakingServers_RequestFriendsServerList( ISteamMatchmakingServers* self, AppId_t iApp, MatchMakingKeyValuePair_t ** ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse * pRequestServersResponse ); @@ -289,7 +314,11 @@ S_API HServerQuery SteamAPI_ISteamMatchmakingServers_ServerRules( ISteamMatchmak S_API void SteamAPI_ISteamMatchmakingServers_CancelServerQuery( ISteamMatchmakingServers* self, HServerQuery hServerQuery ); // ISteamGameSearch + +// A versioned accessor is exported by the library S_API ISteamGameSearch *SteamAPI_SteamGameSearch_v001(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameSearch(), but using this ensures that you are using a matching library. +inline ISteamGameSearch *SteamAPI_SteamGameSearch() { return SteamAPI_SteamGameSearch_v001(); } S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_AddGameSearchParams( ISteamGameSearch* self, const char * pchKeyToFind, const char * pchValuesToFind ); S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SearchForGameWithLobby( ISteamGameSearch* self, uint64_steamid steamIDLobby, int nPlayerMin, int nPlayerMax ); S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SearchForGameSolo( ISteamGameSearch* self, int nPlayerMin, int nPlayerMax ); @@ -306,7 +335,11 @@ S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_SubmitPlayerResult( IStea S_API EGameSearchErrorCode_t SteamAPI_ISteamGameSearch_EndGame( ISteamGameSearch* self, uint64 ullUniqueGameID ); // ISteamParties + +// A versioned accessor is exported by the library S_API ISteamParties *SteamAPI_SteamParties_v002(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamParties(), but using this ensures that you are using a matching library. +inline ISteamParties *SteamAPI_SteamParties() { return SteamAPI_SteamParties_v002(); } S_API uint32 SteamAPI_ISteamParties_GetNumActiveBeacons( ISteamParties* self ); S_API PartyBeaconID_t SteamAPI_ISteamParties_GetBeaconByIndex( ISteamParties* self, uint32 unIndex ); S_API bool SteamAPI_ISteamParties_GetBeaconDetails( ISteamParties* self, PartyBeaconID_t ulBeaconID, CSteamID * pSteamIDBeaconOwner, SteamPartyBeaconLocation_t * pLocation, char * pchMetadata, int cchMetadata ); @@ -321,7 +354,11 @@ S_API bool SteamAPI_ISteamParties_DestroyBeacon( ISteamParties* self, PartyBeaco S_API bool SteamAPI_ISteamParties_GetBeaconLocationData( ISteamParties* self, SteamPartyBeaconLocation_t BeaconLocation, ESteamPartyBeaconLocationData eData, char * pchDataStringOut, int cchDataStringOut ); // ISteamRemoteStorage + +// A versioned accessor is exported by the library S_API ISteamRemoteStorage *SteamAPI_SteamRemoteStorage_v016(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamRemoteStorage(), but using this ensures that you are using a matching library. +inline ISteamRemoteStorage *SteamAPI_SteamRemoteStorage() { return SteamAPI_SteamRemoteStorage_v016(); } S_API bool SteamAPI_ISteamRemoteStorage_FileWrite( ISteamRemoteStorage* self, const char * pchFile, const void * pvData, int32 cubData ); S_API int32 SteamAPI_ISteamRemoteStorage_FileRead( ISteamRemoteStorage* self, const char * pchFile, void * pvData, int32 cubDataToRead ); S_API SteamAPICall_t SteamAPI_ISteamRemoteStorage_FileWriteAsync( ISteamRemoteStorage* self, const char * pchFile, const void * pvData, uint32 cubData ); @@ -383,7 +420,11 @@ S_API bool SteamAPI_ISteamRemoteStorage_BeginFileWriteBatch( ISteamRemoteStorage S_API bool SteamAPI_ISteamRemoteStorage_EndFileWriteBatch( ISteamRemoteStorage* self ); // ISteamUserStats + +// A versioned accessor is exported by the library S_API ISteamUserStats *SteamAPI_SteamUserStats_v012(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamUserStats(), but using this ensures that you are using a matching library. +inline ISteamUserStats *SteamAPI_SteamUserStats() { return SteamAPI_SteamUserStats_v012(); } S_API bool SteamAPI_ISteamUserStats_RequestCurrentStats( ISteamUserStats* self ); S_API bool SteamAPI_ISteamUserStats_GetStatInt32( ISteamUserStats* self, const char * pchName, int32 * pData ); S_API bool SteamAPI_ISteamUserStats_GetStatFloat( ISteamUserStats* self, const char * pchName, float * pData ); @@ -431,7 +472,11 @@ S_API bool SteamAPI_ISteamUserStats_GetAchievementProgressLimitsInt32( ISteamUse S_API bool SteamAPI_ISteamUserStats_GetAchievementProgressLimitsFloat( ISteamUserStats* self, const char * pchName, float * pfMinProgress, float * pfMaxProgress ); // ISteamApps + +// A versioned accessor is exported by the library S_API ISteamApps *SteamAPI_SteamApps_v008(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamApps(), but using this ensures that you are using a matching library. +inline ISteamApps *SteamAPI_SteamApps() { return SteamAPI_SteamApps_v008(); } S_API bool SteamAPI_ISteamApps_BIsSubscribed( ISteamApps* self ); S_API bool SteamAPI_ISteamApps_BIsLowViolence( ISteamApps* self ); S_API bool SteamAPI_ISteamApps_BIsCybercafe( ISteamApps* self ); @@ -463,8 +508,16 @@ S_API bool SteamAPI_ISteamApps_BIsSubscribedFromFamilySharing( ISteamApps* self S_API bool SteamAPI_ISteamApps_BIsTimedTrial( ISteamApps* self, uint32 * punSecondsAllowed, uint32 * punSecondsPlayed ); // ISteamNetworking + +// A versioned accessor is exported by the library S_API ISteamNetworking *SteamAPI_SteamNetworking_v006(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamNetworking(), but using this ensures that you are using a matching library. +inline ISteamNetworking *SteamAPI_SteamNetworking() { return SteamAPI_SteamNetworking_v006(); } + +// A versioned accessor is exported by the library S_API ISteamNetworking *SteamAPI_SteamGameServerNetworking_v006(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerNetworking(), but using this ensures that you are using a matching library. +inline ISteamNetworking *SteamAPI_SteamGameServerNetworking() { return SteamAPI_SteamGameServerNetworking_v006(); } S_API bool SteamAPI_ISteamNetworking_SendP2PPacket( ISteamNetworking* self, uint64_steamid steamIDRemote, const void * pubData, uint32 cubData, EP2PSend eP2PSendType, int nChannel ); S_API bool SteamAPI_ISteamNetworking_IsP2PPacketAvailable( ISteamNetworking* self, uint32 * pcubMsgSize, int nChannel ); S_API bool SteamAPI_ISteamNetworking_ReadP2PPacket( ISteamNetworking* self, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize, CSteamID * psteamIDRemote, int nChannel ); @@ -489,7 +542,11 @@ S_API ESNetSocketConnectionType SteamAPI_ISteamNetworking_GetSocketConnectionTyp S_API int SteamAPI_ISteamNetworking_GetMaxPacketSize( ISteamNetworking* self, SNetSocket_t hSocket ); // ISteamScreenshots + +// A versioned accessor is exported by the library S_API ISteamScreenshots *SteamAPI_SteamScreenshots_v003(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamScreenshots(), but using this ensures that you are using a matching library. +inline ISteamScreenshots *SteamAPI_SteamScreenshots() { return SteamAPI_SteamScreenshots_v003(); } S_API ScreenshotHandle SteamAPI_ISteamScreenshots_WriteScreenshot( ISteamScreenshots* self, void * pubRGB, uint32 cubRGB, int nWidth, int nHeight ); S_API ScreenshotHandle SteamAPI_ISteamScreenshots_AddScreenshotToLibrary( ISteamScreenshots* self, const char * pchFilename, const char * pchThumbnailFilename, int nWidth, int nHeight ); S_API void SteamAPI_ISteamScreenshots_TriggerScreenshot( ISteamScreenshots* self ); @@ -501,7 +558,11 @@ S_API bool SteamAPI_ISteamScreenshots_IsScreenshotsHooked( ISteamScreenshots* se S_API ScreenshotHandle SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary( ISteamScreenshots* self, EVRScreenshotType eType, const char * pchFilename, const char * pchVRFilename ); // ISteamMusic + +// A versioned accessor is exported by the library S_API ISteamMusic *SteamAPI_SteamMusic_v001(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamMusic(), but using this ensures that you are using a matching library. +inline ISteamMusic *SteamAPI_SteamMusic() { return SteamAPI_SteamMusic_v001(); } S_API bool SteamAPI_ISteamMusic_BIsEnabled( ISteamMusic* self ); S_API bool SteamAPI_ISteamMusic_BIsPlaying( ISteamMusic* self ); S_API AudioPlayback_Status SteamAPI_ISteamMusic_GetPlaybackStatus( ISteamMusic* self ); @@ -513,7 +574,11 @@ S_API void SteamAPI_ISteamMusic_SetVolume( ISteamMusic* self, float flVolume ); S_API float SteamAPI_ISteamMusic_GetVolume( ISteamMusic* self ); // ISteamMusicRemote + +// A versioned accessor is exported by the library S_API ISteamMusicRemote *SteamAPI_SteamMusicRemote_v001(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamMusicRemote(), but using this ensures that you are using a matching library. +inline ISteamMusicRemote *SteamAPI_SteamMusicRemote() { return SteamAPI_SteamMusicRemote_v001(); } S_API bool SteamAPI_ISteamMusicRemote_RegisterSteamMusicRemote( ISteamMusicRemote* self, const char * pchName ); S_API bool SteamAPI_ISteamMusicRemote_DeregisterSteamMusicRemote( ISteamMusicRemote* self ); S_API bool SteamAPI_ISteamMusicRemote_BIsCurrentMusicRemote( ISteamMusicRemote* self ); @@ -548,8 +613,16 @@ S_API bool SteamAPI_ISteamMusicRemote_SetCurrentPlaylistEntry( ISteamMusicRemote S_API bool SteamAPI_ISteamMusicRemote_PlaylistDidChange( ISteamMusicRemote* self ); // ISteamHTTP + +// A versioned accessor is exported by the library S_API ISteamHTTP *SteamAPI_SteamHTTP_v003(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamHTTP(), but using this ensures that you are using a matching library. +inline ISteamHTTP *SteamAPI_SteamHTTP() { return SteamAPI_SteamHTTP_v003(); } + +// A versioned accessor is exported by the library S_API ISteamHTTP *SteamAPI_SteamGameServerHTTP_v003(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerHTTP(), but using this ensures that you are using a matching library. +inline ISteamHTTP *SteamAPI_SteamGameServerHTTP() { return SteamAPI_SteamGameServerHTTP_v003(); } S_API HTTPRequestHandle SteamAPI_ISteamHTTP_CreateHTTPRequest( ISteamHTTP* self, EHTTPMethod eHTTPRequestMethod, const char * pchAbsoluteURL ); S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestContextValue( ISteamHTTP* self, HTTPRequestHandle hRequest, uint64 ulContextValue ); S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestNetworkActivityTimeout( ISteamHTTP* self, HTTPRequestHandle hRequest, uint32 unTimeoutSeconds ); @@ -577,7 +650,11 @@ S_API bool SteamAPI_ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS( ISteamHTTP* self S_API bool SteamAPI_ISteamHTTP_GetHTTPRequestWasTimedOut( ISteamHTTP* self, HTTPRequestHandle hRequest, bool * pbWasTimedOut ); // ISteamInput -S_API ISteamInput *SteamAPI_SteamInput_v005(); + +// A versioned accessor is exported by the library +S_API ISteamInput *SteamAPI_SteamInput_v006(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamInput(), but using this ensures that you are using a matching library. +inline ISteamInput *SteamAPI_SteamInput() { return SteamAPI_SteamInput_v006(); } S_API bool SteamAPI_ISteamInput_Init( ISteamInput* self, bool bExplicitlyCallRunFrame ); S_API bool SteamAPI_ISteamInput_Shutdown( ISteamInput* self ); S_API bool SteamAPI_ISteamInput_SetInputActionManifestFilePath( ISteamInput* self, const char * pchInputActionManifestAbsolutePath ); @@ -627,7 +704,11 @@ S_API uint32 SteamAPI_ISteamInput_GetRemotePlaySessionID( ISteamInput* self, Inp S_API uint16 SteamAPI_ISteamInput_GetSessionInputConfigurationSettings( ISteamInput* self ); // ISteamController + +// A versioned accessor is exported by the library S_API ISteamController *SteamAPI_SteamController_v008(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamController(), but using this ensures that you are using a matching library. +inline ISteamController *SteamAPI_SteamController() { return SteamAPI_SteamController_v008(); } S_API bool SteamAPI_ISteamController_Init( ISteamController* self ); S_API bool SteamAPI_ISteamController_Shutdown( ISteamController* self ); S_API void SteamAPI_ISteamController_RunFrame( ISteamController* self ); @@ -664,8 +745,16 @@ S_API EControllerActionOrigin SteamAPI_ISteamController_TranslateActionOrigin( I S_API bool SteamAPI_ISteamController_GetControllerBindingRevision( ISteamController* self, ControllerHandle_t controllerHandle, int * pMajor, int * pMinor ); // ISteamUGC -S_API ISteamUGC *SteamAPI_SteamUGC_v015(); -S_API ISteamUGC *SteamAPI_SteamGameServerUGC_v015(); + +// A versioned accessor is exported by the library +S_API ISteamUGC *SteamAPI_SteamUGC_v016(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamUGC(), but using this ensures that you are using a matching library. +inline ISteamUGC *SteamAPI_SteamUGC() { return SteamAPI_SteamUGC_v016(); } + +// A versioned accessor is exported by the library +S_API ISteamUGC *SteamAPI_SteamGameServerUGC_v016(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerUGC(), but using this ensures that you are using a matching library. +inline ISteamUGC *SteamAPI_SteamGameServerUGC() { return SteamAPI_SteamGameServerUGC_v016(); } S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUserUGCRequest( ISteamUGC* self, AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ); S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestPage( ISteamUGC* self, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ); S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestCursor( ISteamUGC* self, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, const char * pchCursor ); @@ -702,6 +791,8 @@ S_API bool SteamAPI_ISteamUGC_SetCloudFileNameFilter( ISteamUGC* self, UGCQueryH S_API bool SteamAPI_ISteamUGC_SetMatchAnyTag( ISteamUGC* self, UGCQueryHandle_t handle, bool bMatchAnyTag ); S_API bool SteamAPI_ISteamUGC_SetSearchText( ISteamUGC* self, UGCQueryHandle_t handle, const char * pSearchText ); S_API bool SteamAPI_ISteamUGC_SetRankedByTrendDays( ISteamUGC* self, UGCQueryHandle_t handle, uint32 unDays ); +S_API bool SteamAPI_ISteamUGC_SetTimeCreatedDateRange( ISteamUGC* self, UGCQueryHandle_t handle, RTime32 rtStart, RTime32 rtEnd ); +S_API bool SteamAPI_ISteamUGC_SetTimeUpdatedDateRange( ISteamUGC* self, UGCQueryHandle_t handle, RTime32 rtStart, RTime32 rtEnd ); S_API bool SteamAPI_ISteamUGC_AddRequiredKeyValueTag( ISteamUGC* self, UGCQueryHandle_t handle, const char * pKey, const char * pValue ); S_API SteamAPICall_t SteamAPI_ISteamUGC_RequestUGCDetails( ISteamUGC* self, PublishedFileId_t nPublishedFileID, uint32 unMaxAgeSeconds ); S_API SteamAPICall_t SteamAPI_ISteamUGC_CreateItem( ISteamUGC* self, AppId_t nConsumerAppId, EWorkshopFileType eFileType ); @@ -752,7 +843,11 @@ S_API bool SteamAPI_ISteamUGC_ShowWorkshopEULA( ISteamUGC* self ); S_API SteamAPICall_t SteamAPI_ISteamUGC_GetWorkshopEULAStatus( ISteamUGC* self ); // ISteamAppList + +// A versioned accessor is exported by the library S_API ISteamAppList *SteamAPI_SteamAppList_v001(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamAppList(), but using this ensures that you are using a matching library. +inline ISteamAppList *SteamAPI_SteamAppList() { return SteamAPI_SteamAppList_v001(); } S_API uint32 SteamAPI_ISteamAppList_GetNumInstalledApps( ISteamAppList* self ); S_API uint32 SteamAPI_ISteamAppList_GetInstalledApps( ISteamAppList* self, AppId_t * pvecAppID, uint32 unMaxAppIDs ); S_API int SteamAPI_ISteamAppList_GetAppName( ISteamAppList* self, AppId_t nAppID, char * pchName, int cchNameMax ); @@ -760,7 +855,11 @@ S_API int SteamAPI_ISteamAppList_GetAppInstallDir( ISteamAppList* self, AppId_t S_API int SteamAPI_ISteamAppList_GetAppBuildId( ISteamAppList* self, AppId_t nAppID ); // ISteamHTMLSurface + +// A versioned accessor is exported by the library S_API ISteamHTMLSurface *SteamAPI_SteamHTMLSurface_v005(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamHTMLSurface(), but using this ensures that you are using a matching library. +inline ISteamHTMLSurface *SteamAPI_SteamHTMLSurface() { return SteamAPI_SteamHTMLSurface_v005(); } S_API bool SteamAPI_ISteamHTMLSurface_Init( ISteamHTMLSurface* self ); S_API bool SteamAPI_ISteamHTMLSurface_Shutdown( ISteamHTMLSurface* self ); S_API SteamAPICall_t SteamAPI_ISteamHTMLSurface_CreateBrowser( ISteamHTMLSurface* self, const char * pchUserAgent, const char * pchUserCSS ); @@ -800,8 +899,16 @@ S_API void SteamAPI_ISteamHTMLSurface_JSDialogResponse( ISteamHTMLSurface* self, S_API void SteamAPI_ISteamHTMLSurface_FileLoadDialogResponse( ISteamHTMLSurface* self, HHTMLBrowser unBrowserHandle, const char ** pchSelectedFiles ); // ISteamInventory + +// A versioned accessor is exported by the library S_API ISteamInventory *SteamAPI_SteamInventory_v003(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamInventory(), but using this ensures that you are using a matching library. +inline ISteamInventory *SteamAPI_SteamInventory() { return SteamAPI_SteamInventory_v003(); } + +// A versioned accessor is exported by the library S_API ISteamInventory *SteamAPI_SteamGameServerInventory_v003(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerInventory(), but using this ensures that you are using a matching library. +inline ISteamInventory *SteamAPI_SteamGameServerInventory() { return SteamAPI_SteamGameServerInventory_v003(); } S_API EResult SteamAPI_ISteamInventory_GetResultStatus( ISteamInventory* self, SteamInventoryResult_t resultHandle ); S_API bool SteamAPI_ISteamInventory_GetResultItems( ISteamInventory* self, SteamInventoryResult_t resultHandle, SteamItemDetails_t * pOutItemsArray, uint32 * punOutItemsArraySize ); S_API bool SteamAPI_ISteamInventory_GetResultItemProperty( ISteamInventory* self, SteamInventoryResult_t resultHandle, uint32 unItemIndex, const char * pchPropertyName, char * pchValueBuffer, uint32 * punValueBufferSizeOut ); @@ -842,14 +949,22 @@ S_API bool SteamAPI_ISteamInventory_SubmitUpdateProperties( ISteamInventory* sel S_API bool SteamAPI_ISteamInventory_InspectItem( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, const char * pchItemToken ); // ISteamVideo + +// A versioned accessor is exported by the library S_API ISteamVideo *SteamAPI_SteamVideo_v002(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamVideo(), but using this ensures that you are using a matching library. +inline ISteamVideo *SteamAPI_SteamVideo() { return SteamAPI_SteamVideo_v002(); } S_API void SteamAPI_ISteamVideo_GetVideoURL( ISteamVideo* self, AppId_t unVideoAppID ); S_API bool SteamAPI_ISteamVideo_IsBroadcasting( ISteamVideo* self, int * pnNumViewers ); S_API void SteamAPI_ISteamVideo_GetOPFSettings( ISteamVideo* self, AppId_t unVideoAppID ); S_API bool SteamAPI_ISteamVideo_GetOPFStringForApp( ISteamVideo* self, AppId_t unVideoAppID, char * pchBuffer, int32 * pnBufferSize ); // ISteamParentalSettings + +// A versioned accessor is exported by the library S_API ISteamParentalSettings *SteamAPI_SteamParentalSettings_v001(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamParentalSettings(), but using this ensures that you are using a matching library. +inline ISteamParentalSettings *SteamAPI_SteamParentalSettings() { return SteamAPI_SteamParentalSettings_v001(); } S_API bool SteamAPI_ISteamParentalSettings_BIsParentalLockEnabled( ISteamParentalSettings* self ); S_API bool SteamAPI_ISteamParentalSettings_BIsParentalLockLocked( ISteamParentalSettings* self ); S_API bool SteamAPI_ISteamParentalSettings_BIsAppBlocked( ISteamParentalSettings* self, AppId_t nAppID ); @@ -858,7 +973,11 @@ S_API bool SteamAPI_ISteamParentalSettings_BIsFeatureBlocked( ISteamParentalSett S_API bool SteamAPI_ISteamParentalSettings_BIsFeatureInBlockList( ISteamParentalSettings* self, EParentalFeature eFeature ); // ISteamRemotePlay + +// A versioned accessor is exported by the library S_API ISteamRemotePlay *SteamAPI_SteamRemotePlay_v001(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamRemotePlay(), but using this ensures that you are using a matching library. +inline ISteamRemotePlay *SteamAPI_SteamRemotePlay() { return SteamAPI_SteamRemotePlay_v001(); } S_API uint32 SteamAPI_ISteamRemotePlay_GetSessionCount( ISteamRemotePlay* self ); S_API RemotePlaySessionID_t SteamAPI_ISteamRemotePlay_GetSessionID( ISteamRemotePlay* self, int iSessionIndex ); S_API uint64_steamid SteamAPI_ISteamRemotePlay_GetSessionSteamID( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID ); @@ -868,18 +987,34 @@ S_API bool SteamAPI_ISteamRemotePlay_BGetSessionClientResolution( ISteamRemotePl S_API bool SteamAPI_ISteamRemotePlay_BSendRemotePlayTogetherInvite( ISteamRemotePlay* self, uint64_steamid steamIDFriend ); // ISteamNetworkingMessages + +// A versioned accessor is exported by the library S_API ISteamNetworkingMessages *SteamAPI_SteamNetworkingMessages_SteamAPI_v002(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamNetworkingMessages_SteamAPI(), but using this ensures that you are using a matching library. +inline ISteamNetworkingMessages *SteamAPI_SteamNetworkingMessages_SteamAPI() { return SteamAPI_SteamNetworkingMessages_SteamAPI_v002(); } + +// A versioned accessor is exported by the library S_API ISteamNetworkingMessages *SteamAPI_SteamGameServerNetworkingMessages_SteamAPI_v002(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerNetworkingMessages_SteamAPI(), but using this ensures that you are using a matching library. +inline ISteamNetworkingMessages *SteamAPI_SteamGameServerNetworkingMessages_SteamAPI() { return SteamAPI_SteamGameServerNetworkingMessages_SteamAPI_v002(); } S_API EResult SteamAPI_ISteamNetworkingMessages_SendMessageToUser( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote, const void * pubData, uint32 cubData, int nSendFlags, int nRemoteChannel ); S_API int SteamAPI_ISteamNetworkingMessages_ReceiveMessagesOnChannel( ISteamNetworkingMessages* self, int nLocalChannel, SteamNetworkingMessage_t ** ppOutMessages, int nMaxMessages ); S_API bool SteamAPI_ISteamNetworkingMessages_AcceptSessionWithUser( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote ); S_API bool SteamAPI_ISteamNetworkingMessages_CloseSessionWithUser( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote ); S_API bool SteamAPI_ISteamNetworkingMessages_CloseChannelWithUser( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote, int nLocalChannel ); -S_API ESteamNetworkingConnectionState SteamAPI_ISteamNetworkingMessages_GetSessionConnectionInfo( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote, SteamNetConnectionInfo_t * pConnectionInfo, SteamNetworkingQuickConnectionStatus * pQuickStatus ); +S_API ESteamNetworkingConnectionState SteamAPI_ISteamNetworkingMessages_GetSessionConnectionInfo( ISteamNetworkingMessages* self, const SteamNetworkingIdentity & identityRemote, SteamNetConnectionInfo_t * pConnectionInfo, SteamNetConnectionRealTimeStatus_t * pQuickStatus ); // ISteamNetworkingSockets -S_API ISteamNetworkingSockets *SteamAPI_SteamNetworkingSockets_SteamAPI_v011(); -S_API ISteamNetworkingSockets *SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v011(); + +// A versioned accessor is exported by the library +S_API ISteamNetworkingSockets *SteamAPI_SteamNetworkingSockets_SteamAPI_v012(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamNetworkingSockets_SteamAPI(), but using this ensures that you are using a matching library. +inline ISteamNetworkingSockets *SteamAPI_SteamNetworkingSockets_SteamAPI() { return SteamAPI_SteamNetworkingSockets_SteamAPI_v012(); } + +// A versioned accessor is exported by the library +S_API ISteamNetworkingSockets *SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v012(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerNetworkingSockets_SteamAPI(), but using this ensures that you are using a matching library. +inline ISteamNetworkingSockets *SteamAPI_SteamGameServerNetworkingSockets_SteamAPI() { return SteamAPI_SteamGameServerNetworkingSockets_SteamAPI_v012(); } S_API HSteamListenSocket SteamAPI_ISteamNetworkingSockets_CreateListenSocketIP( ISteamNetworkingSockets* self, const SteamNetworkingIPAddr & localAddress, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); S_API HSteamNetConnection SteamAPI_ISteamNetworkingSockets_ConnectByIPAddress( ISteamNetworkingSockets* self, const SteamNetworkingIPAddr & address, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); S_API HSteamListenSocket SteamAPI_ISteamNetworkingSockets_CreateListenSocketP2P( ISteamNetworkingSockets* self, int nLocalVirtualPort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); @@ -896,10 +1031,11 @@ S_API void SteamAPI_ISteamNetworkingSockets_SendMessages( ISteamNetworkingSocket S_API EResult SteamAPI_ISteamNetworkingSockets_FlushMessagesOnConnection( ISteamNetworkingSockets* self, HSteamNetConnection hConn ); S_API int SteamAPI_ISteamNetworkingSockets_ReceiveMessagesOnConnection( ISteamNetworkingSockets* self, HSteamNetConnection hConn, SteamNetworkingMessage_t ** ppOutMessages, int nMaxMessages ); S_API bool SteamAPI_ISteamNetworkingSockets_GetConnectionInfo( ISteamNetworkingSockets* self, HSteamNetConnection hConn, SteamNetConnectionInfo_t * pInfo ); -S_API bool SteamAPI_ISteamNetworkingSockets_GetQuickConnectionStatus( ISteamNetworkingSockets* self, HSteamNetConnection hConn, SteamNetworkingQuickConnectionStatus * pStats ); +S_API EResult SteamAPI_ISteamNetworkingSockets_GetConnectionRealTimeStatus( ISteamNetworkingSockets* self, HSteamNetConnection hConn, SteamNetConnectionRealTimeStatus_t * pStatus, int nLanes, SteamNetConnectionRealTimeLaneStatus_t * pLanes ); S_API int SteamAPI_ISteamNetworkingSockets_GetDetailedConnectionStatus( ISteamNetworkingSockets* self, HSteamNetConnection hConn, char * pszBuf, int cbBuf ); S_API bool SteamAPI_ISteamNetworkingSockets_GetListenSocketAddress( ISteamNetworkingSockets* self, HSteamListenSocket hSocket, SteamNetworkingIPAddr * address ); S_API bool SteamAPI_ISteamNetworkingSockets_CreateSocketPair( ISteamNetworkingSockets* self, HSteamNetConnection * pOutConnection1, HSteamNetConnection * pOutConnection2, bool bUseNetworkLoopback, const SteamNetworkingIdentity * pIdentity1, const SteamNetworkingIdentity * pIdentity2 ); +S_API EResult SteamAPI_ISteamNetworkingSockets_ConfigureConnectionLanes( ISteamNetworkingSockets* self, HSteamNetConnection hConn, int nNumLanes, const int * pLanePriorities, const uint16 * pLaneWeights ); S_API bool SteamAPI_ISteamNetworkingSockets_GetIdentity( ISteamNetworkingSockets* self, SteamNetworkingIdentity * pIdentity ); S_API ESteamNetworkingAvailability SteamAPI_ISteamNetworkingSockets_InitAuthentication( ISteamNetworkingSockets* self ); S_API ESteamNetworkingAvailability SteamAPI_ISteamNetworkingSockets_GetAuthenticationStatus( ISteamNetworkingSockets* self, SteamNetAuthenticationStatus_t * pDetails ); @@ -921,9 +1057,18 @@ S_API bool SteamAPI_ISteamNetworkingSockets_GetCertificateRequest( ISteamNetwork S_API bool SteamAPI_ISteamNetworkingSockets_SetCertificate( ISteamNetworkingSockets* self, const void * pCertificate, int cbCertificate, SteamNetworkingErrMsg & errMsg ); S_API void SteamAPI_ISteamNetworkingSockets_ResetIdentity( ISteamNetworkingSockets* self, const SteamNetworkingIdentity * pIdentity ); S_API void SteamAPI_ISteamNetworkingSockets_RunCallbacks( ISteamNetworkingSockets* self ); +S_API bool SteamAPI_ISteamNetworkingSockets_BeginAsyncRequestFakeIP( ISteamNetworkingSockets* self, int nNumPorts ); +S_API void SteamAPI_ISteamNetworkingSockets_GetFakeIP( ISteamNetworkingSockets* self, int idxFirstPort, SteamNetworkingFakeIPResult_t * pInfo ); +S_API HSteamListenSocket SteamAPI_ISteamNetworkingSockets_CreateListenSocketP2PFakeIP( ISteamNetworkingSockets* self, int idxFakePort, int nOptions, const SteamNetworkingConfigValue_t * pOptions ); +S_API EResult SteamAPI_ISteamNetworkingSockets_GetRemoteFakeIPForConnection( ISteamNetworkingSockets* self, HSteamNetConnection hConn, SteamNetworkingIPAddr * pOutAddr ); +S_API ISteamNetworkingFakeUDPPort * SteamAPI_ISteamNetworkingSockets_CreateFakeUDPPort( ISteamNetworkingSockets* self, int idxFakeServerPort ); // ISteamNetworkingUtils + +// A versioned accessor is exported by the library S_API ISteamNetworkingUtils *SteamAPI_SteamNetworkingUtils_SteamAPI_v004(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamNetworkingUtils_SteamAPI(), but using this ensures that you are using a matching library. +inline ISteamNetworkingUtils *SteamAPI_SteamNetworkingUtils_SteamAPI() { return SteamAPI_SteamNetworkingUtils_SteamAPI_v004(); } S_API SteamNetworkingMessage_t * SteamAPI_ISteamNetworkingUtils_AllocateMessage( ISteamNetworkingUtils* self, int cbAllocateBuffer ); S_API void SteamAPI_ISteamNetworkingUtils_InitRelayNetworkAccess( ISteamNetworkingUtils* self ); S_API ESteamNetworkingAvailability SteamAPI_ISteamNetworkingUtils_GetRelayNetworkStatus( ISteamNetworkingUtils* self, SteamRelayNetworkStatus_t * pDetails ); @@ -939,6 +1084,9 @@ S_API int SteamAPI_ISteamNetworkingUtils_GetPOPCount( ISteamNetworkingUtils* sel S_API int SteamAPI_ISteamNetworkingUtils_GetPOPList( ISteamNetworkingUtils* self, SteamNetworkingPOPID * list, int nListSz ); S_API SteamNetworkingMicroseconds SteamAPI_ISteamNetworkingUtils_GetLocalTimestamp( ISteamNetworkingUtils* self ); S_API void SteamAPI_ISteamNetworkingUtils_SetDebugOutputFunction( ISteamNetworkingUtils* self, ESteamNetworkingSocketsDebugOutputType eDetailLevel, FSteamNetworkingSocketsDebugOutput pfnFunc ); +S_API bool SteamAPI_ISteamNetworkingUtils_IsFakeIPv4( ISteamNetworkingUtils* self, uint32 nIPv4 ); +S_API ESteamNetworkingFakeIPType SteamAPI_ISteamNetworkingUtils_GetIPv4FakeIPType( ISteamNetworkingUtils* self, uint32 nIPv4 ); +S_API EResult SteamAPI_ISteamNetworkingUtils_GetRealIdentityForFakeIP( ISteamNetworkingUtils* self, const SteamNetworkingIPAddr & fakeIP, SteamNetworkingIdentity * pOutRealIdentity ); S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueInt32( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, int32 val ); S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueFloat( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, float val ); S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalConfigValueString( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, const char * val ); @@ -949,6 +1097,7 @@ S_API bool SteamAPI_ISteamNetworkingUtils_SetConnectionConfigValueString( ISteam S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamNetConnectionStatusChanged( ISteamNetworkingUtils* self, FnSteamNetConnectionStatusChanged fnCallback ); S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamNetAuthenticationStatusChanged( ISteamNetworkingUtils* self, FnSteamNetAuthenticationStatusChanged fnCallback ); S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_SteamRelayNetworkStatusChanged( ISteamNetworkingUtils* self, FnSteamRelayNetworkStatusChanged fnCallback ); +S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_FakeIPResult( ISteamNetworkingUtils* self, FnSteamNetworkingFakeIPResult fnCallback ); S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_MessagesSessionRequest( ISteamNetworkingUtils* self, FnSteamNetworkingMessagesSessionRequest fnCallback ); S_API bool SteamAPI_ISteamNetworkingUtils_SetGlobalCallback_MessagesSessionFailed( ISteamNetworkingUtils* self, FnSteamNetworkingMessagesSessionFailed fnCallback ); S_API bool SteamAPI_ISteamNetworkingUtils_SetConfigValue( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, intptr_t scopeObj, ESteamNetworkingConfigDataType eDataType, const void * pArg ); @@ -958,11 +1107,16 @@ S_API const char * SteamAPI_ISteamNetworkingUtils_GetConfigValueInfo( ISteamNetw S_API ESteamNetworkingConfigValue SteamAPI_ISteamNetworkingUtils_IterateGenericEditableConfigValues( ISteamNetworkingUtils* self, ESteamNetworkingConfigValue eCurrent, bool bEnumerateDevVars ); S_API void SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ToString( ISteamNetworkingUtils* self, const SteamNetworkingIPAddr & addr, char * buf, uint32 cbBuf, bool bWithPort ); S_API bool SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ParseString( ISteamNetworkingUtils* self, SteamNetworkingIPAddr * pAddr, const char * pszStr ); +S_API ESteamNetworkingFakeIPType SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_GetFakeIPType( ISteamNetworkingUtils* self, const SteamNetworkingIPAddr & addr ); S_API void SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ToString( ISteamNetworkingUtils* self, const SteamNetworkingIdentity & identity, char * buf, uint32 cbBuf ); S_API bool SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ParseString( ISteamNetworkingUtils* self, SteamNetworkingIdentity * pIdentity, const char * pszStr ); // ISteamGameServer + +// A versioned accessor is exported by the library S_API ISteamGameServer *SteamAPI_SteamGameServer_v014(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServer(), but using this ensures that you are using a matching library. +inline ISteamGameServer *SteamAPI_SteamGameServer() { return SteamAPI_SteamGameServer_v014(); } S_API void SteamAPI_ISteamGameServer_SetProduct( ISteamGameServer* self, const char * pszProduct ); S_API void SteamAPI_ISteamGameServer_SetGameDescription( ISteamGameServer* self, const char * pszGameDescription ); S_API void SteamAPI_ISteamGameServer_SetModDir( ISteamGameServer* self, const char * pszModDir ); @@ -1006,7 +1160,11 @@ S_API void SteamAPI_ISteamGameServer_SendUserDisconnect_DEPRECATED( ISteamGameSe S_API bool SteamAPI_ISteamGameServer_BUpdateUserData( ISteamGameServer* self, uint64_steamid steamIDUser, const char * pchPlayerName, uint32 uScore ); // ISteamGameServerStats + +// A versioned accessor is exported by the library S_API ISteamGameServerStats *SteamAPI_SteamGameServerStats_v001(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerStats(), but using this ensures that you are using a matching library. +inline ISteamGameServerStats *SteamAPI_SteamGameServerStats() { return SteamAPI_SteamGameServerStats_v001(); } S_API SteamAPICall_t SteamAPI_ISteamGameServerStats_RequestUserStats( ISteamGameServerStats* self, uint64_steamid steamIDUser ); S_API bool SteamAPI_ISteamGameServerStats_GetUserStatInt32( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, int32 * pData ); S_API bool SteamAPI_ISteamGameServerStats_GetUserStatFloat( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName, float * pData ); @@ -1018,6 +1176,12 @@ S_API bool SteamAPI_ISteamGameServerStats_SetUserAchievement( ISteamGameServerSt S_API bool SteamAPI_ISteamGameServerStats_ClearUserAchievement( ISteamGameServerStats* self, uint64_steamid steamIDUser, const char * pchName ); S_API SteamAPICall_t SteamAPI_ISteamGameServerStats_StoreUserStats( ISteamGameServerStats* self, uint64_steamid steamIDUser ); +// ISteamNetworkingFakeUDPPort +S_API void SteamAPI_ISteamNetworkingFakeUDPPort_DestroyFakeUDPPort( ISteamNetworkingFakeUDPPort* self ); +S_API EResult SteamAPI_ISteamNetworkingFakeUDPPort_SendMessageToFakeIP( ISteamNetworkingFakeUDPPort* self, const SteamNetworkingIPAddr & remoteAddress, const void * pData, uint32 cbData, int nSendFlags ); +S_API int SteamAPI_ISteamNetworkingFakeUDPPort_ReceiveMessages( ISteamNetworkingFakeUDPPort* self, SteamNetworkingMessage_t ** ppOutMessages, int nMaxMessages ); +S_API void SteamAPI_ISteamNetworkingFakeUDPPort_ScheduleCleanup( ISteamNetworkingFakeUDPPort* self, const SteamNetworkingIPAddr & remoteAddress ); + // SteamIPAddress_t S_API bool SteamAPI_SteamIPAddress_t_IsSet( SteamIPAddress_t* self ); @@ -1055,6 +1219,8 @@ S_API bool SteamAPI_SteamNetworkingIPAddr_IsLocalHost( SteamNetworkingIPAddr* se S_API void SteamAPI_SteamNetworkingIPAddr_ToString( SteamNetworkingIPAddr* self, char * buf, uint32 cbBuf, bool bWithPort ); S_API bool SteamAPI_SteamNetworkingIPAddr_ParseString( SteamNetworkingIPAddr* self, const char * pszStr ); S_API bool SteamAPI_SteamNetworkingIPAddr_IsEqualTo( SteamNetworkingIPAddr* self, const SteamNetworkingIPAddr & x ); +S_API ESteamNetworkingFakeIPType SteamAPI_SteamNetworkingIPAddr_GetFakeIPType( SteamNetworkingIPAddr* self ); +S_API bool SteamAPI_SteamNetworkingIPAddr_IsFakeIP( SteamNetworkingIPAddr* self ); // SteamNetworkingIdentity S_API void SteamAPI_SteamNetworkingIdentity_Clear( SteamNetworkingIdentity* self ); @@ -1071,6 +1237,10 @@ S_API void SteamAPI_SteamNetworkingIdentity_SetStadiaID( SteamNetworkingIdentity S_API uint64 SteamAPI_SteamNetworkingIdentity_GetStadiaID( SteamNetworkingIdentity* self ); S_API void SteamAPI_SteamNetworkingIdentity_SetIPAddr( SteamNetworkingIdentity* self, const SteamNetworkingIPAddr & addr ); S_API const SteamNetworkingIPAddr * SteamAPI_SteamNetworkingIdentity_GetIPAddr( SteamNetworkingIdentity* self ); +S_API void SteamAPI_SteamNetworkingIdentity_SetIPv4Addr( SteamNetworkingIdentity* self, uint32 nIPv4, uint16 nPort ); +S_API uint32 SteamAPI_SteamNetworkingIdentity_GetIPv4( SteamNetworkingIdentity* self ); +S_API ESteamNetworkingFakeIPType SteamAPI_SteamNetworkingIdentity_GetFakeIPType( SteamNetworkingIdentity* self ); +S_API bool SteamAPI_SteamNetworkingIdentity_IsFakeIP( SteamNetworkingIdentity* self ); S_API void SteamAPI_SteamNetworkingIdentity_SetLocalHost( SteamNetworkingIdentity* self ); S_API bool SteamAPI_SteamNetworkingIdentity_IsLocalHost( SteamNetworkingIdentity* self ); S_API bool SteamAPI_SteamNetworkingIdentity_SetGenericString( SteamNetworkingIdentity* self, const char * pszString ); @@ -1091,15 +1261,6 @@ S_API void SteamAPI_SteamNetworkingConfigValue_t_SetFloat( SteamNetworkingConfig S_API void SteamAPI_SteamNetworkingConfigValue_t_SetPtr( SteamNetworkingConfigValue_t* self, ESteamNetworkingConfigValue eVal, void * data ); S_API void SteamAPI_SteamNetworkingConfigValue_t_SetString( SteamNetworkingConfigValue_t* self, ESteamNetworkingConfigValue eVal, const char * data ); -// SteamNetworkingPOPIDRender -S_API const char * SteamAPI_SteamNetworkingPOPIDRender_c_str( SteamNetworkingPOPIDRender* self ); - -// SteamNetworkingIdentityRender -S_API const char * SteamAPI_SteamNetworkingIdentityRender_c_str( SteamNetworkingIdentityRender* self ); - -// SteamNetworkingIPAddrRender -S_API const char * SteamAPI_SteamNetworkingIPAddrRender_c_str( SteamNetworkingIPAddrRender* self ); - // SteamDatagramHostedAddress S_API void SteamAPI_SteamDatagramHostedAddress_Clear( SteamDatagramHostedAddress* self ); S_API SteamNetworkingPOPID SteamAPI_SteamDatagramHostedAddress_GetPopID( SteamDatagramHostedAddress* self ); diff --git a/CodeGen/steam/steam_api_internal.h b/CodeGen/steam/steam_api_internal.h index 7bd2d7af..fcebd7b7 100644 --- a/CodeGen/steam/steam_api_internal.h +++ b/CodeGen/steam/steam_api_internal.h @@ -255,64 +255,39 @@ enum { k_iSteamBillingCallbacks = 400 }; enum { k_iSteamMatchmakingCallbacks = 500 }; enum { k_iSteamContentServerCallbacks = 600 }; enum { k_iSteamUtilsCallbacks = 700 }; -enum { k_iClientFriendsCallbacks = 800 }; -enum { k_iClientUserCallbacks = 900 }; enum { k_iSteamAppsCallbacks = 1000 }; enum { k_iSteamUserStatsCallbacks = 1100 }; enum { k_iSteamNetworkingCallbacks = 1200 }; enum { k_iSteamNetworkingSocketsCallbacks = 1220 }; enum { k_iSteamNetworkingMessagesCallbacks = 1250 }; enum { k_iSteamNetworkingUtilsCallbacks = 1280 }; -enum { k_iClientRemoteStorageCallbacks = 1300 }; -enum { k_iClientDepotBuilderCallbacks = 1400 }; +enum { k_iSteamRemoteStorageCallbacks = 1300 }; enum { k_iSteamGameServerItemsCallbacks = 1500 }; -enum { k_iClientUtilsCallbacks = 1600 }; enum { k_iSteamGameCoordinatorCallbacks = 1700 }; enum { k_iSteamGameServerStatsCallbacks = 1800 }; enum { k_iSteam2AsyncCallbacks = 1900 }; enum { k_iSteamGameStatsCallbacks = 2000 }; -enum { k_iClientHTTPCallbacks = 2100 }; -enum { k_iClientScreenshotsCallbacks = 2200 }; +enum { k_iSteamHTTPCallbacks = 2100 }; enum { k_iSteamScreenshotsCallbacks = 2300 }; -enum { k_iClientAudioCallbacks = 2400 }; -enum { k_iClientUnifiedMessagesCallbacks = 2500 }; +// NOTE: 2500-2599 are reserved enum { k_iSteamStreamLauncherCallbacks = 2600 }; -enum { k_iClientControllerCallbacks = 2700 }; enum { k_iSteamControllerCallbacks = 2800 }; -enum { k_iClientParentalSettingsCallbacks = 2900 }; -enum { k_iClientDeviceAuthCallbacks = 3000 }; -enum { k_iClientNetworkDeviceManagerCallbacks = 3100 }; -enum { k_iClientMusicCallbacks = 3200 }; -enum { k_iClientRemoteClientManagerCallbacks = 3300 }; -enum { k_iClientUGCCallbacks = 3400 }; +enum { k_iSteamUGCCallbacks = 3400 }; enum { k_iSteamStreamClientCallbacks = 3500 }; -enum { k_IClientProductBuilderCallbacks = 3600 }; -enum { k_iClientShortcutsCallbacks = 3700 }; -enum { k_iClientRemoteControlManagerCallbacks = 3800 }; enum { k_iSteamAppListCallbacks = 3900 }; enum { k_iSteamMusicCallbacks = 4000 }; enum { k_iSteamMusicRemoteCallbacks = 4100 }; -enum { k_iClientVRCallbacks = 4200 }; -enum { k_iClientGameNotificationCallbacks = 4300 }; enum { k_iSteamGameNotificationCallbacks = 4400 }; enum { k_iSteamHTMLSurfaceCallbacks = 4500 }; -enum { k_iClientVideoCallbacks = 4600 }; -enum { k_iClientInventoryCallbacks = 4700 }; -enum { k_iClientBluetoothManagerCallbacks = 4800 }; -enum { k_iClientSharedConnectionCallbacks = 4900 }; +enum { k_iSteamVideoCallbacks = 4600 }; +enum { k_iSteamInventoryCallbacks = 4700 }; enum { k_ISteamParentalSettingsCallbacks = 5000 }; -enum { k_iClientShaderCallbacks = 5100 }; enum { k_iSteamGameSearchCallbacks = 5200 }; enum { k_iSteamPartiesCallbacks = 5300 }; -enum { k_iClientPartiesCallbacks = 5400 }; enum { k_iSteamSTARCallbacks = 5500 }; -enum { k_iClientSTARCallbacks = 5600 }; enum { k_iSteamRemotePlayCallbacks = 5700 }; -enum { k_iClientCompatCallbacks = 5800 }; enum { k_iSteamChatCallbacks = 5900 }; -enum { k_iClientNetworkingUtilsCallbacks = 6000 }; -enum { k_iClientSystemManagerCallbacks = 6100 }; -enum { k_iClientStorageDeviceManagerCallbacks = 6200 }; +// NOTE: Internal "IClientXxx" callback IDs go in clientenums.h #ifdef _MSVC_VER #pragma warning( pop ) diff --git a/CodeGen/steam/steamclientpublic.h b/CodeGen/steam/steamclientpublic.h index c0e1f90d..93aa7c6e 100644 --- a/CodeGen/steam/steamclientpublic.h +++ b/CodeGen/steam/steamclientpublic.h @@ -136,6 +136,7 @@ enum EResult k_EResultSteamRealmMismatch = 120, // The user's realm does not match the realm of the requested resource k_EResultInvalidSignature = 121, // signature check did not match k_EResultParseFailure = 122, // Failed to parse input + k_EResultNoVerifiedPhone = 123, // account does not have a verified phone number }; // Error codes for use with the voice functions diff --git a/CodeGen/steam/steamnetworkingfakeip.h b/CodeGen/steam/steamnetworkingfakeip.h new file mode 100644 index 00000000..89ebd101 --- /dev/null +++ b/CodeGen/steam/steamnetworkingfakeip.h @@ -0,0 +1,135 @@ +//====== Copyright Valve Corporation, All rights reserved. ==================== + +#ifndef STEAMNETWORKINGFAKEIP_H +#define STEAMNETWORKINGFAKEIP_H +#pragma once + +#include "steamnetworkingtypes.h" +#include "steam_api_common.h" + +// It is HIGHLY recommended to limit messages sent via Fake UDP port to this +// value. The purpose of a Fake UDP port is to make porting ordinary ad-hoc UDP +// code easier. Although the real MTU might be higher than this, this particular +// conservative value is chosen so that fragmentation won't be occurring and +// hiding performance problems from you. +constexpr int k_cbSteamNetworkingSocketsFakeUDPPortRecommendedMTU = 1200; + +// Messages larger than this size are not allowed and cannot be sent +// via Fake UDP port. +constexpr int k_cbSteamNetworkingSocketsFakeUDPPortMaxMessageSize = 4096; + +//----------------------------------------------------------------------------- +/// ISteamNetworkingFakeUDPPort +/// +/// Acts like a UDP port, sending and receiving datagrams addressed using +/// FakeIP addresses. +/// +/// See: ISteamNetworkingSockets::CreateFakeUDPPort + +class ISteamNetworkingFakeUDPPort +{ +public: + /// Destroy the object and cleanup any internal connections. + /// Note that this function call is not threadsafe with respect + /// to any other method of this interface. (However, in general + /// all other operations are threadsafe with respect to each other.) + virtual void DestroyFakeUDPPort() = 0; + + /// Send a datagram to the specified FakeIP. + /// + /// See ISteamNetworkingSockets::SendMessageToConnection for the meaning of + /// nSendFlags and possible return codes. + /// + /// Notes: + /// - datagrams larger than the underlying MTU are supported, but + /// reliable messages (k_nSteamNetworkingSend_Reliable) are not supported. + /// - You will usually want to use k_nSteamNetworkingSend_NoNagle + /// - k_EResultBusy is returned if this is a "server" port and the global + /// allocation has not yet completed. + /// - k_EResultIPNotFound will be returned if the address is a local/ephemeral + /// address and no existing connection can be found. This can happen if + /// the remote host contacted us without having a global address, and we + /// assigned them a random local address, and then the session with + /// that host timed out. + /// - When initiating communications, the first messages may be sent + /// via backend signaling, or otherwise delayed, while a route is found. + /// Expect the ping time to fluctuate during this period, and it's possible + /// that messages will be delivered out of order (which is also possible with + /// ordinary UDP). + virtual EResult SendMessageToFakeIP( const SteamNetworkingIPAddr &remoteAddress, const void *pData, uint32 cbData, int nSendFlags ) = 0; + + /// Receive messages on the port. + /// + /// Returns the number of messages returned into your array, up to nMaxMessages. + /// + /// SteamNetworkingMessage_t::m_identity in the returned message(s) will always contain + /// a FakeIP. See ISteamNetworkingUtils::GetRealIdentityForFakeIP. + virtual int ReceiveMessages( SteamNetworkingMessage_t **ppOutMessages, int nMaxMessages ) = 0; + + /// Schedule the internal connection for a given peer to be cleaned up in a few seconds. + /// + /// Idle connections automatically time out, and so this is not strictly *necessary*, + /// but if you have reason to believe that you are done talking to a given peer for + /// a while, you can call this to speed up the timeout. If any remaining packets are + /// sent or received from the peer, the cleanup is canceled and the usual timeout + /// value is restored. Thus you will usually call this immediately after sending + /// or receiving application-layer "close connection" packets. + virtual void ScheduleCleanup( const SteamNetworkingIPAddr &remoteAddress ) = 0; +}; + +/// Callback struct used to notify when a connection has changed state +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error "Must define VALVE_CALLBACK_PACK_SMALL or VALVE_CALLBACK_PACK_LARGE" +#endif + +/// A struct used to describe a "fake IP" we have been assigned to +/// use as an identifier. This callback is posted when +/// ISteamNetworkingSoockets::BeginAsyncRequestFakeIP completes. +/// See also ISteamNetworkingSockets::GetFakeIP +struct SteamNetworkingFakeIPResult_t +{ + enum { k_iCallback = k_iSteamNetworkingSocketsCallbacks + 3 }; + + /// Status/result of the allocation request. Possible failure values are: + /// - k_EResultBusy - you called GetFakeIP but the request has not completed. + /// - k_EResultInvalidParam - you called GetFakeIP with an invalid port index + /// - k_EResultLimitExceeded - You asked for too many ports, or made an + /// additional request after one had already succeeded + /// - k_EResultNoMatch - GetFakeIP was called, but no request has been made + /// + /// Note that, with the exception of k_EResultBusy (if you are polling), + /// it is highly recommended to treat all failures as fatal. + EResult m_eResult; + + /// Local identity of the ISteamNetworkingSockets object that made + /// this request and is assigned the IP. This is needed in the callback + /// in the case where there are multiple ISteamNetworkingSockets objects. + /// (E.g. one for the user, and another for the local gameserver). + SteamNetworkingIdentity m_identity; + + /// Fake IPv4 IP address that we have been assigned. NOTE: this + /// IP address is not exclusively ours! Steam tries to avoid sharing + /// IP addresses, but this may not always be possible. The IP address + /// may be currently in use by another host, but with different port(s). + /// The exact same IP:port address may have been used previously. + /// Steam tries to avoid reusing ports until they have not been in use for + /// some time, but this may not always be possible. + uint32 m_unIP; + + /// Port number(s) assigned to us. Only the first entries will contain + /// nonzero values. Entries corresponding to ports beyond what was + /// allocated for you will be zero. + /// + /// (NOTE: At the time of this writing, the maximum number of ports you may + /// request is 4.) + enum { k_nMaxReturnPorts = 8 }; + uint16 m_unPorts[k_nMaxReturnPorts]; +}; + +#pragma pack( pop ) + +#endif // _H diff --git a/CodeGen/steam/steamnetworkingtypes.h b/CodeGen/steam/steamnetworkingtypes.h index a532e050..6692a9cb 100644 --- a/CodeGen/steam/steamnetworkingtypes.h +++ b/CodeGen/steam/steamnetworkingtypes.h @@ -57,12 +57,14 @@ struct SteamNetAuthenticationStatus_t; struct SteamRelayNetworkStatus_t; struct SteamNetworkingMessagesSessionRequest_t; struct SteamNetworkingMessagesSessionFailed_t; +struct SteamNetworkingFakeIPResult_t; typedef void (*FnSteamNetConnectionStatusChanged)( SteamNetConnectionStatusChangedCallback_t * ); typedef void (*FnSteamNetAuthenticationStatusChanged)( SteamNetAuthenticationStatus_t * ); typedef void (*FnSteamRelayNetworkStatusChanged)(SteamRelayNetworkStatus_t *); typedef void (*FnSteamNetworkingMessagesSessionRequest)(SteamNetworkingMessagesSessionRequest_t *); typedef void (*FnSteamNetworkingMessagesSessionFailed)(SteamNetworkingMessagesSessionFailed_t *); +typedef void (*FnSteamNetworkingFakeIPResult)(SteamNetworkingFakeIPResult_t *); /// Handle used to identify a connection to a remote host. typedef uint32 HSteamNetConnection; @@ -176,6 +178,18 @@ enum ESteamNetworkingIdentityType k_ESteamNetworkingIdentityType__Force32bit = 0x7fffffff, }; +/// "Fake IPs" are assigned to hosts, to make it easier to interface with +/// older code that assumed all hosts will have an IPv4 address +enum ESteamNetworkingFakeIPType +{ + k_ESteamNetworkingFakeIPType_Invalid, // Error, argument was not even an IP address, etc. + k_ESteamNetworkingFakeIPType_NotFake, // Argument was a valid IP, but was not from the reserved "fake" range + k_ESteamNetworkingFakeIPType_GlobalIPv4, // Globally unique (for a given app) IPv4 address. Address space managed by Steam + k_ESteamNetworkingFakeIPType_LocalIPv4, // Locally unique IPv4 address. Address space managed by the local process. For internal use only; should not be shared! + + k_ESteamNetworkingFakeIPType__Force32Bit = 0x7fffffff +}; + #pragma pack(push,1) /// Store an IP and port. IPv6 is always used; IPv4 is represented using @@ -226,6 +240,13 @@ struct SteamNetworkingIPAddr /// See if two addresses are identical bool operator==(const SteamNetworkingIPAddr &x ) const; + + /// Classify address as FakeIP. This function never returns + /// k_ESteamNetworkingFakeIPType_Invalid. + ESteamNetworkingFakeIPType GetFakeIPType() const; + + /// Return true if we are a FakeIP + bool IsFakeIP() const { return GetFakeIPType() > k_ESteamNetworkingFakeIPType_NotFake; } }; /// An abstract way to represent the identity of a network host. All identities can @@ -252,6 +273,11 @@ struct SteamNetworkingIdentity void SetIPAddr( const SteamNetworkingIPAddr &addr ); // Set to specified IP:port const SteamNetworkingIPAddr *GetIPAddr() const; // returns null if we are not an IP address. + void SetIPv4Addr( uint32 nIPv4, uint16 nPort ); // Set to specified IPv4:port + uint32 GetIPv4() const; // returns 0 if we are not an IPv4 address. + + ESteamNetworkingFakeIPType GetFakeIPType() const; + bool IsFakeIP() const { return GetFakeIPType() > k_ESteamNetworkingFakeIPType_NotFake; } // "localhost" is equivalent for many purposes to "anonymous." Our remote // will identify us by the network address we use. @@ -624,6 +650,16 @@ const int k_cchSteamNetworkingMaxConnectionCloseReason = 128; /// of a connection. const int k_cchSteamNetworkingMaxConnectionDescription = 128; +/// Max length of the app's part of the description +const int k_cchSteamNetworkingMaxConnectionAppName = 32; + +const int k_nSteamNetworkConnectionInfoFlags_Unauthenticated = 1; // We don't have a certificate for the remote host. +const int k_nSteamNetworkConnectionInfoFlags_Unencrypted = 2; // Information is being sent out over a wire unencrypted (by this library) +const int k_nSteamNetworkConnectionInfoFlags_LoopbackBuffers = 4; // Internal loopback buffers. Won't be true for localhost. (You can check the address to determine that.) This implies k_nSteamNetworkConnectionInfoFlags_FastLAN +const int k_nSteamNetworkConnectionInfoFlags_Fast = 8; // The connection is "fast" and "reliable". Either internal/localhost (check the address to find out), or the peer is on the same LAN. (Probably. It's based on the address and the ping time, this is actually hard to determine unambiguously). +const int k_nSteamNetworkConnectionInfoFlags_Relayed = 16; // The connection is relayed somehow (SDR or TURN). +const int k_nSteamNetworkConnectionInfoFlags_DualWifi = 32; // We're taking advantage of dual-wifi multi-path + /// Describe the state of a connection. struct SteamNetConnectionInfo_t { @@ -671,13 +707,16 @@ struct SteamNetConnectionInfo_t /// handle, but in certain cases with symmetric connections it might not. char m_szConnectionDescription[ k_cchSteamNetworkingMaxConnectionDescription ]; + /// Misc flags. Bitmask of k_nSteamNetworkConnectionInfoFlags_Xxxx + int m_nFlags; + /// Internal stuff, room to change API easily - uint32 reserved[64]; + uint32 reserved[63]; }; /// Quick connection state, pared down to something you could call /// more frequently without it being too big of a perf hit. -struct SteamNetworkingQuickConnectionStatus +struct SteamNetConnectionRealTimeStatus_t { /// High level state of the connection @@ -720,17 +759,16 @@ struct SteamNetworkingQuickConnectionStatus /// have to re-transmit. int m_cbSentUnackedReliable; - /// If you asked us to send a message right now, how long would that message - /// sit in the queue before we actually started putting packets on the wire? - /// (And assuming Nagle does not cause any packets to be delayed.) + /// If you queued a message right now, approximately how long would that message + /// wait in the queue before we actually started putting its data on the wire in + /// a packet? /// - /// In general, data that is sent by the application is limited by the - /// bandwidth of the channel. If you send data faster than this, it must - /// be queued and put on the wire at a metered rate. Even sending a small amount - /// of data (e.g. a few MTU, say ~3k) will require some of the data to be delayed - /// a bit. - /// - /// In general, the estimated delay will be approximately equal to + /// In general, data that is sent by the application is limited by the bandwidth + /// of the channel. If you send data faster than this, it must be queued and + /// put on the wire at a metered rate. Even sending a small amount of data (e.g. + /// a few MTU, say ~3k) will require some of the data to be delayed a bit. + /// + /// Ignoring multiple lanes, the estimated delay will be approximately equal to /// /// ( m_cbPendingUnreliable+m_cbPendingReliable ) / m_nSendRateBytesPerSecond /// @@ -739,15 +777,40 @@ struct SteamNetworkingQuickConnectionStatus /// and the last packet placed on the wire, and we are exactly up against the send /// rate limit. In that case we might need to wait for one packet's worth of time to /// elapse before we can send again. On the other extreme, the queue might have data - /// in it waiting for Nagle. (This will always be less than one packet, because as soon - /// as we have a complete packet we would send it.) In that case, we might be ready - /// to send data now, and this value will be 0. + /// in it waiting for Nagle. (This will always be less than one packet, because as + /// soon as we have a complete packet we would send it.) In that case, we might be + /// ready to send data now, and this value will be 0. + /// + /// This value is only valid if multiple lanes are not used. If multiple lanes are + /// in use, then the queue time will be different for each lane, and you must use + /// the value in SteamNetConnectionRealTimeLaneStatus_t. + /// + /// Nagle delay is ignored for the purposes of this calculation. SteamNetworkingMicroseconds m_usecQueueTime; - /// Internal stuff, room to change API easily + // Internal stuff, room to change API easily uint32 reserved[16]; }; +/// Quick status of a particular lane +struct SteamNetConnectionRealTimeLaneStatus_t +{ + // Counters for this particular lane. See the corresponding variables + // in SteamNetConnectionRealTimeStatus_t + int m_cbPendingUnreliable; + int m_cbPendingReliable; + int m_cbSentUnackedReliable; + int _reservePad1; // Reserved for future use + + /// Lane-specific queue time. This value takes into consideration lane priorities + /// and weights, and how much data is queued in each lane, and attempts to predict + /// how any data currently queued will be sent out. + SteamNetworkingMicroseconds m_usecQueueTime; + + // Internal stuff, room to change API easily + uint32 reserved[10]; +}; + #pragma pack( pop ) // @@ -794,15 +857,17 @@ struct SteamNetworkingMessage_t /// - You might have closed the connection, so fetching the user data /// would not be possible. /// - /// Not used when sending messages, + /// Not used when sending messages. int64 m_nConnUserData; /// Local timestamp when the message was received /// Not used for outbound messages. SteamNetworkingMicroseconds m_usecTimeReceived; - /// Message number assigned by the sender. - /// This is not used for outbound messages + /// Message number assigned by the sender. This is not used for outbound + /// messages. Note that if multiple lanes are used, each lane has its own + /// message numbers, which are assigned sequentially, so messages from + /// different lanes will share the same numbers. int64 m_nMessageNumber; /// Function used to free up m_pData. This mechanism exists so that @@ -834,6 +899,11 @@ struct SteamNetworkingMessage_t /// Not used for received messages. int64 m_nUserData; + /// For outbound messages, which lane to use? See ISteamNetworkingSockets::ConfigureConnectionLanes. + /// For inbound messages, what lane was the message received on? + uint16 m_idxLane; + uint16 _pad1__; + /// You MUST call this when you're done with the object, /// to free up memory, etc. inline void Release(); @@ -1145,19 +1215,6 @@ enum ESteamNetworkingConfigValue /// the peer to also modify their value in order for encryption to be disabled.) k_ESteamNetworkingConfig_Unencrypted = 34, - /// [global int32] 0 or 1. Some variables are "dev" variables. They are useful - /// for debugging, but should not be adjusted in production. When this flag is false (the default), - /// such variables will not be enumerated by the ISteamnetworkingUtils::GetFirstConfigValue - /// ISteamNetworkingUtils::GetConfigValueInfo functions. The idea here is that you - /// can use those functions to provide a generic mechanism to set any configuration - /// value from a console or configuration file, looking up the variable by name. Depending - /// on your game, modifying other configuration values may also have negative effects, and - /// you may wish to further lock down which variables are allowed to be modified by the user. - /// (Maybe no variables!) Or maybe you use a whitelist or blacklist approach. - /// - /// (This flag is itself a dev variable.) - k_ESteamNetworkingConfig_EnumerateDevVars = 35, - /// [connection int32] Set this to 1 on outbound connections and listen sockets, /// to enable "symmetric connect mode", which is useful in the following /// common peer-to-peer use case: @@ -1259,6 +1316,13 @@ enum ESteamNetworkingConfigValue /// This value should not be read or written in any other context. k_ESteamNetworkingConfig_LocalVirtualPort = 38, + /// [connection int32] Enable Dual wifi band support for this connection + /// 0 = no, 1 = yes, 2 = simulate it for debugging, even if dual wifi not available + k_ESteamNetworkingConfig_DualWifi_Enable = 39, + + /// [connection int32] True to enable diagnostics reporting through + /// generic platform UI. (Only available on Steam.) + k_ESteamNetworkingConfig_EnableDiagnosticsUI = 46, // // Simulating network conditions @@ -1379,6 +1443,11 @@ enum ESteamNetworkingConfigValue /// ISteamNetworkingMessages. k_ESteamNetworkingConfig_Callback_CreateConnectionSignaling = 206, + /// [global FnSteamNetworkingFakeIPResult] Callback that's invoked when + /// a FakeIP allocation finishes. See: ISteamNetworkingSockets::BeginAsyncRequestFakeIP, + /// ISteamNetworkingUtils::SetGlobalCallback_FakeIPResult + k_ESteamNetworkingConfig_Callback_FakeIPResult = 207, + // // P2P connection settings // @@ -1476,6 +1545,10 @@ enum ESteamNetworkingConfigValue k_ESteamNetworkingConfig_LogLevel_P2PRendezvous = 17, // [connection int32] P2P rendezvous messages k_ESteamNetworkingConfig_LogLevel_SDRRelayPings = 18, // [global int32] Ping relays + + // Deleted, do not use + k_ESteamNetworkingConfig_DELETED_EnumerateDevVars = 35, + k_ESteamNetworkingConfigValue__Force32Bit = 0x7fffffff }; @@ -1633,6 +1706,8 @@ inline void GetSteamNetworkingLocationPOPStringFromID( SteamNetworkingPOPID id, /// The POPID "dev" is used in non-production environments for testing. const SteamNetworkingPOPID k_SteamDatagramPOPID_dev = ( (uint32)'d' << 16U ) | ( (uint32)'e' << 8U ) | (uint32)'v'; +#ifndef API_GEN + /// Utility class for printing a SteamNetworkingPOPID. struct SteamNetworkingPOPIDRender { @@ -1642,6 +1717,7 @@ struct SteamNetworkingPOPIDRender char buf[ 8 ]; }; +#endif /////////////////////////////////////////////////////////////////////////////// // diff --git a/CodeGen/templates/custom_types/SteamInput/SteamInputActionEvent_t.cs b/CodeGen/templates/custom_types/SteamInput/SteamInputActionEvent_t.cs index 2b8de128..617e7326 100644 --- a/CodeGen/templates/custom_types/SteamInput/SteamInputActionEvent_t.cs +++ b/CodeGen/templates/custom_types/SteamInput/SteamInputActionEvent_t.cs @@ -17,7 +17,7 @@ public struct SteamInputActionEvent_t [System.Serializable] [StructLayout(LayoutKind.Sequential)] - public struct SteamInputAnalogActionEvent_t + public struct AnalogAction_t { public InputAnalogActionHandle_t actionHandle; @@ -26,7 +26,7 @@ public struct SteamInputAnalogActionEvent_t [System.Serializable] [StructLayout(LayoutKind.Sequential)] - public struct SteamInputDigitalActionEvent_t + public struct DigitalAction_t { public InputDigitalActionHandle_t actionHandle; @@ -38,10 +38,10 @@ public struct SteamInputDigitalActionEvent_t public struct OptionValue { [FieldOffset(0)] - public SteamInputAnalogActionEvent_t analogAction; + public AnalogAction_t analogAction; [FieldOffset(0)] - public SteamInputDigitalActionEvent_t digitalAction; + public DigitalAction_t digitalAction; } } } diff --git a/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs b/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs index 46c713d8..49754ed5 100644 --- a/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs +++ b/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs @@ -81,6 +81,17 @@ public bool ParseString(string pszStr) { public bool Equals(SteamNetworkingIPAddr x) { return NativeMethods.SteamAPI_SteamNetworkingIPAddr_IsEqualTo(ref this, ref x); } + + /// Classify address as FakeIP. This function never returns + /// k_ESteamNetworkingFakeIPType_Invalid. + public ESteamNetworkingFakeIPType GetFakeIPType() { + return NativeMethods.SteamAPI_SteamNetworkingIPAddr_GetFakeIPType(ref this); + } + + /// Return true if we are a FakeIP + public bool IsFakeIP() { + return GetFakeIPType() > ESteamNetworkingFakeIPType.k_ESteamNetworkingFakeIPType_NotFake; + } } } diff --git a/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIdentity.cs b/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIdentity.cs index 87eb0751..faa5cda2 100644 --- a/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIdentity.cs +++ b/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIdentity.cs @@ -68,9 +68,28 @@ public void SetIPAddr(SteamNetworkingIPAddr addr) { // returns null if we are not an IP address. public SteamNetworkingIPAddr GetIPAddr(){ throw new System.NotImplementedException(); + // TODO: Should SteamNetworkingIPAddr be a class? + // or should this return some kind of pointer instead? //return NativeMethods.SteamAPI_SteamNetworkingIdentity_GetIPAddr(ref this); } + public void SetIPv4Addr(uint nIPv4, ushort nPort) { + NativeMethods.SteamAPI_SteamNetworkingIdentity_SetIPv4Addr(ref this, nIPv4, nPort); + } + + // returns 0 if we are not an IPv4 address. + public uint GetIPv4() { + return NativeMethods.SteamAPI_SteamNetworkingIdentity_GetIPv4(ref this); + } + + public ESteamNetworkingFakeIPType GetFakeIPType() { + return NativeMethods.SteamAPI_SteamNetworkingIdentity_GetFakeIPType(ref this); + } + + public bool IsFakeIP() { + return GetFakeIPType() > ESteamNetworkingFakeIPType.k_ESteamNetworkingFakeIPType_NotFake; + } + // "localhost" is equivalent for many purposes to "anonymous." Our remote // will identify us by the network address we use. // Set to localhost. (We always use IPv6 ::1 for this, not 127.0.0.1) diff --git a/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs b/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs index 7bebdbb1..e10f7d2c 100644 --- a/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs +++ b/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs @@ -36,15 +36,17 @@ public struct SteamNetworkingMessage_t /// - You might have closed the connection, so fetching the user data /// would not be possible. /// - /// Not used when sending messages, + /// Not used when sending messages. public long m_nConnUserData; /// Local timestamp when the message was received /// Not used for outbound messages. public SteamNetworkingMicroseconds m_usecTimeReceived; - /// Message number assigned by the sender. - /// This is not used for outbound messages + /// Message number assigned by the sender. This is not used for outbound + /// messages. Note that if multiple lanes are used, each lane has its own + /// message numbers, which are assigned sequentially, so messages from + /// different lanes will share the same numbers. public long m_nMessageNumber; /// Function used to free up m_pData. This mechanism exists so that @@ -76,6 +78,12 @@ public struct SteamNetworkingMessage_t /// Not used for received messages. public long m_nUserData; + /// For outbound messages, which lane to use? See ISteamNetworkingSockets::ConfigureConnectionLanes. + /// For inbound messages, what lane was the message received on? + public ushort m_idxLane; + + public ushort _pad1__; + /// You MUST call this when you're done with the object, /// to free up memory, etc. public void Release() { diff --git a/CodeGen/templates/nativemethods.txt b/CodeGen/templates/nativemethods.txt index aa56dcf0..ab2e8884 100644 --- a/CodeGen/templates/nativemethods.txt +++ b/CodeGen/templates/nativemethods.txt @@ -206,6 +206,13 @@ namespace Steamworks { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_IsEqualTo", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] public static extern bool SteamAPI_SteamNetworkingIPAddr_IsEqualTo(ref SteamNetworkingIPAddr self, ref SteamNetworkingIPAddr x); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_GetFakeIPType", CallingConvention = CallingConvention.Cdecl)] + public static extern ESteamNetworkingFakeIPType SteamAPI_SteamNetworkingIPAddr_GetFakeIPType(ref SteamNetworkingIPAddr self); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_IsFakeIP", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool SteamAPI_SteamNetworkingIPAddr_IsFakeIP(ref SteamNetworkingIPAddr self); #endregion #region SteamNetworkingIdentity Accessors [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_Clear", CallingConvention = CallingConvention.Cdecl)] @@ -240,6 +247,19 @@ namespace Steamworks { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_GetIPAddr", CallingConvention = CallingConvention.Cdecl)] public static extern IntPtr SteamAPI_SteamNetworkingIdentity_GetIPAddr(ref SteamNetworkingIdentity self); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_SetIPv4Addr", CallingConvention = CallingConvention.Cdecl)] + public static extern void SteamAPI_SteamNetworkingIdentity_SetIPv4Addr(ref SteamNetworkingIdentity self, uint nIPv4, ushort nPort); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_GetIPv4", CallingConvention = CallingConvention.Cdecl)] + public static extern uint SteamAPI_SteamNetworkingIdentity_GetIPv4(ref SteamNetworkingIdentity self); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_GetFakeIPType", CallingConvention = CallingConvention.Cdecl)] + public static extern ESteamNetworkingFakeIPType SteamAPI_SteamNetworkingIdentity_GetFakeIPType(ref SteamNetworkingIdentity self); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_IsFakeIP", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool SteamAPI_SteamNetworkingIdentity_IsFakeIP(ref SteamNetworkingIdentity self); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_SetLocalHost", CallingConvention = CallingConvention.Cdecl)] public static extern void SteamAPI_SteamNetworkingIdentity_SetLocalHost(ref SteamNetworkingIdentity self); diff --git a/README.md b/README.md index 9b2defa9..2872409f 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ _Steamworks.NET_ is a C# Wrapper for Valve's Steamworks API, it can be used eith _Steamworks.NET_ was designed to be as close as possible to the original C++ API, as such the documentation provided from Valve largely covers usage of _Steamworks.NET_. Niceties and C# Idioms can be easily implemented on top of _Steamworks.NET_. -_Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.52. +_Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.53a. * Author: [Riley Labrecque](https://github.com/rlabrecque) * License: [MIT](http://www.opensource.org/licenses/mit-license.php) diff --git a/com.rlabrecque.steamworks.net/Plugins/libsteam_api.so b/com.rlabrecque.steamworks.net/Plugins/libsteam_api.so index 3b1c085dcdc9e80c1faf0a8b70d6e66191068a4d..8bf6762bb35caa5309598a0168549099fd0f75eb 100644 GIT binary patch literal 416413 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

ZPiBFi@yz?_7C|eFTaWbvV1Yi#8 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 diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/Info.plist b/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/Info.plist index b868a0e4..9045a402 100644 --- a/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/Info.plist +++ b/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/Info.plist @@ -17,7 +17,7 @@ CFBundleSignature ???? CFBundleVersion - 1.50 + 1.53 CSResourcesFileMapped yes DTCompiler diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/MacOS/libsteam_api.dylib b/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/MacOS/libsteam_api.dylib index 638d8ebbd4a4ac9fedc3ad4e0ee8ff65fae113bd..8d3c5eeb87d48eaa3a62ed8c63a1a484b920de82 100644 GIT binary patch literal 609584 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�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 z%0A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 delta 171036 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[sp4dV~fDO!WT0v2CG$%X4l8)=TP9= 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

%gCYzxvfg5DRVr9tiFX{ng+`@RzL} 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

Q|5+FWn18L3w3;^R=d{Rp)xHdqy}j+E)StaThi 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 Qrr_2?Os5_gb)(t;0hiiBEdT%j diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api.dll b/com.rlabrecque.steamworks.net/Plugins/steam_api.dll index e2b2db0881dbf07ace34d78934e008b5ef9abc8c..319bb83a93bf48e9fb644d4098f0585c609b999d 100644 GIT binary patch delta 32949 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 V>n}MrBLXc;UKq+Puw)D_{{anG8W#Wn delta 30012 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 anU-dwr_X3LBV)r(({_6+S-3MwVfYVFpoR|s diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api64.dll b/com.rlabrecque.steamworks.net/Plugins/steam_api64.dll index 7190117a2e70943875c86ba4247ad6f0b43674f8..e1ca6923adda8e2cf8c520593ad069011f69646d 100644 GIT binary patch delta 98861 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 delta 93976 zcmdSC2~<;8*EgP%5Je?kP@)K;K~Qlsy~obI;jlpK0%X z_St8jeXr|04V3RAR;0_t%n;%p>KLkHI{bMsM3?YMkB8O`P91Y|#|s%N6I+fxvGiY# zlKi-Ln>r@XXdJr#tpQ7#on9F#yS`br@w?}~*uidQRQB4sq5iGe+a7#0{Z7T{ve7%{ z?+QPBb8>O>zK@(bGjM7DF53%Iz0b}_biO^?`Sa?I&euPc(!NgnXwsy8mv@xyX!_Rj zh}B^qKe%J&-OkVE*UNA7)!DosR~|}glV{iICOutS*9-%qvC*GPx)zpt`ua_EBlSAn z@9L0s`Mfhrth+u$r^DZ)pM>yUK`K65Z$DBJTXzF zDV}RWbRyuV>lk!{SH?B0yQH2$mk4-fU4Djj?fSzA^b?Le^@rx~|6|eV#&?`O=^-aZ z_xOhx%S_;Wgy&e^Umx9dUq>KYP^ST&b^ls7Q>QELI8&>t4hO^1B>=A}e_h|a&JyI% zmM)X;Mh-*Qg(BCR|E7UKxq|oO>YDcYZ9ij`G=Z)9vM4xFh#w~hw zCi<@~;mt#&@TVr~bW*wKGvAz~*D1ESd{1bcPz~EM5wOU){MLQ2hY0Uy7vCCU3BNL- zs`7#f0Di6kcT@v65HR1R)}B{|m^~S=-{)(!=T-q{Q8zm^;ErnGO#-gcfX`P0z0~9+ z0>%l|u+B7~l==MpeXux!h0N#C#(Q{Hf_*cO_cO-TcUATL61Dd>zgeqo>jfC1=rw>g zmQkgdgGA4-7EwB(Tp3@5x>B9u9ChS7s)2_dLj8OV_ul2MNw8t7h}MweG>Z1e-LQ_qY#slj^3-=8xP5TT5dJ znay9W6<5Eyy_E#}hPSEHw#ECibh_jUaDP5vVnMO9zVZSsRt;-HcspmRQyWv&-YkNxnyF5$8g`RllV++@tA_bU z1C}zArdGciwsZ_&A^c|DwyjRgxNpq&@oscgHz%mc&v|w|OP#CHSl7PTUz_mR_4+jn zx1i!g(@O-DO2m@WwM0W{u*CC|!E4Ho-gvTJSUp~=aRh6*F{<$oA-q=8aDEj3-fbEl zu>|XIpZdokMPvuxwD4|C$FXo;yJ>S?1e{-*T6ilwuQfs%{~E=vt?jyD&?#$1^G}*b z8?Pg|gl~(Du62Qu<2T-kZOdw#{y;iu6yF}(r1oS=hmYd*kqGsC|x-Ge@ZX5JsMc{n%BclSa^VYEd$LL`~b5hEsdB&Jnnh`{D-G2YpL5deJZc zA+DJr@eczJ#=T}(_Pc?<(PBc&w4Z{(dno%v@92ckVcJ5xDM}}yy%;cC#lL45cGbWu zc6h~9Cxe<`qNgO(@8y{tSF%6(;f@2?hrC6noCXKe zP%7O70$2bPr5|^9x}v{k;B%7V^nVyOzK}FZZ_VjWSbKx!=q^b3%!9PN=rvA*3V!+L^jG4go*ABG_nXoICWc0hhZQU&q05R{trb2TYh9Vh( z=<42DfAD+$diN8MxA{F%SYYGFJqkmai>GEakNu-HCSGt@6zn_hTbz)fWu{w4xHBuA zjpiG&;`HIk{F|)Afq537OUJQMxLiT=E#y2mhPgV}d|9WL?bsLO-`*xiUTS+5( za&huuz=P(fd-XEJvf?2AAnW0~@g>UWixITOfZ`=2AwuZmdcZNP`Gp{Q?&Wia0v2Ei8;5e3+HruML z%V(U(w~C!uGCwb-upfBy>>+FwcV%~rSOe_j!(04!h`q;y=0v_NyA^B0f6mU)8(Z?u z{TiYVd%rI19X`Kb|7NYC_29&oC!hlan?GARpd9Z?H600=L33yRbH6rm^Y$5ZQ*7Qz z33);D#wL25b#n*=O7sm*$WtdS^Nu-owtzcxhO<+Ae@+bhk^6I2v19y6#|gHY56|t% zhH^RgJe$a$>fee@;_vrg#y0XU1KP9geB6LcXsa~?nzG@1+kkZUsb)ma6Uv95lZXiU zOG!KV%*R#mUS*XEc0LZ!p(@Z)4b&f?!&RWiHBcHrd#gaBG*Apc`>H^q1`16s*7PFe zPRHlx`5N_&C5qeEcyr4$mo46B!@ln`&*m`$V^~+-ZD0?*`!hagV9N)8Za~CyHp}dC z4G8tAmd{ry=yb~Y-8u-vB@&*{Dc&^yBFM8iadbkSFN=v2%avLisQiXQD$SJ+Yy~+< zhLoti{QSUK`ZgOjj(ISXb?6(RHXoHO?F*XsgzI&gLeVt{m=JhmVK$39BRpV@t4L*xPw< z=0S+5l6!5w-k}g`K4X{#{8=&V+1P_nCf3d2Xv*Qu82Am=h&SUw?J?*Zo;JL7 zw-#SR=7plt&zKUdj~>0XXf?z;Bx5K_(AVWgL?TB*k}}{o5QI`e^RN7+;jvAwp(toB zuZLOY2VKzRCR<~I6!C+@r?QWE>WF6S8XqKPn0$=HQp{A8nb@e*`F%ZU{ z+LO98?b)Vwd5Z8F-NV}mJo~bqfyNk4ZS}Rw=1l$kEW|RjB@jXHemWW={Ye)sUI()`- z$PW70#>bD06vFRyTq|ha!962a>mOaWF?!TeruVn7Sk%hTH!yXt z@!URsd2D2R6y%?B_Hsy}Hea8*Ks^8)Yj9wc*I14eEyiac0yfF`#XjD7Tzo8mQl;1E z#nT}%YcMYyWebt>8W-&2v&J=UgS4v&=5Iqnlvt1uL=|DA3Nf|A!{IZv=Nra#c(8s$ zB3;ltH$;`ib~dRrbD1+C2}230)FQ#z@-Jf7V1k;y2Q+9N0Cdby^nR7F43kxPbVM!b zz>~&DL&xNdZ_{&`3OR2es%y2MRUyX#q1ryvlgLx|+W`TAdlB{K)57tYhoOmBesFwP zqwZ=Y4^Tk<5Hl?+(}g|!^7xppYl?{fTd4=os^ELbBF5tVNL_u&70PLh9CEn;XyAYE z-6}iWy!S&7J#M8+l7@+{4O6_yBtun;P|{QBUQxQC{M;Np76e_blMmZ`ePOaWNGsnW z1k{VbV77l@p!r}4I*mGA_Xp>lCH!+nJu&oi0!E&Sagu*Hp@UGass~jy6&YhH_`fD3 zxd|rZZvpT#2J{y`htU0W1q}3LtV9}Ruc2%U`76kjPf~0fiK66eh=%f0R!6A>o&wzD zQ&^U+R-!l7f>!Z}(;h9fM?5`X_$5J=r^4Z#p_0Le+ z8+%rJ{7jGg>o-LGpgBXU{>w(S`lnUZqfqZdt=>m}uV+x}8P$4j(9O|vLwJ)9XG?p6dE>#NAJx)gXN)L?lX>x=h$?%uD$ZJ}?9GJu zd<}@sMYE}e6q@-IO9+x2y4x@oqD(*)mzrFyW{fY;1FNJ1DjmkEK&9zgrEidv%mk~c zGfhKwhB+i!#Zo!cTNEm0@8%g(I=g`isu~Aj*QA4wFE$q`O^yZoaV7X^HEZmEJEXl1 zsZ8kyZLuU{qFU9Pu@g@ike-aX8_<@s6H>=_QmUoK-LGnzcu;MkOsT7Cn}b2~hMoMv zlx73E-(hI)7F80)PTefsNd;p{MenN#%aDS6dHIs5c?}lTA_2H(v4-5{XQsB)8~@~WrahqV7pB^* zEBWAQ-TJJ&g&9bDrAtbTsu@)6=LE3en#1c%m}!^FL|=zLA)hwEmY=W&-Pmd03WbJ2 z7dmKjvNsM*OJHB~Yt!OF|DXnart`e{BZ+#WQSE9OAM;2n=H>a1*!6GKCy>6@Eq?lu zj{5pHdHD3cDXVX)L~4qIi;~-jIPFLfgXVW{Fr95#Mz<2|@PnzW^S!b{E=|v5R=#g~ zBHPLTnBJd#$!(9eX0P!_AMK#us8>7g%0GRyB}?VsKANQWgsPxDJm#^aMu)Cx)4rjM ziqyJ;+4MPo=&{Cb+jXYH%%@^=Ak`q!=7tQ;BP~z@h-K-bgsBE-Syv-i4;xv~{16IY zq(M<;jvG6ww96^LgXWySLaR%wk5y3ETOc;>`k+=4Su4SoD={h~j*w4n=C>b5Pr#K#u-tQ_**qA( zIDRP)yrZ6g3QlS^NPXxks|4G}WI;-C^R_cP#S0%m9?+l}2alN;Xy&qQGk~rfd>ekv z8)PDGS9oj8tBiuoyZ?Fr}OS}3Ro-t^_-#X zAaCSMV4v|c=ZtneF5N>%Pl<$$F0S5Xuv#h{-bD!(9E#|m62-rDrnq4&!AgKG#O^gZ z!6G!zM^Xo0$>L2YQBOjbgc9SU$YG(cDu%`x;K@k&424qc>!|%?1Spn)K?lv9E;8K) z7U-IMxXdU3gZKvuoxT_hCLczkY#VK2OHl~|VN{N94F+2SzxHlp1e#}?37HZT?zoX*u@NyfL7sIHn_Q*{RM@@3RhzQEB%GF=54mQN-QDppCB=Z@hy|Jh93q%tNOR5V)CG+=c;n!Lr)qK0A&>LHf+K~;Jx(zB}4 zGm)NFm7b6ELuxudVTsz2acEUm+dhpsRax3sft-nKy6DYMcu~tgP*uD}%eJk`u0wXW zF$n|392#3mT_Lew>HREES`eLh?GAzN0VJj44&U;GSz6~b8?cWXQV&faJ(6X~G2?RnY^jdQ4=dse6u>pLer2q`m;Cy+NQ z6sTquwf1?w_KD{FKuFz|M*a~BsYz2ELMy1=TAa->n;))1_rf)D;fb!MDtpNS;V)Xx zlNPp$Xa(h@MC_$=rz61+ut010dXAdXS(5NJVCXR#nJf3EoQP zQYs@2Tea>tAz!ubX~CmHXH<~PuK=!UjHi&$mOjeCEK>x^ak`;)3VQr?JsZcqM6JhO zT&F(r2**p-^Z^2>%61Y-gg18EI==SF7*iFv33y=sj8{BqizlA>%wFtNc3~3?Zc|U- zAbDDO=PcDU_FTu4-0d>}g|FEF+__YRW()tt<4BVoco=g6b?ZO?Z?3+%#r=A8T z@t539AJEcq3XD1M1enQ(aeZeEJ~+P0##*4+?1s&BY!z(BJsE$l=jYvhLs1i6``6a< z?n|=l!(k+f+O5htl2}}xsMlN70uD*sfoZ&iGGSP;=&dLE20?PgP$5FExalnCGun8` zlK6z-)hOhztHy&M5@M=`c!!5BZQjgWjrfOu4WOWj9cF8&#G)>2y6MK#4rzy4A5i>oBhuZfBwjF&EL zkpWHZ`b{i3D;C`NSES3ZKaI2cq*mo(Yrbv z8(g)O_v3*1>w4Td?Sy$qeH`SopXw50QJZo#^8CqM5e{iLom2LUQd!X4pMU*SoI3<_ zP|;7JD~ulp5L5UkU=4*dWZlNLSr@Amd!bP|cZE=^numwxG4!pXMWSzwG}ztuLO&H$ ze92U9mo77YiM(sexyBU4jq0;&qe#ZLqwv8h=- zG)NVBD2hDsG?U*yplS8jP%WeU;cXK2ymDhJjGASE;1fYa9fq z*DzU>LRt<-W$P9g_V6WyR7%EF6lHlsF#O-XSI2@5rv9x1r`o}8e(dSCZX|JQ0|Zfu zESHSmtU%ryLc-SuMJm5>Qdx|)w7E-0E5SiMa>V~ZTLtC|lpQJ)OaVZG=Ka(+%))!c zrPM-=I7r5;D8imQ77fK}wy3d9$yBlCUX<>WL$t&*9ir? zP*i689vRXDN+gf)HnDak?)pr%@lbZ$P#1I?WdrJC!?i$0f6<115D%p%%FB$)&;V^4 znO%ZdMXmUBZ*;;OwRa~L>+Y>ohHD*BGQd;(2zTQEcbmrM%U)XSRgG9LM;@Fl%LZ|G);}4oo^EOf|wvy*bG34Zs9#4J#cUA9v`cm}{#7x>!6IHWH zX|`4^KlWmE`A=ae_kYS8ET5oXDDk<=do-$i8-nX8XEv{K7m|V6*rLCBo9|xUxsw<9 zGULArH3r$drk{}%w*D(p@Q{TAz(D}M1Q}qZlo#?=zV;no2EenH$n?hA3;8>~_^?nMl!VpArJj}>-s0c*TChTX z-PfY!jD}cgzT8VebIW6(jP#m5@^3qJA+nB)mfP@V{=2|em1mQpmy78rFHYE3+jFZSXS#K{Z=k3a)RG)V}w zXXR1eV?}(YQmyo>zm=|{xp+!L#k3!1`>P%Dh~(I~VnrjyrttSxHe*XR?q1oR#of#Y z(}btaV$EbPy`i({baNX~LKmf*XS!yb{W@>RZvxr0suN>Nc*g2a*(?0Q>QaCwFCEy8~FNt$B|ZtsNhFgqWo|+?zV2TB2_lEVy!|)p-J!T6gyeW!c_Z zu!UhO#XZ8`f3XKU$A5m&A)MY%Y#Iz>jkc#Jc(0f2ES(p;l-6K5U5cV)xKvM+GQpo- z{P0T|dNy)n#LG#H#q-{;Jj*gS9(pB;HSDwyd`R92o(c|W$UIQk%x}LsmCfXnUt17= zzKmF&D~QSal%kDDFWq?>GB&1kpF^^SJACGdp&QxjJ6Y>zLeXW~@ZodnDT^p6iNgbW z#PfM`LY3(R@D3l2>ByC9SY-X1Nz0Jtb&(!;|=?^Fmh|9DO3#*bIm zlg6Yf4^<&6!}%X;@>mYG~yn{hPD( z70!(bZ=GZ<-hp)KoXsHCuOg)gAFD3X`c)V3`-A2JZh0qzJ-l)3J7XEkza4IeS*l0MM#TEgp)U1jdb&5yg36q zrHfQFo&1C5gEAAE))ai>INcd_cG&&Wqic@u?^lO984@s zX^$e0Y4ziL+50_NA71wUMX10{A2egr`Oy!=dQW4nsA<8qIB)aeOYC`G`r$CvgU5W7 z)BM`E*p@ES&#(0JFZwxypB2h?^vg3|jN-3-)QipM-+$BN&aeT0@s9q}SNO#*8rK@S zkJ!&=9cjW_7Byjd-m55z`T6joc5EBpP}DGbo1bP=E>5(Eh=y`8?Xokc`?wHigtCH) z^(*|m_U4ZK_o70!gS$6HvG@6lo7(qYq`F=%i4$>qY`7FaRNz%bgZ-@~cvh4F|A0JT zW3A22ScuXC^zv_s=Q&$WvH)+jH5=-0=GI&`fN$UW5X<0}FH_m)e8iVyLx-ditp`9J^2qdOcIV3*%Lz&M8gf` zQU2}DamK`L;1FN>RAZjED=hWrlW1e&0PteBXAuk0Ib)PV_dp2#0nLgDU?_zKE~cYC zme_k%-7g;O_Z?Dz;zEswRJBoGTK{5TD3f3N5Z zdj<6vw4 z{Qh?OVg1y)`9(E#XQl89`{NLIC>(fGf6T-;9vFi-w}^vn^$$ITYGYXifAwJ34p$Iu zRkfeuUh=t6*h0$d1oOT@>C7TTK7L9!bU27V&4UMRERNeMyLasS5B08Y{O5Y7Ha=h3 zbYofNZhZ%mnz5=7;LwIFuS$h3yBF(|h>VBe96K z8-J%czkXx^Mt}22*QPD4zTPZT*nZ4Pz8ixW%nYZ8gn+IH{`EJF*+=}?H_43(#=&xQ znS^lTa=Us!uNCO8tmT$(TbNowKtxG^=@72;=L5bS7(25!G$QTl1;wZZ_mt|AOeHSW zso>kbT_GR_25=u7*YLe6E&1r92{Dls$Y5jisgwbi*ok{?|4F7-_tSDsZNzUum z9*A-q7{ra+A!{K_z#ZAa;$?cmf>V;09gEku_?Z8CtZjp$k8v19XqVJC9Ln8QM>)q6 zk56L@`SZuyG@SPL!px8Of#ZGL*v}tLh^h+JKH)hCrg*24IgHD_7Rt#FYow{H4dz-# zmLI6{sCvqQ`KP4Dk$1&;PV_8{(z(pax_dQNqXs-BfxSTw#kqODq+h*|&#~8wz79p} zVOF~*=IJ~W+w1(p2pG(Y@+?f$3CqVKSD0g!2DSHDPp6NZ7a@G2h{E;~p~#VV+Vhh@ zrjjpYk5n!cg(Q|JA>OR^o*SV;z5^B``4ewq?RXR>QpfgeRSfbRQwAcou-Njg>9$*YM)q);e9iGXFa$4K7t_yQPY@&rt!zanzMcl{e#u__^jIe#JWt3=@L^ECqho8Vq}uZEl_Tasu8zPq3PLx=HR-#2z= z(yH%1D+=`g;9dn86+nMP;ryNc2wQ*xc%bMbrrT!0h`n?2ymQ+7HxUs$SyB4#a}tH+ zJCGAL<@APl3!6%&wA(esb3>DHWP3x#lQbEZ4!Bhz2Ph=zJ}F1zDkn^Ms!~q(U25V@ zE#aI_vOSi5R4LauQ9y$LCz|1W?{86+@!{a@HzPB}v#|GlQr_eiSaAnZ9_2ox&Lh=- z8cz*Nlk;6wT*|UY;tg+3NhWJeq3cOmCQ2&yux`8Lq0t-0nOiv2T@Z>a2(g&uA-Z@E`%jRTy7p8jWq$4#r zFhtlis5ig#L-U61ybBWpt%6yJqU2F^S1^;u{MgL>Ac=#p3Hw4$?+ z%^7V#>b@2!Y~KT!rV%RrzXqLP%^NZ5K!_(NF$k}G1I2K!w@WSf-5(z|J@MKTUV{xrdn?r$g{Z zK!2b2zR+q-@8fE6jfDyYLm>xc*7jJO>Y>R$8beL*?`o|UcGn7V?$jw)A!t<=%4rKV z>5oOJXFFcdWAub-s0*wm9wI7~t znHPhdqL|12(wuia+aUe#b9xjl|Kpt8Yis88D7@%2CmwmG`~Rh(zx%Vf=X}uges+uj z`LJfH88SjERvA)jP0ir1#;SwQ;5UEHX?YQ(0fkh$pViVT-DzJ0T&4S7KJ8pf6C|&O z?l19I&b6yMvzqP?^U8Ax?R%r^uCAylo+tDg=|k=(eZmxvG8`C|dC|fqmHKQSFIJpk z`K0%sMdM1>+C0;rq;J}Q|Mp8-Q$qwe8s*7O3g3!r7;-8rqoJ7K`+co8xBsgGE;vEy zt^ZdeK1hjgKN}}AT5x-ne7t(=>8V>3gY#mEUvJGn=nQvA2W--=&ny&pF9vvMpqbjW z4h?Hve-@&4{h~l!$GG9{`CHe=fr_r1@N$18`;NbKK1QF~kQbeg4|@ftIjv`V1V48^ zPXD+c9rV%m9Wm5Y%3!(g5A0b*FtNEl~1Mt1(U5L@Q zjNp%5NC+E+2xP5~$pU}vLVSbv09XrQZQ=5sTuFJ8_~8pJ_|)Ipu=D)+-@52CU*)@h z8_@K)Tg&=Zj1AMW^}a7hmTiFST<23d>B&!aibL z$DA(D!c?7W1{5STMUF_Z4#}@@{l?c`YN}uP z3;+7k5Qs;^%QN(aKk)p^+5n4T;QU`7;H)cg`td(wfX(=4S9*t5-d{Hv?U`nd1; z<*OYLuxa_-F0TyJBTP`jQRsw}oxT+f=&Xf`&G$rz=cds;*%^gPEr-X?oP+46Fa2cT z-qJNX8^LC<#A`NuN;wzfSMMAtrtNU{Qhs=@MjPzKnu02$crL_w1a^N7n?)D+8fSJq zHoHCkTF&*<^oJh5-uZ6e<>X-CEil2s7Fu9&tiw4d%OXlMZv;mC9g3jeiGW+FF#X>O zYm36yD2Nv};Wzf5inpVnNr+H1^9EM3RHF8V9kbxtf;!^$A9%k%5;_>^SYB|=72=tg z^dp2@XDi%qmv%!9WTypPI58eo-uw>tMYWN5jKBIv5)ZrEL_YT``#(k4Mo?r``MnVO2#$IsLAB z)z(;%me-JJK9nBFv<&Fd08PqCyxTi_LcF_?~9 zNkS?B!S1X}Qfds~ni}u32AH$0`Wu5^Jwzw%q^kh_vqZe#6fjGD6Y;1oZ0egh1qox} zfW&3>clXU?+)nWQ%S>pR3M5DzKGK>)wx%y9D0r~zTrrI z_?UWw7)Nenpu|46f*KeniW84QBzN~k8|&fu4LGV1o?O9i-_4;n5-Ucw<8Ay zgTU9p2`QdQ2}#ht2c8hwaAO((z#RbJr4&i-n=Y(cU#ng_M+F@VuuWrZiXj|k zCSORX(t*Eyx4k~)4Sx9UEWIzE+k?Z+<0y2@vvWLdXZ###`1Jj_I1RRPuWMZG4mu6J zY?W?ESELi%W)+SXj>0JXr#9@O!OPL94M6*F-5ieTQ=DPA|I?-ForwQmOXVCr>ntycWW7yC!G%DRz1uS_cZO->x_Q0!TYATr&Z zK(wzf%b@H2c{pDgXJPolrl#{fXG6&qhgUf<$jou2)u*&m4yl6TLri#C+9{_SSY6YD zOLV#~8)4|)D5a-7$iTAox83sV2Igq;eJ6B*H&LJjqLsDo8a4K;YzSe!!iL_1WXb(Q zSd{*=gYwi6_TZ-7A?$b7q)7*=-c_sq{i2%cd*mav*nqI7?m=eA9c#0;`hEN4k+s=} zvDQMr9j~QIC*eZl3v22vK{SN_pu8u7MeCKla<5R0bz< z%&I~C7B@xyN|hiiLp~S5+STulpc3@@<2`!3WI8{yrpB?~h!mfMb-D*?DnHSXrPcfW zs;bTxC_m1SiyN|S@{LGl(WhUPqs^?PeqgL@HM4kkduV4RfPFt1m$SxJlq-20Ypi>0 zG}5k4TWKfsW*A9{!&_WZjd>d?SCKW$OGvwnmUcW^a_ZZv-*NII?*{go(T z=&ZKVezn}C3Cn1D%OU-Q`wx&P5n8FW^3o&shAB%;Sd+}){9|+neHd4v&hM$KKW_(v zxHa0VocvK0+w5%VcZYXULZbF&hYk187JJ%tXFI}q;dS}vCaeY9E!U1_gTl5?t7-m2 zc}g_1vX|s_C~(h)7L~Fhw?fgn-!I12A>_Xeadu3cgFD!3LOvu(CoG!>tn9SkY(nop za?}10p0OcMH!fgiVs61T=P0~I2wqoCt?nhzi*_<|ZrX3N!*j`A#|_>dMRCERY?~|X zQr{|6Dhh%z*nSr!B=rmPDJnd69=OffgdYFbr4g1T1a>+{*VABFt)H(hJa?&u@wXlT#B zAmpEh8(s~f_HUJI$FtW$9z=ry>AViITUsV$rhu2Nv4# z(F9mXixQ%2g>`U&@y5QpLDFhB?S+SIzEK8SkLB&k*Xni7`jpzYc9W?!Ys$hZRgksE z@;1lU$`2&6KjJ3rxf?8uNDkTx;cLBYla6KeSQUL*MWfWuYd7VzVVCr=1Iz9Pp>`e8 z3Azu2C|#GcswH$0^V?~;o5d!2nr5G&j$>f{X_SVPu+ z(@!0kht+A{31CF!>g0i)0A9XnX(txWG7B%`qbAtsv86g|Il51X!p7QbPz{6I!vym0 z0j036>R5f5cRe>+%=bK;>No=6-2+*+U6~QI5+a_I-J9cIR*&W&1fOVI* zbY}J07jk)LW&tDoonZ$0daqme<0hdCTgB?;;%zgyF5F7$rjL_ZW5)93T`4Rn>|+0# zL3}5(2iU`GnLOvP?6BV=w5&s|F(WIf%bcCs#6&_jop4+}0hBdp81We3Z|;C?Y! z=6?d3EZcLdPEg1fk@WYH+jL_INjsq@(639#PP^@_YrV!o;G+giYo`tkDa5+FHV!iW zR{-88FY3muVa**i(+ra57LcFR}NSYj>c32WgcIWC<|Wh3RnbjW_L{9!t4!rIBZ@GT_$@n_`t z4EE&s*4Yx?H*uQCNX1veo52R@-+5Xd)RWE68zvqK6z&L?A(Xdb z=}$|r4|q!4X*Zwjl`GZ8D5BL-Y=QjX&n34yo_ZzOUIge@4GHeMC2p%%r@jsrctnos z#agtD_dORxQ-regCpFZs~Pj?hn&z(9#L4bw_DPDljG~op{t8~a3 zERph84`w>~t6bL1eZY0Z4*TK(&o=6R&YU=@KpluTzW_Km%&OzE26x-E5e6Dyd{s%f z5!6x#j;%AvxSAjxrOw*mI|n=LQc%kGQ5z1!4V(8XHCa_5yX2z9ns(H6%sw2oI#@k- z=getl#R$D${TIE~sp%CY0X?9r^;y2KudTsd*})w)U%E&WFSw+xW^B9haz$^}y!B~t z)|PhGD(w{dmL?OiQ-bBv4b)!lY4HZ$H5Q6K_r$*;o3dC__rWn(YCe+)WhR#Vq8B#h zZ?OPJ^sNkkfgZk{AS=|XXh3XISC4Hx0vwECm^;|Kv>Dwu*~b%jM*PW z!iwOCd;tlP?fhCaGLroU$c2v6JPDpm0UERxp^Nln3Bq$v|^n8eXD8U z%7+O12t+%iVgye<*JCs+w+X#SbGJZ~%7AS&W3{(}Q$qf4pf=u667uo&AZ=E7Yqx4v z^2I#XHXO6@UnicV9YqI&nS9R1T1}u%vxTh6L%aBjIU?=&v7yK;b zM+3_$l}IT|vDvi1Vo5t76x<|v_RV76&kKI1Dq2nd83HGtvP&gcQbPVVdAgl-iIDPN zBP3Dy^r&b6kxS)I?5t($%)o23^iDbRtezWlgnW3A$>g?3w3eiqr2*x8((6Qwsw;eQod|ODV$f*g@Oc_%UFJ?zK|t`Vp}@}UzPoIVJSq$-(fTde~+|4%vq?<}f901MO?8;;@C z$Rufj$I&+Rf$%hZQKZ-^9jj6VV1jqm{dzzwId8E^xwnY)P(wkdHnsmiAK)WP)mq4? zk^_86LRdn6s~1GptjjU1u0U-JZq$buT-u*@>7q^O8^8yJ5TTW-Qs?g~pg-!lR}EKH zfC;t!BNgC;Ve}uWfZEk6;BNI|`J-mB{BKmi3bodKDqyJ!&{P1Tc&k*vXJGVys{-({ zvC0a(O+dQfo(7oJ7XliaeAue$h;-$_VGz=mJ!*us!R8tvB_;4{wGz02R#er77iI2O z0wiAkKdP00+NWK*>+rp!s#78BCx`E2(g=2;_pNFrD`feF=Zi@{{JUy^0T%{zs0OQ) zl7F9WI8Uv^YJ>l?3P>e9TKETrg5Up_3x9_F-ohU= z1T<}xT0_%@MKv_FNsAKFZ3vu6CG%X!-!+AX-|kM;qDP@nkgP5G6cT!M;kPTtmWQzg z@eyO=y!Y;6>s_X;{rh*JTEI}Xzzu4WcA?*qsM>|(j6tkTT}>4T`5)=z=6NipttwXc zc7OlVs6gs(c;Qo_5NJw{cS!oo)Y)>0gH3j4AQGWUIiLeqh;$$jYxVUH!lRNYY}4!k zXGjotzS8cJpNxib=q?9dq)$(SGhXm~6Hb02A^!lLVd8yu7Ck--U8`0O6N*@vP*u_tNez+L`^BTo2%v= zG+kR9#Wc=G>r}I+v|94$l&vizn|wK&wJ~CR{_gVFfh>MFwF@U#5)7VlQfRPpussU) zW8MNXdPs!|sP2&Pfz}Esr4Xwo4(1wtTa1i%tIrC9#7CxsRzVH~4CkzAvBr1)~_%?JJ3`;?QAPbRa< zZdFOsD&7M~6)mO8zjFH-Le{uFXW0M1>AC=`b+(A8NV5!M_kef3Mm< zr~u98*(t43#Y?k!?pywv&2#2|p#j{w|41=C*0g3aBDCso>o$lLNI5CNA(p8;RrB7D zRa?8ArF)X94QxU#Fs#>quGR^u_jE!nNS#!YxV04;O4}p!-Ju?#GJW%jlhJSdo2IY~ z!7=JloFH(FI`{g2r71|U-gk_0q^p{Ow64`d$0!B8Nvir)k5N5Tme47yYT;@oK{ZEI zqk41<%~YLP)Aj6Y(${`mJCkTRFGBk{&ubzje>a46W*^G+hq5*)%l@6$M4G=eTohf? zFiFT@dB#xIcoIcjO6u7H8bj@kmWy-@I)hqJW}p_ve#-TCEk~v3)gMASO&hPON${~T zC_5-=rWVjqUA{P!bqT>6c{;h-NY*CuMWp_sGyV1SGF&+whup7KzQs!ypcHA9a8z(e z{(sXdv|_8Y3aLS@g8wL>_Zdk=a_!-4@_(yYsIn{#|98zoE*LTlYBbALY(bi4p*ln= zm1deggWDgPSmk0`R1H-$jrYu+nZ#Vz z5{J*8{}1wVxN%KSw8s>*0j;E?{$505t&%!IRX~Vm_YG3MSCu3J_v(${xH}e@PqMa= zWbKoCvX*2J@~6u&BUyVZtiPZtT7Mr{_3SS;qJC^}R+4=M_kZEbWMXBe&J1-nSNuQ8 zg(F$4yB4ApubtWo!YqlYh~E>x#~Z5o*`CEPt-fK^mX>O9)L2?)jD|`Kt=b;Tt;SO6 zUW29DVvSYhS|gK39if;Qj8PvURjJ|RhX+C3d4LZnOz?C+h@b(>V?`K7rP zaggnHt7;?Dm-U=@(U~3LXt`!>M#Z0*nlrZ@Vu>RdR?#tUj%hs#yn_w*`=E} za^4`%i&ndB@->o1js2=5Xx3$w9ip6yB$-rkHQHOhvS8|vf0ByycI8+BqT41NLZ7YE zZqBu+#mp%_^5F{qsqWv^!=`yE89q4pB9eWW$P&Or^m4N2^WR(>-4m z5?81d&XKfA*Dq9Tt}3o7l=cWOlmrZ!g$MF05GrDKODFBpuY&ysDJJOaGhlweXm59( z#KS7>7mxfBgngqj9$o&|j89W}ZcqE>FFgMMjS|mk;ir`fy^m8c4OlQ8jLx*D?Var& zOXt3JrS}-DNfj};`0oskKc*fM_uJxkA32Yh9P5$O)_QP3s3K9t;c^nB8VCfpcruj8b;tr#8g-Ucu8@uG7>Dn1s1;1oMTZ2eoHrTE_}%8%VnsnlQz=B z)x)zeg*j7j#~MZND#inH z#>1?ezWA^__hH*+oj2kr?MORmWQahf$XpxK8?k7QCocvHxcS6o2b8Z zL)a8UlPJhid6Sx^k!smvn~J6}v!3nWv~M~qV7%a|hGC*_K}zxkdV#YbD9?BdB0B^; zr->fK$MY>patZ|vWFh>p++G-EEiAPz`E#txgx4w^_(&a~c+E0>j4Lu5epTFXhr+SE zB&Qd&RXJY2l>SH`Bjm3EpRy&q!YSkDxIYtp zvzfa`KL#Br6!m6^rbk-nQ)#`sgP=m6ia;}X^bf(rHsD!;`$4<_7M&t|Sh5Tc>)jH2 zk3FvM15JdYO2R=1{@+j_CwO65#87iU@I~M+O#y+3v1qrh>h8*pi@wVUd3Vsa4G+7bl!xxM+aK*BM#ouDb}nCTKnSN;CfY-; z2;mNFvLswWg#8VN*Ck&OB62@PVw31~eXR(cshPcK2JVX~p2-K1%9TaWZLC0m-4nk}8h+iPP=<%C%*xzz(JVSkne(rKm*#I!$WBRB?;l1G)%7OW-u z1UBwXGUdgySQovkMBXrq#ju(3{#ndoi65-KsvbMwUHY!R=cis`a%_AFD12lu-Uc5r zST@aO-C5gBeP^?dtWnujn4$~A1L2Yw;_!+T-y1Z4CQEZzhFg5F>ZNyVFS-?YHirLb4zlTP-Q-Y`&hyO<@$ zb&2Yg)3>r_BMIe&e(?yJr^{PitZ7b9ycOKdYht`$RcBoF?}`&Q5UB8=J6GJ}{qkV0QWTeAYsk zjh4O)!`N{)ic<3B4hxt?yb6B}Sq-j6l0B1lzSy;;dVCCu<2ShiuZ#MIq>A3f>igP% z4h7LKfsjqGW>S?zw1IE#Jc`vn=itjb|Kt?%7hCvn53HkT}*1Ew!3>x2u zE)Iyw;c=MD$CKoUCs;z`WWW&^8i@y{@|adpnJhb=U{m!`ZRMgTSZDpYHnRT-)+%mo z9jsQvAAt{PE3>JSQha~~@cDwPsJ>KATF5%+bDojMEoAZiJEBPRxuMq8DE42eRy4ux zts4q6^Zc49N_E6EQxT3;2vL8J_~fDQKiyaM{ARgwA#2=f8gLXcB(WMMQyTFdFnUZX ze6*GxvRO7QV(lWo$*x+ogGg|1VAVG2M*)wK^7ut8GV;ahVtn*SD?XV`#f{}R7O_PA zf>-2xIQd7X`)A@_q>;vzsNTmAdGHf{$Bv(Xs5Jm1Sk6T|~_aP!X?)nvzzc zc6qk7GA%_-_y0cg%%b)Ee15<0>;HQF_Qk__&fI67nKLtI&N-tz%J#g(pI)epZuB5n zF`24y=1aVGp)$D9N^p>Ywtb1mJC!sR`Wc_$RK_vqYQEE{Ozb$0te%w^-}sb4_6O~y zH<;U$0tfA3y_M2G<>>`Vg7YXxSbTvAi>Sf&Yj^yi!|v3pfgjD$p%a#8ZnMD%*2%i| zkgf0=ATlLllw$UQ#cBonZ@MtX6bUB`j0e{Mz$$f^Mu&mu)dslxlXB|c+4RLH^a06V zHEqK?T4OrZ0NZ+H8Sd3Ym!d*weVa7IBpi$W7O;<9xETqe`>g{pkm-V$aXr};NR|@t zjHIOXcGgPymx~~i*yBguXt9!}{K_*ID;=CpL2px`i38&2vuynVz~qY3=-&nchoG+f!eXUKljo72Uq@h}lZUyKE=_4?@_8Jhd3PP~ENur?QkF|u z&F+ohKf9C>aaJlfWGJxaGj?BzX(!O(DvK{k*5bsR65Vnozqe57*zFRinLpgmFZ#pX zYTcu^`R{y@zh9`tv>K0*>a$EdL)FS}so~5WT@bg3-NnxpDm~jTK^vg8I#4%!<~#{( z3B%i0O6igd2$7&gcuJ9y%IaB4Zh82)IH(zsFZ5~SwBg#f(C`{2)CC{p@& z&_+-W;Djui7e;rM<;US#j+_rEJ;?K7%d4pF}!CsOGNoxJPh$e5^qmBX%?>x@ru1wluIr z8KJN(?$XiAl=DiP9Vvo*1w$p(p)R7m)dimcM64d}JbS(pA30wSVW!PNBMplju{7D9 z!t0hR39p{5tsC+I%{*pT3eX$i&jl*;f_`4yTWll4E~~CfkwYFjG;&KM; z0aQ~og@Cv=hEg~(ZHsW2dxv6w;oXkDt(io`{AMuWUo48{{2OEi8w4*TlB>1-SbQLS zB<)AAFURU^5{l=za@x_l%+bCQhK)tV)jX`$#M)NdjhUjM3DzP_szYmSvPe}l0rWCp z4Pt@!5!F-xe^LIW@J9J(Y_Foz9K8Z%&8Y&DDTr=|mntv?0a2i0&@!);z#s3aT#Fv2CfGesv(fT|1xUBj-`d)wA?g^REZ#)tm6& z&A$_&MDh0_$iJFDK$LzRg}BxHZy+2>zaQ66>COL~h)AWMi;$>aL5#>vHvdSF1cZMD z;brrm;o;9K2_aKK-*IE-Ql9#}(yiIWC3-W5X*1yNGM!n%3!YajquRegxu0~Tu)G%P zBGM=;GJb`j3mw6#dr>L>J<<)c0`?oh@BPm>svgHNl>hX+($o2CQJKBCGs$(+uJgtC zI&`-T_wcPY^+ty3F=y0gVEt2p17`Qo#*Q4a3OCoH-HG+*pXtB zYKJ-<)-YI>;Twe5ixWMwfNj5@#xnYVr2>#nqwnQ)FF;*-Mu4Y3{I_-`|DwH5h7`lD z)=rdVSz-KPxMjMZ#s=pLk~#$oqt3QH363`Pm}4s-eixkOXN?&&E#YT2xGJzWdJK-tBGbaAKyx@j-DtlEOxBnZZ^Z zoK@7;yu=L$Sd*{F*haZvTWEl3z-~wrrUf$Ems83|wOm_31x!z*%n8U1s3;EdRXco; zZSw@?+FWISKY1t@9PfEU{~ZSmt2y8|jew?rVspAvw{JL|k9KMbyIbC0Gr&@7ZY!uy z$u|~M^z#PVz&0#y>J7MQ^C5qTlI^iA!<2DIJ*^ev1lAF7NpF$#GQku!z-1xC}UtV{>Ms4 z^mpNnRw=F9=}`>eYdIdOxQr+^w$D}^l3qMRL9etYKg{i`pbPlN^Gb7GxJv1hykv}6 zsFSu8)N)dBIcz#My2s5gmiH{fLEr0Tj>N-`#2Qktfvs@JCssKEs_^8RxsW|ha@Lmy~XSD&)&~JB!kqXTPLGC}sTqmy}*T9pH)DTnhsYP8g5ggUY29^bauP zU#4ohhoihlwb=TbzRCb-vF-E*XXFeC#Gi_6|)S3*^H986X7M-(oNJBe=M3O%1_FQ82 zc-HViuPS}|5hdCHkINOX?t{f6R&POHP&Wi?MyD>j9oF6EqDrdTHvi~_=XSpNRgeXU zg+3YTKu-fRV4pXFVzn<9V|lN`b>?sI>5A>uO49=s_g8vIzF|LbBz!4am4=B%417Xsxd~gAb{N!Io%UiFSSC!e_ zfed8fL}oxa+G`}jXjguug{`@0C8l!R3sm8mgBS2b16^ko*FNU**vy4p;NtR* zh!il!(!Z82Pn3SREc_0UA50DOrv~37T4fJW%v2iD_ylml(E*4n|M+#Kx$`mx94&zj zxCoN`NJBXr*O5Yd2*+Eo>eo0>7e|NmZ>;v_23Z~|i4+Ot_=p2P)t1`kK_4TTbcO6+{@>q^sBahUbIvl{%MdL|3Z*T1gBwo0jo zci;c!J#+=uDw*zy@l(Me49`#>!qv62W5FfFP26G~jRQW(IMYmEdFs1hFxxEJPiS<> zjXj#fN3KPu2%1KPWW`_tGjObl%b=PjJ&CEh%;DOrI8sbovHQU-Ot+hzhN-Mo=wE7; z_6efX%(D)4)fY7{%>_lX*3!mlKoM=6T5Q8yglin6`%`ewhr7>M{Q@)aj_Z`zFc-=N zj#EjnmhvONYaQ182l(1`N)!}ZK3}I;r~KA|*8cA3H?YBi!tHPrPw4Go{mRJ+2Xw6* zDLu(VmpE5=dl)K3bN|i|?{U?vv5r(pIts$@c3^!3lkNu&NPcAci+s!*PzO4`i*I~G z>EEadoB{L50p*etGA4Zhl*7+3YT1Wfw-`$u^i^53O3SM6>;QJZ8Pp zg1LI|zU!5z*zZ&LC+n4DR`db?b-mK2Cj`NC1IJ(*VFE5anTt)%@U6se#@lQQ)<+v5 z0cS4VYc36hC8GW9%lU(ED>2bmvDm=kBiLMuJiQ0eJJ6nTNqm66^|o?n&sBp&kOU%$ zuN@HkR@~la3SKSttwOchXK7T9217zMUXwQIG;j2d(mU$Vh?~AF^$aL2^vF|7Y`fsw+#pI{RCs_0!9nuq+}C)I+wd25_K!7WGT| zAhZn6AL+C7{)*SUgHd0<2R-o0L{X+rxIhW4j4y%}T4iZxbl2u$$iM;YSv?7y(4T@@ z_pe!)AR$R(BDK<`g_o%?-nLj~`w^-QmfhGnT>FCRb}E02!?imw!+PFa)D5Eq6?t^? z<0vK=5~uQpWvDb~_$;qcE{J+37+TN6dwVLX1c7xh!V_yq-|?{H=)R1ehlekHQM3ms z)>$4zK<`$(OvMY-bGA_=SKS~iJ&smq^t?8F=?(BwnG&=tr_U#x?NBzCj9O5koL(kceGRBt3|)dlwXFG~)RSP_+YG9q^{k z$Ep;o6UBn409C=F$7%tfbw$=-=pu7$7xkhyxh<7Dk&2%UB+~iAh;)p4I^W?PRrnr2 z`w^1?@B5x&zNeDDhD_=t^c>{INsK|-2e?f;5P>cswR}Q}L5zqB^*W`p3aOwi)oLmb zcwA2*Eic&mFMm#)2g|TqhIXJVij`8v=C%YHdD{ERB=*P`eBJvv_sQ77v#@&OzrL?D={YTs zGWiC#?ABkUbX=T*TS&41WV5oh`8vUhz5By(E7cZ;cMX z{x$CrN6vMm<`etIFznm+<}>eTp;k{i{NU@G&gp(vwQi5%s0~}`K%boiOpN>dk%Se5 zLdsP&edZ6H`3+UaxSnuVe7&JDmW)fcfhxd=3%~mV7|D40A@2G>nZ1U98&V#l_&X(P0+IC{IyL=TH``$p+6isT`#$~cN5s$KRm#rHiJjD{{cQ|v(lP% z{+dtRjFW`N9^lVzR?-zW|9Z0$uiVA2ZB}|kr(qDmWO9h>>fPpN-$e1vg-h_?<%u;H zM)2VuD{ZFzfFS9GN6bZM$)j<&cd~hVVzB3XU~0gIRCCcja<5AD5VU=wct~CgSH7Ez zHj5y*bS1U0(p*HTyXtN>t}F>q2M4<9{&rQt{BEFUCEx$CvO)Qj=Y66ihhF-d8oFA0 zx`yK#gs!GC;OLp;R5XTP_(X{?y?@JT`WW8yQzgRs{4J-!V~FzRN1>3go)gv=CnRJX z83$Nb3d=mO3GdS)jx;Pylx#lrQ`iij{%0%x+^3k#+{^g8pF(Wo34ZKTWngr=XrEHi zK1*pLFc%i#zb)|)wNH1bv`@SKpWElOsQm5iv!5dV$M)I4AV~~gG>@x_{i}Ue@ee;! zHY%I>ge^+H&~DfC_8B&UzYaX%;#D2Lm?LKUAXK}VH%%UqxGm?T_ff8tDyE`k8r5>kHYGlxIh}4yY%ly)%q|wM~g`-iuCxiG>#k z(_iB;9QVxUzi(68=iJ2ZN~{p+VDS$i4(ramFVTg5q<301)nR5wFL@8QP~lCjg`Y|I zoj}$(^T7c+JBSEl`Bj*#jliTIR#j=QNv0b;!?5Hi+0XO0Lvi^il-T7Ww=4tYgq4tJ z*Ms2-EYZ=C#f-*$`*vtri3Q{sVIyaZw2}j}^q{KI6;Cs)40dO!H!!nil>4x`zh)D5 zEgkM&Wy94#(67u3V9P9zFF-qzwq2M#xmkX2LFR?zK(Dc2`i11{!`xk1rh3Jpo_1Jo zm|fke&n^qUbEcJAxeK!o~bw>3kC#yJH?H$nbzI2sWZ0d8@hT*W)lY$FLTHc!!?tyvA@3>F1a+coVyHG) ze3V}cLT#J~k?9UA%TNQ4rd_sIB|GxkEF&{m5Ku9K)8oCXGQcD}i!-bGdF}ROWP_cf z^>p4DJvZVDLf}s8{V1v?ng{t5BOeho&*C*TxIO__B!_xBRK3wMQ(=2#@vm5lc%z1^ zVb_=0|481DnjaFzit*;fp>z~NC!QwR26>Y;R_(Saw#l|hwuw_FLmcAk?MiI84_g7$ z3*U-9lx-U~ey+4rLirt^gVBsja}C=~s3?RvOm_G9zicqImP@y$7k&b-4EGS0Yu%UE zB)6n7+BPHLl!p`{u!o-A$y^$afHnDnh_aX75JueXm0?cbnHg{aGaVBm%l?nCJbnc- zN~fjei}3|`#l{RaxGwlCZ@x#}+FS@Z0E26X2nLGPoC-jlY`5rS^+EJ8Fn8XV#|*>N zz%u=tml<5SjjES?cmX*QN%-it7BUDPSwx)H09wbnY-5|BUk$SPk=WM)Hm4T{N6NE};M7 z4R>7&oZHG_{qBi~jKo@qx0<&&1JVk1#2W6vayIX*c}wFo^OuF~2nES&uC1*kqSYCR zkSNo~fW9(tii3%%QtQpOT}FK!dDe`8T3d1E)qbvP?1`q!Q1{vlSwJ+1)pac(|9`ml zM-qv(UX%06Nve9z5iNQqs4Eoa6Tbu3ApruenII7)2qo`_*D_-e;4sS73|9uejrS_; zx!vdvBr@X9FL7tV^s57IT&ayJi)SJBs{_EWq%9$4iie5&n@3{gxD*{TikurXg zh)F9!9GMl(X9otWoe`sDgZOIhJ_$!msD$k|gcXU3^7347$BMk8do;2K?zfzQ0^a zZ1mGkpAX)?o!nQhOlZGYN7n$zxv3b(2c9+PdN%b}EYA1N<_jv6cG+Jd1Xv-MBlE}8W zPJ;>&oDPEFXL|k#TBZh;rzPiINM7)Wlvjdv2cP8%EHmv?y0opq`Vie9#%JMJXQ3Mu zl%pN!S_ue)R`6E4lwRzyH~Gk2umE!CaXydmKd|pBT-yn7LPO=<@|iYJHufv=n|Ql}VCH_jTZuJw79r?+Yb^)z)4P=+ zP4{4dZLG*qtr81~c)T`< z8n`XH^SEt~(md?^S;1v!>N6gn!>8_1I$9UzAumv5?2+GmO~^~gEpGISV6}(~XC@%X z?HA6d2;Yb4=vIuONZ4nC+$|2kH8mM68rv*&-sph%1EV%hwWD;gst3; z6E-1t=1S(X_hV=4%jNIvS2nZA5BT^4kXCR`=kFX)`mjOU_~`>m`xa5#@PU1MvfOiU zx83#p^BMT)LECubL8XiFa3AnO`I++&c$#!jnI1K_7Gc#|vU%1jiwuD6&LB~UDhM>3 zItY7IU3opCg+(Bk&YS$LlqVfh`p1=FqmDf@OhW9{-YTU;_G_;Ieo5mJZYxUpGl!HI z_E;(Zh~SXk{O}>ABik~J*B`<$!5E%Ytvt2X$0}m^s*sn(Z z++n37*8N)#D<$SrpCSi0uCXGf(W+HEyGH3}{bd5EUXy|as||S&%&gWHQy>b^V-@sr z7E~FCBbBvDn+bQ?zPe)>%G~pS_V^;cyGEJEzWRg@I-(40-5kp!M-I_?^pR#Sif?xP zV|=sRPx$I1N`GYs|N4mHV9yTWF-Mh{=51dP6akk~j>a1rYrw~R)KN%u)ib{2C^}{* zzUe5KsokAC_!y)Oy$|xck10^kguizj zrYqk}oKZTor5?gDSvDzVrkn=RWDmH=lsg-)MgBgp!N{ur{?yPIRlta7Y+?n?Yx`)!fj6 z%vO=H?zB3xL|$Cjioa5;M7CP^6fMzTi7yaGJQMtEek^^fYtcW}@XNIj{^|b#kNZY( z$5_xBYCY||I%u|y{)UvqI(s8O^bK}_SN8CqzftZ8TQwNX3eK-l3*5+~PAYAhT`r*0 zbCzFn+4u(9T*)us_LEBI==ZKd_Ph|9`q)aLi>2crCB#u;`rO70o<3YfRF>l4@17Kv z;SQcuIyHSSjYumD1Lzqvf1d}R!nFOydBn$74b~U2rWY3vK_wrQlrA3nU;~-rbDd8p z7+}mnMe;K-K^3PXp%T-X`vBa=ev~Yvmh9wcJVuTsrY``rja%qE#8i%VNcVrNz*;Ff z@SXTyX)J}KLh@@7esQ<=Kcjk7fxbU?AK!LLiR*B10Ma50N#YFtqUJ%Bd!C}Rc5~s~ zC`_ii>&5g{--2ILs`8%SD#;OapR4Dr>>jant)ENf&TrAc%PRTmZxvUcA_!S{!OJq{ z(F^7eV-CGQddYYfUK}M$XhcHa##{1eh^H|MoD!`}R_%Jg2l9^v62?XxF}vK}|n&xaWnW-+9?yoEJaK8;1j=x#O|UXoZ(tdI1Y=z$5g6 zMb3cC@qF?RN{e=p=TNM4h>S--czaN9l@36OtaDcAB07yR~;VDPn zM>z08N*v+dH!0Z=_lN+k3li0n|Lr-{45ylwt36SxeU6@%`mtadK;Pi#J{-B@)8U|l z1n&3+S&pN)x7bW(^-f$5r(cxB-dAuUPp1!s3aikHhFyi)nUpxVI9MrO0#$V~0k0 z4DE`#h!Y}h#3?bZENmERqE>4isq$*A?peeq;~oj)N{%pm{&^)ap~v5-5Xga-R&QiI z()BdtAHPHX)^11uC(5v^4BNZB`n(e56z4$cYHcP=cjCYzQj2=&mXtXqg+PX{)9DjQ0SnDd&9wgPJhKXHzPbByT(L14yy6 zaIcVLp^I0{_MNt3Q2APj!q}X?{YcMw(pG6O%!?|p_MUHn7*nMoDZ?l9+fwo_-Yl~f zgGJFT7^B@4}@p`!v2D=2**U4o=diUl9H=ci+Yd zb#IJMz#Ir$x3yS$U`RW^OGKLpBZ8#dPeeMI6td9!$CB8@4Dcbz9^gFnnznc()*%p` zfW>iFT}=O&{9t?W^!TY>T+oQnS~a{Yp<@o&9!$5N$BIUSfXPbj$;Tat5R+ zUQUJM#Ys+k>Fp|BO7Y^CukksdKm-(mG^l^FZx7VR0KrYkhSnHNE0O}MBa@8aX}vP2 zXxQ5ep_{FUh97QSZSBiwf5g$g-Vt!kapjxVW$Eq9VNWn99ao@!h1Sx38v$nRMRS*` zk_CnCMJQqc&LpnXrnmmp0W*g7_MVaj#VXAAJRF~TrMC5vD<^#wC1VO~i+sIMPxIm; z6tHL6o}vVdAj+>q=o9Oz-(>HEj+@feT{wDH?e4;qLZM4;E=q(mYzf(68SMvWy8HD* z*Rd{uu6#0hoVc*w<~k?T?$t|VUlWHfmoQBp{n=MdiuU%RLc8j-T{$6i?E|2xpIDm) z86Z-*4&JQTt*7P&*p?lzxej1K0Zn_FK1l1D*b}xdpP>I%s1&DNNQXT~>z{efk?GdM zPYlC>x2{@mt(XndkC{bRtJFi~x&p$J?W>Rek{$s4`u(<}XKamY zN=6qILVY^VsE#S{Zq^m&!(7wdg;Hz&PZY}L9s(uKp}4O%z2{}udeLAus-6?Z?u2EQpHMsohITIv5?BRT(9t@M9tBpM_hA9X30uaCKq z%w7DS`eY;c-_|Fc{!V$3x`ynO<}c9a(I0Q?W4M5c`V^ThJ#2TU`lz1_Q8QQS{lrda zn&>vTakSh6gP-Lvn%KAsOx?5+gi5#W()&l5^?T|IU-rSbb-+p!iELAMv?X4F@lW)D z^52aRT08A1KZiq}omwg;5SXD5hcK{IaI~(ZFgl*%xScS=utzt|C=4seeuOh4b0Jmc zb7|R2H-ov;ymSW~p|MY~wW~02@v@(rD4Yc3Qw5NLc+LV>88M*+duv!)|P$ zaua6!$tGB`U9AI1qBg2QQMPuZ!z#PA4u&5vJT;^FKLi{ytvpwiUk?$NxwUWsrD%cJF5 ztZu^(_GhtO>E$R-fS?r`tS$%Zi7}de77!58onFZ^tmRM=QKh3YkGx- zD%JGp|GB1~K=h4tE7{ti0;H=y!|bAHa`Rvhdc1Hnr=67_&0!u~0}G6W*kNG;C39tH z0_1=u7dDK@KxR}O!|1nC52!*V5B&duUv6zS7r9|{2JX1Yc^5Pd{w*)OuCCDiE!h~=I zj5W{LW#JdFB~uz{f@T1 zMJ>p*MZf**b(Zd^Woirec!Fprc(kY7~K#(-VKh znA>#YhM+4+TWPgyE*gMEF)hm|Fqu!o@oqpFnRZ+RZ?_HBjTZY2x>mylT|RFnx_jRJ z=l~$O{tkfjK~gi!AMJxwd8Wz_*DJ>V*z@m@J>Tr24E}5HpD8=LI8eg65{K%-c;r5O z2Fw!a>H%q1+P<<7jCK^eEYlt6u$KVGx(mh*59K?*6ZZO6BZ_N5!ECeZA-t*S1qf7B z=u0o~KnNY(!#~QrFWRnr=O<0--!~*_vfoCUp2wiyM(t*|p1}&oJhWV_0ISsc|4Ek| z<<4_3_yf}TKgiNY?+UV%fIR+JWa-(L8px7Pm6nR8qmcxv6o!=xO;Dcw7@vY9RfvIl z*=a7M(}CM)Ql`7`_ODcqDbOvNOZ3M>`P5)}9jLKpH}yA^UCl3mF;4V$JsS|C`;jU+ zd%#fuB_iw3Yp6t%3Z?01SbVmZjByrFXYMD>K4%qXN}JDu0DZCgR!?3Bdy!h6+R&4y zHKLxJUqIBS9Y}~USN1z~VX`0k6TRG`KL5Q=PBNN`N_i3l8G<$FF@@>sPq(NIO+CZPV_A*bQ~2IR7e<%7RL9W3u{PIdzCa0Ay|q23oQU5Bx%s&ph2BQ z1kZQy_`eXLN+Lq710?l{<2QyWP58ldC{5(>R>Psy@W5SA&uB43Y39@k33PHnNKoQ` zP!q49Cekc){(otGK}RZZ@rs|0y!|#>|H+bu*3X4P1+_kzn@ZBj$2+J3S%FS=INg>j z^^$^!kzg*Gt5XmN{QIpzS7S*`lXU~_$eStpWhvanC;X6JZqbkb{t4w5q;A<(bW3Nu zfAvez^QX`noI2z^cyZldfVROov`#j>?ZwAiPm{X*-u9CF3#7%ptU@g;ANyYSN+P~c zZY|KNazGKmr*_qcnu}JT=Dy0x;2sY56a{n-V~S3x|3QL;WqZWEjSA^bIw7jor~L8$ zDZj-(iJni`zV}-HLn+r&nPfr54603Y=7HN6j!_@zJLC-sOrl~HV?LsdIF2n!W(5{q zo)@}^Bz&E7SpY=i-Kn&p_w9vDfVIkDPAhi=)C-|%;yBs96k=hA(0XGEgc)-%nEzQj zBCrou8TP$w1?g}&iMp55%2}`6zWi_KP>PH8!|4rX(f?JGOO+<{GJq)+5-;RG1kGh-Q!5y znPIKWFpsQ+90k?1h-iqtxV=3YOo_Zuohi|6AdMim;BA0$UV1msMZ1XkaZ8wF!la#G zID~&p%y+!_HX95R$ilbrH@rF2m7--z9wDn6pLQo^9T+I zld%*6%Tb8=u}puppbATU8H^5#@FZz431DQ*e;g^f#dZo>ZMCVhzplUOyy;C4+PQg z!!l`)h!Amb^nMFx2=hYxA2-w!(as4sK#6EKSzdu+#sybS#7#(SI@)!Gr9^b}&RFbNsqmW(|*XA7g& zubv>p*j-m|g7H}4^4G$f2KmNrR#San$TxO$El4%WYt|p>n`DN>7l!%=`Lg8@__D=q`ORo z%Ou^U?PC6LAWLQ6F5(}86%=*vBC3h%09n(9>+eM3v_ZIa(#S@2JYOLEH(*(z)#>k> z=>3@fzLnmq3V4N)^=cazLHxj3CKnp@mH@MakoB9UGj+zzg=y_0^l*!YBS%0NHUmVOj zw==wnD!E41V~QEs#8J{$t=uy-#9#;wtsEK_TJV6Wo*xWmv24vk{(CTUG=Fk3K8tG) zI>gQV->B24F66^P*qu$zF90u@h&6NsYp?TVAuP6azpudCR!^(O8^p?|B3m!a?}G!x zU%T?%AuJ~00Nh<=sU^mp6acdE<=a5ua48QW;*PUrj+`1$thc-Jutu!4@ySUz@W8QK zt0+3=P_JRIJYq2UVqIc_r;rp~;AI%m(h^`#}UBn&W;?R^3s{7g|YSt z=bqFQbKW7DK zj*>}NGSzdLC6AP5LNq#~{O_P)YT+3Ym>j0sNklsRD@c=}c$k8~{?9H+e@6?cLaSl9 ziW35?`;KImEP!pb1)S9XM}?I*$Go3G0@J-QknnBQNoySC^+8DJ_hn54FV=v$GL>#2 zvg;?x=Awn58tCWW{B#4y=0_m0xrYjnp4W{}o40H}Le+g3~kjn($g>LOg{3R>ryDV$1`B?~)Ak`y? zzc3zm00(C#R*iH=;1nb)*b%S~Lbhqk>`ezkt=oEH{x7H*SX>J&lUCfB>LaC&92_g$^w2`iyd{XlzY~uSLk*LuhOiCh z$SH?K0`s#ZJ>t3wLvPM8#6X9kyVFP@la2iO3OhiPIZ0dKi(Ax?R2Q&Bwvn zgdcDChN&-#s-!K;yg1-;d0<{UG|I(+1!t}or<-j=vkl9FAbxyt08%v5AWUEmnLE3I<8kdX&P#g+|K)|#QqifYmxP|bP=ZPb#;hdtg- zR4>^9TLkoy1PYE@jT4N>61@+5^H}ZeLm+iRu45M>gGhfxQuGe091%Yy5J-AP-524X;AqtnY1QlJ}!z_OlzM4=+%ej+bJE`J2i>4a*NW22&SKqlCzGZ;}eHFvh<>&P70^10C(jYKD(2)ZP@3Q%I7%sMeTBK)B9`h`T z^g+2Z?Jp$lEX zHa<)J+UEKZx)9fbM!4J1*fC@Ud}mu0m;_z{dhZD_-~y^}$cW;6GcZH+s`=le6$4Is zruclmWsq+-c1I2TeciVcr4(hyFx0yY)F%c6qTHU|9TCH4xr$|YNjfiB@T|epUby_M zyChF~*3%3QJUfC#gnc_lpU>r&$IXhpzX7*(eJhgZGT9_yhKv#kXBk1 z!!eCmCJn)oVLz;rKnN^Dwf|*+Ky;lDh;G}Ekamew>|${mDg>fWAO`vZ*?-%w&ATWT z2CcPfJ&g71LAT|TOrh~r6o_S zPd2-$4{GBv6~oSmSiPpal#GD+Ef6&EwxB8I!U_b1t3|kmfu@eRFig$7n&7k0Q8i_; z79mm#otN_#q~1J~T0kr;GCk1q@(6c)Uy#DXP~^c~leqF>(lO|R1er^#a!b-LXnnhY zs+MM5AXSVzp%79s=~%AoYG{7zZ6+#SB)r8N`8T5ue++s&u1c0={d0C>?`J;C$t>#O zht=;%;=dQR+J`V*AU6>DV_GwqZo+^ysAEGsFX?r-J6b40P$OJTUN91tR{3+SSle!I zVvFzn{GZX^2lvDK&OhDe;#A-J0{^ZRiwXM)mJP6sXoP)X77vMH(Nm_WS#^+1=m zqT2U9-0-oxh*u({o;@H-+JT24{`Ljl(5&;?$nSF5UZ0$rXDk>L1%pmeB1Ri(h2Iev z9n9nAOQTo^{(cm@JL-$p=mY+X*%u*zl!<@T!y{X>(Wcm2P9_h3vNh|-9{HTFYt6c| zKsP_qnsrr*R<&XMlwsW3hCR~chX-#-V;ugOKNZdH;vv!4I=|P7Ux-Ez+t1UYS?4CP zw}lH6;qur|ks=5SKF@>OGAnyNlH1#|6lEu0*p{7ROW)u*G3;J;B$w}qVeQyQx%_kt zTdF+8ABbfT9Q=X54QP7z{)S4dI>#@>ve~9ix13s>p0e$-5Jf3-d~4b1}IjMdd@dfyQzm&uY&WGTSHoV0+e4$>)EzXI9)7ofMCaSpWO@ z6Y=c8o!zEEY!JE(F0)Td!@Fwmq+s=>eg6X_^MgsEw3QZmTbQ=f_^b|WDvKY?k91%o zS{_TINm3J9e?1*JW~{~5g~PPN$OP6h$7lIA74)P^+dT!H#)D;ShI-IvIbjpMZ?omfkgjVeV2ZmK;$k^kL^we9>K%8d_g_E|y( zh#LGc0fQRilq76|pm|kbi(s;SK8)KtvmtGL#$sIV0U4~XAp2p!4t5l>>j`5UgG02S ziTs1kY*4AUGiw*n%r@EvO-M-nWaB8rp&H}Q^SEv-E`Dr7ryY142htAo4HBCFDGS#} zopC@F$-KB1pV5s?QdaQFZma_v)sO$$jSZauK^NQy23~qBq;Sm7Bw^5Jst+GX%2an8 z0RO?@xfhc-?o`D`#bMF+m=uP&`zNC3LeMjXYPql%1oJ@-GjTO;Cv!}yAvf0?Q;5%D z;Lh&s4z?tPZ|Kf?x35N2pCv<&(-oJLLy|wk>dTAERI9TRt0^XbE{R1tGt}=g)GN6w zpd2tKHY4DBa0F*ZB13GhMG}7|i)?>{|J>H_&#<1J3xT%=|6_iC^|y?~%MR<6IlAv5 z5qpd9b)I!tFFlbgu1Y_i*ESRSRnSb{!eB3l^CT8A3>S)#tSeR?^&Zd&aJz26eoG>* z75jaTUYLU-xp5-7JQU`}6RqK&Vf|HRr~9WQ^S_dqwbAdO#F?tsGo7dOU~!Fh3G@c8 zf12Kd^=0ki_^UlwpC+3}-=dMP9^q$tuoolE$~nb)IrZ_i_TvNo{aeI8%%Bl|p!wTwh4#X^~|+Kx0{hwt~swf*LX~^Q6@m&%J0I%I$zXc?wRkG3}zKWAOYlR1btgvDEU6M2Pg3g`+0n zb3aV1aa}XdeM()vYHcb;RKOvoR`8j<*@A#Rxw%~H&F*lL_4iZ-%V3EAAJb**Zp$6Q zrO1cuE;STrr#Z$j1k*?sp3!(F;JFXagLr1)nTuy3o+3QU@w|ZNWjyQfY{0_?GDA~5 zv3R-M8RaI)X1v#!P>X zS0rOrZpHsjX7?)Pd~^!4v*p>i2Aj2EEwYGl*M=WUVVz*G_+|?0Ht5)TeXo~4)!`m~ zVNuF=-(ksN)G{(b{UG^y8TT!?N8EDn0e8W-3n9LpwH1G;A4_JQ;e35RhWX(YUfqv9 z#U5MBhg(@|XVCD5DqbRXhMx(90YJ=l)0_Zw5O9US5gOiAsC?0k?q~6X!G4v*NJELy z-Wo}Hg&=FNRy_>wO&zZ5b#uCEZvgR&rt2(iU034y_k8gr<$jttf-m@(6BeV|ANF=iUp6?< zrZ%@Nn-D~|-1leZrCZS_Qu}>pUi=YWZ2fA@uD9`G-r~)${$^JXW|;>c^2UnHmX*hs z^)E0NErGvUf&3tvU0xTY)-*nhc`_pr%z*MIzUCMq(d_S={NVv?6x-n7UkzZEVS7pC z41;PO8atKFYDhC&*RI2iryW0!6-7uHg%n@4wO^$tyoRgU(?*AXtW zy=enLM$MUwfbv|2`OzxG=0**U*(L8P+9?;B$x{Kzq(anYXSkoy{*l}u<*EOD(*jW3t!+Maenx1$KGCqsv2p)R>1yL*yzeRbB{Sg`e1iW`9 za3ooqYd#fycs>8k#s)Y?i7*o_83Km?0zbGL`C8Zg@V#XI=`YV8 zp!>Ni^4lUgQ%3}|tHvoPf%Xe{?OummdWcp`(0$X%_W=2JZdjV&B*l334J^)EI>M~R zI(j?gXlxATThdsf(+hm}wVy8SzIv+bNA!NRd)IdW&4tjYGVHGT{a3i`HZM7c-hnWd zQxxX<#11*g5I()VfH-#6eN6{N3a6sKCU|D{C1v-SV|#aV#{Y2sRE#&9HwLqogT{(D6OB^|ddD8#eSPvi6rjUYS&(^pPJisaGc)oLFhw)v{1b*?g5y( zzovln0fowZ=!2lEZ-tT%h$Iet1F=TR+k__cI4nq3a&*+W>L)&o-; zCaA`2kC9A$uuj?9mpSZu-3!k zFhJzzv%CXOkZglU3yTY^N3qJjL1_ehqIuf(?i}hVM#;9jV*Pd~mj)b6~&-y@0IW ziRCz)KQ)5&iS$n{Vr~j2K>Ehhm<@UFjYjT)2~jfh3tOY_Q|*u7x3^_z#o%ENP<{I1@Z3sYdf zwnA`j&t^SR-hs2v@)8`>TI^V7`Yf;F-Blli`;}Bv$!(F`6bZH~lkg=?2_N$hv%x2g zql|??OYGuESEIx@2yukrsjq#O#8%v!%^WOxAn!ej*#fsIf}i)*nKVdE2G($=3%|4%f_L4-p1O1Ui`r^?EaPuY7~sk4wuVQ^J29> zhnX`^oXUYL5L4ZmkBGdl-0L&Zp0yBl77mbC({+TJM8P$m{ASTw#! zZgS8k%WDuK;f7^ju#k&5*aYhM_A;c|r)nwVl zdyHevo7C^595MrA5q8JB{H}4VhqFghQQi>ZzN=NDz^jmq_Bhg@0^@YhxPS_X0w>4< zoAd(b5-2gAz&#Orj9=itUdB?q>18aJZ@0?gHf@6&#GaBIB@qgW5fl0@23*!n&=oAi zh4s={60u3e!VpH@!+E>$prcvgJY_uSXxnf;YdjX1znl59<5?v8&dlE>_YcjyZaka9 zzAZ1cO<+xx$X~FBz4gHz?q#v4jwkOppE;3r8oId}_ia>l6Fj^FC`2d1M<2hTi~G1u zt$@SMZi2@EH~2Twafj!^*Mu)yONsq?fuEd+lh`l2Ae~eglRO^_i#5x#VzrHMSwVed z5_Ay#9s>8668(W8+VczDuLS;KW_$vjLSa51kpx4@YWgg7%nTg*Ow~qo)>BHNlDEX>c__z*~Ivs@>8>0O+LPSZ>>Js=flUZ`~%MaXE5s`g@C^fRS4&mn} zv+g5*%DhRtoW>tRQ*6IB9oP!(E=otu!Y6jbYUw(He(y-ol7Xo1Iuy6WL7RbuNuW=n ziKscWUo-i%DJ;SifMBk9Nrr_XT74E@JcY$|d~t`r;i#1zt_86M+L&dfYEj^htPpRr zcJO^uSaj5=e}+}FX6cQevV$vAS&PVa|L_NsjXss9??b%%R2JDH8eHw$J{w(urDe6^ zJ*KhdeAZMJ#k{k0ri3(O-Cmn`&bL-jlDF6O_u?*PSxnf>VBcc=ulg0?)aO& zf~Q*<@@Rv43?YP%HV4j^jqd};NR2LRLY*vnB~Tn$x=qU|C1(@`nIVFdM33|PWs_eH z{E%K7ygSs~aUqmLexKYGxCaor%@!lMyG=K%5cH)(|18jr_O})2TZGVyitjYRa|V95 zhBn@i$lilU%h#bI=((DBXHd&PG=#xW-$I8iBrY8B@3#ou{cj0FEjk_{VVs1$Bpf2) zR0*Gw@OcS0NLZ#rr{Szj_y_4>kOhg9FiAp(gp(zFSi;2;u99%0gkMT{Ov1^n^@4Ag z`MoEg(_lC*GhQt{M#zApWlKzz@KFhuNVrPE_ayvM!deN>OK6DHGj1bcKM6AlB7egS z>9APB)e?RvVU>j6OL$Sjz*c&~%_QtBVLu6nNjO=;CnPM8a5*65Z&)oIHb}Td!b%B` zNce+o^=+Ear$oeY1OFwv!wO5oL zyk;gF8{T-ZNG{u|C!fkw9%8WxVgGU+sr#<|w>w|-5KDG8(L=||DulnKhmIYr!%h8k zIM4LYa2M?V3}=vK2si)l!rh&B|FlP@qzx@iewfuL^nwg&P8b3_&bBFg-opNWb1mhHUC839-r9V}nBseUp;z&Bit-HZ}zR z4Ixu!OvMj+>$B$J7ZMEDU_(dkW=hm8`>@aVWdqqlyvSz+3NMcDi<{vFvDe*sL6_ZL|TEpfl&I{}Hf#8RKO56|YCGLlROWY3)Z|m{>{^1h$`^Wyv zKk1+T{MlF8G-vp`dLj`LMoQR5!dMC8B}|a8i-f%-OqI|f;aCZ$OE^nHLy?|epbq(C zudz|i0_j;S;foT!B4N0U^p?aoO8BXSWfC5iuvS7%!apUfm(cK@UWjlVIt>ZZfk++w zk|mxhp+mxK3CBt}Rl*q(&XTY|!W9y(m2j(shb62N5Tw0cIvC#9OBNzwxP*}s#!8qV zVUmQ&5~fP%kT6@qu@cUZut35U1ZisVXRua!Y?81{!ow1364px?zELl5yo6mOOqMWP z!g&&|knryOM-5qzJ!%-8f4`x0$6EGcV`uhfdQ!Trd`4@(%kMRzZd@UVpQWcct> z-9KBx6%rnnFm|hqFX3ScW48(S)`qPzp=8~`kS*crZKc0#WUm>cLO$11h?Fov!sO5S z8y~YY?2q}DRqPG^!^f-(|4a#pa8BK)$Dpk<{booUTq5zCC2@Uu06Hmgu)4&rSmGeS z;cR}LKC0;LaNWJO5{d$YxY)AY;Bu+d``h`n8 zQb!Gu5(g7W{9+{@MHuz$1nB^VlK3S_oaB?}mn`vU9W|s%9IQz3b4WZ!;@J|9mH1eR zx0Co(i4%*7@;8L-&}-CQ2AClO#7lgZ#5+iQp2Ry!yg=f2NW56$og}_O;+-YFTH=W^ zf5Teo0Esm5+aU3-65k~8?h@ZB@jenSlXzc=S4kWa3gUNI;wciZmH0rt{^%6aVUP@< zNjz2J7bI?zc)i32OWbfkZ$Z1nLnJ;#;^7h>D)C5(XNdNPW2|%-CIci$e7MAuBo3)K z@k^HYNQtLPTA=8*V3(mz|`kR2Aku@ZNVmkv{Y?Tp$C0-@*5Q*1H9K1I1^V8|Z64#`En8fQPZjyM& zLH!dok$9xQ(f(%XkRStuOFUWPP5lYT8Z`5Vmw0oDJ7jpd_cV-^xPLP|L*jB1YnVqk zeSf(JG!)AK{w>*RiOZdmVS~i|JEE-;ZzBs(CGlv9*Gjyt#5IY>NW31nlNJ=Q(jnxK z-bC#r9x3rSi6=_OMJD& z6D7Vu;$0-ZRpMPGepuq&C0-}-J0*TW;=LqpsCMc#?kyd{t987O#A7AiSK>($PnLM9 z#8V`mE%AO5pDJ;y#Aiu-pu`KD(qWKvSRrw!TZrFUiQ6Q;N#cVgUM6w7#A_vv8;ZnF zllTyc*Gqh;#GN6B^%`eLhe(MJlX!x}hf6$J;+Yb6NPL9E$4Y#p#AisHg!bq+PvUp! zxYJN99qy36486ZL8id^(1OFU5G4v7a#e5}M9NqmOHLnS^>;$admmUt9h z5=_6<(!nb6O%hk+DzZ%CjU;|p;-M0+lX#fKFGxH};)Y{-jja-ol(;;H@!63>>nlB9>9>JKmR zS^n@6FYt%&rH5bP4=?exgj4?ul@6Qy5t8)?WfBjS_+h_)f8D>%?=SHSe*aY6-*8-S zfl!Hu`*FMO9}9d0&Htee-66>zAXCRv{dl&HXG=VAzK&0oc$CCv9WNbL&N_xU{fosk zJ)FV6K9?guVwakKu92P|ZkEp14UKABg6Y~&$JmHyA6BHCap{{_6 zW-giYwH8E> z@}D=Ng;n|7xaauTRDS1mf=CtLU&TAG1DNq0^+&4&&QqQQ<-e#hWU2z47ZTD`yjqJ7 zFB~{8EM%zoEh_&y<*!nHp7IAePb!O5z&@3rRQWrVpP)_<`Y8W`ihoJ@&MOr)lwYCZ zou_Ed3m5JxzDmVstAm zU#I+!m7k~lE6Oic{#VK`RsJRAUr_!R%CB(vjQ{&8AWdzT&Pyv*DueSh+j(Wfd1=J` zdt-!>RQ^nr-+8GeK*cAhc<0qI59No*csc)rRe@&nXn>AaRxtm2)E+IhXt zQ>8Ce@y;tFT-z~DDxDXLE~o^lDnp1GQuR$pRH*m@6sDK2OV1)8ZRfF0qKTX9aI}1?pp~}xt@oCDpswwKB{BPRs1I9 zM=O7h@)MLlOZjQaAFX`nMe5qpmzzq4O0ZTXSf~6^%Fk22u6%LIXiy#H7pwS}m2XiU za$a&RRq+c{yt~TphcD|F7gPf06-bLpP*-KBQ1N4xU#0wY%6I?KXwVAf2Ppqd<%cLg z&l#`Eujf4ehpPn9DnXD+;II5h75|j-otIF1DnDAqFHwGi@^h7+ru^B;&rtqG=kedF zDhyN!)~N*Jly6h<&6J;~;^UNGto)b+?0qdO^RD}(cpP}M6D1V*u zCnrSGi#JQY7r`Ob^h5y~$%;_YI&3J5xF^f+AkrK*5*<%g*F?#jQQ;uk7EQZ=BV z@+(yQGs>@0{&eL>Inp!!jZ}d9&qf0#I(=1P7v%@2`1#6r{uC3W{16pCN%_&LL5-Ck zuHs{qFJ$?0{=-y2q)PCH@?(_$obuPH0$V9RO~ofFKSTL5oavRXDL+s7-zdKr-*Hlz zsRBw>g3Zdmp!~hcuTcID;rEv>;)WCj@i^Y{nWqjlO9*(1^3$|?G zo!XkXBaF5=zL=mi;?h(cL5`1n`m@?c?`_ilqXqXf?y=Cb zOj_ou@&G;3MGI)1-pgp3GkK7|aq~)uQk#lT(AT?Y4QeHHFpIKUn#ilAt!f&mmo0NK zcdNj6eyXb3GEAm-es~b}FKI^rW#|RVTmoxFkRZ}i6G5Ji0;4p|^>JM1Ck^|bWy(02 z&DqK7|mEu-9e)yfrKjG9sQs-|@t$kcKoID& zRkLN7#d*~pyL$EzFJ~`FkR_}1a`ZC7O*01;S1Y6(+ud6e2~eURbJzS=SYpsq{afp;j*@ixZmt_i$`d}j$g=9l_2OA8$Z8hhKAN!jI0wTu0N43R!_I<-)yT1EBQrVER38gjQ1wr` zRd+FK9b~61H6Ja;sJ)DWLM&vmIBI8VgIvn2`Utbusa6$nS;VCoakA&Fi)C8%DZ`Gc z<~ze>K9hdUtTopU%N}O3oPvB=xqp|_I~?EniIQ>u*ivMi%=d3IL0OJfU9*@3S!7Pr zhr4P4`bU~p!@sy%!56Sq;c{8a_cNs@XC~CU<_S zPXa|4<(13!ktxk6PY&St;%bGIVgFmlWxjvwxGc;088Nco$d@-{75usFi9zdYKi_}o z9KU<|8V@bT>noC+Q_0ThrdnE)u7x99M2FP)wAA2fjsslzBp1hi#~BuEwTht0E~3y? zsB~$fEI}VrOIz+6L{T03ju;gjJ+QAVHCq3rmR6@%Oo|Kt&51K=a32|!@Mzf6GR*c! zSd=4On%>7#t7Ff2G%8xgWj-3_C}Q0sVWS*HWD#Z|z0tB!j&y~DmGL#WLvmbfYAjc- zSyS>{&hUdrVah$V7+k{1LIZu#xEL!$J99cN!_2$M%o71r7DMO<@yn^8zhk#6P~FT}(V{dgq^My6TBARUrZk|zgS9Ve|ZnffcmWnLSNDBA%v|lSAv`*{*<_XHNE7lke{O-hcNE)F zhZyQ)-x?yKz*6g5=hEG{*8(*!ykF0B#v#tYy`bb}`SN+O#A+&`|jT*hbeSL?o)}})iUnb}C z4c4!|F(i-rRD67c`R_2@rMA||BO+CZwVch`>g$i!)|z#YU*9@GnxhW#(1Az880&{= z^jFB^=a{ty3`|r0v<4TCO#OIm&HA+9ytpTX5!lq7UCz~y9sbXR^^;)~CgcD18Mfn} z@Q7WRcqFgf^FI=%53Qp;Z7-QjUZ`-Ef856;{SV@VxUb6pr(Zpfsir1snpUv5gwejZ zOp(d;qGE__DBCBe>mOmVAE~RvW6z4mgl7`_O_@*zj(Wx6`*O8nz9TcYbP-?OCzHyf zPx8~6)i2}Hi`VkMr}S@Mf5T5}S+{4QV?z~pR|>H(Q;3Z$$c6eBep*|*jG}eo$2GiS z`ZXc;6D2=Ku|KTlo7`N4TPK$&W6`?{j}dM*nU|3k+FBu+!6}uuihMoruPVPU_Rwna z(jR8Tw{cWfv%Z_CALb+KC)X?Yv(<@lws#4Mo@HlVMM2N%yX$H@U8=_GPuJ5Pf7qp+ zIn)as;#|ZjeRnP~TS==zU&`zwB1 zeEB&Gf&9c@$5dB%R(h1Vm$=znW6V}(kKg~02{|dm^4I>`!a3}J9u%TWu`xR{(9s~(L?JWug#nuX!|vn~+~|-I)mh&ipf!+#aWX*b zD%B-Wds^xkri zt+C8`FHoBzby9up>Dta2*m9md2n?N~e_Y>4_j7&izYpV=H#dnaNSvbow}Do_t25u2 zV3SCKL^YtkKIVtbai&RYVG@gA%@qAD@;)r{H^K(BG>KhP^y>|@#t*|^ZA};)pQ6`m zs0I7CV$B4L`lcY^UG8bC6~#K?f5)uUhd0!k*Drk5BrZ-fiPOQx{^4(5f2E-|!cQiR zsl{kIcH+i*<~43wsvLp^jkK{>f@- zYMM>L`~-VKwo2KSCwOnee?Z!({#Rpdh+}h?0fFmGqBZ>QDp*f^!T%x672$^mrbj!=N_j_ zVkYdEs(UoknsjdDDH^4EiAHhgs9K^?n1^UIBCyiGylx5qPY@&JEBr=SDrr@jM~SqTR@lPfZ25c(7(WoxY#=iI)(+_{B!UEfS zh=!&=gjZ#)@|tBeN?dK`7|rSuB|A}~j}F!bb&@7~2;m#(Ap%o9MPOVl5y%J!j;LE% zr`)&1S#&F2?(WYEidk8o1~U%M@Yid*h;N{ebM_rOv`4qdf&MOHD`Yy;H1H4&n9T-Z zwM2tX{*`sh>y-JH_&nSbgfw*#Pk~>8vC2*U9>PD&U-<8RILrETEwrYtvhh{=<`%{- z|7Z)XncPc#(?T2ixU+rxTDpiYp{=tlxy2+qkJp~UW3_R-mK*<^R=ipZ+9v4JTWa;& z`2HW-*}60D3Io3c{oR&YOIi01Ew#oi%eqlUxQhtxXzXLF`+;@X8*P!hWc~40TGtk` z3(?da*u-5}IMiE`Ij)u)t60Wai4*#3t+bAMWh*VHz6>iP$nm|Swu_ZhSWzp%Rn&M_ z?+~JOc*5E5<)m8$3+T60`H_9B>DaHkIli1b(>CJh9|eV^je17k7NWJR71YC#MO0cf z{T)rKTgwv4i37xha{gbpuHz(!B+hgD0PHfoX=~1YSefhQauRaM6l#x4?4>$9`aMY`o$~$M-9R` z5;n?_Z3)ew97f@Pq?A`CnAa7olT%f4IeQDN6O$2eS zU%$#Hbg-dr=Xb-!*3O3_(7zJ;%9&oSr&dF;Wl(YA%9{dBuFPRLMDU=>~zA* zAybCSG^lKl)JhOi{YleI-`km8Myh-fPGaba5fn&mViic#d9lwn${x|UYPz{vIn z$#xMHq<<8qwRMdm%BDXE)BJ0uV`eeLnR=rx+Kd)ixQ-4JBpV;}B7Zu8GCBBiEJ-d0z8t@tG!}}GZIJyaLo3NsDf5KjGbt9Sq_-qhJ;0sUUsdV1yDjc0vKbvuo5Xd7lB4W4A`KALer%ZSBRa7ods43EujLdgu>+@ zmQh#?;c~UuNb491>0?JpNSB4mRU=nYiOffy^Z?zX8)v_TvL29&CyO)@d zoxJIUSsJ6>>xFA0x{KD1j*1{Oo%B{z z4rrEaGwH3U>_e0cm*uH)Yc}ETNJes_RRKVhC)RNS_b7{ z=|Eyghe9ZWN)R2X7;KOZSs?Stg9jHcg$*(x3kpH7FS0<8LS9XZfb>unN*P8uShz42 z1?f-*m0;~mPaqw#6eXx7jBv1ltT+=bgfgfEOBeD&6xbjW3ZV=t!P1p{FW|qxjFn@Q zFChbgnNSGjAiC-IdT5R9ncb)y3cKvQz!?9LNdG#C2$RDOw~k37zZyxv7J9R zpjiUL0x!Z_Pyqpn^Z=fNz3@Hw|5p^4R>6Mw z4*aKSq94o!`&RyZ0&dea@gH~(TEQEb<2|Q+N zq8p^b1~>*kK)pGd=mV2rIqZR}P$!M_@HC`DUK;a%2E%2pCVIdWSOX{EHZ-2cHwv&r z4xEHvpx$%z2!5CDeRg6J1~utc6mjf{+E8h_>@*IlKiwKmZLI z0&`&#yaV5ZU%DoG!?TbLSHNQ-*PI~^*1%g(0bYwV(Gw=X^RNxhLxUHXPFMnxTnM z7zJ}+9lQoD2A)x`zkvhNP-P;+|Hj$XtYKX!{7zThfCo78uJU|Ap_opN@%v0 zofIsD*Wo0XbcP>BLMm*4Vz>^z>sUJw53j-@Cmxummw&NRSX;840vy5fx#v*oCUW7>{($7Y=$e)=Ab5GKtIU*pTlr1A|oV1E_?$GiaE5x5-5h7 z(C!e!2y5Xy)O(A$hlOwmZbRtXtaR7{m%#rpzs!RjcEfe>JHqI|oFmMC0mgNxdz2#} zEP+yReTP*I@xV#DD24mbzJwhNEP?~@6Er(U7%YP0@CUShmuZ0wa31Qu$0)-xD1(6G znwVzi&r$F`!KMP~Pz1j~*!yfEun&HNt{*T$pu>mo2ed2Y+Yh`9Z^O6X`yu;(NQBqn zJ@^TloMcA@vtbi_4EEpo)ASTOA6N+c;Cl!<&D??=w!=qo3tD`{0Sacp7WfFXk2Mht zBOn7x;8zI#gbHC6Y=%#vW*HrYG{`Mu{wpwAoYBNHun|6oKcVHPWQMu$CY*!^5PX(l zggLMSE`rxN<`YsN8$N;u(DF0Z2P}p|@H4dfoDRTquLE@Har6x;1j6zB?}Cez}xT}bo@#avG5v{z)h%kk*{eG53At_T(R@VK-@Dbbs z-|N%`<6!x9=Dz^r0+_#JlYt>H2R6Y`xB{*f3_A>mxv&e$;1{U-Jy+5o7G8ow@GbcN zz>W*%!*2KtJa6#55avP-oVj5q@JCi8EP$PG8EXH;w_KPB+3*RNe&*;0vtTovgL@Ek zlkW0a~W#hB?5-S0@w=g z!jBM8MFU_iya6TfGgyA75{Q9U;Vt+E-0pECgi){ncEVY3`GdKK@$fPn`-AzvjnVi% z6~G+W1jpce@OVH$&=bZ&A}oX*a2Ec6fIpcQm;#GnBb2~p_!WHqVq{?;jDy+m3haW< z|FScT!YsN#6ikOqD1u4|;nfvUkOFI<2tI>5;K^$&+ChJq1R0PE@55#A*36<8B*A+4 z5bi*r*(?UYG+1lr&r!GvwRz7)FGzrua1gG8H?O;R3?{)Uco*(K6JC1}3CZv#oPyt> z9k0I_3kzWvd;xB}0;3xw!WuXRH^Cmr73=|!3|Vj%9zZMJkue6+As@bkDrm^vOWj~J z%!b!s7kmg;;2zZB{TZP!1g66h*bb-QC-C$(iw+R$Z5}6H!q^Vy;XVZNlSfaO0*hfg z9DtAD2Gq2eMQi8>6JQ>^3cKMH{0>ch&7!w&(a(dlp6*3mM`>+o5Llb_Wu?$x>!y|G_A(ynOF6)oAPDEb%e7qkA{Z(1w& zgc);&%!rFk(ud;}ZTU@GZ`K#y)9UMu{?I)1iGOI3yy>s!A6lT!n$~&U-&6OsY*Vcf z@zdktlP6A|n3AfS{?wWlJ$S&6EB_2`pnqaAyB`QN*LJl;4da&Oe`Kq#+wwJcz2hI6 zCod2j{(xF+N3y@*RkTWjJ3oLgGlm z%9CCA0pkC@2lW5G2lW4c?*TpF@??B!RPv0;eFEd+lH=vQgHvVD;MkPZ{>jNRlDS_> zf8NJjU!Ue}_KM%-Iw~opPg2s1$wK5yo1|l6lX%x#f%HZ?z1`9qkQ^T`_L!s$PMnk+ zn><&%uMM6N8>hVfX=8=>+C&k3XH1(GJDu?9@nc1A{j#??kRM}5>Q}tY{vG{gd-~2w zPL7|R+AlFVesb!JA?iu?B%%O#P>)#wYhpPE1Xl9Gf(f3KDsNo&2GN zk^+5A{o<42Q{(>`-&eolW3JoXVjgCTpDssG4&FT3CU%pvlHz5{hQ>~#L*lu=Lyf9w z%JX_hi@9#=6ORrE5x2A*$wnR4*ZZ0q40%pAbM*8C$8g8>Pn#TXlS9kMFy7+4Y{JOY*yPk%wt>^9 z%oxl65HT=CjpU5v0W_C}IE#$ZO|{K|{*7fOwHQ>=fpMal9$MR6w?U<&#JMS{@zX{n zPK)o8BIiI_B1w-Wf&HTFP1NL3Gh{?$d@M&MF~vM0HZdjsVe9y9K&Bc!eNN(Z+AM6^ zK)F0v^3TS{4M>`mk}z^`VoIv$Ejw3jGYMrGO`Z`KA2lOUrWcL=XG`s3gX^gHzPnls)if3&Sl;#JIk)!?9E2MX}tB`}BM1&{effSj*_!0E}EWf z^T?LoM?5Z*_MbjGF?q)HX{;Ng`En~R)EoJk1MP3i1Ztq|a>ZWdE*#kH>TTyB3l%8;m zkL<`PwfPv`AM2PG*#hn(bl4-}jah0eE9yTzZrBu=k{`tM2Y%+w2kV(jHJ9R^MJEHz z4NPW!d3Jdy7gT5zm$k>xsBOl}n!|h}TBt{^LJaM@>P$!7cHPBIztqrN-@Iin36Ghy8LviY zql-!!nOC{mDb>U`rH1PHvH!1XSDznMxk0Mj|CKiSUq#5@DLWKBXl^!}SCw1r7N!v7 z&DL4y39w?9p}#6y_zKYiWVjU_t?U?diLx`%1IjKzuPM6{ty|m38-(^(b`&}b?6S~w zj2snFh<>K*a@4hsk=Y_u*-}R`e54vP;lw%C1D~`l&{s{goZ%$M3AOl#`C; zD7z5-OxfkAYhBd{w2QJM(1ps*L=Pyt1ihy0O0;f0RWaIM*-_{$hs{}JI!2C)C`3O~ zb~)AhL?qr0^doTuqEJ)squ|S2(dotcv zw!HtsD@>(FpMosX+t3UZo{8ouyAUl6WB#K^REATbA}Ue$E~+3jMA=p}QrS^xg0gLB zhO#r!JY^T6rOGZtE0kS{x_4FO+c83vBX97y0J8UG-MAAboT10IqDw&bM&3Vo8XRd* z&+djDfhH@v1Z~*E7_CC|S7q}ciRcfGQAAgR-7z;9LwXtoMWO3J?liK{%e{nH5y*6) z?>^2N37~Ok>)u9sD>@!zIWefN?COsm$;XwpM$j3`ky-{(*r;86hLeCJ^(&Y!D??BB z5v)QIp+S8)ufevW>p(tjCH2dG_}Ef!LLv6w4|{PtOMgaffDngeXV9H+5xWrW70E*_ z{_Ow%ex!?wxCE9A5@HkuNj(cm*yZSip)?LVXc#vRfm}B>^ra~B$ljpyha1zBj$VU{ zgjb>?Mi_PsdP3P{XczlPBO(ILQFb9(dz29#gf3Ec7J3RCbC3R^?COs&Re#J$KJIj7 z3_G_5TtPy)cdd%Tj~_fjrU_qJqYr7 zs*>q;A@1VHx%~TiGp>!#VAFtNdMWiNoW_>=o3f?0vKir0PbgdJNo7m@1j@-f+O7SxXtaWCCoP!l%pM%8gnmi zSIYq_EtR*e-BY%_buA7&NuQ2>0dg}dM}xWLP1;s;p|a&|a8E5WdMs~;%LX|r#xrot zzZ?qraNIh$$fA(C2`aJWJ#w)t1h=U2dl*^*vO!X7yv!oPc1Qbx43|0;0rQfDeV6+H)X>yT<*X=IifplqqJAR7^f-c)uanvqF` zbU^AZkZGiT29EFl7cgqCG9vuYwjf*D4!sX@VM+~NZG=l51+pNi`;{%V!K+4iLv#Yj za$?Z;RQPf9rm`(-*#2YJaIm3uap-=K8Kj?q^ccwf#Bua0 z$YGaiUT4^z=rO5hfGo5e?YzrqbQn4SWZp>hX=RT`Q$ePeDj%kmwp|*7 zcC+#+GzPUnP!l#S)Kb9y0J{XO09mNi`^uK;U1)?`(ALUshstLvWO}Jj?xixyi9`>; zVC=)_jlImjY=vc?5VJuJdlq^UWcX?H2FQYbM7!@d!h52lL54@8{s)Y85P(hu86JZ! zQuYcoot>JgNI377tEO)axxOXi9_7TJJCd*q-Pg$5^D;_tEa} zF?=#Ty5P8Br=xx!FvNsQeFbC(v$6mEFG(<#S6=M2zj?+Zg(0LVxJs-XM zgOQ;MO}L@v6}_lzsSAEI!qd@^pNuJxy8dUw-iUft8ny-9_KRWX*)iJPVUI;4q^|zW zu-Bl^{LVL5!q1^Y?isy_LgVkVKPNl^-TWtw!`_O<{ADyks{HS<$_aNzKQfs_2zD9z zx@OoL(K$R2YL~muGz@Q7lVh=1(DNX}FQCb8CdYzGMPI975(al2JdYZ&W?4F*yyh`^n@&C*dfe!UHIZhCx(CHwL z(>AmSP>1bUZI!hyc9J&vp{)muPr8D%Q_%*4O~Reb4bcTdXeo9&sy)kNyVzz_KCm5w{r7|0+)*}- z#>_B@t8zrqFQ5uL&BheZG%Aim7bP20usB&hXRVw&=#CWD0fp{D+ou|dtmt)RSD-Uz z83hH*F^Quf=esJ+B(~2phIbeG#B(e<%ISw5207nSug>QYbs8k~S)LislKcNujBJnv zZACADg*p2XolXNC`+PJH#uF|zF`bdXPD8^Mk{4U*0%=oDI{KBe-4~g}sTYi?IgPen zY@}(2+V?JDlOywfG-#>OQmHLpq;-Ucpoy>sI|*G1QB;tDZc+AD^rEt_qD?Z``H(&c z9S7!C>>E(eQqHL-0AbV*;3zaRk z*2_lvAT&(bQu`@e>Re^dM_0&a?PYIP;8cPfYN_pCQFD(*K?psNx=s3|$wOtq`}_Cv34HHmhFSDhq2kcV$^fXx!*T9MlBppi!E1PGyCdkn^AkOgf;M;9^oL`0*v zAPxHtdajre!j>9(h|$0fL-RpaR*3!qvK;eUOdUvD>IOJY`eJm;+s0P56`gdH`InjF zj&l4yW(;o}D&A$-$sl#3vZZ>xM_e1e$DwTbOp#lrJe)Xvr4qpr>d7| zy0X`x9_N@gSq{4PGh>miLpPu2FirSYwCxuhrtLWGFnU~MH`$iqLPvki@L@-zvoA4E z*lB2|a$Z-09fs}!d5LyE+V6@nq*7ab%N~(5A?OcR=`r??=+sBPO((; zPsTJ!9SC9Vxc)yFW1fs)bJ~cyS2C|ukbv$3M=#NzKwfUCM5o-Mq3uY6Hn?q6mWMX} z)o4T{x&Y)ZHV=*Z%}68lFxbc|wdq~vUv4(RcTK{r%COzh?j9~;4T*Z9LA6}Oer&1h zLC*a~bSdu)kv+>mzXRFh3iOtji#SgDJ7|ozi=z=zi$SKBTH@m(PLrm@jxog7MO?&* zLVpE$5UN5Wd7VU9dxjCMgnrlobzH=GkY6~3pNn{$S5fezyNE#Vfn2cn(V6v(2F*v? z^2!PM{l6Vr3^vkB9T?yu>~a$tjM1({Z^{Uf zejS<|OpmckP`4IF#qMY{@0*a{8KpMheG=*9ZHQimUD)NVT1dz!E{@Z&e(1Ok^q%nX=qn(Pa+&CyP7E>OY3L4+;k(e+c^So3!Z)H_!i-^$MDsyT zx4El}7}SjyR&-?lU;V8V@@*9pA9E2sJMzd8`aHy7r=uf#8kt9-x4=fY=tUzVc&i7e z-xcWmJ}!UedmvkPAHDD-b43QJRUj9g z)P9kMEp?5uV+Oj2TEoagdOvg+T*Zz;Yeli1uszYoKvvuntv}pF+#%fF5F=v*^VgJ9 zFw}dbQGo@W1!gP5i*_1i3}YBNZZvPpAv_(egm&0cEn|!+kh%@R2+u?Bf!vJmqXA=$ zMo9g9Eb}k-bQf?YM!PtUR5mmnBFJ2Veh1NHu0VesM?r*Fp)JQ71%;sfL5@%)dK|`+ zM(VdJ{3`k@$ll8rht!>*8Zp7{B2sYV9xW5y0~utt@D`8>umW4Y6Rhq;W0MO&2ZO9k zYU3EDi8MiIXOI6NLLIgiF z$+xh{*RA#BYNu5B`m`0;Qst}Dq%Bpx{Y=_Y&7p1qrR$cG*$Lx5MmE5%TRXWy+TNUZP{Zx%Fw2{V3Oax4yxzplC;Q2dsp2 z5U>g2VGNX$CIyXv04Tv zJDUrX@L&s<)8Pu7g%eN&+d+Pg<_qyQd6zR>BHuhDl5HTQPw)}?#5&~W|cP;+RFL0pllEnbs$PLO3$+hN&=SJj4 z=0@d4=f>nFRrZ|o48x^!t)~XBJ=dc(dLkd%Dk#PvE6;U zC}ex5%Y|Eux0Y-z-CDNw!q)Pw6-eQ(Yq6Nr|r(zy>55j?&960yD#jn*j=^TJwG5nBtJYqGCw*$AwMlYBY$0f zUVd?YY5s-$iu|g4_kw_ekb>}n$b#sCgo3n!jDmFqc?HDJ-q!x=1UsE^>J@OLH-~xL7>DE5GJ{VZfg&uf^PNP-*RM z^?KMWlPe8~*H_ui5qga{bL+;|uA!l!R^#)uzgK6xhiQy#r!_Ac254qmTNM0-1+#|pza~jF`iZFUv97aTBq2a2lj+4UcUU|n;xDo_|IFJ zxoi1%b4QL3UEJn3pLLzO&OUwV>z;XAZvOX=rng4KUVby^e3NhXeDP;M+^4n2P5eDN zpv&PWKib^&_h;?r3d0{i*5JJroxixyG2qV-AN#)C7e0S)dcTs`E^F)k`P9ajW=}i+ z%a%c2ZU3s3{N)=lWv^s*c|UFRi$R+|xi-zCbm08Zb)A!%eg9%vr>D2PRcDd!Pu=}D zt?!Y%`TD)BUwq~tIxBz4^Ud;mn+7cXEo5%#o-ePC^*_F#p?Bf_)!WAGJF-{*X-95l z(TTj?uhlF2YxCM0?h^wB%^BvxZrbQZJ|@#&W;4US)aoPsI?{KwYKXOw z4DdGBGyCQjqC+Yf&!H@E4g+tW&YbgwDqX7)#CMq6a!JkyjS=4_tpbezc;=s4mxsJgM)0#+*7x z-Yp$8GI8p3?#&PC+sE42-zzkn zjP0ZUGRy4O#M|o0q?tYHxN$-GwvVVcI^m6rOT$O)fB%_Xzs%_9 zb?ro-Z!aIJ;pIAaeERZJy$eEO55DcycGdQm?>@Kq$k^|mY;YpxRPQeHl7^iRHoxj0 zzTwB&uf<26KG-s#<=z4PvWqGs&Q^T2*t(=@dDMf{o8MJVTm0ViAAZtqZhmg&nV%Y$ z));p1im?$aGM%t4G99xvk?Xv2IW&Th^W<3u$7uS*KgOWOdF8UD{DEOg0DV6|rV7 z-^nTMr-pWzoSgJ9?vq$^%cg$^50<%u%>Au>t=-&e#w?9AEq#!rnRNS9bNl-4Zf;W- zda}c{E?n&9&aT(hwT8)LPP5L|Kb~uDRscpWz7f=84URP8$RON zvD{XkBXTEBnpjvhx5uBg-yG2SiD1tIWq)k3E^@V67nuXpR%xyo&|u&uvhRTz zuSL1*2Pd1KYtT8=+NqP;YN&9YlRLB z{G{xU{_FSj_^RKp_G@{YzUp*-<`1(sxppX8d2e;!lAPa{o$D5O{@{+vjZ1SbwAkf6 zH>Agc@6Sv<`~DxTTYYf$x#nxGu4=wEbIzjQH!p5JrS_=KQK@@ETD~2e`0l$SZuw1J zzO4Vb_M5Z6&uAC)T7JX-yy$+})Bfu>Lt+As?l`_T-xfNh^UTM0*|zNb*#7!;$ zdn~l!CqLZsxH|Uj{~Y)}^?KVslTIy2?cUWZ^XAn9L$_}K;lCa`7vJ7Bb?AZPcUPPV zYSH|Ld)(tA)*id%Q~S<|SA33bsc1L+Zpz^!OZH59A*Iiv8dt+#`fo~5nNM6w&o|!O z)_MDbz{@RsUOnU7sy>aY%RACKK%Y6){8$?gH+Sb6ueNdh z+qU;Vjxx1eh2tpm_>W#s2k*Px>`dL#cJo`bo}JfdLc{hw>L0&pjXl4hR?LIi*FS9Xpvkz2Ask(V}gGgo1ND-U$0WdHLRX_HBE|TpZeP)u-0) zdfjN!y=cfMTZ2q%j;$&aiwjHm#U~oVUQ&v%A z!;<808gAX&vwg2#x8A(?$?Ovc@4C)iH?O<6;(a04{CxbfjEedfpKR2*Te&trZs^YM zcQm~EUHcbW-${FE|H!L@2ARSaZ#z{OlhQGMawF4)){AR&)Ti6c*X-8r9HRNxDfDS; z$Ld4b%pBzN?&}j)4Vd)l;dgFF^gV11-+1P+deNgcKW(e;(<1loqSSvG)_ouC>L*V3 zp6YTxaFEA}_``jztM5N`Y_)yo%BK0tKYRaFS1<1v{pIC-8?TI6-Ou}p0DF@LDW%<# z>y6&@s;4$L_p?a_9p-#I@y4XJwwiwp?q4#@6M9X2WvabRVV{*} zM}7bNqz%RMRt#BlEW6pCCj)lX%4j?0o4zlNw|!bU>E%^Ly(cDr`SP+~`lR^xI~`Qm z=t#d#!F|5=K7KpoWYYHSDH|sGYz(a9ANSLTyOPF4um618!u4N#d8qGSTkMNkogI27 zqpY~k&C&Ny|OO01Qxb{i$n*+zRe5dEwdCkAyzjN$o_wRpn#&)&D61J#?SGQx2 bpFM56lllI#5s`CNy?ms}x5qde5#s*=vx4Fx diff --git a/com.rlabrecque.steamworks.net/README.md b/com.rlabrecque.steamworks.net/README.md index 6455cf66..072c2e48 100644 --- a/com.rlabrecque.steamworks.net/README.md +++ b/com.rlabrecque.steamworks.net/README.md @@ -5,7 +5,7 @@ _Steamworks.NET_ is a C# Wrapper for Valve's Steamworks API, it can be used eith _Steamworks.NET_ was designed to be as close as possible to the original C++ API, as such the documentation provided from Valve largely covers usage of _Steamworks.NET_. Niceties and C# Idioms can be easily implemented on top of _Steamworks.NET_. -_Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.52. +_Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.53a. * Author: [Riley Labrecque](https://github.com/rlabrecque) * License: [MIT](http://www.opensource.org/licenses/mit-license.php) diff --git a/com.rlabrecque.steamworks.net/Runtime/Version.cs b/com.rlabrecque.steamworks.net/Runtime/Version.cs index 2195ce57..a1e43b87 100644 --- a/com.rlabrecque.steamworks.net/Runtime/Version.cs +++ b/com.rlabrecque.steamworks.net/Runtime/Version.cs @@ -13,11 +13,11 @@ namespace Steamworks { public static class Version { - public const string SteamworksNETVersion = "20.0.0"; - public const string SteamworksSDKVersion = "1.52"; - public const string SteamAPIDLLVersion = "06.75.97.18"; - public const int SteamAPIDLLSize = 260840; - public const int SteamAPI64DLLSize = 290536; + public const string SteamworksNETVersion = "20.1.0"; + public const string SteamworksSDKVersion = "1.53a"; + public const string SteamAPIDLLVersion = "06.91.21.57"; + public const int SteamAPIDLLSize = 263080; + public const int SteamAPI64DLLSize = 295336; } } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs index 26865ac5..38376738 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs @@ -206,6 +206,13 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_IsEqualTo", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] public static extern bool SteamAPI_SteamNetworkingIPAddr_IsEqualTo(ref SteamNetworkingIPAddr self, ref SteamNetworkingIPAddr x); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_GetFakeIPType", CallingConvention = CallingConvention.Cdecl)] + public static extern ESteamNetworkingFakeIPType SteamAPI_SteamNetworkingIPAddr_GetFakeIPType(ref SteamNetworkingIPAddr self); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIPAddr_IsFakeIP", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool SteamAPI_SteamNetworkingIPAddr_IsFakeIP(ref SteamNetworkingIPAddr self); #endregion #region SteamNetworkingIdentity Accessors [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_Clear", CallingConvention = CallingConvention.Cdecl)] @@ -240,6 +247,19 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_GetIPAddr", CallingConvention = CallingConvention.Cdecl)] public static extern IntPtr SteamAPI_SteamNetworkingIdentity_GetIPAddr(ref SteamNetworkingIdentity self); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_SetIPv4Addr", CallingConvention = CallingConvention.Cdecl)] + public static extern void SteamAPI_SteamNetworkingIdentity_SetIPv4Addr(ref SteamNetworkingIdentity self, uint nIPv4, ushort nPort); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_GetIPv4", CallingConvention = CallingConvention.Cdecl)] + public static extern uint SteamAPI_SteamNetworkingIdentity_GetIPv4(ref SteamNetworkingIdentity self); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_GetFakeIPType", CallingConvention = CallingConvention.Cdecl)] + public static extern ESteamNetworkingFakeIPType SteamAPI_SteamNetworkingIdentity_GetFakeIPType(ref SteamNetworkingIdentity self); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_IsFakeIP", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool SteamAPI_SteamNetworkingIdentity_IsFakeIP(ref SteamNetworkingIdentity self); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_SteamNetworkingIdentity_SetLocalHost", CallingConvention = CallingConvention.Cdecl)] public static extern void SteamAPI_SteamNetworkingIdentity_SetLocalHost(ref SteamNetworkingIdentity self); @@ -2018,7 +2038,7 @@ internal static class NativeMethods { public static extern bool ISteamNetworkingMessages_CloseChannelWithUser(IntPtr instancePtr, ref SteamNetworkingIdentity identityRemote, int nLocalChannel); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingMessages_GetSessionConnectionInfo", CallingConvention = CallingConvention.Cdecl)] - public static extern ESteamNetworkingConnectionState ISteamNetworkingMessages_GetSessionConnectionInfo(IntPtr instancePtr, ref SteamNetworkingIdentity identityRemote, out SteamNetConnectionInfo_t pConnectionInfo, out SteamNetworkingQuickConnectionStatus pQuickStatus); + public static extern ESteamNetworkingConnectionState ISteamNetworkingMessages_GetSessionConnectionInfo(IntPtr instancePtr, ref SteamNetworkingIdentity identityRemote, out SteamNetConnectionInfo_t pConnectionInfo, out SteamNetConnectionRealTimeStatus_t pQuickStatus); #endregion #region SteamNetworkingSockets [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_CreateListenSocketIP", CallingConvention = CallingConvention.Cdecl)] @@ -2074,9 +2094,8 @@ internal static class NativeMethods { [return: MarshalAs(UnmanagedType.I1)] public static extern bool ISteamNetworkingSockets_GetConnectionInfo(IntPtr instancePtr, HSteamNetConnection hConn, out SteamNetConnectionInfo_t pInfo); - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetQuickConnectionStatus", CallingConvention = CallingConvention.Cdecl)] - [return: MarshalAs(UnmanagedType.I1)] - public static extern bool ISteamNetworkingSockets_GetQuickConnectionStatus(IntPtr instancePtr, HSteamNetConnection hConn, out SteamNetworkingQuickConnectionStatus pStats); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetConnectionRealTimeStatus", CallingConvention = CallingConvention.Cdecl)] + public static extern EResult ISteamNetworkingSockets_GetConnectionRealTimeStatus(IntPtr instancePtr, HSteamNetConnection hConn, ref SteamNetConnectionRealTimeStatus_t pStatus, int nLanes, ref SteamNetConnectionRealTimeLaneStatus_t pLanes); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetDetailedConnectionStatus", CallingConvention = CallingConvention.Cdecl)] public static extern int ISteamNetworkingSockets_GetDetailedConnectionStatus(IntPtr instancePtr, HSteamNetConnection hConn, IntPtr pszBuf, int cbBuf); @@ -2089,6 +2108,9 @@ internal static class NativeMethods { [return: MarshalAs(UnmanagedType.I1)] public static extern bool ISteamNetworkingSockets_CreateSocketPair(IntPtr instancePtr, out HSteamNetConnection pOutConnection1, out HSteamNetConnection pOutConnection2, [MarshalAs(UnmanagedType.I1)] bool bUseNetworkLoopback, ref SteamNetworkingIdentity pIdentity1, ref SteamNetworkingIdentity pIdentity2); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_ConfigureConnectionLanes", CallingConvention = CallingConvention.Cdecl)] + public static extern EResult ISteamNetworkingSockets_ConfigureConnectionLanes(IntPtr instancePtr, HSteamNetConnection hConn, int nNumLanes, out int pLanePriorities, out ushort pLaneWeights); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetIdentity", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] public static extern bool ISteamNetworkingSockets_GetIdentity(IntPtr instancePtr, out SteamNetworkingIdentity pIdentity); @@ -2153,8 +2175,27 @@ internal static class NativeMethods { [return: MarshalAs(UnmanagedType.I1)] public static extern bool ISteamNetworkingSockets_SetCertificate(IntPtr instancePtr, IntPtr pCertificate, int cbCertificate, out SteamNetworkingErrMsg errMsg); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_ResetIdentity", CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamNetworkingSockets_ResetIdentity(IntPtr instancePtr, ref SteamNetworkingIdentity pIdentity); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_RunCallbacks", CallingConvention = CallingConvention.Cdecl)] public static extern void ISteamNetworkingSockets_RunCallbacks(IntPtr instancePtr); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_BeginAsyncRequestFakeIP", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworkingSockets_BeginAsyncRequestFakeIP(IntPtr instancePtr, int nNumPorts); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetFakeIP", CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamNetworkingSockets_GetFakeIP(IntPtr instancePtr, int idxFirstPort, out SteamNetworkingFakeIPResult_t pInfo); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_CreateListenSocketP2PFakeIP", CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamNetworkingSockets_CreateListenSocketP2PFakeIP(IntPtr instancePtr, int idxFakePort, int nOptions, [In, Out] SteamNetworkingConfigValue_t[] pOptions); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetRemoteFakeIPForConnection", CallingConvention = CallingConvention.Cdecl)] + public static extern EResult ISteamNetworkingSockets_GetRemoteFakeIPForConnection(IntPtr instancePtr, HSteamNetConnection hConn, out SteamNetworkingIPAddr pOutAddr); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_CreateFakeUDPPort", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr ISteamNetworkingSockets_CreateFakeUDPPort(IntPtr instancePtr, int idxFakeServerPort); #endregion #region SteamNetworkingUtils [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_AllocateMessage", CallingConvention = CallingConvention.Cdecl)] @@ -2204,6 +2245,16 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SetDebugOutputFunction", CallingConvention = CallingConvention.Cdecl)] public static extern void ISteamNetworkingUtils_SetDebugOutputFunction(IntPtr instancePtr, ESteamNetworkingSocketsDebugOutputType eDetailLevel, FSteamNetworkingSocketsDebugOutput pfnFunc); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_IsFakeIPv4", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamNetworkingUtils_IsFakeIPv4(IntPtr instancePtr, uint nIPv4); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_GetIPv4FakeIPType", CallingConvention = CallingConvention.Cdecl)] + public static extern ESteamNetworkingFakeIPType ISteamNetworkingUtils_GetIPv4FakeIPType(IntPtr instancePtr, uint nIPv4); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_GetRealIdentityForFakeIP", CallingConvention = CallingConvention.Cdecl)] + public static extern EResult ISteamNetworkingUtils_GetRealIdentityForFakeIP(IntPtr instancePtr, ref SteamNetworkingIPAddr fakeIP, out SteamNetworkingIdentity pOutRealIdentity); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SetConfigValue", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] public static extern bool ISteamNetworkingUtils_SetConfigValue(IntPtr instancePtr, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, IntPtr scopeObj, ESteamNetworkingConfigDataType eDataType, IntPtr pArg); @@ -2212,11 +2263,10 @@ internal static class NativeMethods { public static extern ESteamNetworkingGetConfigValueResult ISteamNetworkingUtils_GetConfigValue(IntPtr instancePtr, ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigScope eScopeType, IntPtr scopeObj, out ESteamNetworkingConfigDataType pOutDataType, IntPtr pResult, ref ulong cbResult); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_GetConfigValueInfo", CallingConvention = CallingConvention.Cdecl)] - [return: MarshalAs(UnmanagedType.I1)] - public static extern bool ISteamNetworkingUtils_GetConfigValueInfo(IntPtr instancePtr, ESteamNetworkingConfigValue eValue, IntPtr pOutName, out ESteamNetworkingConfigDataType pOutDataType, out ESteamNetworkingConfigScope pOutScope, out ESteamNetworkingConfigValue pOutNextValue); + public static extern IntPtr ISteamNetworkingUtils_GetConfigValueInfo(IntPtr instancePtr, ESteamNetworkingConfigValue eValue, out ESteamNetworkingConfigDataType pOutDataType, out ESteamNetworkingConfigScope pOutScope); - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_GetFirstConfigValue", CallingConvention = CallingConvention.Cdecl)] - public static extern ESteamNetworkingConfigValue ISteamNetworkingUtils_GetFirstConfigValue(IntPtr instancePtr); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_IterateGenericEditableConfigValues", CallingConvention = CallingConvention.Cdecl)] + public static extern ESteamNetworkingConfigValue ISteamNetworkingUtils_IterateGenericEditableConfigValues(IntPtr instancePtr, ESteamNetworkingConfigValue eCurrent, [MarshalAs(UnmanagedType.I1)] bool bEnumerateDevVars); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_ToString", CallingConvention = CallingConvention.Cdecl)] public static extern void ISteamNetworkingUtils_SteamNetworkingIPAddr_ToString(IntPtr instancePtr, ref SteamNetworkingIPAddr addr, IntPtr buf, uint cbBuf, [MarshalAs(UnmanagedType.I1)] bool bWithPort); @@ -2225,6 +2275,9 @@ internal static class NativeMethods { [return: MarshalAs(UnmanagedType.I1)] public static extern bool ISteamNetworkingUtils_SteamNetworkingIPAddr_ParseString(IntPtr instancePtr, out SteamNetworkingIPAddr pAddr, InteropHelp.UTF8StringHandle pszStr); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIPAddr_GetFakeIPType", CallingConvention = CallingConvention.Cdecl)] + public static extern ESteamNetworkingFakeIPType ISteamNetworkingUtils_SteamNetworkingIPAddr_GetFakeIPType(IntPtr instancePtr, ref SteamNetworkingIPAddr addr); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ToString", CallingConvention = CallingConvention.Cdecl)] public static extern void ISteamNetworkingUtils_SteamNetworkingIdentity_ToString(IntPtr instancePtr, ref SteamNetworkingIdentity identity, IntPtr buf, uint cbBuf); @@ -2652,6 +2705,14 @@ internal static class NativeMethods { [return: MarshalAs(UnmanagedType.I1)] public static extern bool ISteamUGC_SetRankedByTrendDays(IntPtr instancePtr, UGCQueryHandle_t handle, uint unDays); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetTimeCreatedDateRange", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetTimeCreatedDateRange(IntPtr instancePtr, UGCQueryHandle_t handle, uint rtStart, uint rtEnd); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetTimeUpdatedDateRange", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetTimeUpdatedDateRange(IntPtr instancePtr, UGCQueryHandle_t handle, uint rtStart, uint rtEnd); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_AddRequiredKeyValueTag", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] public static extern bool ISteamUGC_AddRequiredKeyValueTag(IntPtr instancePtr, UGCQueryHandle_t handle, InteropHelp.UTF8StringHandle pKey, InteropHelp.UTF8StringHandle pValue); @@ -3204,6 +3265,10 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUtils_SetGameLauncherMode", CallingConvention = CallingConvention.Cdecl)] public static extern void ISteamUtils_SetGameLauncherMode(IntPtr instancePtr, [MarshalAs(UnmanagedType.I1)] bool bLauncherMode); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUtils_DismissFloatingGamepadTextInput", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUtils_DismissFloatingGamepadTextInput(IntPtr instancePtr); #endregion #region SteamVideo [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamVideo_GetVideoURL", CallingConvention = CallingConvention.Cdecl)] diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs index 4b732965..0788e4fd 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs @@ -872,9 +872,9 @@ public struct HTML_BrowserRestarted_t { // callbacks [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientHTTPCallbacks + 1)] + [CallbackIdentity(Constants.k_iSteamHTTPCallbacks + 1)] public struct HTTPRequestCompleted_t { - public const int k_iCallback = Constants.k_iClientHTTPCallbacks + 1; + public const int k_iCallback = Constants.k_iSteamHTTPCallbacks + 1; // Handle value for the request that has completed. public HTTPRequestHandle m_hRequest; @@ -896,9 +896,9 @@ public struct HTTPRequestCompleted_t { } [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientHTTPCallbacks + 2)] + [CallbackIdentity(Constants.k_iSteamHTTPCallbacks + 2)] public struct HTTPRequestHeadersReceived_t { - public const int k_iCallback = Constants.k_iClientHTTPCallbacks + 2; + public const int k_iCallback = Constants.k_iSteamHTTPCallbacks + 2; // Handle value for the request that has received headers. public HTTPRequestHandle m_hRequest; @@ -909,9 +909,9 @@ public struct HTTPRequestHeadersReceived_t { } [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientHTTPCallbacks + 3)] + [CallbackIdentity(Constants.k_iSteamHTTPCallbacks + 3)] public struct HTTPRequestDataReceived_t { - public const int k_iCallback = Constants.k_iClientHTTPCallbacks + 3; + public const int k_iCallback = Constants.k_iSteamHTTPCallbacks + 3; // Handle value for the request that has received data. public HTTPRequestHandle m_hRequest; @@ -975,9 +975,9 @@ public struct SteamInputConfigurationLoaded_t { // results transition from "Pending" to "OK" or an error state. There will // always be exactly one callback per handle. [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientInventoryCallbacks + 0)] + [CallbackIdentity(Constants.k_iSteamInventoryCallbacks + 0)] public struct SteamInventoryResultReady_t { - public const int k_iCallback = Constants.k_iClientInventoryCallbacks + 0; + public const int k_iCallback = Constants.k_iSteamInventoryCallbacks + 0; public SteamInventoryResult_t m_handle; public EResult m_result; } @@ -990,9 +990,9 @@ public struct SteamInventoryResultReady_t { // The normal ResultReady callback will still be triggered immediately // afterwards; this is an additional notification for your convenience. [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientInventoryCallbacks + 1)] + [CallbackIdentity(Constants.k_iSteamInventoryCallbacks + 1)] public struct SteamInventoryFullUpdate_t { - public const int k_iCallback = Constants.k_iClientInventoryCallbacks + 1; + public const int k_iCallback = Constants.k_iSteamInventoryCallbacks + 1; public SteamInventoryResult_t m_handle; } @@ -1001,16 +1001,16 @@ public struct SteamInventoryFullUpdate_t { // LoadItemDefinitions() or any other async request which required // a definition update in order to process results from the server. [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] - [CallbackIdentity(Constants.k_iClientInventoryCallbacks + 2)] + [CallbackIdentity(Constants.k_iSteamInventoryCallbacks + 2)] public struct SteamInventoryDefinitionUpdate_t { - public const int k_iCallback = Constants.k_iClientInventoryCallbacks + 2; + public const int k_iCallback = Constants.k_iSteamInventoryCallbacks + 2; } // Returned [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientInventoryCallbacks + 3)] + [CallbackIdentity(Constants.k_iSteamInventoryCallbacks + 3)] public struct SteamInventoryEligiblePromoItemDefIDs_t { - public const int k_iCallback = Constants.k_iClientInventoryCallbacks + 3; + public const int k_iCallback = Constants.k_iSteamInventoryCallbacks + 3; public EResult m_result; public CSteamID m_steamID; public int m_numEligiblePromoItemDefs; @@ -1020,9 +1020,9 @@ public struct SteamInventoryEligiblePromoItemDefIDs_t { // Triggered from StartPurchase call [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientInventoryCallbacks + 4)] + [CallbackIdentity(Constants.k_iSteamInventoryCallbacks + 4)] public struct SteamInventoryStartPurchaseResult_t { - public const int k_iCallback = Constants.k_iClientInventoryCallbacks + 4; + public const int k_iCallback = Constants.k_iSteamInventoryCallbacks + 4; public EResult m_result; public ulong m_ulOrderID; public ulong m_ulTransID; @@ -1030,9 +1030,9 @@ public struct SteamInventoryStartPurchaseResult_t { // Triggered from RequestPrices [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientInventoryCallbacks + 5)] + [CallbackIdentity(Constants.k_iSteamInventoryCallbacks + 5)] public struct SteamInventoryRequestPricesResult_t { - public const int k_iCallback = Constants.k_iClientInventoryCallbacks + 5; + public const int k_iCallback = Constants.k_iSteamInventoryCallbacks + 5; public EResult m_result; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] private byte[] m_rgchCurrency_; @@ -1704,16 +1704,13 @@ public struct SteamRemotePlaySessionDisconnected_t { } // callbacks - // - // IMPORTANT! k_iClientRemoteStorageCallbacks 1 through 6 are used, see iclientremotestorage.h - // //----------------------------------------------------------------------------- // Purpose: The result of a call to FileShare() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 7)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 7)] public struct RemoteStorageFileShareResult_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 7; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 7; public EResult m_eResult; // The result of the operation public UGCHandle_t m_hFile; // The handle that can be shared with users and features [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_cchFilenameMax)] @@ -1725,28 +1722,28 @@ public string m_rgchFilename // The name of the file that was shared } } - // k_iClientRemoteStorageCallbacks + 8 is deprecated! Do not reuse + // k_iSteamRemoteStorageCallbacks + 8 is deprecated! Do not reuse //----------------------------------------------------------------------------- // Purpose: The result of a call to PublishFile() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 9)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 9)] public struct RemoteStoragePublishFileResult_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 9; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 9; public EResult m_eResult; // The result of the operation. public PublishedFileId_t m_nPublishedFileId; [MarshalAs(UnmanagedType.I1)] public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; } - // k_iClientRemoteStorageCallbacks + 10 is deprecated! Do not reuse + // k_iSteamRemoteStorageCallbacks + 10 is deprecated! Do not reuse //----------------------------------------------------------------------------- // Purpose: The result of a call to DeletePublishedFile() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 11)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 11)] public struct RemoteStorageDeletePublishedFileResult_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 11; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 11; public EResult m_eResult; // The result of the operation. public PublishedFileId_t m_nPublishedFileId; } @@ -1755,9 +1752,9 @@ public struct RemoteStorageDeletePublishedFileResult_t { // Purpose: The result of a call to EnumerateUserPublishedFiles() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 12)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 12)] public struct RemoteStorageEnumerateUserPublishedFilesResult_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 12; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 12; public EResult m_eResult; // The result of the operation. public int m_nResultsReturned; public int m_nTotalResultCount; @@ -1769,9 +1766,9 @@ public struct RemoteStorageEnumerateUserPublishedFilesResult_t { // Purpose: The result of a call to SubscribePublishedFile() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 13)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 13)] public struct RemoteStorageSubscribePublishedFileResult_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 13; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 13; public EResult m_eResult; // The result of the operation. public PublishedFileId_t m_nPublishedFileId; } @@ -1780,9 +1777,9 @@ public struct RemoteStorageSubscribePublishedFileResult_t { // Purpose: The result of a call to EnumerateSubscribePublishedFiles() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 14)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 14)] public struct RemoteStorageEnumerateUserSubscribedFilesResult_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 14; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 14; public EResult m_eResult; // The result of the operation. public int m_nResultsReturned; public int m_nTotalResultCount; @@ -1796,9 +1793,9 @@ public struct RemoteStorageEnumerateUserSubscribedFilesResult_t { // Purpose: The result of a call to UnsubscribePublishedFile() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 15)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 15)] public struct RemoteStorageUnsubscribePublishedFileResult_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 15; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 15; public EResult m_eResult; // The result of the operation. public PublishedFileId_t m_nPublishedFileId; } @@ -1807,9 +1804,9 @@ public struct RemoteStorageUnsubscribePublishedFileResult_t { // Purpose: The result of a call to CommitPublishedFileUpdate() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 16)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 16)] public struct RemoteStorageUpdatePublishedFileResult_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 16; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 16; public EResult m_eResult; // The result of the operation. public PublishedFileId_t m_nPublishedFileId; [MarshalAs(UnmanagedType.I1)] @@ -1820,9 +1817,9 @@ public struct RemoteStorageUpdatePublishedFileResult_t { // Purpose: The result of a call to UGCDownload() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 17)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 17)] public struct RemoteStorageDownloadUGCResult_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 17; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 17; public EResult m_eResult; // The result of the operation. public UGCHandle_t m_hFile; // The handle to the file that was attempted to be downloaded. public AppId_t m_nAppID; // ID of the app that created this file. @@ -1841,9 +1838,9 @@ public string m_pchFileName // The name of the file that was downloaded. // Purpose: The result of a call to GetPublishedFileDetails() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 18)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 18)] public struct RemoteStorageGetPublishedFileDetailsResult_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 18; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 18; public EResult m_eResult; // The result of the operation. public PublishedFileId_t m_nPublishedFileId; public AppId_t m_nCreatorAppID; // ID of the app that created this file. @@ -1901,9 +1898,9 @@ public string m_pchFileName // The name of the primary file } [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 19)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 19)] public struct RemoteStorageEnumerateWorkshopFilesResult_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 19; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 19; public EResult m_eResult; public int m_nResultsReturned; public int m_nTotalResultCount; @@ -1919,9 +1916,9 @@ public struct RemoteStorageEnumerateWorkshopFilesResult_t { // Purpose: The result of GetPublishedItemVoteDetails //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 20)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 20)] public struct RemoteStorageGetPublishedItemVoteDetailsResult_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 20; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 20; public EResult m_eResult; public PublishedFileId_t m_unPublishedFileId; public int m_nVotesFor; @@ -1934,9 +1931,9 @@ public struct RemoteStorageGetPublishedItemVoteDetailsResult_t { // Purpose: User subscribed to a file for the app (from within the app or on the web) //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 21)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 21)] public struct RemoteStoragePublishedFileSubscribed_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 21; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 21; public PublishedFileId_t m_nPublishedFileId; // The published file id public AppId_t m_nAppID; // ID of the app that will consume this file. } @@ -1945,9 +1942,9 @@ public struct RemoteStoragePublishedFileSubscribed_t { // Purpose: User unsubscribed from a file for the app (from within the app or on the web) //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 22)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 22)] public struct RemoteStoragePublishedFileUnsubscribed_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 22; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 22; public PublishedFileId_t m_nPublishedFileId; // The published file id public AppId_t m_nAppID; // ID of the app that will consume this file. } @@ -1956,9 +1953,9 @@ public struct RemoteStoragePublishedFileUnsubscribed_t { // Purpose: Published file that a user owns was deleted (from within the app or the web) //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 23)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 23)] public struct RemoteStoragePublishedFileDeleted_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 23; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 23; public PublishedFileId_t m_nPublishedFileId; // The published file id public AppId_t m_nAppID; // ID of the app that will consume this file. } @@ -1967,9 +1964,9 @@ public struct RemoteStoragePublishedFileDeleted_t { // Purpose: The result of a call to UpdateUserPublishedItemVote() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 24)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 24)] public struct RemoteStorageUpdateUserPublishedItemVoteResult_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 24; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 24; public EResult m_eResult; // The result of the operation. public PublishedFileId_t m_nPublishedFileId; // The published file id } @@ -1978,18 +1975,18 @@ public struct RemoteStorageUpdateUserPublishedItemVoteResult_t { // Purpose: The result of a call to GetUserPublishedItemVoteDetails() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 25)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 25)] public struct RemoteStorageUserVoteDetails_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 25; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 25; public EResult m_eResult; // The result of the operation. public PublishedFileId_t m_nPublishedFileId; // The published file id public EWorkshopVote m_eVote; // what the user voted } [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 26)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 26)] public struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 26; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 26; public EResult m_eResult; // The result of the operation. public int m_nResultsReturned; public int m_nTotalResultCount; @@ -1998,18 +1995,18 @@ public struct RemoteStorageEnumerateUserSharedWorkshopFilesResult_t { } [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 27)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 27)] public struct RemoteStorageSetUserPublishedFileActionResult_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 27; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 27; public EResult m_eResult; // The result of the operation. public PublishedFileId_t m_nPublishedFileId; // The published file id public EWorkshopFileAction m_eAction; // the action that was attempted } [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 28)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 28)] public struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 28; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 28; public EResult m_eResult; // The result of the operation. public EWorkshopFileAction m_eAction; // the action that was filtered on public int m_nResultsReturned; @@ -2024,9 +2021,9 @@ public struct RemoteStorageEnumeratePublishedFilesByUserActionResult_t { // Purpose: Called periodically while a PublishWorkshopFile is in progress //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 29)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 29)] public struct RemoteStoragePublishFileProgress_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 29; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 29; public double m_dPercentFile; [MarshalAs(UnmanagedType.I1)] public bool m_bPreview; @@ -2036,9 +2033,9 @@ public struct RemoteStoragePublishFileProgress_t { // Purpose: Called when the content for a published file is updated //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 30)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 30)] public struct RemoteStoragePublishedFileUpdated_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 30; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 30; public PublishedFileId_t m_nPublishedFileId; // The published file id public AppId_t m_nAppID; // ID of the app that will consume this file. public ulong m_ulUnused; // not used anymore @@ -2048,9 +2045,9 @@ public struct RemoteStoragePublishedFileUpdated_t { // Purpose: Called when a FileWriteAsync completes //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 31)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 31)] public struct RemoteStorageFileWriteAsyncComplete_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 31; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 31; public EResult m_eResult; // result } @@ -2058,9 +2055,9 @@ public struct RemoteStorageFileWriteAsyncComplete_t { // Purpose: Called when a FileReadAsync completes //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 32)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 32)] public struct RemoteStorageFileReadAsyncComplete_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 32; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 32; public SteamAPICall_t m_hFileReadAsync; // call handle of the async read which was made public EResult m_eResult; // result public uint m_nOffset; // offset in the file this read was at @@ -2073,9 +2070,9 @@ public struct RemoteStorageFileReadAsyncComplete_t { // Note: only posted if this happens DURING the local app session //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] - [CallbackIdentity(Constants.k_iClientRemoteStorageCallbacks + 33)] + [CallbackIdentity(Constants.k_iSteamRemoteStorageCallbacks + 33)] public struct RemoteStorageLocalFileChange_t { - public const int k_iCallback = Constants.k_iClientRemoteStorageCallbacks + 33; + public const int k_iCallback = Constants.k_iSteamRemoteStorageCallbacks + 33; } // callbacks @@ -2106,9 +2103,9 @@ public struct ScreenshotRequested_t { // Purpose: Callback for querying UGC //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 1)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 1)] public struct SteamUGCQueryCompleted_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 1; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 1; public UGCQueryHandle_t m_handle; public EResult m_eResult; public uint m_unNumResultsReturned; @@ -2128,9 +2125,9 @@ public struct SteamUGCQueryCompleted_t { // Purpose: Callback for requesting details on one piece of UGC //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 2)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 2)] public struct SteamUGCRequestUGCDetailsResult_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 2; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 2; public SteamUGCDetails_t m_details; [MarshalAs(UnmanagedType.I1)] public bool m_bCachedData; // indicates whether this data was retrieved from the local on-disk cache @@ -2140,9 +2137,9 @@ public struct SteamUGCRequestUGCDetailsResult_t { // Purpose: result for ISteamUGC::CreateItem() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 3)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 3)] public struct CreateItemResult_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 3; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 3; public EResult m_eResult; public PublishedFileId_t m_nPublishedFileId; // new item got this UGC PublishFileID [MarshalAs(UnmanagedType.I1)] @@ -2153,9 +2150,9 @@ public struct CreateItemResult_t { // Purpose: result for ISteamUGC::SubmitItemUpdate() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 4)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 4)] public struct SubmitItemUpdateResult_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 4; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 4; public EResult m_eResult; [MarshalAs(UnmanagedType.I1)] public bool m_bUserNeedsToAcceptWorkshopLegalAgreement; @@ -2166,9 +2163,9 @@ public struct SubmitItemUpdateResult_t { // Purpose: a Workshop item has been installed or updated //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 5)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 5)] public struct ItemInstalled_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 5; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 5; public AppId_t m_unAppID; public PublishedFileId_t m_nPublishedFileId; } @@ -2177,9 +2174,9 @@ public struct ItemInstalled_t { // Purpose: result of DownloadItem(), existing item files can be accessed again //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 6)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 6)] public struct DownloadItemResult_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 6; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 6; public AppId_t m_unAppID; public PublishedFileId_t m_nPublishedFileId; public EResult m_eResult; @@ -2189,9 +2186,9 @@ public struct DownloadItemResult_t { // Purpose: result of AddItemToFavorites() or RemoveItemFromFavorites() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 7)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 7)] public struct UserFavoriteItemsListChanged_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 7; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 7; public PublishedFileId_t m_nPublishedFileId; public EResult m_eResult; [MarshalAs(UnmanagedType.I1)] @@ -2202,9 +2199,9 @@ public struct UserFavoriteItemsListChanged_t { // Purpose: The result of a call to SetUserItemVote() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 8)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 8)] public struct SetUserItemVoteResult_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 8; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 8; public PublishedFileId_t m_nPublishedFileId; public EResult m_eResult; [MarshalAs(UnmanagedType.I1)] @@ -2215,9 +2212,9 @@ public struct SetUserItemVoteResult_t { // Purpose: The result of a call to GetUserItemVote() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 9)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 9)] public struct GetUserItemVoteResult_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 9; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 9; public PublishedFileId_t m_nPublishedFileId; public EResult m_eResult; [MarshalAs(UnmanagedType.I1)] @@ -2232,9 +2229,9 @@ public struct GetUserItemVoteResult_t { // Purpose: The result of a call to StartPlaytimeTracking() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 10)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 10)] public struct StartPlaytimeTrackingResult_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 10; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 10; public EResult m_eResult; } @@ -2242,9 +2239,9 @@ public struct StartPlaytimeTrackingResult_t { // Purpose: The result of a call to StopPlaytimeTracking() //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 11)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 11)] public struct StopPlaytimeTrackingResult_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 11; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 11; public EResult m_eResult; } @@ -2252,9 +2249,9 @@ public struct StopPlaytimeTrackingResult_t { // Purpose: The result of a call to AddDependency //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 12)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 12)] public struct AddUGCDependencyResult_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 12; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 12; public EResult m_eResult; public PublishedFileId_t m_nPublishedFileId; public PublishedFileId_t m_nChildPublishedFileId; @@ -2264,9 +2261,9 @@ public struct AddUGCDependencyResult_t { // Purpose: The result of a call to RemoveDependency //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 13)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 13)] public struct RemoveUGCDependencyResult_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 13; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 13; public EResult m_eResult; public PublishedFileId_t m_nPublishedFileId; public PublishedFileId_t m_nChildPublishedFileId; @@ -2276,9 +2273,9 @@ public struct RemoveUGCDependencyResult_t { // Purpose: The result of a call to AddAppDependency //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 14)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 14)] public struct AddAppDependencyResult_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 14; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 14; public EResult m_eResult; public PublishedFileId_t m_nPublishedFileId; public AppId_t m_nAppID; @@ -2288,9 +2285,9 @@ public struct AddAppDependencyResult_t { // Purpose: The result of a call to RemoveAppDependency //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 15)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 15)] public struct RemoveAppDependencyResult_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 15; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 15; public EResult m_eResult; public PublishedFileId_t m_nPublishedFileId; public AppId_t m_nAppID; @@ -2301,9 +2298,9 @@ public struct RemoveAppDependencyResult_t { // multiple times until all app dependencies have been returned. //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 16)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 16)] public struct GetAppDependenciesResult_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 16; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 16; public EResult m_eResult; public PublishedFileId_t m_nPublishedFileId; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] @@ -2316,9 +2313,9 @@ public struct GetAppDependenciesResult_t { // Purpose: The result of a call to DeleteItem //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 17)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 17)] public struct DeleteItemResult_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 17; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 17; public EResult m_eResult; public PublishedFileId_t m_nPublishedFileId; } @@ -2327,9 +2324,9 @@ public struct DeleteItemResult_t { // Purpose: signal that the list of subscribed items changed //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 18)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 18)] public struct UserSubscribedItemsListChanged_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 18; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 18; public AppId_t m_nAppID; } @@ -2337,9 +2334,9 @@ public struct UserSubscribedItemsListChanged_t { // Purpose: Status of the user's acceptable/rejection of the app's specific Workshop EULA //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientUGCCallbacks + 20)] + [CallbackIdentity(Constants.k_iSteamUGCCallbacks + 20)] public struct WorkshopEULAStatus_t { - public const int k_iCallback = Constants.k_iClientUGCCallbacks + 20; + public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 20; public EResult m_eResult; public AppId_t m_nAppID; public uint m_unVersion; @@ -2800,9 +2797,9 @@ public struct FloatingGamepadTextInputDismissed_t { } [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientVideoCallbacks + 11)] + [CallbackIdentity(Constants.k_iSteamVideoCallbacks + 11)] public struct GetVideoURLResult_t { - public const int k_iCallback = Constants.k_iClientVideoCallbacks + 11; + public const int k_iCallback = Constants.k_iSteamVideoCallbacks + 11; public EResult m_eResult; public AppId_t m_unVideoAppID; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] @@ -2815,13 +2812,52 @@ public string m_rgchURL } [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iClientVideoCallbacks + 24)] + [CallbackIdentity(Constants.k_iSteamVideoCallbacks + 24)] public struct GetOPFSettingsResult_t { - public const int k_iCallback = Constants.k_iClientVideoCallbacks + 24; + public const int k_iCallback = Constants.k_iSteamVideoCallbacks + 24; public EResult m_eResult; public AppId_t m_unVideoAppID; } + /// Callback struct used to notify when a connection has changed state + /// A struct used to describe a "fake IP" we have been assigned to + /// use as an identifier. This callback is posted when + /// ISteamNetworkingSoockets::BeginAsyncRequestFakeIP completes. + /// See also ISteamNetworkingSockets::GetFakeIP + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamNetworkingSocketsCallbacks + 3)] + public struct SteamNetworkingFakeIPResult_t { + public const int k_iCallback = Constants.k_iSteamNetworkingSocketsCallbacks + 3; + + /// Status/result of the allocation request. Possible failure values are: + /// - k_EResultBusy - you called GetFakeIP but the request has not completed. + /// - k_EResultInvalidParam - you called GetFakeIP with an invalid port index + /// - k_EResultLimitExceeded - You asked for too many ports, or made an + /// additional request after one had already succeeded + /// - k_EResultNoMatch - GetFakeIP was called, but no request has been made + /// + /// Note that, with the exception of k_EResultBusy (if you are polling), + /// it is highly recommended to treat all failures as fatal. + public EResult m_eResult; + + /// Local identity of the ISteamNetworkingSockets object that made + /// this request and is assigned the IP. This is needed in the callback + /// in the case where there are multiple ISteamNetworkingSockets objects. + /// (E.g. one for the user, and another for the local gameserver). + public SteamNetworkingIdentity m_identity; + + /// Fake IPv4 IP address that we have been assigned. NOTE: this + /// IP address is not exclusively ours! Steam tries to avoid sharing + /// IP addresses, but this may not always be possible. The IP address + /// may be currently in use by another host, but with different port(s). + /// The exact same IP:port address may have been used previously. + /// Steam tries to avoid reusing ports until they have not been in use for + /// some time, but this may not always be possible. + public uint m_unIP; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_nMaxReturnPorts)] + public ushort[] m_unPorts; + } + } #endif // !DISABLESTEAMWORKS diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs index 3231d35e..70286d89 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs @@ -26,7 +26,7 @@ public static class Constants { public const string STEAMGAMESERVERSTATS_INTERFACE_VERSION = "SteamGameServerStats001"; public const string STEAMHTMLSURFACE_INTERFACE_VERSION = "STEAMHTMLSURFACE_INTERFACE_VERSION_005"; public const string STEAMHTTP_INTERFACE_VERSION = "STEAMHTTP_INTERFACE_VERSION003"; - public const string STEAMINPUT_INTERFACE_VERSION = "SteamInput005"; + public const string STEAMINPUT_INTERFACE_VERSION = "SteamInput006"; public const string STEAMINVENTORY_INTERFACE_VERSION = "STEAMINVENTORY_INTERFACE_V003"; public const string STEAMMATCHMAKING_INTERFACE_VERSION = "SteamMatchMaking009"; public const string STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION = "SteamMatchMakingServers002"; @@ -37,14 +37,14 @@ public static class Constants { public const string STEAMNETWORKING_INTERFACE_VERSION = "SteamNetworking006"; public const string STEAMNETWORKINGMESSAGES_INTERFACE_VERSION = "SteamNetworkingMessages002"; // Silence some warnings - public const string STEAMNETWORKINGSOCKETS_INTERFACE_VERSION = "SteamNetworkingSockets009"; + public const string STEAMNETWORKINGSOCKETS_INTERFACE_VERSION = "SteamNetworkingSockets012"; // Silence some warnings - public const string STEAMNETWORKINGUTILS_INTERFACE_VERSION = "SteamNetworkingUtils003"; + public const string STEAMNETWORKINGUTILS_INTERFACE_VERSION = "SteamNetworkingUtils004"; public const string STEAMPARENTALSETTINGS_INTERFACE_VERSION = "STEAMPARENTALSETTINGS_INTERFACE_VERSION001"; public const string STEAMREMOTEPLAY_INTERFACE_VERSION = "STEAMREMOTEPLAY_INTERFACE_VERSION001"; public const string STEAMREMOTESTORAGE_INTERFACE_VERSION = "STEAMREMOTESTORAGE_INTERFACE_VERSION016"; public const string STEAMSCREENSHOTS_INTERFACE_VERSION = "STEAMSCREENSHOTS_INTERFACE_VERSION003"; - public const string STEAMUGC_INTERFACE_VERSION = "STEAMUGC_INTERFACE_VERSION015"; + public const string STEAMUGC_INTERFACE_VERSION = "STEAMUGC_INTERFACE_VERSION016"; public const string STEAMUSER_INTERFACE_VERSION = "SteamUser021"; public const string STEAMUSERSTATS_INTERFACE_VERSION = "STEAMUSERSTATS_INTERFACE_VERSION012"; public const string STEAMUTILS_INTERFACE_VERSION = "SteamUtils010"; @@ -118,64 +118,38 @@ public static class Constants { public const int k_iSteamMatchmakingCallbacks = 500; public const int k_iSteamContentServerCallbacks = 600; public const int k_iSteamUtilsCallbacks = 700; - public const int k_iClientFriendsCallbacks = 800; - public const int k_iClientUserCallbacks = 900; public const int k_iSteamAppsCallbacks = 1000; public const int k_iSteamUserStatsCallbacks = 1100; public const int k_iSteamNetworkingCallbacks = 1200; public const int k_iSteamNetworkingSocketsCallbacks = 1220; public const int k_iSteamNetworkingMessagesCallbacks = 1250; public const int k_iSteamNetworkingUtilsCallbacks = 1280; - public const int k_iClientRemoteStorageCallbacks = 1300; - public const int k_iClientDepotBuilderCallbacks = 1400; + public const int k_iSteamRemoteStorageCallbacks = 1300; public const int k_iSteamGameServerItemsCallbacks = 1500; - public const int k_iClientUtilsCallbacks = 1600; public const int k_iSteamGameCoordinatorCallbacks = 1700; public const int k_iSteamGameServerStatsCallbacks = 1800; public const int k_iSteam2AsyncCallbacks = 1900; public const int k_iSteamGameStatsCallbacks = 2000; - public const int k_iClientHTTPCallbacks = 2100; - public const int k_iClientScreenshotsCallbacks = 2200; + public const int k_iSteamHTTPCallbacks = 2100; public const int k_iSteamScreenshotsCallbacks = 2300; - public const int k_iClientAudioCallbacks = 2400; - public const int k_iClientUnifiedMessagesCallbacks = 2500; + // NOTE: 2500-2599 are reserved public const int k_iSteamStreamLauncherCallbacks = 2600; - public const int k_iClientControllerCallbacks = 2700; public const int k_iSteamControllerCallbacks = 2800; - public const int k_iClientParentalSettingsCallbacks = 2900; - public const int k_iClientDeviceAuthCallbacks = 3000; - public const int k_iClientNetworkDeviceManagerCallbacks = 3100; - public const int k_iClientMusicCallbacks = 3200; - public const int k_iClientRemoteClientManagerCallbacks = 3300; - public const int k_iClientUGCCallbacks = 3400; + public const int k_iSteamUGCCallbacks = 3400; public const int k_iSteamStreamClientCallbacks = 3500; - public const int k_IClientProductBuilderCallbacks = 3600; - public const int k_iClientShortcutsCallbacks = 3700; - public const int k_iClientRemoteControlManagerCallbacks = 3800; public const int k_iSteamAppListCallbacks = 3900; public const int k_iSteamMusicCallbacks = 4000; public const int k_iSteamMusicRemoteCallbacks = 4100; - public const int k_iClientVRCallbacks = 4200; - public const int k_iClientGameNotificationCallbacks = 4300; public const int k_iSteamGameNotificationCallbacks = 4400; public const int k_iSteamHTMLSurfaceCallbacks = 4500; - public const int k_iClientVideoCallbacks = 4600; - public const int k_iClientInventoryCallbacks = 4700; - public const int k_iClientBluetoothManagerCallbacks = 4800; - public const int k_iClientSharedConnectionCallbacks = 4900; + public const int k_iSteamVideoCallbacks = 4600; + public const int k_iSteamInventoryCallbacks = 4700; public const int k_ISteamParentalSettingsCallbacks = 5000; - public const int k_iClientShaderCallbacks = 5100; public const int k_iSteamGameSearchCallbacks = 5200; public const int k_iSteamPartiesCallbacks = 5300; - public const int k_iClientPartiesCallbacks = 5400; public const int k_iSteamSTARCallbacks = 5500; - public const int k_iClientSTARCallbacks = 5600; public const int k_iSteamRemotePlayCallbacks = 5700; - public const int k_iClientCompatCallbacks = 5800; public const int k_iSteamChatCallbacks = 5900; - public const int k_iClientNetworkingUtilsCallbacks = 6000; - public const int k_iClientSystemManagerCallbacks = 6100; - public const int k_iClientStorageDeviceManagerCallbacks = 6200; /// Pass to SteamGameServer_Init to indicate that the same UDP port will be used for game traffic /// UDP queries for server browser pings and LAN discovery. In this case, Steam will not open up a /// socket to handle server browser queries, and you must use ISteamGameServer::HandleIncomingPacket @@ -186,6 +160,13 @@ public static class Constants { public const int k_unSteamUserDefaultInstance = 1; // fixed instance for all individual users public const int k_cchGameExtraInfoMax = 64; public const int k_nSteamEncryptedAppTicketSymmetricKeyLen = 32; + /// Port number(s) assigned to us. Only the first entries will contain + /// nonzero values. Entries corresponding to ports beyond what was + /// allocated for you will be zero. + /// + /// (NOTE: At the time of this writing, the maximum number of ports you may + /// request is 4.) + public const int k_nMaxReturnPorts = 8; /// Max length of diagnostic error message public const int k_cchMaxSteamNetworkingErrMsg = 1024; /// Max length, in bytes (including null terminator) of the reason string @@ -194,6 +175,14 @@ public static class Constants { /// Max length, in bytes (include null terminator) of debug description /// of a connection. public const int k_cchSteamNetworkingMaxConnectionDescription = 128; + /// Max length of the app's part of the description + public const int k_cchSteamNetworkingMaxConnectionAppName = 32; + public const int k_nSteamNetworkConnectionInfoFlags_Unauthenticated = 1; // We don't have a certificate for the remote host. + public const int k_nSteamNetworkConnectionInfoFlags_Unencrypted = 2; // Information is being sent out over a wire unencrypted (by this library) + public const int k_nSteamNetworkConnectionInfoFlags_LoopbackBuffers = 4; // Internal loopback buffers. Won't be true for localhost. (You can check the address to determine that.) This implies k_nSteamNetworkConnectionInfoFlags_FastLAN + public const int k_nSteamNetworkConnectionInfoFlags_Fast = 8; // The connection is "fast" and "reliable". Either internal/localhost (check the address to find out), or the peer is on the same LAN. (Probably. It's based on the address and the ping time, this is actually hard to determine unambiguously). + public const int k_nSteamNetworkConnectionInfoFlags_Relayed = 16; // The connection is relayed somehow (SDR or TURN). + public const int k_nSteamNetworkConnectionInfoFlags_DualWifi = 32; // We're taking advantage of dual-wifi multi-path // // Network messages // diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs index 008494e8..56cc547b 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs @@ -579,6 +579,81 @@ public enum EInputActionOrigin : int { k_EInputActionOrigin_PS5_Reserved19, k_EInputActionOrigin_PS5_Reserved20, + // Added in SDK 1.53 + k_EInputActionOrigin_SteamDeck_A, + k_EInputActionOrigin_SteamDeck_B, + k_EInputActionOrigin_SteamDeck_X, + k_EInputActionOrigin_SteamDeck_Y, + k_EInputActionOrigin_SteamDeck_L1, + k_EInputActionOrigin_SteamDeck_R1, + k_EInputActionOrigin_SteamDeck_Menu, + k_EInputActionOrigin_SteamDeck_View, + k_EInputActionOrigin_SteamDeck_LeftPad_Touch, + k_EInputActionOrigin_SteamDeck_LeftPad_Swipe, + k_EInputActionOrigin_SteamDeck_LeftPad_Click, + k_EInputActionOrigin_SteamDeck_LeftPad_DPadNorth, + k_EInputActionOrigin_SteamDeck_LeftPad_DPadSouth, + k_EInputActionOrigin_SteamDeck_LeftPad_DPadWest, + k_EInputActionOrigin_SteamDeck_LeftPad_DPadEast, + k_EInputActionOrigin_SteamDeck_RightPad_Touch, + k_EInputActionOrigin_SteamDeck_RightPad_Swipe, + k_EInputActionOrigin_SteamDeck_RightPad_Click, + k_EInputActionOrigin_SteamDeck_RightPad_DPadNorth, + k_EInputActionOrigin_SteamDeck_RightPad_DPadSouth, + k_EInputActionOrigin_SteamDeck_RightPad_DPadWest, + k_EInputActionOrigin_SteamDeck_RightPad_DPadEast, + k_EInputActionOrigin_SteamDeck_L2_SoftPull, + k_EInputActionOrigin_SteamDeck_L2, + k_EInputActionOrigin_SteamDeck_R2_SoftPull, + k_EInputActionOrigin_SteamDeck_R2, + k_EInputActionOrigin_SteamDeck_LeftStick_Move, + k_EInputActionOrigin_SteamDeck_L3, + k_EInputActionOrigin_SteamDeck_LeftStick_DPadNorth, + k_EInputActionOrigin_SteamDeck_LeftStick_DPadSouth, + k_EInputActionOrigin_SteamDeck_LeftStick_DPadWest, + k_EInputActionOrigin_SteamDeck_LeftStick_DPadEast, + k_EInputActionOrigin_SteamDeck_LeftStick_Touch, + k_EInputActionOrigin_SteamDeck_RightStick_Move, + k_EInputActionOrigin_SteamDeck_R3, + k_EInputActionOrigin_SteamDeck_RightStick_DPadNorth, + k_EInputActionOrigin_SteamDeck_RightStick_DPadSouth, + k_EInputActionOrigin_SteamDeck_RightStick_DPadWest, + k_EInputActionOrigin_SteamDeck_RightStick_DPadEast, + k_EInputActionOrigin_SteamDeck_RightStick_Touch, + k_EInputActionOrigin_SteamDeck_L4, + k_EInputActionOrigin_SteamDeck_R4, + k_EInputActionOrigin_SteamDeck_L5, + k_EInputActionOrigin_SteamDeck_R5, + k_EInputActionOrigin_SteamDeck_DPad_Move, + k_EInputActionOrigin_SteamDeck_DPad_North, + k_EInputActionOrigin_SteamDeck_DPad_South, + k_EInputActionOrigin_SteamDeck_DPad_West, + k_EInputActionOrigin_SteamDeck_DPad_East, + k_EInputActionOrigin_SteamDeck_Gyro_Move, + k_EInputActionOrigin_SteamDeck_Gyro_Pitch, + k_EInputActionOrigin_SteamDeck_Gyro_Yaw, + k_EInputActionOrigin_SteamDeck_Gyro_Roll, + k_EInputActionOrigin_SteamDeck_Reserved1, + k_EInputActionOrigin_SteamDeck_Reserved2, + k_EInputActionOrigin_SteamDeck_Reserved3, + k_EInputActionOrigin_SteamDeck_Reserved4, + k_EInputActionOrigin_SteamDeck_Reserved5, + k_EInputActionOrigin_SteamDeck_Reserved6, + k_EInputActionOrigin_SteamDeck_Reserved7, + k_EInputActionOrigin_SteamDeck_Reserved8, + k_EInputActionOrigin_SteamDeck_Reserved9, + k_EInputActionOrigin_SteamDeck_Reserved10, + k_EInputActionOrigin_SteamDeck_Reserved11, + k_EInputActionOrigin_SteamDeck_Reserved12, + k_EInputActionOrigin_SteamDeck_Reserved13, + k_EInputActionOrigin_SteamDeck_Reserved14, + k_EInputActionOrigin_SteamDeck_Reserved15, + k_EInputActionOrigin_SteamDeck_Reserved16, + k_EInputActionOrigin_SteamDeck_Reserved17, + k_EInputActionOrigin_SteamDeck_Reserved18, + k_EInputActionOrigin_SteamDeck_Reserved19, + k_EInputActionOrigin_SteamDeck_Reserved20, + k_EInputActionOrigin_Count, // If Steam has added support for new controllers origins will go here. k_EInputActionOrigin_MaximumPossibleValue = 32767, // Origins are currently a maximum of 16 bits. } @@ -647,6 +722,7 @@ public enum ESteamInputType : int { k_ESteamInputType_MobileTouch, // Steam Link App On-screen Virtual Controller k_ESteamInputType_PS3Controller, // Currently uses PS4 Origins k_ESteamInputType_PS5Controller, // Added in SDK 151 + k_ESteamInputType_SteamDeckController, // Added in SDK 153 k_ESteamInputType_Count, k_ESteamInputType_MaximumPossibleValue = 255, } @@ -670,9 +746,23 @@ public enum ESteamInputLEDFlag : int { // These values are passed into GetGlyphPNGForActionOrigin public enum ESteamInputGlyphSize : int { - k_ESteamInputGlyphSize_Small, - k_ESteamInputGlyphSize_Medium, - k_ESteamInputGlyphSize_Large, + k_ESteamInputGlyphSize_Small, // 32x32 pixels + k_ESteamInputGlyphSize_Medium, // 128x128 pixels + k_ESteamInputGlyphSize_Large, // 256x256 pixels + k_ESteamInputGlyphSize_Count, + } + + public enum ESteamInputGlyphStyle : int { + // Base-styles - cannot mix + ESteamInputGlyphStyle_Knockout = 0x0, // Face buttons will have colored labels/outlines on a knocked out background + // Rest of inputs will have white detail/borders on a knocked out background + ESteamInputGlyphStyle_Light = 0x1, // Black detail/borders on a white background + ESteamInputGlyphStyle_Dark = 0x2, // White detail/borders on a black background + + // Modifiers + // Default ABXY/PS equivalent glyphs have a solid fill w/ color matching the physical buttons on the device + ESteamInputGlyphStyle_NeutralColorABXY = 0x10, // ABXY Buttons will match the base style color instead of their normal associated color + ESteamInputGlyphStyle_SolidABXY = 0x20, // ABXY Buttons will have a solid fill } public enum ESteamInputActionEventType : int { @@ -1336,6 +1426,7 @@ public enum EResult : int { k_EResultSteamRealmMismatch = 120, // The user's realm does not match the realm of the requested resource k_EResultInvalidSignature = 121, // signature check did not match k_EResultParseFailure = 122, // Failed to parse input + k_EResultNoVerifiedPhone = 123, // account does not have a verified phone number } // Error codes for use with the voice functions @@ -1809,6 +1900,17 @@ public enum ESteamNetworkingIdentityType : int { k_ESteamNetworkingIdentityType__Force32bit = 0x7fffffff, } + /// "Fake IPs" are assigned to hosts, to make it easier to interface with + /// older code that assumed all hosts will have an IPv4 address + public enum ESteamNetworkingFakeIPType : int { + k_ESteamNetworkingFakeIPType_Invalid, // Error, argument was not even an IP address, etc. + k_ESteamNetworkingFakeIPType_NotFake, // Argument was a valid IP, but was not from the reserved "fake" range + k_ESteamNetworkingFakeIPType_GlobalIPv4, // Globally unique (for a given app) IPv4 address. Address space managed by Steam + k_ESteamNetworkingFakeIPType_LocalIPv4, // Locally unique IPv4 address. Address space managed by the local process. For internal use only; should not be shared! + + k_ESteamNetworkingFakeIPType__Force32Bit = 0x7fffffff + } + // // Connection status // @@ -2255,19 +2357,6 @@ public enum ESteamNetworkingConfigValue : int { /// the peer to also modify their value in order for encryption to be disabled.) k_ESteamNetworkingConfig_Unencrypted = 34, - /// [global int32] 0 or 1. Some variables are "dev" variables. They are useful - /// for debugging, but should not be adjusted in production. When this flag is false (the default), - /// such variables will not be enumerated by the ISteamnetworkingUtils::GetFirstConfigValue - /// ISteamNetworkingUtils::GetConfigValueInfo functions. The idea here is that you - /// can use those functions to provide a generic mechanism to set any configuration - /// value from a console or configuration file, looking up the variable by name. Depending - /// on your game, modifying other configuration values may also have negative effects, and - /// you may wish to further lock down which variables are allowed to be modified by the user. - /// (Maybe no variables!) Or maybe you use a whitelist or blacklist approach. - /// - /// (This flag is itself a dev variable.) - k_ESteamNetworkingConfig_EnumerateDevVars = 35, - /// [connection int32] Set this to 1 on outbound connections and listen sockets, /// to enable "symmetric connect mode", which is useful in the following /// common peer-to-peer use case: @@ -2369,6 +2458,13 @@ public enum ESteamNetworkingConfigValue : int { /// This value should not be read or written in any other context. k_ESteamNetworkingConfig_LocalVirtualPort = 38, + /// [connection int32] Enable Dual wifi band support for this connection + /// 0 = no, 1 = yes, 2 = simulate it for debugging, even if dual wifi not available + k_ESteamNetworkingConfig_DualWifi_Enable = 39, + + /// [connection int32] True to enable diagnostics reporting through + /// generic platform UI. (Only available on Steam.) + k_ESteamNetworkingConfig_EnableDiagnosticsUI = 46, // // Simulating network conditions @@ -2489,6 +2585,11 @@ public enum ESteamNetworkingConfigValue : int { /// ISteamNetworkingMessages. k_ESteamNetworkingConfig_Callback_CreateConnectionSignaling = 206, + /// [global FnSteamNetworkingFakeIPResult] Callback that's invoked when + /// a FakeIP allocation finishes. See: ISteamNetworkingSockets::BeginAsyncRequestFakeIP, + /// ISteamNetworkingUtils::SetGlobalCallback_FakeIPResult + k_ESteamNetworkingConfig_Callback_FakeIPResult = 207, + // // P2P connection settings // @@ -2586,6 +2687,10 @@ public enum ESteamNetworkingConfigValue : int { k_ESteamNetworkingConfig_LogLevel_P2PRendezvous = 17, // [connection int32] P2P rendezvous messages k_ESteamNetworkingConfig_LogLevel_SDRRelayPings = 18, // [global int32] Ping relays + + // Deleted, do not use + k_ESteamNetworkingConfig_DELETED_EnumerateDevVars = 35, + k_ESteamNetworkingConfigValue__Force32Bit = 0x7fffffff } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs index 58526cf8..cc65ea73 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs @@ -267,15 +267,18 @@ public string m_szConnectionDescription set { InteropHelp.StringToByteArrayUTF8(value, m_szConnectionDescription_, Constants.k_cchSteamNetworkingMaxConnectionDescription); } } + /// Misc flags. Bitmask of k_nSteamNetworkConnectionInfoFlags_Xxxx + public int m_nFlags; + /// Internal stuff, room to change API easily - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 63)] public uint[] reserved; } /// Quick connection state, pared down to something you could call /// more frequently without it being too big of a perf hit. [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - public struct SteamNetworkingQuickConnectionStatus { + public struct SteamNetConnectionRealTimeStatus_t { /// High level state of the connection public ESteamNetworkingConnectionState m_eState; @@ -317,17 +320,16 @@ public struct SteamNetworkingQuickConnectionStatus { /// have to re-transmit. public int m_cbSentUnackedReliable; - /// If you asked us to send a message right now, how long would that message - /// sit in the queue before we actually started putting packets on the wire? - /// (And assuming Nagle does not cause any packets to be delayed.) + /// If you queued a message right now, approximately how long would that message + /// wait in the queue before we actually started putting its data on the wire in + /// a packet? /// - /// In general, data that is sent by the application is limited by the - /// bandwidth of the channel. If you send data faster than this, it must - /// be queued and put on the wire at a metered rate. Even sending a small amount - /// of data (e.g. a few MTU, say ~3k) will require some of the data to be delayed - /// a bit. + /// In general, data that is sent by the application is limited by the bandwidth + /// of the channel. If you send data faster than this, it must be queued and + /// put on the wire at a metered rate. Even sending a small amount of data (e.g. + /// a few MTU, say ~3k) will require some of the data to be delayed a bit. /// - /// In general, the estimated delay will be approximately equal to + /// Ignoring multiple lanes, the estimated delay will be approximately equal to /// /// ( m_cbPendingUnreliable+m_cbPendingReliable ) / m_nSendRateBytesPerSecond /// @@ -336,16 +338,42 @@ public struct SteamNetworkingQuickConnectionStatus { /// and the last packet placed on the wire, and we are exactly up against the send /// rate limit. In that case we might need to wait for one packet's worth of time to /// elapse before we can send again. On the other extreme, the queue might have data - /// in it waiting for Nagle. (This will always be less than one packet, because as soon - /// as we have a complete packet we would send it.) In that case, we might be ready - /// to send data now, and this value will be 0. + /// in it waiting for Nagle. (This will always be less than one packet, because as + /// soon as we have a complete packet we would send it.) In that case, we might be + /// ready to send data now, and this value will be 0. + /// + /// This value is only valid if multiple lanes are not used. If multiple lanes are + /// in use, then the queue time will be different for each lane, and you must use + /// the value in SteamNetConnectionRealTimeLaneStatus_t. + /// + /// Nagle delay is ignored for the purposes of this calculation. public SteamNetworkingMicroseconds m_usecQueueTime; - /// Internal stuff, room to change API easily + // Internal stuff, room to change API easily [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public uint[] reserved; } + /// Quick status of a particular lane + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + public struct SteamNetConnectionRealTimeLaneStatus_t { + // Counters for this particular lane. See the corresponding variables + // in SteamNetConnectionRealTimeStatus_t + public int m_cbPendingUnreliable; + public int m_cbPendingReliable; + public int m_cbSentUnackedReliable; + public int _reservePad1; // Reserved for future use + + /// Lane-specific queue time. This value takes into consideration lane priorities + /// and weights, and how much data is queued in each lane, and attempts to predict + /// how any data currently queued will be sent out. + public SteamNetworkingMicroseconds m_usecQueueTime; + + // Internal stuff, room to change API easily + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)] + public uint[] reserved; + } + // // Ping location / measurement // diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs index a55872e0..3e69c256 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs @@ -218,7 +218,7 @@ public static bool CloseListenSocket(HSteamListenSocket hSocket) { /// / WARNING: Be *very careful* when using the value provided in callbacks structs. /// / Callbacks are queued, and the value that you will receive in your /// / callback is the userdata that was effective at the time the callback - /// / was queued. There are subtle race conditions that can happen if you + /// / was queued. There are subtle race conditions that can hapen if you /// / don't understand this! /// / /// / If any incoming messages for this connection are queued, the userdata @@ -400,11 +400,23 @@ public static bool GetConnectionInfo(HSteamNetConnection hConn, out SteamNetConn ///

/// / Returns a small set of information about the real-time state of the connection - /// / Returns false if the connection handle is invalid, or the connection has ended. + /// / and the queue status of each lane. + /// / + /// / - pStatus may be NULL if the information is not desired. (E.g. you are only interested + /// / in the lane information.) + /// / - On entry, nLanes specifies the length of the pLanes array. This may be 0 + /// / if you do not wish to receive any lane data. It's OK for this to be smaller than + /// / the total number of configured lanes. + /// / - pLanes points to an array that will receive lane-specific info. It can be NULL + /// / if this is not needed. + /// / + /// / Return value: + /// / - k_EResultNoConnection - connection handle is invalid or connection has been closed. + /// / - k_EResultInvalidParam - nLanes is bad /// - public static bool GetQuickConnectionStatus(HSteamNetConnection hConn, out SteamNetworkingQuickConnectionStatus pStats) { + public static EResult GetConnectionRealTimeStatus(HSteamNetConnection hConn, ref SteamNetConnectionRealTimeStatus_t pStatus, int nLanes, ref SteamNetConnectionRealTimeLaneStatus_t pLanes) { InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamNetworkingSockets_GetQuickConnectionStatus(CSteamGameServerAPIContext.GetSteamNetworkingSockets(), hConn, out pStats); + return NativeMethods.ISteamNetworkingSockets_GetConnectionRealTimeStatus(CSteamGameServerAPIContext.GetSteamNetworkingSockets(), hConn, ref pStatus, nLanes, ref pLanes); } ///
@@ -465,6 +477,82 @@ public static bool CreateSocketPair(out HSteamNetConnection pOutConnection1, out } /// + /// / Configure multiple outbound messages streams ("lanes") on a connection, and + /// / control head-of-line blocking between them. Messages within a given lane + /// / are always sent in the order they are queued, but messages from different + /// / lanes may be sent out of order. Each lane has its own message number + /// / sequence. The first message sent on each lane will be assigned the number 1. + /// / + /// / Each lane has a "priority". Lower priority lanes will only be processed + /// / when all higher-priority lanes are empty. The magnitudes of the priority + /// / values are not relevant, only their sort order. Higher numeric values + /// / take priority over lower numeric values. + /// / + /// / Each lane also is assigned a weight, which controls the approximate proportion + /// / of the bandwidth that will be consumed by the lane, relative to other lanes + /// / of the same priority. (This is assuming the lane stays busy. An idle lane + /// / does not build up "credits" to be be spent once a message is queued.) + /// / This value is only meaningful as a proportion, relative to other lanes with + /// / the same priority. For lanes with different priorities, the strict priority + /// / order will prevail, and their weights relative to each other are not relevant. + /// / Thus, if a lane has a unique priority value, the weight value for that lane is + /// / not relevant. + /// / + /// / Example: 3 lanes, with priorities [ 0, 10, 10 ] and weights [ (NA), 20, 5 ]. + /// / Messages sent on the first will always be sent first, before messages in the + /// / other two lanes. Its weight value is irrelevant, since there are no other + /// / lanes with priority=0. The other two lanes will share bandwidth, with the second + /// / and third lanes sharing bandwidth using a ratio of approximately 4:1. + /// / (The weights [ NA, 4, 1 ] would be equivalent.) + /// / + /// / Notes: + /// / - At the time of this writing, some code has performance cost that is linear + /// / in the number of lanes, so keep the number of lanes to an absolute minimum. + /// / 3 or so is fine; >8 is a lot. The max number of lanes on Steam is 255, + /// / which is a very large number and not recommended! If you are compiling this + /// / library from source, see STEAMNETWORKINGSOCKETS_MAX_LANES.) + /// / - Lane priority values may be any int. Their absolute value is not relevant, + /// / only the order matters. + /// / - Weights must be positive, and due to implementation details, they are restricted + /// / to 16-bit values. The absolute magnitudes don't matter, just the proportions. + /// / - Messages sent on a lane index other than 0 have a small overhead on the wire, + /// / so for maximum wire efficiency, lane 0 should be the "most common" lane, regardless + /// / of priorities or weights. + /// / - A connection has a single lane by default. Calling this function with + /// / nNumLanes=1 is legal, but pointless, since the priority and weight values are + /// / irrelevant in that case. + /// / - You may reconfigure connection lanes at any time, however reducing the number of + /// / lanes is not allowed. + /// / - Reconfiguring lanes might restart any bandwidth sharing balancing. Usually you + /// / will call this function once, near the start of the connection, perhaps after + /// / exchanging a few messages. + /// / - To assign all lanes the same priority, you may use pLanePriorities=NULL. + /// / - If you wish all lanes with the same priority to share bandwidth equally (or + /// / if no two lanes have the same priority value, and thus priority values are + /// / irrelevant), you may use pLaneWeights=NULL + /// / - Priorities and weights determine the order that messages are SENT on the wire. + /// / There are NO GUARANTEES on the order that messages are RECEIVED! Due to packet + /// / loss, out-of-order delivery, and subtle details of packet serialization, messages + /// / might still be received slightly out-of-order! The *only* strong guarantee is that + /// / *reliable* messages on the *same lane* will be delivered in the order they are sent. + /// / - Each host configures the lanes for the packets they send; the lanes for the flow + /// / in one direction are completely unrelated to the lanes in the opposite direction. + /// / + /// / Return value: + /// / - k_EResultNoConnection - bad hConn + /// / - k_EResultInvalidParam - Invalid number of lanes, bad weights, or you tried to reduce the number of lanes + /// / - k_EResultInvalidState - Connection is already dead, etc + /// / + /// / See also: + /// / SteamNetworkingMessage_t::m_idxLane + /// + public static EResult ConfigureConnectionLanes(HSteamNetConnection hConn, int nNumLanes, out int pLanePriorities, out ushort pLaneWeights) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamNetworkingSockets_ConfigureConnectionLanes(CSteamGameServerAPIContext.GetSteamNetworkingSockets(), hConn, nNumLanes, out pLanePriorities, out pLaneWeights); + } + + /// + /// Identity and authentication /// / Get the identity assigned to this interface. /// / E.g. on Steam, this is the user's SteamID, or for the gameserver interface, the SteamID assigned /// / to the gameserver. Returns false and sets the result to an invalid identity if we don't know @@ -857,6 +945,22 @@ public static bool SetCertificate(IntPtr pCertificate, int cbCertificate, out St } /// + /// / Reset the identity associated with this instance. + /// / Any open connections are closed. Any previous certificates, etc are discarded. + /// / You can pass a specific identity that you want to use, or you can pass NULL, + /// / in which case the identity will be invalid until you set it using SetCertificate + /// / + /// / NOTE: This function is not actually supported on Steam! It is included + /// / for use on other platforms where the active user can sign out and + /// / a new user can sign in. + /// + public static void ResetIdentity(ref SteamNetworkingIdentity pIdentity) { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamNetworkingSockets_ResetIdentity(CSteamGameServerAPIContext.GetSteamNetworkingSockets(), ref pIdentity); + } + + /// + /// Misc /// / Invoke all callback functions queued for this interface. /// / See k_ESteamNetworkingConfig_Callback_ConnectionStatusChanged, etc /// / @@ -867,6 +971,140 @@ public static void RunCallbacks() { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamNetworkingSockets_RunCallbacks(CSteamGameServerAPIContext.GetSteamNetworkingSockets()); } + + /// + /// "FakeIP" system. + /// A FakeIP is essentially a temporary, arbitrary identifier that + /// happens to be a valid IPv4 address. The purpose of this system is to make it + /// easy to integrate with existing code that identifies hosts using IPv4 addresses. + /// The FakeIP address will never actually be used to send or receive any packets + /// on the Internet, it is strictly an identifier. + /// FakeIP addresses are designed to (hopefully) pass through existing code as + /// transparently as possible, while conflicting with "real" addresses that might + /// be in use on networks (both the Internet and LANs) in the same code as little + /// as possible. At the time this comment is being written, they come from the + /// 169.254.0.0/16 range, and the port number will always be >1024. HOWEVER, + /// this is subject to change! Do not make assumptions about these addresses, + /// or your code might break in the future. In particular, you should use + /// functions such as ISteamNetworkingUtils::IsFakeIP to determine if an IP + /// address is a "fake" one used by this system. + /// / Begin asynchronous process of allocating a fake IPv4 address that other + /// / peers can use to contact us via P2P. IP addresses returned by this + /// / function are globally unique for a given appid. + /// / + /// / nNumPorts is the numbers of ports you wish to reserve. This is useful + /// / for the same reason that listening on multiple UDP ports is useful for + /// / different types of traffic. Because these allocations come from a global + /// / namespace, there is a relatively strict limit on the maximum number of + /// / ports you may request. (At the time of this writing, the limit is 4.) + /// / The Port assignments are *not* guaranteed to have any particular order + /// / or relationship! Do *not* assume they are contiguous, even though that + /// / may often occur in practice. + /// / + /// / Returns false if a request was already in progress, true if a new request + /// / was started. A SteamNetworkingFakeIPResult_t will be posted when the request + /// / completes. + /// / + /// / For gameservers, you *must* call this after initializing the SDK but before + /// / beginning login. Steam needs to know in advance that FakeIP will be used. + /// / Everywhere your public IP would normally appear (such as the server browser) will be + /// / replaced by the FakeIP, and the fake port at index 0. The request is actually queued + /// / until the logon completes, so you must not wait until the allocation completes + /// / before logging in. Except for trivial failures that can be detected locally + /// / (e.g. invalid parameter), a SteamNetworkingFakeIPResult_t callback (whether success or + /// / failure) will not be posted until after we have logged in. Furthermore, it is assumed + /// / that FakeIP allocation is essential for your application to function, and so failure + /// / will not be reported until *several* retries have been attempted. This process may + /// / last several minutes. It is *highly* recommended to treat failure as fatal. + /// / + /// / To communicate using a connection-oriented (TCP-style) API: + /// / - Server creates a listen socket using CreateListenSocketP2PFakeIP + /// / - Client connects using ConnectByIPAddress, passing in the FakeIP address. + /// / - The connection will behave mostly like a P2P connection. The identities + /// / that appear in SteamNetConnectionInfo_t will be the FakeIP identity until + /// / we know the real identity. Then it will be the real identity. If the + /// / SteamNetConnectionInfo_t::m_addrRemote is valid, it will be a real IPv4 + /// / address of a NAT-punched connection. Otherwise, it will not be valid. + /// / + /// / To communicate using an ad-hoc sendto/recv from (UDP-style) API, + /// / use CreateFakeUDPPort. + /// + public static bool BeginAsyncRequestFakeIP(int nNumPorts) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamNetworkingSockets_BeginAsyncRequestFakeIP(CSteamGameServerAPIContext.GetSteamNetworkingSockets(), nNumPorts); + } + + /// + /// / Return info about the FakeIP and port(s) that we have been assigned, + /// / if any. idxFirstPort is currently reserved and must be zero. + /// / Make sure and check SteamNetworkingFakeIPResult_t::m_eResult + /// + public static void GetFakeIP(int idxFirstPort, out SteamNetworkingFakeIPResult_t pInfo) { + InteropHelp.TestIfAvailableGameServer(); + NativeMethods.ISteamNetworkingSockets_GetFakeIP(CSteamGameServerAPIContext.GetSteamNetworkingSockets(), idxFirstPort, out pInfo); + } + + /// + /// / Create a listen socket that will listen for P2P connections sent + /// / to our FakeIP. A peer can initiate connections to this listen + /// / socket by calling ConnectByIPAddress. + /// / + /// / idxFakePort refers to the *index* of the fake port requested, + /// / not the actual port number. For example, pass 0 to refer to the + /// / first port in the reservation. You must call this only after calling + /// / BeginAsyncRequestFakeIP. However, you do not need to wait for the + /// / request to complete before creating the listen socket. + /// + public static HSteamListenSocket CreateListenSocketP2PFakeIP(int idxFakePort, int nOptions, SteamNetworkingConfigValue_t[] pOptions) { + InteropHelp.TestIfAvailableGameServer(); + return (HSteamListenSocket)NativeMethods.ISteamNetworkingSockets_CreateListenSocketP2PFakeIP(CSteamGameServerAPIContext.GetSteamNetworkingSockets(), idxFakePort, nOptions, pOptions); + } + + /// + /// / If the connection was initiated using the "FakeIP" system, then we + /// / we can get an IP address for the remote host. If the remote host had + /// / a global FakeIP at the time the connection was established, this + /// / function will return that global IP. Otherwise, a FakeIP that is + /// / unique locally will be allocated from the local FakeIP address space, + /// / and that will be returned. + /// / + /// / The allocation of local FakeIPs attempts to assign addresses in + /// / a consistent manner. If multiple connections are made to the + /// / same remote host, they *probably* will return the same FakeIP. + /// / However, since the namespace is limited, this cannot be guaranteed. + /// / + /// / On failure, returns: + /// / - k_EResultInvalidParam: invalid connection handle + /// / - k_EResultIPNotFound: This connection wasn't made using FakeIP system + /// + public static EResult GetRemoteFakeIPForConnection(HSteamNetConnection hConn, out SteamNetworkingIPAddr pOutAddr) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamNetworkingSockets_GetRemoteFakeIPForConnection(CSteamGameServerAPIContext.GetSteamNetworkingSockets(), hConn, out pOutAddr); + } + + /// + /// / Get an interface that can be used like a UDP port to send/receive + /// / datagrams to a FakeIP address. This is intended to make it easy + /// / to port existing UDP-based code to take advantage of SDR. + /// / + /// / idxFakeServerPort refers to the *index* of the port allocated using + /// / BeginAsyncRequestFakeIP and is used to create "server" ports. You may + /// / call this before the allocation has completed. However, any attempts + /// / to send packets will fail until the allocation has succeeded. When + /// / the peer receives packets sent from this interface, the from address + /// / of the packet will be the globally-unique FakeIP. If you call this + /// / function multiple times and pass the same (nonnegative) fake port index, + /// / the same object will be returned, and this object is not reference counted. + /// / + /// / To create a "client" port (e.g. the equivalent of an ephemeral UDP port) + /// / pass -1. In this case, a distinct object will be returned for each call. + /// / When the peer receives packets sent from this interface, the peer will + /// / assign a FakeIP from its own locally-controlled namespace. + /// + public static IntPtr CreateFakeUDPPort(int idxFakeServerPort) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamNetworkingSockets_CreateFakeUDPPort(CSteamGameServerAPIContext.GetSteamNetworkingSockets(), idxFakeServerPort); + } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs index 37dcdc1c..6ed572fc 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs @@ -298,6 +298,42 @@ public static void SetDebugOutputFunction(ESteamNetworkingSocketsDebugOutputType NativeMethods.ISteamNetworkingUtils_SetDebugOutputFunction(CSteamGameServerAPIContext.GetSteamNetworkingUtils(), eDetailLevel, pfnFunc); } + /// + /// Fake IP + /// Useful for interfacing with code that assumes peers are identified using an IPv4 address + /// / Return true if an IPv4 address is one that might be used as a "fake" one. + /// / This function is fast; it just does some logical tests on the IP and does + /// / not need to do any lookup operations. + /// + public static bool IsFakeIPv4(uint nIPv4) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamNetworkingUtils_IsFakeIPv4(CSteamGameServerAPIContext.GetSteamNetworkingUtils(), nIPv4); + } + + public static ESteamNetworkingFakeIPType GetIPv4FakeIPType(uint nIPv4) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamNetworkingUtils_GetIPv4FakeIPType(CSteamGameServerAPIContext.GetSteamNetworkingUtils(), nIPv4); + } + + /// + /// / Get the real identity associated with a given FakeIP. + /// / + /// / On failure, returns: + /// / - k_EResultInvalidParam: the IP is not a FakeIP. + /// / - k_EResultNoMatch: we don't recognize that FakeIP and don't know the corresponding identity. + /// / + /// / FakeIP's used by active connections, or the FakeIPs assigned to local identities, + /// / will always work. FakeIPs for recently destroyed connections will continue to + /// / return results for a little while, but not forever. At some point, we will forget + /// / FakeIPs to save space. It's reasonably safe to assume that you can read back the + /// / real identity of a connection very soon after it is destroyed. But do not wait + /// / indefinitely. + /// + public static EResult GetRealIdentityForFakeIP(ref SteamNetworkingIPAddr fakeIP, out SteamNetworkingIdentity pOutRealIdentity) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamNetworkingUtils_GetRealIdentityForFakeIP(CSteamGameServerAPIContext.GetSteamNetworkingUtils(), ref fakeIP, out pOutRealIdentity); + } + /// /// Set and get configuration values, see ESteamNetworkingConfigValue for individual descriptions. /// Shortcuts for common cases. (Implemented as inline functions below) @@ -340,25 +376,28 @@ public static ESteamNetworkingGetConfigValueResult GetConfigValue(ESteamNetworki } /// - /// / Returns info about a configuration value. Returns false if the value does not exist. - /// / pOutNextValue can be used to iterate through all of the known configuration values. - /// / (Use GetFirstConfigValue() to begin the iteration, will be k_ESteamNetworkingConfig_Invalid on the last value) - /// / Any of the output parameters can be NULL if you do not need that information. - /// / - /// / See k_ESteamNetworkingConfig_EnumerateDevVars for some more info about "dev" variables, - /// / which are usually excluded from the set of variables enumerated using this function. + /// / Get info about a configuration value. Returns the name of the value, + /// / or NULL if the value doesn't exist. Other output parameters can be NULL + /// / if you do not need them. /// - public static bool GetConfigValueInfo(ESteamNetworkingConfigValue eValue, IntPtr pOutName, out ESteamNetworkingConfigDataType pOutDataType, out ESteamNetworkingConfigScope pOutScope, out ESteamNetworkingConfigValue pOutNextValue) { + public static string GetConfigValueInfo(ESteamNetworkingConfigValue eValue, out ESteamNetworkingConfigDataType pOutDataType, out ESteamNetworkingConfigScope pOutScope) { InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamNetworkingUtils_GetConfigValueInfo(CSteamGameServerAPIContext.GetSteamNetworkingUtils(), eValue, pOutName, out pOutDataType, out pOutScope, out pOutNextValue); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamNetworkingUtils_GetConfigValueInfo(CSteamGameServerAPIContext.GetSteamNetworkingUtils(), eValue, out pOutDataType, out pOutScope)); } /// - /// / Return the lowest numbered configuration value available in the current environment. + /// / Iterate the list of all configuration values in the current environment that it might + /// / be possible to display or edit using a generic UI. To get the first iterable value, + /// / pass k_ESteamNetworkingConfig_Invalid. Returns k_ESteamNetworkingConfig_Invalid + /// / to signal end of list. + /// / + /// / The bEnumerateDevVars argument can be used to include "dev" vars. These are vars that + /// / are recommended to only be editable in "debug" or "dev" mode and typically should not be + /// / shown in a retail environment where a malicious local user might use this to cheat. /// - public static ESteamNetworkingConfigValue GetFirstConfigValue() { + public static ESteamNetworkingConfigValue IterateGenericEditableConfigValues(ESteamNetworkingConfigValue eCurrent, bool bEnumerateDevVars) { InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamNetworkingUtils_GetFirstConfigValue(CSteamGameServerAPIContext.GetSteamNetworkingUtils()); + return NativeMethods.ISteamNetworkingUtils_IterateGenericEditableConfigValues(CSteamGameServerAPIContext.GetSteamNetworkingUtils(), eCurrent, bEnumerateDevVars); } /// @@ -380,6 +419,11 @@ public static bool SteamNetworkingIPAddr_ParseString(out SteamNetworkingIPAddr p } } + public static ESteamNetworkingFakeIPType SteamNetworkingIPAddr_GetFakeIPType(ref SteamNetworkingIPAddr addr) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamNetworkingUtils_SteamNetworkingIPAddr_GetFakeIPType(CSteamGameServerAPIContext.GetSteamNetworkingUtils(), ref addr); + } + public static void SteamNetworkingIdentity_ToString(ref SteamNetworkingIdentity identity, out string buf, uint cbBuf) { InteropHelp.TestIfAvailableGameServer(); IntPtr buf2 = Marshal.AllocHGlobal((int)cbBuf); diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs index fb315933..b0dabbe0 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs @@ -280,6 +280,16 @@ public static bool SetRankedByTrendDays(UGCQueryHandle_t handle, uint unDays) { return NativeMethods.ISteamUGC_SetRankedByTrendDays(CSteamGameServerAPIContext.GetSteamUGC(), handle, unDays); } + public static bool SetTimeCreatedDateRange(UGCQueryHandle_t handle, uint rtStart, uint rtEnd) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamUGC_SetTimeCreatedDateRange(CSteamGameServerAPIContext.GetSteamUGC(), handle, rtStart, rtEnd); + } + + public static bool SetTimeUpdatedDateRange(UGCQueryHandle_t handle, uint rtStart, uint rtEnd) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamUGC_SetTimeUpdatedDateRange(CSteamGameServerAPIContext.GetSteamUGC(), handle, rtStart, rtEnd); + } + public static bool AddRequiredKeyValueTag(UGCQueryHandle_t handle, string pKey, string pValue) { InteropHelp.TestIfAvailableGameServer(); using (var pKey2 = new InteropHelp.UTF8StringHandle(pKey)) diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs index 031436cc..82823d74 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs @@ -342,6 +342,14 @@ public static void SetGameLauncherMode(bool bLauncherMode) { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamUtils_SetGameLauncherMode(CSteamGameServerAPIContext.GetSteamUtils(), bLauncherMode); } + + /// + /// Dismisses the floating keyboard. + /// + public static bool DismissFloatingGamepadTextInput() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamUtils_DismissFloatingGamepadTextInput(CSteamGameServerAPIContext.GetSteamUtils()); + } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingmessages.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingmessages.cs index 5c8e7bc7..92058215 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingmessages.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingmessages.cs @@ -54,10 +54,12 @@ public static class SteamNetworkingMessages { /// / /// / Returns: /// / - k_EREsultOK on success. - /// / - k_EResultNoConnection will be returned if the session has failed or was closed by the peer, - /// / and k_nSteamNetworkingSend_AutoRestartBrokenSession is not used. (You can use - /// / GetSessionConnectionInfo to get the details.) In order to acknowledge the broken session - /// / and start a new one, you must call CloseSessionWithUser + /// / - k_EResultNoConnection, if the session has failed or was closed by the peer and + /// / k_nSteamNetworkingSend_AutoRestartBrokenSession was not specified. (You can + /// / use GetSessionConnectionInfo to get the details.) In order to acknowledge the + /// / broken session and start a new one, you must call CloseSessionWithUser, or you may + /// / repeat the call with k_nSteamNetworkingSend_AutoRestartBrokenSession. See + /// / k_nSteamNetworkingSend_AutoRestartBrokenSession for more details. /// / - See ISteamNetworkingSockets::SendMessageToConnection for more possible return values /// public static EResult SendMessageToUser(ref SteamNetworkingIdentity identityRemote, IntPtr pubData, uint cubData, int nSendFlags, int nRemoteChannel) { @@ -127,7 +129,7 @@ public static bool CloseChannelWithUser(ref SteamNetworkingIdentity identityRemo /// / so if a connection fails, or SendMessageToUser returns k_EResultNoConnection, you cannot wait /// / indefinitely to obtain the reason for failure. /// - public static ESteamNetworkingConnectionState GetSessionConnectionInfo(ref SteamNetworkingIdentity identityRemote, out SteamNetConnectionInfo_t pConnectionInfo, out SteamNetworkingQuickConnectionStatus pQuickStatus) { + public static ESteamNetworkingConnectionState GetSessionConnectionInfo(ref SteamNetworkingIdentity identityRemote, out SteamNetConnectionInfo_t pConnectionInfo, out SteamNetConnectionRealTimeStatus_t pQuickStatus) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamNetworkingMessages_GetSessionConnectionInfo(CSteamAPIContext.GetSteamNetworkingMessages(), ref identityRemote, out pConnectionInfo, out pQuickStatus); } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs index d9f469ba..53524860 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs @@ -218,7 +218,7 @@ public static bool CloseListenSocket(HSteamListenSocket hSocket) { /// / WARNING: Be *very careful* when using the value provided in callbacks structs. /// / Callbacks are queued, and the value that you will receive in your /// / callback is the userdata that was effective at the time the callback - /// / was queued. There are subtle race conditions that can happen if you + /// / was queued. There are subtle race conditions that can hapen if you /// / don't understand this! /// / /// / If any incoming messages for this connection are queued, the userdata @@ -400,11 +400,23 @@ public static bool GetConnectionInfo(HSteamNetConnection hConn, out SteamNetConn /// /// / Returns a small set of information about the real-time state of the connection - /// / Returns false if the connection handle is invalid, or the connection has ended. + /// / and the queue status of each lane. + /// / + /// / - pStatus may be NULL if the information is not desired. (E.g. you are only interested + /// / in the lane information.) + /// / - On entry, nLanes specifies the length of the pLanes array. This may be 0 + /// / if you do not wish to receive any lane data. It's OK for this to be smaller than + /// / the total number of configured lanes. + /// / - pLanes points to an array that will receive lane-specific info. It can be NULL + /// / if this is not needed. + /// / + /// / Return value: + /// / - k_EResultNoConnection - connection handle is invalid or connection has been closed. + /// / - k_EResultInvalidParam - nLanes is bad /// - public static bool GetQuickConnectionStatus(HSteamNetConnection hConn, out SteamNetworkingQuickConnectionStatus pStats) { + public static EResult GetConnectionRealTimeStatus(HSteamNetConnection hConn, ref SteamNetConnectionRealTimeStatus_t pStatus, int nLanes, ref SteamNetConnectionRealTimeLaneStatus_t pLanes) { InteropHelp.TestIfAvailableClient(); - return NativeMethods.ISteamNetworkingSockets_GetQuickConnectionStatus(CSteamAPIContext.GetSteamNetworkingSockets(), hConn, out pStats); + return NativeMethods.ISteamNetworkingSockets_GetConnectionRealTimeStatus(CSteamAPIContext.GetSteamNetworkingSockets(), hConn, ref pStatus, nLanes, ref pLanes); } /// @@ -465,6 +477,82 @@ public static bool CreateSocketPair(out HSteamNetConnection pOutConnection1, out } /// + /// / Configure multiple outbound messages streams ("lanes") on a connection, and + /// / control head-of-line blocking between them. Messages within a given lane + /// / are always sent in the order they are queued, but messages from different + /// / lanes may be sent out of order. Each lane has its own message number + /// / sequence. The first message sent on each lane will be assigned the number 1. + /// / + /// / Each lane has a "priority". Lower priority lanes will only be processed + /// / when all higher-priority lanes are empty. The magnitudes of the priority + /// / values are not relevant, only their sort order. Higher numeric values + /// / take priority over lower numeric values. + /// / + /// / Each lane also is assigned a weight, which controls the approximate proportion + /// / of the bandwidth that will be consumed by the lane, relative to other lanes + /// / of the same priority. (This is assuming the lane stays busy. An idle lane + /// / does not build up "credits" to be be spent once a message is queued.) + /// / This value is only meaningful as a proportion, relative to other lanes with + /// / the same priority. For lanes with different priorities, the strict priority + /// / order will prevail, and their weights relative to each other are not relevant. + /// / Thus, if a lane has a unique priority value, the weight value for that lane is + /// / not relevant. + /// / + /// / Example: 3 lanes, with priorities [ 0, 10, 10 ] and weights [ (NA), 20, 5 ]. + /// / Messages sent on the first will always be sent first, before messages in the + /// / other two lanes. Its weight value is irrelevant, since there are no other + /// / lanes with priority=0. The other two lanes will share bandwidth, with the second + /// / and third lanes sharing bandwidth using a ratio of approximately 4:1. + /// / (The weights [ NA, 4, 1 ] would be equivalent.) + /// / + /// / Notes: + /// / - At the time of this writing, some code has performance cost that is linear + /// / in the number of lanes, so keep the number of lanes to an absolute minimum. + /// / 3 or so is fine; >8 is a lot. The max number of lanes on Steam is 255, + /// / which is a very large number and not recommended! If you are compiling this + /// / library from source, see STEAMNETWORKINGSOCKETS_MAX_LANES.) + /// / - Lane priority values may be any int. Their absolute value is not relevant, + /// / only the order matters. + /// / - Weights must be positive, and due to implementation details, they are restricted + /// / to 16-bit values. The absolute magnitudes don't matter, just the proportions. + /// / - Messages sent on a lane index other than 0 have a small overhead on the wire, + /// / so for maximum wire efficiency, lane 0 should be the "most common" lane, regardless + /// / of priorities or weights. + /// / - A connection has a single lane by default. Calling this function with + /// / nNumLanes=1 is legal, but pointless, since the priority and weight values are + /// / irrelevant in that case. + /// / - You may reconfigure connection lanes at any time, however reducing the number of + /// / lanes is not allowed. + /// / - Reconfiguring lanes might restart any bandwidth sharing balancing. Usually you + /// / will call this function once, near the start of the connection, perhaps after + /// / exchanging a few messages. + /// / - To assign all lanes the same priority, you may use pLanePriorities=NULL. + /// / - If you wish all lanes with the same priority to share bandwidth equally (or + /// / if no two lanes have the same priority value, and thus priority values are + /// / irrelevant), you may use pLaneWeights=NULL + /// / - Priorities and weights determine the order that messages are SENT on the wire. + /// / There are NO GUARANTEES on the order that messages are RECEIVED! Due to packet + /// / loss, out-of-order delivery, and subtle details of packet serialization, messages + /// / might still be received slightly out-of-order! The *only* strong guarantee is that + /// / *reliable* messages on the *same lane* will be delivered in the order they are sent. + /// / - Each host configures the lanes for the packets they send; the lanes for the flow + /// / in one direction are completely unrelated to the lanes in the opposite direction. + /// / + /// / Return value: + /// / - k_EResultNoConnection - bad hConn + /// / - k_EResultInvalidParam - Invalid number of lanes, bad weights, or you tried to reduce the number of lanes + /// / - k_EResultInvalidState - Connection is already dead, etc + /// / + /// / See also: + /// / SteamNetworkingMessage_t::m_idxLane + /// + public static EResult ConfigureConnectionLanes(HSteamNetConnection hConn, int nNumLanes, out int pLanePriorities, out ushort pLaneWeights) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworkingSockets_ConfigureConnectionLanes(CSteamAPIContext.GetSteamNetworkingSockets(), hConn, nNumLanes, out pLanePriorities, out pLaneWeights); + } + + /// + /// Identity and authentication /// / Get the identity assigned to this interface. /// / E.g. on Steam, this is the user's SteamID, or for the gameserver interface, the SteamID assigned /// / to the gameserver. Returns false and sets the result to an invalid identity if we don't know @@ -857,6 +945,22 @@ public static bool SetCertificate(IntPtr pCertificate, int cbCertificate, out St } /// + /// / Reset the identity associated with this instance. + /// / Any open connections are closed. Any previous certificates, etc are discarded. + /// / You can pass a specific identity that you want to use, or you can pass NULL, + /// / in which case the identity will be invalid until you set it using SetCertificate + /// / + /// / NOTE: This function is not actually supported on Steam! It is included + /// / for use on other platforms where the active user can sign out and + /// / a new user can sign in. + /// + public static void ResetIdentity(ref SteamNetworkingIdentity pIdentity) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamNetworkingSockets_ResetIdentity(CSteamAPIContext.GetSteamNetworkingSockets(), ref pIdentity); + } + + /// + /// Misc /// / Invoke all callback functions queued for this interface. /// / See k_ESteamNetworkingConfig_Callback_ConnectionStatusChanged, etc /// / @@ -867,6 +971,140 @@ public static void RunCallbacks() { InteropHelp.TestIfAvailableClient(); NativeMethods.ISteamNetworkingSockets_RunCallbacks(CSteamAPIContext.GetSteamNetworkingSockets()); } + + /// + /// "FakeIP" system. + /// A FakeIP is essentially a temporary, arbitrary identifier that + /// happens to be a valid IPv4 address. The purpose of this system is to make it + /// easy to integrate with existing code that identifies hosts using IPv4 addresses. + /// The FakeIP address will never actually be used to send or receive any packets + /// on the Internet, it is strictly an identifier. + /// FakeIP addresses are designed to (hopefully) pass through existing code as + /// transparently as possible, while conflicting with "real" addresses that might + /// be in use on networks (both the Internet and LANs) in the same code as little + /// as possible. At the time this comment is being written, they come from the + /// 169.254.0.0/16 range, and the port number will always be >1024. HOWEVER, + /// this is subject to change! Do not make assumptions about these addresses, + /// or your code might break in the future. In particular, you should use + /// functions such as ISteamNetworkingUtils::IsFakeIP to determine if an IP + /// address is a "fake" one used by this system. + /// / Begin asynchronous process of allocating a fake IPv4 address that other + /// / peers can use to contact us via P2P. IP addresses returned by this + /// / function are globally unique for a given appid. + /// / + /// / nNumPorts is the numbers of ports you wish to reserve. This is useful + /// / for the same reason that listening on multiple UDP ports is useful for + /// / different types of traffic. Because these allocations come from a global + /// / namespace, there is a relatively strict limit on the maximum number of + /// / ports you may request. (At the time of this writing, the limit is 4.) + /// / The Port assignments are *not* guaranteed to have any particular order + /// / or relationship! Do *not* assume they are contiguous, even though that + /// / may often occur in practice. + /// / + /// / Returns false if a request was already in progress, true if a new request + /// / was started. A SteamNetworkingFakeIPResult_t will be posted when the request + /// / completes. + /// / + /// / For gameservers, you *must* call this after initializing the SDK but before + /// / beginning login. Steam needs to know in advance that FakeIP will be used. + /// / Everywhere your public IP would normally appear (such as the server browser) will be + /// / replaced by the FakeIP, and the fake port at index 0. The request is actually queued + /// / until the logon completes, so you must not wait until the allocation completes + /// / before logging in. Except for trivial failures that can be detected locally + /// / (e.g. invalid parameter), a SteamNetworkingFakeIPResult_t callback (whether success or + /// / failure) will not be posted until after we have logged in. Furthermore, it is assumed + /// / that FakeIP allocation is essential for your application to function, and so failure + /// / will not be reported until *several* retries have been attempted. This process may + /// / last several minutes. It is *highly* recommended to treat failure as fatal. + /// / + /// / To communicate using a connection-oriented (TCP-style) API: + /// / - Server creates a listen socket using CreateListenSocketP2PFakeIP + /// / - Client connects using ConnectByIPAddress, passing in the FakeIP address. + /// / - The connection will behave mostly like a P2P connection. The identities + /// / that appear in SteamNetConnectionInfo_t will be the FakeIP identity until + /// / we know the real identity. Then it will be the real identity. If the + /// / SteamNetConnectionInfo_t::m_addrRemote is valid, it will be a real IPv4 + /// / address of a NAT-punched connection. Otherwise, it will not be valid. + /// / + /// / To communicate using an ad-hoc sendto/recv from (UDP-style) API, + /// / use CreateFakeUDPPort. + /// + public static bool BeginAsyncRequestFakeIP(int nNumPorts) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworkingSockets_BeginAsyncRequestFakeIP(CSteamAPIContext.GetSteamNetworkingSockets(), nNumPorts); + } + + /// + /// / Return info about the FakeIP and port(s) that we have been assigned, + /// / if any. idxFirstPort is currently reserved and must be zero. + /// / Make sure and check SteamNetworkingFakeIPResult_t::m_eResult + /// + public static void GetFakeIP(int idxFirstPort, out SteamNetworkingFakeIPResult_t pInfo) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamNetworkingSockets_GetFakeIP(CSteamAPIContext.GetSteamNetworkingSockets(), idxFirstPort, out pInfo); + } + + /// + /// / Create a listen socket that will listen for P2P connections sent + /// / to our FakeIP. A peer can initiate connections to this listen + /// / socket by calling ConnectByIPAddress. + /// / + /// / idxFakePort refers to the *index* of the fake port requested, + /// / not the actual port number. For example, pass 0 to refer to the + /// / first port in the reservation. You must call this only after calling + /// / BeginAsyncRequestFakeIP. However, you do not need to wait for the + /// / request to complete before creating the listen socket. + /// + public static HSteamListenSocket CreateListenSocketP2PFakeIP(int idxFakePort, int nOptions, SteamNetworkingConfigValue_t[] pOptions) { + InteropHelp.TestIfAvailableClient(); + return (HSteamListenSocket)NativeMethods.ISteamNetworkingSockets_CreateListenSocketP2PFakeIP(CSteamAPIContext.GetSteamNetworkingSockets(), idxFakePort, nOptions, pOptions); + } + + /// + /// / If the connection was initiated using the "FakeIP" system, then we + /// / we can get an IP address for the remote host. If the remote host had + /// / a global FakeIP at the time the connection was established, this + /// / function will return that global IP. Otherwise, a FakeIP that is + /// / unique locally will be allocated from the local FakeIP address space, + /// / and that will be returned. + /// / + /// / The allocation of local FakeIPs attempts to assign addresses in + /// / a consistent manner. If multiple connections are made to the + /// / same remote host, they *probably* will return the same FakeIP. + /// / However, since the namespace is limited, this cannot be guaranteed. + /// / + /// / On failure, returns: + /// / - k_EResultInvalidParam: invalid connection handle + /// / - k_EResultIPNotFound: This connection wasn't made using FakeIP system + /// + public static EResult GetRemoteFakeIPForConnection(HSteamNetConnection hConn, out SteamNetworkingIPAddr pOutAddr) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworkingSockets_GetRemoteFakeIPForConnection(CSteamAPIContext.GetSteamNetworkingSockets(), hConn, out pOutAddr); + } + + /// + /// / Get an interface that can be used like a UDP port to send/receive + /// / datagrams to a FakeIP address. This is intended to make it easy + /// / to port existing UDP-based code to take advantage of SDR. + /// / + /// / idxFakeServerPort refers to the *index* of the port allocated using + /// / BeginAsyncRequestFakeIP and is used to create "server" ports. You may + /// / call this before the allocation has completed. However, any attempts + /// / to send packets will fail until the allocation has succeeded. When + /// / the peer receives packets sent from this interface, the from address + /// / of the packet will be the globally-unique FakeIP. If you call this + /// / function multiple times and pass the same (nonnegative) fake port index, + /// / the same object will be returned, and this object is not reference counted. + /// / + /// / To create a "client" port (e.g. the equivalent of an ephemeral UDP port) + /// / pass -1. In this case, a distinct object will be returned for each call. + /// / When the peer receives packets sent from this interface, the peer will + /// / assign a FakeIP from its own locally-controlled namespace. + /// + public static IntPtr CreateFakeUDPPort(int idxFakeServerPort) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworkingSockets_CreateFakeUDPPort(CSteamAPIContext.GetSteamNetworkingSockets(), idxFakeServerPort); + } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs index 813c3aeb..916c73eb 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs @@ -298,6 +298,42 @@ public static void SetDebugOutputFunction(ESteamNetworkingSocketsDebugOutputType NativeMethods.ISteamNetworkingUtils_SetDebugOutputFunction(CSteamAPIContext.GetSteamNetworkingUtils(), eDetailLevel, pfnFunc); } + /// + /// Fake IP + /// Useful for interfacing with code that assumes peers are identified using an IPv4 address + /// / Return true if an IPv4 address is one that might be used as a "fake" one. + /// / This function is fast; it just does some logical tests on the IP and does + /// / not need to do any lookup operations. + /// + public static bool IsFakeIPv4(uint nIPv4) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworkingUtils_IsFakeIPv4(CSteamAPIContext.GetSteamNetworkingUtils(), nIPv4); + } + + public static ESteamNetworkingFakeIPType GetIPv4FakeIPType(uint nIPv4) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworkingUtils_GetIPv4FakeIPType(CSteamAPIContext.GetSteamNetworkingUtils(), nIPv4); + } + + /// + /// / Get the real identity associated with a given FakeIP. + /// / + /// / On failure, returns: + /// / - k_EResultInvalidParam: the IP is not a FakeIP. + /// / - k_EResultNoMatch: we don't recognize that FakeIP and don't know the corresponding identity. + /// / + /// / FakeIP's used by active connections, or the FakeIPs assigned to local identities, + /// / will always work. FakeIPs for recently destroyed connections will continue to + /// / return results for a little while, but not forever. At some point, we will forget + /// / FakeIPs to save space. It's reasonably safe to assume that you can read back the + /// / real identity of a connection very soon after it is destroyed. But do not wait + /// / indefinitely. + /// + public static EResult GetRealIdentityForFakeIP(ref SteamNetworkingIPAddr fakeIP, out SteamNetworkingIdentity pOutRealIdentity) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworkingUtils_GetRealIdentityForFakeIP(CSteamAPIContext.GetSteamNetworkingUtils(), ref fakeIP, out pOutRealIdentity); + } + /// /// Set and get configuration values, see ESteamNetworkingConfigValue for individual descriptions. /// Shortcuts for common cases. (Implemented as inline functions below) @@ -340,25 +376,28 @@ public static ESteamNetworkingGetConfigValueResult GetConfigValue(ESteamNetworki } /// - /// / Returns info about a configuration value. Returns false if the value does not exist. - /// / pOutNextValue can be used to iterate through all of the known configuration values. - /// / (Use GetFirstConfigValue() to begin the iteration, will be k_ESteamNetworkingConfig_Invalid on the last value) - /// / Any of the output parameters can be NULL if you do not need that information. - /// / - /// / See k_ESteamNetworkingConfig_EnumerateDevVars for some more info about "dev" variables, - /// / which are usually excluded from the set of variables enumerated using this function. + /// / Get info about a configuration value. Returns the name of the value, + /// / or NULL if the value doesn't exist. Other output parameters can be NULL + /// / if you do not need them. /// - public static bool GetConfigValueInfo(ESteamNetworkingConfigValue eValue, IntPtr pOutName, out ESteamNetworkingConfigDataType pOutDataType, out ESteamNetworkingConfigScope pOutScope, out ESteamNetworkingConfigValue pOutNextValue) { + public static string GetConfigValueInfo(ESteamNetworkingConfigValue eValue, out ESteamNetworkingConfigDataType pOutDataType, out ESteamNetworkingConfigScope pOutScope) { InteropHelp.TestIfAvailableClient(); - return NativeMethods.ISteamNetworkingUtils_GetConfigValueInfo(CSteamAPIContext.GetSteamNetworkingUtils(), eValue, pOutName, out pOutDataType, out pOutScope, out pOutNextValue); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamNetworkingUtils_GetConfigValueInfo(CSteamAPIContext.GetSteamNetworkingUtils(), eValue, out pOutDataType, out pOutScope)); } /// - /// / Return the lowest numbered configuration value available in the current environment. + /// / Iterate the list of all configuration values in the current environment that it might + /// / be possible to display or edit using a generic UI. To get the first iterable value, + /// / pass k_ESteamNetworkingConfig_Invalid. Returns k_ESteamNetworkingConfig_Invalid + /// / to signal end of list. + /// / + /// / The bEnumerateDevVars argument can be used to include "dev" vars. These are vars that + /// / are recommended to only be editable in "debug" or "dev" mode and typically should not be + /// / shown in a retail environment where a malicious local user might use this to cheat. /// - public static ESteamNetworkingConfigValue GetFirstConfigValue() { + public static ESteamNetworkingConfigValue IterateGenericEditableConfigValues(ESteamNetworkingConfigValue eCurrent, bool bEnumerateDevVars) { InteropHelp.TestIfAvailableClient(); - return NativeMethods.ISteamNetworkingUtils_GetFirstConfigValue(CSteamAPIContext.GetSteamNetworkingUtils()); + return NativeMethods.ISteamNetworkingUtils_IterateGenericEditableConfigValues(CSteamAPIContext.GetSteamNetworkingUtils(), eCurrent, bEnumerateDevVars); } /// @@ -380,6 +419,11 @@ public static bool SteamNetworkingIPAddr_ParseString(out SteamNetworkingIPAddr p } } + public static ESteamNetworkingFakeIPType SteamNetworkingIPAddr_GetFakeIPType(ref SteamNetworkingIPAddr addr) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamNetworkingUtils_SteamNetworkingIPAddr_GetFakeIPType(CSteamAPIContext.GetSteamNetworkingUtils(), ref addr); + } + public static void SteamNetworkingIdentity_ToString(ref SteamNetworkingIdentity identity, out string buf, uint cbBuf) { InteropHelp.TestIfAvailableClient(); IntPtr buf2 = Marshal.AllocHGlobal((int)cbBuf); diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs index 43069b33..cd5113a9 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs @@ -280,6 +280,16 @@ public static bool SetRankedByTrendDays(UGCQueryHandle_t handle, uint unDays) { return NativeMethods.ISteamUGC_SetRankedByTrendDays(CSteamAPIContext.GetSteamUGC(), handle, unDays); } + public static bool SetTimeCreatedDateRange(UGCQueryHandle_t handle, uint rtStart, uint rtEnd) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_SetTimeCreatedDateRange(CSteamAPIContext.GetSteamUGC(), handle, rtStart, rtEnd); + } + + public static bool SetTimeUpdatedDateRange(UGCQueryHandle_t handle, uint rtStart, uint rtEnd) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_SetTimeUpdatedDateRange(CSteamAPIContext.GetSteamUGC(), handle, rtStart, rtEnd); + } + public static bool AddRequiredKeyValueTag(UGCQueryHandle_t handle, string pKey, string pValue) { InteropHelp.TestIfAvailableClient(); using (var pKey2 = new InteropHelp.UTF8StringHandle(pKey)) diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs index 11347ed7..b9d612e1 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs @@ -342,6 +342,14 @@ public static void SetGameLauncherMode(bool bLauncherMode) { InteropHelp.TestIfAvailableClient(); NativeMethods.ISteamUtils_SetGameLauncherMode(CSteamAPIContext.GetSteamUtils(), bLauncherMode); } + + /// + /// Dismisses the floating keyboard. + /// + public static bool DismissFloatingGamepadTextInput() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_DismissFloatingGamepadTextInput(CSteamAPIContext.GetSteamUtils()); + } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs index 8716f908..cad4e139 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs @@ -33,7 +33,7 @@ public struct SteamInputActionEvent_t [System.Serializable] [StructLayout(LayoutKind.Sequential)] - public struct SteamInputAnalogActionEvent_t + public struct AnalogAction_t { public InputAnalogActionHandle_t actionHandle; @@ -42,7 +42,7 @@ public struct SteamInputAnalogActionEvent_t [System.Serializable] [StructLayout(LayoutKind.Sequential)] - public struct SteamInputDigitalActionEvent_t + public struct DigitalAction_t { public InputDigitalActionHandle_t actionHandle; @@ -54,10 +54,10 @@ public struct SteamInputDigitalActionEvent_t public struct OptionValue { [FieldOffset(0)] - public SteamInputAnalogActionEvent_t analogAction; + public AnalogAction_t analogAction; [FieldOffset(0)] - public SteamInputDigitalActionEvent_t digitalAction; + public DigitalAction_t digitalAction; } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs index af87dab4..02d12e22 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs @@ -97,6 +97,17 @@ public bool ParseString(string pszStr) { public bool Equals(SteamNetworkingIPAddr x) { return NativeMethods.SteamAPI_SteamNetworkingIPAddr_IsEqualTo(ref this, ref x); } + + /// Classify address as FakeIP. This function never returns + /// k_ESteamNetworkingFakeIPType_Invalid. + public ESteamNetworkingFakeIPType GetFakeIPType() { + return NativeMethods.SteamAPI_SteamNetworkingIPAddr_GetFakeIPType(ref this); + } + + /// Return true if we are a FakeIP + public bool IsFakeIP() { + return GetFakeIPType() > ESteamNetworkingFakeIPType.k_ESteamNetworkingFakeIPType_NotFake; + } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs index c982b0b4..ccc09392 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs @@ -84,9 +84,28 @@ public void SetIPAddr(SteamNetworkingIPAddr addr) { // returns null if we are not an IP address. public SteamNetworkingIPAddr GetIPAddr(){ throw new System.NotImplementedException(); + // TODO: Should SteamNetworkingIPAddr be a class? + // or should this return some kind of pointer instead? //return NativeMethods.SteamAPI_SteamNetworkingIdentity_GetIPAddr(ref this); } + public void SetIPv4Addr(uint nIPv4, ushort nPort) { + NativeMethods.SteamAPI_SteamNetworkingIdentity_SetIPv4Addr(ref this, nIPv4, nPort); + } + + // returns 0 if we are not an IPv4 address. + public uint GetIPv4() { + return NativeMethods.SteamAPI_SteamNetworkingIdentity_GetIPv4(ref this); + } + + public ESteamNetworkingFakeIPType GetFakeIPType() { + return NativeMethods.SteamAPI_SteamNetworkingIdentity_GetFakeIPType(ref this); + } + + public bool IsFakeIP() { + return GetFakeIPType() > ESteamNetworkingFakeIPType.k_ESteamNetworkingFakeIPType_NotFake; + } + // "localhost" is equivalent for many purposes to "anonymous." Our remote // will identify us by the network address we use. // Set to localhost. (We always use IPv6 ::1 for this, not 127.0.0.1) diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs index e348c726..7469c9fd 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs @@ -52,15 +52,17 @@ public struct SteamNetworkingMessage_t /// - You might have closed the connection, so fetching the user data /// would not be possible. /// - /// Not used when sending messages, + /// Not used when sending messages. public long m_nConnUserData; /// Local timestamp when the message was received /// Not used for outbound messages. public SteamNetworkingMicroseconds m_usecTimeReceived; - /// Message number assigned by the sender. - /// This is not used for outbound messages + /// Message number assigned by the sender. This is not used for outbound + /// messages. Note that if multiple lanes are used, each lane has its own + /// message numbers, which are assigned sequentially, so messages from + /// different lanes will share the same numbers. public long m_nMessageNumber; /// Function used to free up m_pData. This mechanism exists so that @@ -92,6 +94,12 @@ public struct SteamNetworkingMessage_t /// Not used for received messages. public long m_nUserData; + /// For outbound messages, which lane to use? See ISteamNetworkingSockets::ConfigureConnectionLanes. + /// For inbound messages, what lane was the message received on? + public ushort m_idxLane; + + public ushort _pad1__; + /// You MUST call this when you're done with the object, /// to free up memory, etc. public void Release() { From 6cbf1c2e0e21b45beb5a4aabec6f0a3122ebd1f5 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 23 Jan 2022 16:58:26 -0800 Subject: [PATCH 20/55] Remove old Steam dlls in the root of the project --- .../Editor/RedistCopy.cs | 59 +++++++++++-------- .../Editor/RedistInstall.cs | 33 ++++++++--- 2 files changed, 60 insertions(+), 32 deletions(-) diff --git a/com.rlabrecque.steamworks.net/Editor/RedistCopy.cs b/com.rlabrecque.steamworks.net/Editor/RedistCopy.cs index 9eebe598..c2eabedf 100644 --- a/com.rlabrecque.steamworks.net/Editor/RedistCopy.cs +++ b/com.rlabrecque.steamworks.net/Editor/RedistCopy.cs @@ -8,6 +8,7 @@ #if !DISABLESTEAMWORKS +using UnityEngine; using UnityEditor; using UnityEditor.Callbacks; using System.IO; @@ -16,32 +17,18 @@ public class RedistCopy { [PostProcessBuild] public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject) { - string baseDir; - - switch(target) - { - case BuildTarget.StandaloneWindows: - { - baseDir = Path.Combine(Path.GetDirectoryName(pathToBuiltProject), Path.GetFileNameWithoutExtension(pathToBuiltProject) + "_Data"); - break; - } - case BuildTarget.StandaloneWindows64: - { - baseDir = Path.Combine(Path.GetDirectoryName(pathToBuiltProject), Path.GetFileNameWithoutExtension(pathToBuiltProject) + "_Data"); - break; - } - case BuildTarget.StandaloneLinux64: - { - baseDir = Path.Combine(Path.GetDirectoryName(pathToBuiltProject), Path.GetFileNameWithoutExtension(pathToBuiltProject) + "_Data"); - break; - } - case BuildTarget.StandaloneOSX: - default: - { - return; - } + // We only want to do this on Steam supported platforms. + if ((target != BuildTarget.StandaloneWindows) && (target != BuildTarget.StandaloneWindows64) && (target != BuildTarget.StandaloneLinux64)) { + return; } + CopyDebugInfo(target, pathToBuiltProject); + + DeleteOldSteamApiDlls(target, pathToBuiltProject); + } + + static void CopyDebugInfo(BuildTarget target, string pathToBuiltProject) { + string baseDir = Path.Combine(Path.GetDirectoryName(pathToBuiltProject), Path.GetFileNameWithoutExtension(pathToBuiltProject) + "_Data"); string pluginsDir = Path.Combine(baseDir, "Plugins"); // Create if it doesn't exist yet @@ -60,6 +47,30 @@ public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProj }; File.WriteAllLines(Path.Combine(pluginsDir, "Steamworks.NET.txt"), DebugInfo); } + + static void DeleteOldSteamApiDlls(BuildTarget target, string pathToBuiltProject) { + string strDllPath = Path.Combine(pathToBuiltProject, "steam_api.dll"); + if (File.Exists(strDllPath)) { + try { + File.Delete(strDllPath); + } + catch (System.Exception e) { + Debug.LogWarning($"[Steamworks.NET] Attempted to delete an old copy of 'steam_api.dll' in the following location: '{strDllPath}', but could not due to the following exception:"); + Debug.LogException(e); + } + } + + string strDll64Path = Path.Combine(pathToBuiltProject, "steam_api64.dll"); + if (File.Exists(strDll64Path)) { + try { + File.Delete(strDll64Path); + } + catch (System.Exception e) { + Debug.LogWarning($"[Steamworks.NET] Attempted to delete an old copy of 'steam_api64.dll' in the following location: '{strDll64Path}', but could not due to the following exception:"); + Debug.LogException(e); + } + } + } } #endif // !DISABLESTEAMWORKS diff --git a/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs b/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs index 997b5ca4..141fd47b 100644 --- a/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs +++ b/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs @@ -11,30 +11,47 @@ public class RedistInstall { static RedistInstall() { WriteSteamAppIdTxtFile(); + + CheckForOldDlls(); } static void WriteSteamAppIdTxtFile() { - string strCWD = Directory.GetCurrentDirectory(); - string strDest = Path.Combine(strCWD, "steam_appid.txt"); + string strCWDPath = Directory.GetCurrentDirectory(); + string strSteamAppIdPath = Path.Combine(strCWDPath, "steam_appid.txt"); - // If the steam_appid.txt file already exists, then we skip this! - if (File.Exists(strDest)) { + // If the steam_appid.txt file already exists, then there's nothing to do. + if (File.Exists(strSteamAppIdPath)) { return; } Debug.Log("[Steamworks.NET] 'steam_appid.txt' is not present in the project root. Writing..."); - try - { - StreamWriter appIdFile = File.CreateText(strDest); + try { + StreamWriter appIdFile = File.CreateText(strSteamAppIdPath); appIdFile.Write("480"); appIdFile.Close(); - Debug.Log("[Steamworks.NET] Successfully copied 'steam_appid.txt' into the project root. Please relaunch Unity."); + Debug.Log("[Steamworks.NET] Successfully copied 'steam_appid.txt' into the project root."); } catch (System.Exception e) { Debug.LogWarning("[Steamworks.NET] Could not copy 'steam_appid.txt' into the project root. Please place 'steam_appid.txt' into the project root manually."); Debug.LogException(e); } } + + static void CheckForOldDlls() { + string strCwdPath = Directory.GetCurrentDirectory(); + + // Unfortunately we can't just delete these outright because Unity loads the dlls in the project root instantly and Windows won't let us delete them because they are in use. + + string strDllPath = Path.Combine(strCwdPath, "steam_api.dll"); + if (File.Exists(strDllPath)) { + Debug.LogError("[Steamworks.NET] Please delete the old version of 'steam_api.dll' in your project root before continuing."); + } + + string strDll64Path = Path.Combine(strCwdPath, "steam_api64.dll"); + if (File.Exists(strDll64Path)) { + Debug.LogError("[Steamworks.NET] Please delete the old version of 'steam_api64.dll' in your project root before continuing."); + } + } } From 21f84271a1997f3a3a18df5394d7aa887794c4da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=E9=B8=BD?= <1207247008@qq.com> Date: Wed, 26 Jan 2022 04:52:57 +0800 Subject: [PATCH 21/55] Added a nuspec for all-in-one package and instructions to pack such package --- Standalone/BuildPackages.targets | 100 +++++++++ Standalone/How to build nuget package.md | 11 + Standalone/Steamworks.NET.Standard.csproj | 247 +++++----------------- Standalone/Steamworks.NET.nuspec | 27 +++ 4 files changed, 195 insertions(+), 190 deletions(-) create mode 100644 Standalone/BuildPackages.targets create mode 100644 Standalone/How to build nuget package.md create mode 100644 Standalone/Steamworks.NET.nuspec diff --git a/Standalone/BuildPackages.targets b/Standalone/BuildPackages.targets new file mode 100644 index 00000000..eba41e75 --- /dev/null +++ b/Standalone/BuildPackages.targets @@ -0,0 +1,100 @@ + + + + + $(ProjectDir)bin\nuget\runtime\ + $(ProjectDir)bin\nugetsyms\runtime\ + lib\$(TargetFramework)\ + + + + + + + + + + + + + + + + + + + + + + Platform=x64;Configuration=Windows;PackagingBuild=true + + + Platform=x64;Configuration=OSX-Linux;PackagingBuild=true + + + Platform=x86;Configuration=Windows;PackagingBuild=true + + + Platform=x86;Configuration=OSX-Linux;PackagingBuild=true + + + + Platform=x64; + Configuration=Windows; + ProduceOnlyReferenceAssembly=true; + OutDir=$(ProjectDir)bin\ref + + + + + + + + + + + + + + true + ref\$(TargetFramework)\ + + + + + + + + $(ProjectDir)bin\nuget\runtime\lib\ + $(ProjectDir)bin\nugetsyms\runtime\lib\ + lib\$(TargetFramework)\ + + + + + + <_PackageFiles Include="@(Asm)" /> + + + + + + + + + + <_TargetPathsToSymbols Include="@(Pdb)" /> + + + + + + + \ No newline at end of file diff --git a/Standalone/How to build nuget package.md b/Standalone/How to build nuget package.md new file mode 100644 index 00000000..75d6f18a --- /dev/null +++ b/Standalone/How to build nuget package.md @@ -0,0 +1,11 @@ +First build binaries of all supported platform. Enter +```bat +dotnet build -t:BatchBuild Steamworks.NET.Standard.sln +``` +to your terminal. + +Then use nuget client with the `.nuspec` to pack an all-in-one package. Enter +```bat +nuget pack Steamworks.NET.nuspec -OutputDirectory bin\ +``` +to your terminal. \ No newline at end of file diff --git a/Standalone/Steamworks.NET.Standard.csproj b/Standalone/Steamworks.NET.Standard.csproj index e1576b78..9a7cce63 100644 --- a/Standalone/Steamworks.NET.Standard.csproj +++ b/Standalone/Steamworks.NET.Standard.csproj @@ -1,200 +1,67 @@  - - netstandard2.1 - Steamworks - Steamworks.NET - x64;x86 - Windows;OSX-Linux - false - git - + + netstandard2.1 + Steamworks + Steamworks.NET + x64;x86 + Windows;OSX-Linux + false + git + - - true - Steamworks.NET.Standard.$(Configuration).$(platform) - rlabrecque - 14.0.1.2 - MIT - https://github.com/rlabrecque/Steamworks.NET - https://github.com/rlabrecque/Steamworks.NET.git - + + false + Steamworks.NET + rlabrecque + + MIT + https://github.com/rlabrecque/Steamworks.NET + https://github.com/rlabrecque/Steamworks.NET.git + README.md + true + snupkg + - - - - - - - - + + bin\x86\Windows\ + TRACE;STEAMWORKS_WIN;STEAMWORKS_X86 + true + true + x86 + prompt + - - - + + bin\x86\OSX-Linux\ + TRACE;STEAMWORKS_LIN_OSX;STEAMWORKS_X86 + true + true + x86 + prompt + - - - + + bin\x64\Windows\ + TRACE;STEAMWORKS_WIN;STEAMWORKS_X64 + true + true + x64 + prompt + - - - - + + bin\x64\OSX-Linux\ + TRACE;STEAMWORKS_LIN_OSX;STEAMWORKS_X64 + true + true + x64 + prompt + - - bin\x86\Windows\ - TRACE;STEAMWORKS_WIN;STEAMWORKS_X86 - true - true - pdbonly - x86 - prompt - MinimumRecommendedRules.ruleset - - - - bin\x86\OSX-Linux\ - TRACE;STEAMWORKS_LIN_OSX;STEAMWORKS_X86 - true - true - pdbonly - x86 - prompt - MinimumRecommendedRules.ruleset - - - - bin\x64\Windows\ - TRACE;STEAMWORKS_WIN;STEAMWORKS_X64 - true - true - pdbonly - x64 - prompt - MinimumRecommendedRules.ruleset - - - - bin\x64\OSX-Linux\ - TRACE;STEAMWORKS_LIN_OSX;STEAMWORKS_X64 - true - true - pdbonly - x64 - prompt - MinimumRecommendedRules.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + diff --git a/Standalone/Steamworks.NET.nuspec b/Standalone/Steamworks.NET.nuspec new file mode 100644 index 00000000..a9af3b5d --- /dev/null +++ b/Standalone/Steamworks.NET.nuspec @@ -0,0 +1,27 @@ + + + + Steamworks.NET + 15.0.1 + Steamworks.NET + rileylabrecque + MIT + https://github.com/rlabrecque/Steamworks.NET + + + + + + + + + + + + + + + + + + \ No newline at end of file From 81acd1cd6586bb858cf559350d8b6680d4efbb3f Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 6 Feb 2022 12:28:26 -0800 Subject: [PATCH 22/55] Remove old Unity Package Manager instructions from the README They are on the Documentation page --- README.md | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 2872409f..645f8ad1 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,9 @@ Niceties and C# Idioms can be easily implemented on top of _Steamworks.NET_. _Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.53a. * Author: [Riley Labrecque](https://github.com/rlabrecque) -* License: [MIT](http://www.opensource.org/licenses/mit-license.php) +* License: [MIT](https://www.opensource.org/licenses/mit-license.php) * [Documentation](https://steamworks.github.io/) -* [Discussion Thread](http://steamcommunity.com/groups/steamworks/discussions/0/666827974770212954/) +* [Discussion Thread](https://steamcommunity.com/groups/steamworks/discussions/0/666827974770212954/) * [Reporting Issues](https://github.com/rlabrecque/Steamworks.NET/issues) Note that only Steamworks.NET specific issues should be reported, general API questions/issues should be asked on the [Steamworks discussion board](http://steamcommunity.com/groups/steamworks/discussions). @@ -18,19 +18,7 @@ _Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Current ## Installation -You can find the installation instructions [here](http://steamworks.github.io/installation/). - -### Unity Package Manager - -Unity Package Manager support is still fairly new but you can use it like so: - -1. Open the Package Manager -2. Click the "+" (plus) button located in the upper left of the window -3. Select the "Add package from git URL..." option -4. Enter the following URL: - `https://github.com/rlabrecque/Steamworks.NET.git?path=/com.rlabrecque.steamworks.net` -5. Click the "Add" button and wait several seconds for the system to download and install the Steamworks.NET package from GitHub. -6. Optionally: Manually download and import the [SteamManager](https://github.com/rlabrecque/Steamworks.NET-SteamManager/blob/master/SteamManager.cs) MonoBehavior which contains a starting point for using the Steamworks API in your project. +You can find the installation instructions [here](https://steamworks.github.io/installation/). ## Samples From 8569c8f763978971081a7f2ad0bbf88c54448d9b Mon Sep 17 00:00:00 2001 From: James McGhee Date: Fri, 19 Nov 2021 13:56:51 +0000 Subject: [PATCH 23/55] Added STEAMWORKS_NET define --- .../Editor/RedistInstall.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs b/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs index 141fd47b..4a7fa0e5 100644 --- a/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs +++ b/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs @@ -5,13 +5,14 @@ using UnityEngine; using UnityEditor; using System.IO; +using System.Collections.Generic; // This copys various files into their required locations when Unity is launched to make installation a breeze. [InitializeOnLoad] public class RedistInstall { static RedistInstall() { WriteSteamAppIdTxtFile(); - + AddDefineSymbols(); CheckForOldDlls(); } @@ -54,4 +55,16 @@ static void CheckForOldDlls() { Debug.LogError("[Steamworks.NET] Please delete the old version of 'steam_api64.dll' in your project root before continuing."); } } + + static void AddDefineSymbols() { + string currentDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup); + HashSet defines = new HashSet(currentDefines.Split(';')) { + "STEAMWORKS_NET" + }; + + string newDefines = string.Join(";", defines); + if (newDefines != currentDefines) { + PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, newDefines); + } + } } From 3e77be7404de82f2bfb75059c2ae89b5ad03b4c2 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 6 Feb 2022 13:26:30 -0800 Subject: [PATCH 24/55] Bump copyright to 2022 --- CodeGen/LICENSE.txt | 2 +- CodeGen/templates/header.txt | 2 +- CodeGen/templates/nativemethods.txt | 2 +- LICENSE.txt | 2 +- Standalone/Properties/AssemblyInfo.cs | 2 +- com.rlabrecque.steamworks.net/Editor/RedistCopy.cs | 2 +- com.rlabrecque.steamworks.net/Editor/RedistInstall.cs | 2 +- com.rlabrecque.steamworks.net/LICENSE.md | 2 +- com.rlabrecque.steamworks.net/Runtime/CallbackDispatcher.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/CallbackIdentity.cs | 2 +- .../Runtime/ISteamMatchmakingResponses.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/InteropHelp.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/Packsize.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/Steam.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/Version.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteamapplist.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteamapps.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteamclient.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteamfriends.cs | 2 +- .../Runtime/autogen/isteamgameserver.cs | 2 +- .../Runtime/autogen/isteamgameserverclient.cs | 2 +- .../Runtime/autogen/isteamgameserverhttp.cs | 2 +- .../Runtime/autogen/isteamgameserverinventory.cs | 2 +- .../Runtime/autogen/isteamgameservernetworking.cs | 2 +- .../Runtime/autogen/isteamgameservernetworkingsockets.cs | 2 +- .../Runtime/autogen/isteamgameservernetworkingutils.cs | 2 +- .../Runtime/autogen/isteamgameserverstats.cs | 2 +- .../Runtime/autogen/isteamgameserverugc.cs | 2 +- .../Runtime/autogen/isteamgameserverutils.cs | 2 +- .../Runtime/autogen/isteamhtmlsurface.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteamhttp.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs | 2 +- .../Runtime/autogen/isteaminventory.cs | 2 +- .../Runtime/autogen/isteammatchmaking.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteammusic.cs | 2 +- .../Runtime/autogen/isteammusicremote.cs | 2 +- .../Runtime/autogen/isteamnetworking.cs | 2 +- .../Runtime/autogen/isteamnetworkingmessages.cs | 2 +- .../Runtime/autogen/isteamnetworkingsockets.cs | 2 +- .../Runtime/autogen/isteamnetworkingutils.cs | 2 +- .../Runtime/autogen/isteamparentalsettings.cs | 2 +- .../Runtime/autogen/isteamremoteplay.cs | 2 +- .../Runtime/autogen/isteamremotestorage.cs | 2 +- .../Runtime/autogen/isteamscreenshots.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteamuser.cs | 2 +- .../Runtime/autogen/isteamuserstats.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs | 2 +- com.rlabrecque.steamworks.net/Runtime/autogen/isteamvideo.cs | 2 +- .../Runtime/types/MatchmakingTypes/gameserveritem_t.cs | 2 +- .../Runtime/types/MatchmakingTypes/servernetadr_t.cs | 2 +- .../Runtime/types/SteamClient/SteamAPIWarningMessageHook_t.cs | 2 +- .../types/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs | 2 +- .../Runtime/types/SteamClientPublic/CGameID.cs | 2 +- .../Runtime/types/SteamClientPublic/CSteamID.cs | 2 +- .../Runtime/types/SteamClientPublic/HAuthTicket.cs | 2 +- .../types/SteamDatagramTickets/SteamDatagramHostedAddress.cs | 2 +- .../types/SteamDatagramTickets/SteamDatagramRelayAuthTicket.cs | 2 +- .../Runtime/types/SteamFriends/FriendsGroupID_t.cs | 2 +- .../Runtime/types/SteamHTMLSurface/HHTMLBrowser.cs | 2 +- .../Runtime/types/SteamHTTP/HTTPCookieContainerHandle.cs | 2 +- .../Runtime/types/SteamHTTP/HTTPRequestHandle.cs | 2 +- .../Runtime/types/SteamInput/InputActionSetHandle_t.cs | 2 +- .../Runtime/types/SteamInput/InputAnalogActionHandle_t.cs | 2 +- .../Runtime/types/SteamInput/InputDigitalActionHandle_t.cs | 2 +- .../Runtime/types/SteamInput/InputHandle_t.cs | 2 +- .../types/SteamInput/SteamInputActionEventCallbackPointer.cs | 2 +- .../Runtime/types/SteamInput/SteamInputActionEvent_t.cs | 2 +- .../Runtime/types/SteamInventory/SteamInventoryResult_t.cs | 2 +- .../types/SteamInventory/SteamInventoryUpdateHandle_t.cs | 2 +- .../Runtime/types/SteamInventory/SteamItemDef_t.cs | 2 +- .../Runtime/types/SteamInventory/SteamItemInstanceID_t.cs | 2 +- .../Runtime/types/SteamMatchmaking/HServerListRequest.cs | 2 +- .../Runtime/types/SteamMatchmaking/HServerQuery.cs | 2 +- .../Runtime/types/SteamNetworking/SNetListenSocket_t.cs | 2 +- .../Runtime/types/SteamNetworking/SNetSocket_t.cs | 2 +- .../ISteamNetworkingConnectionSignaling.cs | 2 +- .../ISteamNetworkingSignalingRecvContext.cs | 2 +- .../SteamNetworkingTypes/FSteamNetworkingSocketsDebugOutput.cs | 2 +- .../Runtime/types/SteamNetworkingTypes/HSteamListenSocket.cs | 2 +- .../Runtime/types/SteamNetworkingTypes/HSteamNetConnection.cs | 2 +- .../Runtime/types/SteamNetworkingTypes/HSteamNetPollGroup.cs | 2 +- .../types/SteamNetworkingTypes/SteamNetworkingConfigValue_t.cs | 2 +- .../Runtime/types/SteamNetworkingTypes/SteamNetworkingErrMsg.cs | 2 +- .../Runtime/types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs | 2 +- .../types/SteamNetworkingTypes/SteamNetworkingIdentity.cs | 2 +- .../types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs | 2 +- .../types/SteamNetworkingTypes/SteamNetworkingMicroseconds.cs | 2 +- .../Runtime/types/SteamNetworkingTypes/SteamNetworkingPOPID.cs | 2 +- .../Runtime/types/SteamRemotePlay/RemotePlaySessionID_t.cs | 2 +- .../Runtime/types/SteamRemoteStorage/PublishedFileId_t.cs | 2 +- .../types/SteamRemoteStorage/PublishedFileUpdateHandle_t.cs | 2 +- .../types/SteamRemoteStorage/UGCFileWriteStreamHandle_t.cs | 2 +- .../Runtime/types/SteamRemoteStorage/UGCHandle_t.cs | 2 +- .../Runtime/types/SteamScreenshots/ScreenshotHandle.cs | 2 +- .../Runtime/types/SteamTypes/AccountID_t.cs | 2 +- .../Runtime/types/SteamTypes/AppId_t.cs | 2 +- .../Runtime/types/SteamTypes/DepotId_t.cs | 2 +- .../Runtime/types/SteamTypes/PartyBeaconID_t.cs | 2 +- .../Runtime/types/SteamTypes/RTime32.cs | 2 +- .../Runtime/types/SteamTypes/SteamAPICall_t.cs | 2 +- .../Runtime/types/SteamTypes/SteamIPAddress_t.cs | 2 +- .../Runtime/types/SteamUGC/UGCQueryHandle_t.cs | 2 +- .../Runtime/types/SteamUGC/UGCUpdateHandle_t.cs | 2 +- .../Runtime/types/SteamUserStats/SteamLeaderboardEntries_t.cs | 2 +- .../Runtime/types/SteamUserStats/SteamLeaderboard_t.cs | 2 +- .../Runtime/types/Steam_api_common/HSteamPipe.cs | 2 +- .../Runtime/types/Steam_api_common/HSteamUser.cs | 2 +- 113 files changed, 113 insertions(+), 113 deletions(-) diff --git a/CodeGen/LICENSE.txt b/CodeGen/LICENSE.txt index d6384bce..53877e3b 100644 --- a/CodeGen/LICENSE.txt +++ b/CodeGen/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2013-2021 Riley Labrecque +Copyright (c) 2013-2022 Riley Labrecque Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/CodeGen/templates/header.txt b/CodeGen/templates/header.txt index 12c4a136..22fe857f 100644 --- a/CodeGen/templates/header.txt +++ b/CodeGen/templates/header.txt @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/CodeGen/templates/nativemethods.txt b/CodeGen/templates/nativemethods.txt index ab2e8884..ff51339f 100644 --- a/CodeGen/templates/nativemethods.txt +++ b/CodeGen/templates/nativemethods.txt @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/LICENSE.txt b/LICENSE.txt index d6384bce..53877e3b 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2013-2021 Riley Labrecque +Copyright (c) 2013-2022 Riley Labrecque Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Standalone/Properties/AssemblyInfo.cs b/Standalone/Properties/AssemblyInfo.cs index 1c4859f1..f1b39d9c 100644 --- a/Standalone/Properties/AssemblyInfo.cs +++ b/Standalone/Properties/AssemblyInfo.cs @@ -9,7 +9,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Riley Labrecque")] [assembly: AssemblyProduct("Steamworks.NET")] -[assembly: AssemblyCopyright("Copyright © Riley Labrecque 2013-2021")] +[assembly: AssemblyCopyright("Copyright © Riley Labrecque 2013-2022")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] diff --git a/com.rlabrecque.steamworks.net/Editor/RedistCopy.cs b/com.rlabrecque.steamworks.net/Editor/RedistCopy.cs index c2eabedf..7408b930 100644 --- a/com.rlabrecque.steamworks.net/Editor/RedistCopy.cs +++ b/com.rlabrecque.steamworks.net/Editor/RedistCopy.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. #if !(UNITY_STANDALONE_WIN || UNITY_STANDALONE_LINUX || UNITY_STANDALONE_OSX || STEAMWORKS_WIN || STEAMWORKS_LIN_OSX) diff --git a/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs b/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs index 4a7fa0e5..2354bb9e 100644 --- a/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs +++ b/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. using UnityEngine; diff --git a/com.rlabrecque.steamworks.net/LICENSE.md b/com.rlabrecque.steamworks.net/LICENSE.md index 615b5cf1..65b3d3a7 100644 --- a/com.rlabrecque.steamworks.net/LICENSE.md +++ b/com.rlabrecque.steamworks.net/LICENSE.md @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2013-2021 Riley Labrecque +Copyright (c) 2013-2022 Riley Labrecque Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/com.rlabrecque.steamworks.net/Runtime/CallbackDispatcher.cs b/com.rlabrecque.steamworks.net/Runtime/CallbackDispatcher.cs index b44d9100..f27be5ea 100644 --- a/com.rlabrecque.steamworks.net/Runtime/CallbackDispatcher.cs +++ b/com.rlabrecque.steamworks.net/Runtime/CallbackDispatcher.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/CallbackIdentity.cs b/com.rlabrecque.steamworks.net/Runtime/CallbackIdentity.cs index 30e47146..0862d0a7 100644 --- a/com.rlabrecque.steamworks.net/Runtime/CallbackIdentity.cs +++ b/com.rlabrecque.steamworks.net/Runtime/CallbackIdentity.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/ISteamMatchmakingResponses.cs b/com.rlabrecque.steamworks.net/Runtime/ISteamMatchmakingResponses.cs index d1b6d57b..63b5b2b4 100644 --- a/com.rlabrecque.steamworks.net/Runtime/ISteamMatchmakingResponses.cs +++ b/com.rlabrecque.steamworks.net/Runtime/ISteamMatchmakingResponses.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/InteropHelp.cs b/com.rlabrecque.steamworks.net/Runtime/InteropHelp.cs index 8a4ef0d3..a9ae57a1 100644 --- a/com.rlabrecque.steamworks.net/Runtime/InteropHelp.cs +++ b/com.rlabrecque.steamworks.net/Runtime/InteropHelp.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/Packsize.cs b/com.rlabrecque.steamworks.net/Runtime/Packsize.cs index 5340069e..c8b0865e 100644 --- a/com.rlabrecque.steamworks.net/Runtime/Packsize.cs +++ b/com.rlabrecque.steamworks.net/Runtime/Packsize.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/Steam.cs b/com.rlabrecque.steamworks.net/Runtime/Steam.cs index 0fae754e..51412337 100644 --- a/com.rlabrecque.steamworks.net/Runtime/Steam.cs +++ b/com.rlabrecque.steamworks.net/Runtime/Steam.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/Version.cs b/com.rlabrecque.steamworks.net/Runtime/Version.cs index a1e43b87..eb774cc8 100644 --- a/com.rlabrecque.steamworks.net/Runtime/Version.cs +++ b/com.rlabrecque.steamworks.net/Runtime/Version.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs index 38376738..488be747 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs index 0788e4fd..9f7d2aee 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs index 70286d89..dbb744d0 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs index 56cc547b..c7136565 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs index cc65ea73..e9e03808 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapplist.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapplist.cs index 922406d3..9bff5de6 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapplist.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapplist.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapps.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapps.cs index b7f61bbb..3b131ca5 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapps.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapps.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamclient.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamclient.cs index f5ab6eff..c0eddacf 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamclient.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamclient.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamfriends.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamfriends.cs index 69f179a8..aec5c6e2 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamfriends.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamfriends.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserver.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserver.cs index 61aeb9e4..3dcce142 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserver.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserver.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverclient.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverclient.cs index 738cbdbf..0c41cff7 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverclient.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverclient.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverhttp.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverhttp.cs index 94fc1b50..010fde26 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverhttp.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverhttp.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverinventory.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverinventory.cs index f74fb329..608216bd 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverinventory.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverinventory.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworking.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworking.cs index 64c8d7c8..5a8f3410 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworking.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworking.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs index 3e69c256..dacad4a4 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs @@ -1,6 +1,6 @@ #define STEAMNETWORKINGSOCKETS_ENABLE_SDR // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs index 6ed572fc..0ec90d00 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs @@ -1,6 +1,6 @@ #define STEAMNETWORKINGSOCKETS_ENABLE_SDR // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverstats.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverstats.cs index 0f7944a9..9899f720 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverstats.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverstats.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs index b0dabbe0..3022003a 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs index 82823d74..bfd7e52a 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamhtmlsurface.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamhtmlsurface.cs index 65b68100..cc564262 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamhtmlsurface.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamhtmlsurface.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamhttp.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamhttp.cs index e7ff7d52..9425dec0 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamhttp.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamhttp.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs index 3680b9dd..bccdca99 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminventory.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminventory.cs index a50acced..a86d6c80 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminventory.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminventory.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteammatchmaking.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteammatchmaking.cs index caa424b3..5945345f 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteammatchmaking.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteammatchmaking.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteammusic.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteammusic.cs index 762e45c9..7568da40 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteammusic.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteammusic.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteammusicremote.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteammusicremote.cs index b8068435..a56ac7ce 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteammusicremote.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteammusicremote.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworking.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworking.cs index 60e2c769..afed66ec 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworking.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworking.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingmessages.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingmessages.cs index 92058215..db8e2c1f 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingmessages.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingmessages.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs index 53524860..66bd295a 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs @@ -1,6 +1,6 @@ #define STEAMNETWORKINGSOCKETS_ENABLE_SDR // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs index 916c73eb..cb069d79 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs @@ -1,6 +1,6 @@ #define STEAMNETWORKINGSOCKETS_ENABLE_SDR // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamparentalsettings.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamparentalsettings.cs index f19e6768..b17ad7e9 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamparentalsettings.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamparentalsettings.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremoteplay.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremoteplay.cs index fe49627c..63509036 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremoteplay.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremoteplay.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremotestorage.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremotestorage.cs index de90c78f..7bc699b3 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremotestorage.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremotestorage.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamscreenshots.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamscreenshots.cs index d4f8c085..4c123ecc 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamscreenshots.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamscreenshots.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs index cd5113a9..ea3bb876 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuser.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuser.cs index 12e20cbb..99a988d5 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuser.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuser.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuserstats.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuserstats.cs index ef4f648f..97bf38aa 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuserstats.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuserstats.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs index b9d612e1..1952b101 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamvideo.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamvideo.cs index df6fed60..451a6c1f 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamvideo.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamvideo.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/MatchmakingTypes/gameserveritem_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/MatchmakingTypes/gameserveritem_t.cs index cb6d49c7..b9b2e402 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/MatchmakingTypes/gameserveritem_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/MatchmakingTypes/gameserveritem_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/MatchmakingTypes/servernetadr_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/MatchmakingTypes/servernetadr_t.cs index 7d0705ae..66f555dc 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/MatchmakingTypes/servernetadr_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/MatchmakingTypes/servernetadr_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPIWarningMessageHook_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPIWarningMessageHook_t.cs index 63303997..832d1a28 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPIWarningMessageHook_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPIWarningMessageHook_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs index 2660c453..a7ed9152 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamClient/SteamAPI_CheckCallbackRegistered_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/CGameID.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/CGameID.cs index 5cd42697..689a0e22 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/CGameID.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/CGameID.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/CSteamID.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/CSteamID.cs index a8e4db35..3e4a1b16 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/CSteamID.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/CSteamID.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/HAuthTicket.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/HAuthTicket.cs index 08454d76..f3955896 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/HAuthTicket.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamClientPublic/HAuthTicket.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamDatagramTickets/SteamDatagramHostedAddress.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamDatagramTickets/SteamDatagramHostedAddress.cs index 04031d14..95bebfed 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamDatagramTickets/SteamDatagramHostedAddress.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamDatagramTickets/SteamDatagramHostedAddress.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamDatagramTickets/SteamDatagramRelayAuthTicket.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamDatagramTickets/SteamDatagramRelayAuthTicket.cs index 89d155e4..88b88850 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamDatagramTickets/SteamDatagramRelayAuthTicket.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamDatagramTickets/SteamDatagramRelayAuthTicket.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamFriends/FriendsGroupID_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamFriends/FriendsGroupID_t.cs index e50e4687..b9b94f14 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamFriends/FriendsGroupID_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamFriends/FriendsGroupID_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamHTMLSurface/HHTMLBrowser.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamHTMLSurface/HHTMLBrowser.cs index ae4a1fae..a016a459 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamHTMLSurface/HHTMLBrowser.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamHTMLSurface/HHTMLBrowser.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamHTTP/HTTPCookieContainerHandle.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamHTTP/HTTPCookieContainerHandle.cs index ffa82cd3..34fa5af7 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamHTTP/HTTPCookieContainerHandle.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamHTTP/HTTPCookieContainerHandle.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamHTTP/HTTPRequestHandle.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamHTTP/HTTPRequestHandle.cs index ba5ca7cd..eddd6a8e 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamHTTP/HTTPRequestHandle.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamHTTP/HTTPRequestHandle.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputActionSetHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputActionSetHandle_t.cs index 02837ca3..c8836ed7 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputActionSetHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputActionSetHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputAnalogActionHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputAnalogActionHandle_t.cs index 3b2f7c69..7b8148c5 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputAnalogActionHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputAnalogActionHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputDigitalActionHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputDigitalActionHandle_t.cs index b2b30bfc..28eb6303 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputDigitalActionHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputDigitalActionHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputHandle_t.cs index 13387b98..c6866340 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/InputHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEventCallbackPointer.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEventCallbackPointer.cs index 82abd1d5..78f3c7b8 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEventCallbackPointer.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEventCallbackPointer.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs index cad4e139..ceeaf312 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInput/SteamInputActionEvent_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamInventoryResult_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamInventoryResult_t.cs index 44536cf7..308a8a98 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamInventoryResult_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamInventoryResult_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamInventoryUpdateHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamInventoryUpdateHandle_t.cs index 769ffd01..25b5719d 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamInventoryUpdateHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamInventoryUpdateHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamItemDef_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamItemDef_t.cs index 5027509b..974c2fcc 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamItemDef_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamItemDef_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamItemInstanceID_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamItemInstanceID_t.cs index c0c0f3ed..339d8922 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamItemInstanceID_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamInventory/SteamItemInstanceID_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamMatchmaking/HServerListRequest.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamMatchmaking/HServerListRequest.cs index 06040e53..60bfa9e6 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamMatchmaking/HServerListRequest.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamMatchmaking/HServerListRequest.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamMatchmaking/HServerQuery.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamMatchmaking/HServerQuery.cs index ac02ed0e..6d92d230 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamMatchmaking/HServerQuery.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamMatchmaking/HServerQuery.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworking/SNetListenSocket_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworking/SNetListenSocket_t.cs index 88619dab..13d96683 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworking/SNetListenSocket_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworking/SNetListenSocket_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworking/SNetSocket_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworking/SNetSocket_t.cs index 37da3bbd..52f6ac8e 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworking/SNetSocket_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworking/SNetSocket_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingSockets/ISteamNetworkingConnectionSignaling.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingSockets/ISteamNetworkingConnectionSignaling.cs index 2e14bb4f..4dafa4de 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingSockets/ISteamNetworkingConnectionSignaling.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingSockets/ISteamNetworkingConnectionSignaling.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingSockets/ISteamNetworkingSignalingRecvContext.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingSockets/ISteamNetworkingSignalingRecvContext.cs index 6c6d622e..18511a02 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingSockets/ISteamNetworkingSignalingRecvContext.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingSockets/ISteamNetworkingSignalingRecvContext.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/FSteamNetworkingSocketsDebugOutput.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/FSteamNetworkingSocketsDebugOutput.cs index 052f4711..81e06049 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/FSteamNetworkingSocketsDebugOutput.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/FSteamNetworkingSocketsDebugOutput.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamListenSocket.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamListenSocket.cs index 5ba1584e..9d22029c 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamListenSocket.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamListenSocket.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamNetConnection.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamNetConnection.cs index 0c979cca..02e0ab51 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamNetConnection.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamNetConnection.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamNetPollGroup.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamNetPollGroup.cs index b72c12af..662389f2 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamNetPollGroup.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/HSteamNetPollGroup.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingConfigValue_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingConfigValue_t.cs index 98b124d5..2222a269 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingConfigValue_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingConfigValue_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingErrMsg.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingErrMsg.cs index 13796817..0d58dd19 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingErrMsg.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingErrMsg.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs index 02d12e22..fe44c8d0 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIPAddr.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs index ccc09392..e27e7fd5 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs index 7469c9fd..ca2dc3b5 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMessage_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMicroseconds.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMicroseconds.cs index a7a1a2c5..f3297844 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMicroseconds.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingMicroseconds.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingPOPID.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingPOPID.cs index ec30439e..29eb4d22 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingPOPID.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingPOPID.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemotePlay/RemotePlaySessionID_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemotePlay/RemotePlaySessionID_t.cs index aa671f0c..1718da6e 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemotePlay/RemotePlaySessionID_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemotePlay/RemotePlaySessionID_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/PublishedFileId_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/PublishedFileId_t.cs index 561ec92f..940c0432 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/PublishedFileId_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/PublishedFileId_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/PublishedFileUpdateHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/PublishedFileUpdateHandle_t.cs index 4274aaf0..1c354467 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/PublishedFileUpdateHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/PublishedFileUpdateHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/UGCFileWriteStreamHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/UGCFileWriteStreamHandle_t.cs index 56a83a6b..9318169a 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/UGCFileWriteStreamHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/UGCFileWriteStreamHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/UGCHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/UGCHandle_t.cs index 2c6bab58..7690ee36 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/UGCHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamRemoteStorage/UGCHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamScreenshots/ScreenshotHandle.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamScreenshots/ScreenshotHandle.cs index 297f44d0..4ec154cd 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamScreenshots/ScreenshotHandle.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamScreenshots/ScreenshotHandle.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AccountID_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AccountID_t.cs index 9d904809..0392ac02 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AccountID_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AccountID_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AppId_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AppId_t.cs index defb9c11..83563078 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AppId_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AppId_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/DepotId_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/DepotId_t.cs index bf4a6c33..9bab73f8 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/DepotId_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/DepotId_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/PartyBeaconID_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/PartyBeaconID_t.cs index c13063c6..b32e45fb 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/PartyBeaconID_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/PartyBeaconID_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/RTime32.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/RTime32.cs index 44881226..249dda2c 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/RTime32.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/RTime32.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SteamAPICall_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SteamAPICall_t.cs index 1888300d..c104f14c 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SteamAPICall_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SteamAPICall_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SteamIPAddress_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SteamIPAddress_t.cs index 984cdcaa..a815682c 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SteamIPAddress_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/SteamIPAddress_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamUGC/UGCQueryHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamUGC/UGCQueryHandle_t.cs index b1682965..334d2e8d 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamUGC/UGCQueryHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamUGC/UGCQueryHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamUGC/UGCUpdateHandle_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamUGC/UGCUpdateHandle_t.cs index 2fb85ff0..d56be973 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamUGC/UGCUpdateHandle_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamUGC/UGCUpdateHandle_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamUserStats/SteamLeaderboardEntries_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamUserStats/SteamLeaderboardEntries_t.cs index b2539a18..17080e4a 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamUserStats/SteamLeaderboardEntries_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamUserStats/SteamLeaderboardEntries_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamUserStats/SteamLeaderboard_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamUserStats/SteamLeaderboard_t.cs index 232c1577..a68367ca 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamUserStats/SteamLeaderboard_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamUserStats/SteamLeaderboard_t.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/Steam_api_common/HSteamPipe.cs b/com.rlabrecque.steamworks.net/Runtime/types/Steam_api_common/HSteamPipe.cs index 2d24a8ca..ad4b7d28 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/Steam_api_common/HSteamPipe.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/Steam_api_common/HSteamPipe.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. diff --git a/com.rlabrecque.steamworks.net/Runtime/types/Steam_api_common/HSteamUser.cs b/com.rlabrecque.steamworks.net/Runtime/types/Steam_api_common/HSteamUser.cs index 4e894f98..a7fb2dd1 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/Steam_api_common/HSteamUser.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/Steam_api_common/HSteamUser.cs @@ -1,5 +1,5 @@ // This file is provided under The MIT License as part of Steamworks.NET. -// Copyright (c) 2013-2021 Riley Labrecque +// Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. // This file is automatically generated. From 53d17180582752d7d8c9a757742da3a52dfc33d4 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 6 Feb 2022 13:30:36 -0800 Subject: [PATCH 25/55] Bump Unity Package version to 20.1.0 --- com.rlabrecque.steamworks.net/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.rlabrecque.steamworks.net/package.json b/com.rlabrecque.steamworks.net/package.json index b61ebcf0..fb76de2d 100644 --- a/com.rlabrecque.steamworks.net/package.json +++ b/com.rlabrecque.steamworks.net/package.json @@ -1,7 +1,7 @@ { "name": "com.rlabrecque.steamworks.net", "displayName": "Steamworks.NET", - "version": "20.0.0", + "version": "20.1.0", "unity": "2019.4", "author": { "name": "Riley Labrecque", From 4d3e125d2e023ac58a265bb36b89577f04ef950e Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Mon, 14 Feb 2022 18:45:22 -0800 Subject: [PATCH 26/55] Update Standalone\Steamworks.NET.csproj to automatically grab all files (Fixes #483) --- Standalone/Steamworks.NET.csproj | 240 +++++++++---------------------- 1 file changed, 70 insertions(+), 170 deletions(-) diff --git a/Standalone/Steamworks.NET.csproj b/Standalone/Steamworks.NET.csproj index 7980bfd8..9e0afe39 100644 --- a/Standalone/Steamworks.NET.csproj +++ b/Standalone/Steamworks.NET.csproj @@ -1,184 +1,84 @@  - + - + - Debug - AnyCPU - {B3543600-587C-4FDC-994A-CB0BDC629A7E} - Library - Properties - Steamworks - Steamworks.NET - v4.0 - 512 - - + Debug + AnyCPU + {B3543600-587C-4FDC-994A-CB0BDC629A7E} + Library + Properties + Steamworks + Steamworks.NET + v4.0 + 512 + + - - bin\x86\Windows\ - TRACE;STEAMWORKS_WIN;STEAMWORKS_X86 - true - true - pdbonly - x86 - prompt - MinimumRecommendedRules.ruleset - + + bin\x86\Windows\ + TRACE;STEAMWORKS_WIN;STEAMWORKS_X86 + true + true + pdbonly + x86 + prompt + MinimumRecommendedRules.ruleset + - - bin\x86\OSX-Linux\ - TRACE;STEAMWORKS_LIN_OSX;STEAMWORKS_X86 - true - true - pdbonly - x86 - prompt - MinimumRecommendedRules.ruleset - + + bin\x86\OSX-Linux\ + TRACE;STEAMWORKS_LIN_OSX;STEAMWORKS_X86 + true + true + pdbonly + x86 + prompt + MinimumRecommendedRules.ruleset + - - bin\x64\Windows\ - TRACE;STEAMWORKS_WIN;STEAMWORKS_X64 - true - true - pdbonly - x64 - prompt - MinimumRecommendedRules.ruleset - + + bin\x64\Windows\ + TRACE;STEAMWORKS_WIN;STEAMWORKS_X64 + true + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + - - bin\x64\OSX-Linux\ - TRACE;STEAMWORKS_LIN_OSX;STEAMWORKS_X64 - true - true - pdbonly - x64 - prompt - MinimumRecommendedRules.ruleset - + + bin\x64\OSX-Linux\ + TRACE;STEAMWORKS_LIN_OSX;STEAMWORKS_X64 + true + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + + + + + \ No newline at end of file From c0d7c5fd8e09177e7bf6abf4bd86fe6e82627765 Mon Sep 17 00:00:00 2001 From: Andrew Wiltshire <62200778+AW1534@users.noreply.github.com> Date: Mon, 11 Apr 2022 14:13:54 +0100 Subject: [PATCH 27/55] Update RedistInstall.cs Typo in "copys". replace with "copies" --- com.rlabrecque.steamworks.net/Editor/RedistInstall.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs b/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs index 2354bb9e..8e02ecec 100644 --- a/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs +++ b/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs @@ -7,7 +7,7 @@ using System.IO; using System.Collections.Generic; -// This copys various files into their required locations when Unity is launched to make installation a breeze. +// This copies various files into their required locations when Unity is launched to make installation a breeze. [InitializeOnLoad] public class RedistInstall { static RedistInstall() { From de22589499de4462c1bd194bc927a92e7fa8504a Mon Sep 17 00:00:00 2001 From: tilderain Date: Wed, 11 May 2022 14:25:11 -0700 Subject: [PATCH 28/55] Add UNITY_EDITOR_LINUX check in Packsize --- com.rlabrecque.steamworks.net/Runtime/Packsize.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.rlabrecque.steamworks.net/Runtime/Packsize.cs b/com.rlabrecque.steamworks.net/Runtime/Packsize.cs index c8b0865e..3b2efb09 100644 --- a/com.rlabrecque.steamworks.net/Runtime/Packsize.cs +++ b/com.rlabrecque.steamworks.net/Runtime/Packsize.cs @@ -14,7 +14,7 @@ // If we're running in the Unity Editor we need the editors platform. #if UNITY_EDITOR_WIN #define VALVE_CALLBACK_PACK_LARGE -#elif UNITY_EDITOR_OSX +#elif UNITY_EDITOR_OSX || UNITY_EDITOR_LINUX #define VALVE_CALLBACK_PACK_SMALL // Otherwise we want the target platform. From 8e5c46a9e6cc9b5d2a1d281eee41e28d117866f7 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 30 Oct 2022 13:57:58 -0700 Subject: [PATCH 29/55] Update to Steamworks SDK 1.54 --- CodeGen/steam/isteamfriends.h | 57 +++++++++++ CodeGen/steam/isteamnetworkingmessages.h | 13 +-- CodeGen/steam/isteamnetworkingsockets.h | 15 +-- CodeGen/steam/isteamutils.h | 8 +- CodeGen/steam/steam_api.json | 94 +++++++++++++++++- CodeGen/steam/steam_api_flat.h | 4 + CodeGen/steam/steamclientpublic.h | 70 +++++++------ CodeGen/steam/steamnetworkingtypes.h | 41 +++++++- .../SteamNetworkingIdentity.cs | 37 +++++++ CodeGen/templates/nativemethods.txt | 12 +++ README.md | 2 +- .../Plugins/libsteam_api.so | Bin 416413 -> 420805 bytes .../steam_api.bundle/Contents/Info.plist | 2 +- .../Contents/MacOS/libsteam_api.dylib | Bin 609584 -> 609952 bytes .../Plugins/steam_api.dll | Bin 263080 -> 264664 bytes .../Plugins/steam_api64.dll | Bin 295336 -> 296408 bytes com.rlabrecque.steamworks.net/README.md | 2 +- .../Runtime/Version.cs | 8 +- .../Runtime/autogen/NativeMethods.cs | 25 +++++ .../Runtime/autogen/SteamCallbacks.cs | 31 ++++++ .../Runtime/autogen/SteamEnums.cs | 47 ++++++++- .../Runtime/autogen/isteamfriends.cs | 24 +++++ .../SteamNetworkingIdentity.cs | 37 +++++++ 23 files changed, 457 insertions(+), 72 deletions(-) diff --git a/CodeGen/steam/isteamfriends.h b/CodeGen/steam/isteamfriends.h index b7ebc735..4ac4293c 100644 --- a/CodeGen/steam/isteamfriends.h +++ b/CodeGen/steam/isteamfriends.h @@ -157,6 +157,32 @@ enum EActivateGameOverlayToWebPageMode // will also close. When the user closes the browser window, the overlay will automatically close. }; +//----------------------------------------------------------------------------- +// Purpose: See GetProfileItemPropertyString and GetProfileItemPropertyUint +//----------------------------------------------------------------------------- +enum ECommunityProfileItemType +{ + k_ECommunityProfileItemType_AnimatedAvatar = 0, + k_ECommunityProfileItemType_AvatarFrame = 1, + k_ECommunityProfileItemType_ProfileModifier = 2, + k_ECommunityProfileItemType_ProfileBackground = 3, + k_ECommunityProfileItemType_MiniProfileBackground = 4, +}; +enum ECommunityProfileItemProperty +{ + k_ECommunityProfileItemProperty_ImageSmall = 0, // string + k_ECommunityProfileItemProperty_ImageLarge = 1, // string + k_ECommunityProfileItemProperty_InternalName = 2, // string + k_ECommunityProfileItemProperty_Title = 3, // string + k_ECommunityProfileItemProperty_Description = 4, // string + k_ECommunityProfileItemProperty_AppID = 5, // uint32 + k_ECommunityProfileItemProperty_TypeID = 6, // uint32 + k_ECommunityProfileItemProperty_Class = 7, // uint32 + k_ECommunityProfileItemProperty_MovieWebM = 8, // string + k_ECommunityProfileItemProperty_MovieMP4 = 9, // string + k_ECommunityProfileItemProperty_MovieWebMSmall = 10, // string + k_ECommunityProfileItemProperty_MovieMP4Small = 11, // string +}; //----------------------------------------------------------------------------- // Purpose: interface to accessing information about individual users, @@ -422,6 +448,14 @@ class ISteamFriends // Activates the game overlay to open an invite dialog that will send the provided Rich Presence connect string to selected friends virtual void ActivateGameOverlayInviteDialogConnectString( const char *pchConnectString ) = 0; + + // Steam Community items equipped by a user on their profile + // You can register for EquippedProfileItemsChanged_t to know when a friend has changed their equipped profile items + STEAM_CALL_RESULT( EquippedProfileItems_t ) + virtual SteamAPICall_t RequestEquippedProfileItems( CSteamID steamID ) = 0; + virtual bool BHasEquippedProfileItem( CSteamID steamID, ECommunityProfileItemType itemType ) = 0; + virtual const char *GetProfileItemPropertyString( CSteamID steamID, ECommunityProfileItemType itemType, ECommunityProfileItemProperty prop ) = 0; + virtual uint32 GetProfileItemPropertyUint( CSteamID steamID, ECommunityProfileItemType itemType, ECommunityProfileItemProperty prop ) = 0; }; #define STEAMFRIENDS_INTERFACE_VERSION "SteamFriends017" @@ -687,6 +721,29 @@ struct OverlayBrowserProtocolNavigation_t char rgchURI[ 1024 ]; }; +//----------------------------------------------------------------------------- +// Purpose: A user's equipped profile items have changed +//----------------------------------------------------------------------------- +struct EquippedProfileItemsChanged_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 50 }; + CSteamID m_steamID; +}; + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +struct EquippedProfileItems_t +{ + enum { k_iCallback = k_iSteamFriendsCallbacks + 51 }; + EResult m_eResult; + CSteamID m_steamID; + bool m_bHasAnimatedAvatar; + bool m_bHasAvatarFrame; + bool m_bHasProfileModifier; + bool m_bHasProfileBackground; + bool m_bHasMiniProfileBackground; +}; #pragma pack( pop ) diff --git a/CodeGen/steam/isteamnetworkingmessages.h b/CodeGen/steam/isteamnetworkingmessages.h index a3d58aea..b7a2cd0e 100644 --- a/CodeGen/steam/isteamnetworkingmessages.h +++ b/CodeGen/steam/isteamnetworkingmessages.h @@ -163,25 +163,22 @@ struct SteamNetworkingMessagesSessionFailed_t #pragma pack(pop) // Global accessors + // Using standalone lib #ifdef STEAMNETWORKINGSOCKETS_STANDALONELIB - // Standalone lib. static_assert( STEAMNETWORKINGMESSAGES_INTERFACE_VERSION[25] == '2', "Version mismatch" ); + STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingMessages *SteamNetworkingMessages_LibV2(); inline ISteamNetworkingMessages *SteamNetworkingMessages_Lib() { return SteamNetworkingMessages_LibV2(); } // If running in context of steam, we also define a gameserver instance. - #ifdef STEAMNETWORKINGSOCKETS_STEAM - STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingMessages *SteamGameServerNetworkingMessages_LibV2(); - inline ISteamNetworkingMessages *SteamGameServerNetworkingMessages_Lib() { return SteamGameServerNetworkingMessages_LibV2(); } - #endif + STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingMessages *SteamGameServerNetworkingMessages_LibV2(); + inline ISteamNetworkingMessages *SteamGameServerNetworkingMessages_Lib() { return SteamGameServerNetworkingMessages_LibV2(); } #ifndef STEAMNETWORKINGSOCKETS_STEAMAPI inline ISteamNetworkingMessages *SteamNetworkingMessages() { return SteamNetworkingMessages_LibV2(); } - #ifdef STEAMNETWORKINGSOCKETS_STEAM - inline ISteamNetworkingMessages *SteamGameServerNetworkingMessages() { return SteamGameServerNetworkingMessages_LibV2(); } - #endif + inline ISteamNetworkingMessages *SteamGameServerNetworkingMessages() { return SteamGameServerNetworkingMessages_LibV2(); } #endif #endif diff --git a/CodeGen/steam/isteamnetworkingsockets.h b/CodeGen/steam/isteamnetworkingsockets.h index 157e12cb..b4e9ec33 100644 --- a/CodeGen/steam/isteamnetworkingsockets.h +++ b/CodeGen/steam/isteamnetworkingsockets.h @@ -920,32 +920,25 @@ class ISteamNetworkingSockets #define STEAMNETWORKINGSOCKETS_INTERFACE_VERSION "SteamNetworkingSockets012" // Global accessors + // Using standalone lib #ifdef STEAMNETWORKINGSOCKETS_STANDALONELIB - // Standalone lib. static_assert( STEAMNETWORKINGSOCKETS_INTERFACE_VERSION[24] == '2', "Version mismatch" ); STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingSockets *SteamNetworkingSockets_LibV12(); inline ISteamNetworkingSockets *SteamNetworkingSockets_Lib() { return SteamNetworkingSockets_LibV12(); } - // If running in context of steam, we also define a gameserver instance. - #ifdef STEAMNETWORKINGSOCKETS_STEAM - STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingSockets *SteamGameServerNetworkingSockets_LibV12(); - inline ISteamNetworkingSockets *SteamGameServerNetworkingSockets_Lib() { return SteamGameServerNetworkingSockets_LibV12(); } - #endif + STEAMNETWORKINGSOCKETS_INTERFACE ISteamNetworkingSockets *SteamGameServerNetworkingSockets_LibV12(); + inline ISteamNetworkingSockets *SteamGameServerNetworkingSockets_Lib() { return SteamGameServerNetworkingSockets_LibV12(); } #ifndef STEAMNETWORKINGSOCKETS_STEAMAPI inline ISteamNetworkingSockets *SteamNetworkingSockets() { return SteamNetworkingSockets_LibV12(); } - #ifdef STEAMNETWORKINGSOCKETS_STEAM - inline ISteamNetworkingSockets *SteamGameServerNetworkingSockets() { return SteamGameServerNetworkingSockets_LibV12(); } - #endif + inline ISteamNetworkingSockets *SteamGameServerNetworkingSockets() { return SteamGameServerNetworkingSockets_LibV12(); } #endif #endif // Using Steamworks SDK #ifdef STEAMNETWORKINGSOCKETS_STEAMAPI - - // Steamworks SDK STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamNetworkingSockets *, SteamNetworkingSockets_SteamAPI, STEAMNETWORKINGSOCKETS_INTERFACE_VERSION ); STEAM_DEFINE_GAMESERVER_INTERFACE_ACCESSOR( ISteamNetworkingSockets *, SteamGameServerNetworkingSockets_SteamAPI, STEAMNETWORKINGSOCKETS_INTERFACE_VERSION ); diff --git a/CodeGen/steam/isteamutils.h b/CodeGen/steam/isteamutils.h index 7962f185..5f56d8d8 100644 --- a/CodeGen/steam/isteamutils.h +++ b/CodeGen/steam/isteamutils.h @@ -43,10 +43,10 @@ enum EGamepadTextInputLineMode enum EFloatingGamepadTextInputMode { - k_EFloatingGamepadTextInputModeModeSingleLine = 0, // Enter dismisses the keyboard - k_EFloatingGamepadTextInputModeModeMultipleLines = 1, // User needs to explictly close the keyboard - k_EFloatingGamepadTextInputModeModeEmail = 2, - k_EFloatingGamepadTextInputModeModeNumeric = 3, + k_EFloatingGamepadTextInputModeModeSingleLine = 0, // Enter dismisses the keyboard + k_EFloatingGamepadTextInputModeModeMultipleLines = 1, // User needs to explictly close the keyboard + k_EFloatingGamepadTextInputModeModeEmail = 2, // Keyboard layout is email, enter dismisses the keyboard + k_EFloatingGamepadTextInputModeModeNumeric = 3, // Keyboard layout is numeric, enter dismisses the keyboard }; diff --git a/CodeGen/steam/steam_api.json b/CodeGen/steam/steam_api.json index a848b797..2ca6002a 100644 --- a/CodeGen/steam/steam_api.json +++ b/CodeGen/steam/steam_api.json @@ -290,6 +290,26 @@ ], "struct": "OverlayBrowserProtocolNavigation_t" }, + { + "callback_id": 350, + "fields": [ + { "fieldname":"m_steamID", "fieldtype":"CSteamID" } + ], + "struct": "EquippedProfileItemsChanged_t" + }, + { + "callback_id": 351, + "fields": [ + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_steamID", "fieldtype":"CSteamID" }, + { "fieldname":"m_bHasAnimatedAvatar", "fieldtype":"bool" }, + { "fieldname":"m_bHasAvatarFrame", "fieldtype":"bool" }, + { "fieldname":"m_bHasProfileModifier", "fieldtype":"bool" }, + { "fieldname":"m_bHasProfileBackground", "fieldtype":"bool" }, + { "fieldname":"m_bHasMiniProfileBackground", "fieldtype":"bool" } + ], + "struct": "EquippedProfileItems_t" + }, { "callback_id": 701, "fields": [], @@ -2076,7 +2096,10 @@ { "name":"k_EResultSteamRealmMismatch", "value":"120" }, { "name":"k_EResultInvalidSignature", "value":"121" }, { "name":"k_EResultParseFailure", "value":"122" }, - { "name":"k_EResultNoVerifiedPhone", "value":"123" } + { "name":"k_EResultNoVerifiedPhone", "value":"123" }, + { "name":"k_EResultInsufficientBattery", "value":"124" }, + { "name":"k_EResultChargerRequired", "value":"125" }, + { "name":"k_EResultCachedCredentialInvalid", "value":"126" } ] }, { @@ -2415,6 +2438,33 @@ { "name":"k_EActivateGameOverlayToWebPageMode_Modal", "value":"1" } ] }, + { + "enumname": "ECommunityProfileItemType", + "values": [ + { "name":"k_ECommunityProfileItemType_AnimatedAvatar", "value":"0" }, + { "name":"k_ECommunityProfileItemType_AvatarFrame", "value":"1" }, + { "name":"k_ECommunityProfileItemType_ProfileModifier", "value":"2" }, + { "name":"k_ECommunityProfileItemType_ProfileBackground", "value":"3" }, + { "name":"k_ECommunityProfileItemType_MiniProfileBackground", "value":"4" } + ] + }, + { + "enumname": "ECommunityProfileItemProperty", + "values": [ + { "name":"k_ECommunityProfileItemProperty_ImageSmall", "value":"0" }, + { "name":"k_ECommunityProfileItemProperty_ImageLarge", "value":"1" }, + { "name":"k_ECommunityProfileItemProperty_InternalName", "value":"2" }, + { "name":"k_ECommunityProfileItemProperty_Title", "value":"3" }, + { "name":"k_ECommunityProfileItemProperty_Description", "value":"4" }, + { "name":"k_ECommunityProfileItemProperty_AppID", "value":"5" }, + { "name":"k_ECommunityProfileItemProperty_TypeID", "value":"6" }, + { "name":"k_ECommunityProfileItemProperty_Class", "value":"7" }, + { "name":"k_ECommunityProfileItemProperty_MovieWebM", "value":"8" }, + { "name":"k_ECommunityProfileItemProperty_MovieMP4", "value":"9" }, + { "name":"k_ECommunityProfileItemProperty_MovieWebMSmall", "value":"10" }, + { "name":"k_ECommunityProfileItemProperty_MovieMP4Small", "value":"11" } + ] + }, { "enumname": "EPersonaChange", "values": [ @@ -4097,6 +4147,10 @@ { "name":"k_ESteamNetworkingConfig_P2P_Transport_ICE_Enable", "value":"104" }, { "name":"k_ESteamNetworkingConfig_P2P_Transport_ICE_Penalty", "value":"105" }, { "name":"k_ESteamNetworkingConfig_P2P_Transport_SDR_Penalty", "value":"106" }, + { "name":"k_ESteamNetworkingConfig_P2P_TURN_ServerList", "value":"107" }, + { "name":"k_ESteamNetworkingConfig_P2P_TURN_UserList", "value":"108" }, + { "name":"k_ESteamNetworkingConfig_P2P_TURN_PassList", "value":"109" }, + { "name":"k_ESteamNetworkingConfig_P2P_Transport_ICE_Implementation", "value":"110" }, { "name":"k_ESteamNetworkingConfig_SDRClient_ConsecutitivePingTimeoutsFailInitial", "value":"19" }, { "name":"k_ESteamNetworkingConfig_SDRClient_ConsecutitivePingTimeoutsFail", "value":"20" }, { "name":"k_ESteamNetworkingConfig_SDRClient_MinPingsBeforePingAccurate", "value":"21" }, @@ -5445,6 +5499,44 @@ { "paramname":"pchConnectString", "paramtype":"const char *" } ], "returntype": "void" + }, + { + "callresult": "EquippedProfileItems_t", + "methodname": "RequestEquippedProfileItems", + "methodname_flat": "SteamAPI_ISteamFriends_RequestEquippedProfileItems", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" } + ], + "returntype": "SteamAPICall_t" + }, + { + "methodname": "BHasEquippedProfileItem", + "methodname_flat": "SteamAPI_ISteamFriends_BHasEquippedProfileItem", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"itemType", "paramtype":"ECommunityProfileItemType" } + ], + "returntype": "bool" + }, + { + "methodname": "GetProfileItemPropertyString", + "methodname_flat": "SteamAPI_ISteamFriends_GetProfileItemPropertyString", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"itemType", "paramtype":"ECommunityProfileItemType" }, + { "paramname":"prop", "paramtype":"ECommunityProfileItemProperty" } + ], + "returntype": "const char *" + }, + { + "methodname": "GetProfileItemPropertyUint", + "methodname_flat": "SteamAPI_ISteamFriends_GetProfileItemPropertyUint", + "params": [ + { "paramname":"steamID", "paramtype":"CSteamID", "paramtype_flat":"uint64_steamid" }, + { "paramname":"itemType", "paramtype":"ECommunityProfileItemType" }, + { "paramname":"prop", "paramtype":"ECommunityProfileItemProperty" } + ], + "returntype": "uint32" } ], "version_string": "SteamFriends017" diff --git a/CodeGen/steam/steam_api_flat.h b/CodeGen/steam/steam_api_flat.h index 5b213f70..c2c73949 100644 --- a/CodeGen/steam/steam_api_flat.h +++ b/CodeGen/steam/steam_api_flat.h @@ -176,6 +176,10 @@ S_API int SteamAPI_ISteamFriends_GetNumChatsWithUnreadPriorityMessages( ISteamFr S_API void SteamAPI_ISteamFriends_ActivateGameOverlayRemotePlayTogetherInviteDialog( ISteamFriends* self, uint64_steamid steamIDLobby ); S_API bool SteamAPI_ISteamFriends_RegisterProtocolInOverlayBrowser( ISteamFriends* self, const char * pchProtocol ); S_API void SteamAPI_ISteamFriends_ActivateGameOverlayInviteDialogConnectString( ISteamFriends* self, const char * pchConnectString ); +S_API SteamAPICall_t SteamAPI_ISteamFriends_RequestEquippedProfileItems( ISteamFriends* self, uint64_steamid steamID ); +S_API bool SteamAPI_ISteamFriends_BHasEquippedProfileItem( ISteamFriends* self, uint64_steamid steamID, ECommunityProfileItemType itemType ); +S_API const char * SteamAPI_ISteamFriends_GetProfileItemPropertyString( ISteamFriends* self, uint64_steamid steamID, ECommunityProfileItemType itemType, ECommunityProfileItemProperty prop ); +S_API uint32 SteamAPI_ISteamFriends_GetProfileItemPropertyUint( ISteamFriends* self, uint64_steamid steamID, ECommunityProfileItemType itemType, ECommunityProfileItemProperty prop ); // ISteamUtils diff --git a/CodeGen/steam/steamclientpublic.h b/CodeGen/steam/steamclientpublic.h index 93aa7c6e..4d34f711 100644 --- a/CodeGen/steam/steamclientpublic.h +++ b/CodeGen/steam/steamclientpublic.h @@ -137,6 +137,9 @@ enum EResult k_EResultInvalidSignature = 121, // signature check did not match k_EResultParseFailure = 122, // Failed to parse input k_EResultNoVerifiedPhone = 123, // account does not have a verified phone number + k_EResultInsufficientBattery = 124, // user device doesn't have enough battery charge currently to complete the action + k_EResultChargerRequired = 125, // The operation requires a charger to be plugged in, which wasn't present + k_EResultCachedCredentialInvalid = 126, // Cached credential was invalid - user must reauthenticate }; // Error codes for use with the voice functions @@ -592,37 +595,6 @@ class CSteamID m_steamid.m_comp.m_unAccountInstance = 0; } - -#if defined( INCLUDED_STEAM2_USERID_STRUCTS ) - //----------------------------------------------------------------------------- - // Purpose: Initializes a steam ID from a Steam2 ID structure - // Input: pTSteamGlobalUserID - Steam2 ID to convert - // eUniverse - universe this ID belongs to - //----------------------------------------------------------------------------- - void SetFromSteam2( TSteamGlobalUserID *pTSteamGlobalUserID, EUniverse eUniverse ) - { - m_steamid.m_comp.m_unAccountID = pTSteamGlobalUserID->m_SteamLocalUserID.Split.Low32bits * 2 + - pTSteamGlobalUserID->m_SteamLocalUserID.Split.High32bits; - m_steamid.m_comp.m_EUniverse = eUniverse; // set the universe - m_steamid.m_comp.m_EAccountType = k_EAccountTypeIndividual; // Steam 2 accounts always map to account type of individual - m_steamid.m_comp.m_unAccountInstance = k_unSteamUserDefaultInstance; // Steam2 only knew one instance - } - - //----------------------------------------------------------------------------- - // Purpose: Fills out a Steam2 ID structure - // Input: pTSteamGlobalUserID - Steam2 ID to write to - //----------------------------------------------------------------------------- - void ConvertToSteam2( TSteamGlobalUserID *pTSteamGlobalUserID ) const - { - // only individual accounts have any meaning in Steam 2, only they can be mapped - // Assert( m_steamid.m_comp.m_EAccountType == k_EAccountTypeIndividual ); - - pTSteamGlobalUserID->m_SteamInstanceID = 0; - pTSteamGlobalUserID->m_SteamLocalUserID.Split.High32bits = m_steamid.m_comp.m_unAccountID % 2; - pTSteamGlobalUserID->m_SteamLocalUserID.Split.Low32bits = m_steamid.m_comp.m_unAccountID / 2; - } -#endif // defined( INCLUDED_STEAM_COMMON_STEAMCOMMON_H ) - //----------------------------------------------------------------------------- // Purpose: Converts steam ID to its 64-bit representation // Output : 64-bit representation of a Steam ID @@ -794,7 +766,6 @@ class CSteamID // and is preferred when the caller knows it's safe to be strict. // Returns whether the string parsed correctly. bool SetFromStringStrict( const char *pchSteamID, EUniverse eDefaultUniverse ); - bool SetFromSteam2String( const char *pchSteam2ID, EUniverse eUniverse ); inline bool operator==( const CSteamID &val ) const { return m_steamid.m_unAll64Bits == val.m_steamid.m_unAll64Bits; } inline bool operator!=( const CSteamID &val ) const { return !operator==( val ); } @@ -863,6 +834,41 @@ inline bool CSteamID::IsValid() const return true; } +#if defined( INCLUDED_STEAM2_USERID_STRUCTS ) + +//----------------------------------------------------------------------------- +// Purpose: Initializes a steam ID from a Steam2 ID structure +// Input: pTSteamGlobalUserID - Steam2 ID to convert +// eUniverse - universe this ID belongs to +//----------------------------------------------------------------------------- +inline CSteamID SteamIDFromSteam2UserID( TSteamGlobalUserID *pTSteamGlobalUserID, EUniverse eUniverse ) +{ + uint32 unAccountID = pTSteamGlobalUserID->m_SteamLocalUserID.Split.Low32bits * 2 + + pTSteamGlobalUserID->m_SteamLocalUserID.Split.High32bits; + + return CSteamID( unAccountID, k_unSteamUserDefaultInstance, eUniverse, k_EAccountTypeIndividual ); +} + +bool SteamIDFromSteam2String( const char *pchSteam2ID, EUniverse eUniverse, CSteamID *pSteamIDOut ); + +//----------------------------------------------------------------------------- +// Purpose: Fills out a Steam2 ID structure +// Input: pTSteamGlobalUserID - Steam2 ID to write to +//----------------------------------------------------------------------------- +inline TSteamGlobalUserID SteamIDToSteam2UserID( CSteamID steamID ) +{ + TSteamGlobalUserID steamGlobalUserID; + + steamGlobalUserID.m_SteamInstanceID = 0; + steamGlobalUserID.m_SteamLocalUserID.Split.High32bits = steamID.GetAccountID() % 2; + steamGlobalUserID.m_SteamLocalUserID.Split.Low32bits = steamID.GetAccountID() / 2; + + return steamGlobalUserID; +} + + +#endif + // generic invalid CSteamID #define k_steamIDNil CSteamID() diff --git a/CodeGen/steam/steamnetworkingtypes.h b/CodeGen/steam/steamnetworkingtypes.h index 6692a9cb..33dcea72 100644 --- a/CodeGen/steam/steamnetworkingtypes.h +++ b/CodeGen/steam/steamnetworkingtypes.h @@ -15,13 +15,11 @@ //----------------------------------------------------------------------------- // SteamNetworkingSockets config. -//#define STEAMNETWORKINGSOCKETS_STANDALONELIB // Comment this in to support compiling/linking with the standalone library / gamenetworkingsockets opensource -#define STEAMNETWORKINGSOCKETS_STEAMAPI // Compiling/link with steam_api.h and Steamworks SDK +#if !defined(STEAMNETWORKINGSOCKETS_STANDALONELIB) && !defined(STEAMNETWORKINGSOCKETS_STEAMAPI) + #define STEAMNETWORKINGSOCKETS_STEAMAPI +#endif //----------------------------------------------------------------------------- -#if !defined( STEAMNETWORKINGSOCKETS_OPENSOURCE ) && !defined( STEAMNETWORKINGSOCKETS_STREAMINGCLIENT ) - #define STEAMNETWORKINGSOCKETS_STEAM -#endif #ifdef NN_NINTENDO_SDK // We always static link on Nintendo #define STEAMNETWORKINGSOCKETS_STATIC_LINK #endif @@ -143,6 +141,12 @@ enum ESteamNetworkingIdentityType // Basic platform-specific identifiers. // k_ESteamNetworkingIdentityType_SteamID = 16, // 64-bit CSteamID + k_ESteamNetworkingIdentityType_XboxPairwiseID = 17, // Publisher-specific user identity, as string + k_ESteamNetworkingIdentityType_SonyPSN = 18, // 64-bit ID + k_ESteamNetworkingIdentityType_GoogleStadia = 19, // 64-bit ID + //k_ESteamNetworkingIdentityType_NintendoNetworkServiceAccount, + //k_ESteamNetworkingIdentityType_EpicGameStore + //k_ESteamNetworkingIdentityType_WeGame // // Special identifiers. @@ -271,6 +275,15 @@ struct SteamNetworkingIdentity void SetSteamID64( uint64 steamID ); // Takes SteamID as raw 64-bit number uint64 GetSteamID64() const; // Returns 0 if identity is not SteamID + bool SetXboxPairwiseID( const char *pszString ); // Returns false if invalid length + const char *GetXboxPairwiseID() const; // Returns nullptr if not Xbox ID + + void SetPSNID( uint64 id ); + uint64 GetPSNID() const; // Returns 0 if not PSN + + void SetStadiaID( uint64 id ); + uint64 GetStadiaID() const; // Returns 0 if not Stadia + void SetIPAddr( const SteamNetworkingIPAddr &addr ); // Set to specified IP:port const SteamNetworkingIPAddr *GetIPAddr() const; // returns null if we are not an IP address. void SetIPv4Addr( uint32 nIPv4, uint16 nPort ); // Set to specified IPv4:port @@ -312,6 +325,7 @@ struct SteamNetworkingIdentity enum { k_cchMaxString = 128, // Max length of the buffer needed to hold any identity, formatted in string format by ToString k_cchMaxGenericString = 32, // Max length of the string for generic string identities. Including terminating '\0' + k_cchMaxXboxPairwiseID = 33, // Including terminating '\0' k_cbMaxGenericBytes = 32, }; @@ -324,7 +338,10 @@ struct SteamNetworkingIdentity int m_cbSize; union { uint64 m_steamID64; + uint64 m_PSNID; + uint64 m_stadiaID; char m_szGenericString[ k_cchMaxGenericString ]; + char m_szXboxPairwiseID[ k_cchMaxXboxPairwiseID ]; uint8 m_genericBytes[ k_cbMaxGenericBytes ]; char m_szUnknownRawString[ k_cchMaxString ]; SteamNetworkingIPAddr m_ip; @@ -1479,7 +1496,11 @@ enum ESteamNetworkingConfigValue /// route ping time and is then adjusted.) k_ESteamNetworkingConfig_P2P_Transport_ICE_Penalty = 105, k_ESteamNetworkingConfig_P2P_Transport_SDR_Penalty = 106, + k_ESteamNetworkingConfig_P2P_TURN_ServerList = 107, + k_ESteamNetworkingConfig_P2P_TURN_UserList = 108, + k_ESteamNetworkingConfig_P2P_TURN_PassList = 109, //k_ESteamNetworkingConfig_P2P_Transport_LANBeacon_Penalty = 107, + k_ESteamNetworkingConfig_P2P_Transport_ICE_Implementation = 110, // // Settings for SDR relayed connections @@ -1744,8 +1765,18 @@ inline void SteamNetworkingIdentity::SetSteamID( CSteamID steamID ) { SetSteamID inline CSteamID SteamNetworkingIdentity::GetSteamID() const { return CSteamID( GetSteamID64() ); } inline void SteamNetworkingIdentity::SetSteamID64( uint64 steamID ) { m_eType = k_ESteamNetworkingIdentityType_SteamID; m_cbSize = sizeof( m_steamID64 ); m_steamID64 = steamID; } inline uint64 SteamNetworkingIdentity::GetSteamID64() const { return m_eType == k_ESteamNetworkingIdentityType_SteamID ? m_steamID64 : 0; } +inline bool SteamNetworkingIdentity::SetXboxPairwiseID( const char *pszString ) { size_t l = strlen( pszString ); if ( l < 1 || l >= sizeof(m_szXboxPairwiseID) ) return false; + m_eType = k_ESteamNetworkingIdentityType_XboxPairwiseID; m_cbSize = int(l+1); memcpy( m_szXboxPairwiseID, pszString, m_cbSize ); return true; } +inline const char *SteamNetworkingIdentity::GetXboxPairwiseID() const { return m_eType == k_ESteamNetworkingIdentityType_XboxPairwiseID ? m_szXboxPairwiseID : NULL; } +inline void SteamNetworkingIdentity::SetPSNID( uint64 id ) { m_eType = k_ESteamNetworkingIdentityType_SonyPSN; m_cbSize = sizeof( m_PSNID ); m_PSNID = id; } +inline uint64 SteamNetworkingIdentity::GetPSNID() const { return m_eType == k_ESteamNetworkingIdentityType_SonyPSN ? m_PSNID : 0; } +inline void SteamNetworkingIdentity::SetStadiaID( uint64 id ) { m_eType = k_ESteamNetworkingIdentityType_GoogleStadia; m_cbSize = sizeof( m_stadiaID ); m_stadiaID = id; } +inline uint64 SteamNetworkingIdentity::GetStadiaID() const { return m_eType == k_ESteamNetworkingIdentityType_GoogleStadia ? m_stadiaID : 0; } inline void SteamNetworkingIdentity::SetIPAddr( const SteamNetworkingIPAddr &addr ) { m_eType = k_ESteamNetworkingIdentityType_IPAddress; m_cbSize = (int)sizeof(m_ip); m_ip = addr; } inline const SteamNetworkingIPAddr *SteamNetworkingIdentity::GetIPAddr() const { return m_eType == k_ESteamNetworkingIdentityType_IPAddress ? &m_ip : NULL; } +inline void SteamNetworkingIdentity::SetIPv4Addr( uint32 nIPv4, uint16 nPort ) { m_eType = k_ESteamNetworkingIdentityType_IPAddress; m_cbSize = (int)sizeof(m_ip); m_ip.SetIPv4( nIPv4, nPort ); } +inline uint32 SteamNetworkingIdentity::GetIPv4() const { return m_eType == k_ESteamNetworkingIdentityType_IPAddress ? m_ip.GetIPv4() : 0; } +inline ESteamNetworkingFakeIPType SteamNetworkingIdentity::GetFakeIPType() const { return m_eType == k_ESteamNetworkingIdentityType_IPAddress ? m_ip.GetFakeIPType() : k_ESteamNetworkingFakeIPType_Invalid; } inline void SteamNetworkingIdentity::SetLocalHost() { m_eType = k_ESteamNetworkingIdentityType_IPAddress; m_cbSize = (int)sizeof(m_ip); m_ip.SetIPv6LocalHost(); } inline bool SteamNetworkingIdentity::IsLocalHost() const { return m_eType == k_ESteamNetworkingIdentityType_IPAddress && m_ip.IsLocalHost(); } inline bool SteamNetworkingIdentity::SetGenericString( const char *pszString ) { size_t l = strlen( pszString ); if ( l >= sizeof(m_szGenericString) ) return false; diff --git a/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIdentity.cs b/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIdentity.cs index faa5cda2..c3c36213 100644 --- a/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIdentity.cs +++ b/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIdentity.cs @@ -26,6 +26,7 @@ public struct SteamNetworkingIdentity : System.IEquatable!5|9(DCyL$WP&6_uG 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

    h-lIKl$zZpo3V{X8~HGAiiyVMKsnxq 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 Rk$W}Er1p-)6&idL{y&&v$ix5u delta 150240 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%0Aop~+py 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

    iKQx1?~-A2BxnV$^O3)RV6>7q412(JwI-O z`NhMJDs*nS!D4hS`7sdO9_hWnR}r5IehU5$t_E)BN%ucD7=r*;x_UWx11EsrqlT`7 z&FShFhnLiUg!m?4OT=4%cOZTq_#}8MAOCZQR}pXr3ctYGxiX&L-~4C>-VYuN?gNJ_ zz#YNq;OgKH;3nYzbn~QxUZ~=6;GtlDa3m7&d3~PYcE*D*e+%u93^ z2Kf{z=iNvU4W0~xm%*=~Z|E)cOM*Lqk0ZSkxG8ue_@~e(V_69J0tJnaG}saj8-s@+ zelmCu;={o{;7i~&;L;1Fy-7%K0lvoL$v^W)Kr9j*1!sWs!QL>?X^}K&j<((&oCuBr z(}%poaTdH0{1fa&%>A

  1. 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

    ?;JG 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 diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api.dll b/com.rlabrecque.steamworks.net/Plugins/steam_api.dll index 319bb83a93bf48e9fb644d4098f0585c609b999d..74013a0264b758cbee55c905a9897e3d7a7c2259 100644 GIT binary patch delta 22893 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 delta 21726 zcmeI)cYI7+!#DiB_oNFVf{j+erv>W-S_=GpXc+wf4qOaxjx@nWv{*W+Nrlj=Kj>4h`(e5Yic<-!r1FY@D{m^u~cNQc{l@J;A&X8bI^2VK`y?Rh@}*3;DyY{_bxVkhA~d9XR8%Gd^d5TTOSXGdi3Xx&_d&yv8la<83A> zsGZM8;H=BeL=bOstLb5N#=qzCiMTfJOcdqvhuu(nXW~FEf8PzYcP3UWa7XQ(QPkeO zrbkt0ymu}?1!upV;=D($vznKki6C4GN371o_j&wk_geMt&!ecU0*_>S=SXe{HO-!0 zx%fP?a-uzuJCp8xw0Jvz*FC^J&Uw;`1s=GiGm2XxUey`z%^MJZYjWO^Pw=SeaoHIU zn#a?qyVaTaK9^tZfv0jNistf%kw|kU4$S52xCQXvJc8UM&J0}JvmJB4gLSxP_X^g> zenl=;L9MT}H8`+QWBx;c(Au(vkDID`ds20m9O`KDSbG##?DjkTh@?NX`*plaPDwI) znHoZsWq1_#;perxZgl(iXmV?3>9)U0C!Zzh$G_7}4`q1Xz z$Iy^ckAJ6GlD_sky^Exe|4wfr>3rT6y^|5N;fHqEM#u5BI!^X|w5zP_EPhBU&L;Ob z%KzE%9{rG?6(gm?`9m@F=vmf>F&AihA8+l{o}RQIt|mD(t}WxyogWw%Nf%f*$K}y< zRlY};+Vop~e3$md4H5s=Go4)XkKbwMJ+gnNr;>V&{+(`4$`AaV?o5uy|4zq{<1K%u z6UcG-@APt{I~6zhol!~(RR5hGM$&G-(-cX6F#KC#f0BOuJFO%)yvCd3H!vM{^7^jz z=}r8AuHEVL{GqM}dd`Aw7wKsJQnwa#0`K2lPYd~O-4*mrJ{R#Nd|~&#w2EhY1k)?| zjy(by?sWxrpXnlbVrW+5dWCs)%^7yP5sjU+W}!raUx%%X9%6k zYkJP`ZKQTq_CpH~I=#XW@A%?1{I#CpzQwBl%=U{f?#EZ}73w>y>wjjWbbUUq*JWD9 zH|#Br;+4*W$ymIp_?dmYPqg$Y9AV&!w=|=uIcZH%yALg0=ycEc;=%uil2iEQy+!nR z{(SFE^Zy-}@cAy!z1=g{{qG`H2e|)%x4&((RBGLRUN08>v#wYSeIP*v9={tPX$PToc zUodhIJ(>S9vMHAAhAD0734ChGHM)RrGinQcoqs<{O|R$K)CP10-!)ZAx8Y}}%4uKz zXzDO}InSnP=wyC4K12CG)1*CpW|JoLz~VYG`BT?OF249j&aa%_$y7IzQ}S<4RI;Bl z=hnYDqU1nl&dGmsY9zDHoP1uDE~)B>j^twY%wQ?1|IGSW<|r(2#`HmSHvc5O3H_D# z&1goK@sSy==`nmxMj$$2Q%0EY@);DC!;+j&@k8jYGba@nf8w8HOs2b92ac{lW2mN% zxlX59+m5Y33lnA=xXRON&=fUe#l%--WjVb)aAvW33AsXX@dG|%TpQZJ9~u{i&llr# zbPC^ed?>EbZM+PhbI1QdZ{+JwkfIfPOo*+PSdl!vaAuUtG<$~65GuY*f_JWcLMVNa zFPRWcTY2?FDW=27i8^{Dzipz34zoHY4yEZ)*7lS2G%d2uHYU=QXk&RJX4Hr;4&}d^ z0&3it{42{hnexE^jq;C=DR%H-Q|h^rCG0HUVv3$_%}<+BLiglTGxc-;zcaH1eU<-| zSr`2mkQI(~t!-8S-H;!cwVtMU@2TgRHy`*rQ=8Dot?tt}nx4f+W$&yy=0;iB>PDBN zxU2#nbgXAg@ouZf^fL_extPB?a|Fgz^H~q+_0~o?S82L3|6{fSmz2+`PbXS?&2eY^ z8s9A|%PR1GdKBH2+_V=uu(&!uX5MT15kELLhJI+>mwSk*`u5C!zl(^U&BxOBtatfW zbhSgLoEPbR)cI`AkEfy52a8b4SJq&&KTTib6^l8#7N52_j4rXRUOZhuyYP*dk4OF1 zEmzUCt#_B75HKZMts5<3S9%M7YyB3Cfb0#S0;aTpw{HGM7g_WEyeOd4`OIzdn(6xt zTv^DRsR(k($81;(TltIImih|+MmCENCA5ZK)=ArwTrno@?`ltX zFXFMY2H2?+EeeW`@R7S?QK5yq57ITPary27dI8^a?@fA!Rkm*pQ>9uSMqKG?;gKk= z`w;A#s`179RkhA+NA8X8SzpW2YfQVH(S1l+nT!-EKEiVc8dh71!`-`MeECXl$CV$+ z=Eocmx^+H@)r;j<9Pp=G@%aa8)9%)52kv>$t*rUSD=}^*m`ufwt*1|JVKBu);Ow2zdK+Xu8N;%F;Chj(XD+-QrtLi;^l`K7B0AnN%#f zloS1^-ihK1JM>MTv=p8mq z3_S_E67#-TTF<1H8{7G^I>6FU|Fw}b=9l~_Ohs*QNLp+|pm)LtBozsRYz`=cR2u{M;WSguv z-MWI$hqMT8udoQ?ctKfNS#lNIoMd`NRXWaAeInhErnj4QljuM?)!cIuD%stnldfu zr#9CxCW}V1%?xKk=w;?@BzR`K9L~%Vge1)`E1POhuMl5sLX4~#9%b_4a5swTo)i78 zujE{x;@##cVy1weU~Va4V(3*ivxEt8tt3{Im7SpK;u-O4QhoC&C2qONW>7K97_6SQ zB91vGsG&~!Q5HL=eTYZs$*lYCg2Mr)Dje?qG{m-7&pe`Om3d_Z(~R*PZN3n})U5n6 zuK9&;kSbJ~_jP8Q!v{!z9k{ahsXbd-5u zBqOCenU_T}wP~^K??^m0U&tgF5DC3tG|Yg-uoVu%d3XRX!37WE3&GGH$WJmJfc&iAZQz^{pYjkRmx|hI;7V#m zaD!?`a)n`$TxawA7ED#I)I|~8pQ=c%Ai%b*1=CL;DjbCO=NJRmWyH`CBgc#o4j7v> zASHe9$Pu_k!eN|Sethe%xH+N?Bazuh8o1Jf2F{Lcc?^oMMUzCx9in|@YtG0HgO=8N&n+MxE^ zem-u@jVR6n9gd?K$I6S?=67WV)iT~26X9%{Dr0|!<5xs*>%k3a;_v(juBr`9at3iA z&8SCy!So2O6a?l7E(zqPewH71{AU?bj+{@zzU5(Sge1=sN^oDqZDUfIwem{2EZR{L z$vMC-vNhVwob(d@`hp9;;!uMij_Sbr`d1ACpyw(lS(d`hcjO#@8mA?f&qZP)}ibvXQysAtsb59B5V_V#IWe zdH5kFfc7!ZMBtS-0NWw_6h@o39b%f0QnwB<;a*u7wd7t%``Q_?OB`V<;(+&f-%6!Vs1h{R($lib4S+YgZ)t@C7 zB3ubSaBFg#b>-o&^sCE1%c&4Xfq@h%|Cw)&KFsuW+i}{!?LKWjZD(p#>T|}x^#f9Z zJi%cmobGA%Jc2q3Z#(ZSxEdH?er{)i1UW%JBh2Ao^Qz#euiZ~(}K=f zmCmBHn|WpdQ(LfeRe6E@)#VZT&+@vnJAURcU5@`eWsSMbF`V-5 ze0fRh*`E=*i+M9SuPz{MjHkUCJX%T_epoq#-6&j&wf1yG0$z z?N|RywD{aAlJjo;a|n`#Cc}n=@!uHdm+; zbCfm~3b7J^PaTS4ApuNa0Xvie*(L}f22#KRb|?j^9*#i_q<|%eqH+=Dfdi-zTr&{Y zMi>JrkPCTG7($ubonkyy7OX2m{Pr&lz(K@W#A6_Zd?QdDm8*?PA#MRX6hbNZnCF~g zIHLupl{UmRajFSLeH!5sV1NY3t$|CC5K3`hmec`tvLI~-2aq~ajepizh|mBDU;+!+ z!2whgR1;z#1q!QEM#_YU1$=}kNHU?6q(gBth=Bw!fgKz`HN}O11yV5s!UQ0VY(hxd zB)1yksF(wB12{VZ&mDufv!O}3rbawDBBbFg!MHIv@NW!u|4oehMz)gM1cZAO&(E4+^0aVlbq9Si}*sB*e915T-ybFnO%` z_!%bHXc6J2Kx#~CCnQgeG=;U^fXWCFCV-s`Cxp2WLvDt!5E9UWr3i(150Dl!AWQ%< zo`txk3GqB~3=DWM(!CDEDZC?uQj7xwA_?H^8-#g41`26j2jY|r1tA7fAQ$pTh^Ht- zSPEo3_{fomidk@;0dW=&k$}(yWH4F~+My6gOO%rQAdCYRO-lwJrNBj?RERu;1|YLB z2B8V^NE&>UI1UC#fLySH1IR^7%j0AMk~|WUuCsun+RwOi9FR&IRk#R7s}P|B1IB?S zPe8L#r0LMC267xsU;%OgG7U-B*hxMHASq8SNUlT14;h?fAUbfI!uO~`psM3R5T<|y zWh^AbxHA?aQVK#27b7)ANTHuf(L^bT+i|g6gbrLF4`E&dkN_sIfE~yH zb|5STAAEyLx|1T~1)&8KLl?LKMs1)hX z6y&8K&f=V3qdgaSdE^|(MLxM9Y5Ej&Z7$Ad(fnl1NFdij84AZOjg0sR!p+G++|)T6 zP-D`3K02HPWWL5ABr6%Ic?#m>m;ue3i!cTQFb`oNl!6`Qee|dRD$gP$l_%?l1!=P8 z#2_yPc_|2UjrbrfK;a-6=_VA+BY8kpKnFrHxX2Wu3`mo{L*??Ybo(Gpq0%fu1Bv6@ z1QMd9ObE%ScaCzz$pe+*9^_%{NDEN`GH#4y1td@IASWP`3@8U$gY>%vwJk-yPXzK% z0q0_Zcnp{zkK}`Mm5W40AOUj04y7QBLU}Mj9tlx7GBs1sQa;Vl|75Ws%WMLgwh#qK z7nCAoo1+lqqE%whLb-?=P}w|$h2Q|H1th zKFXuA3CJ@+f&t|ak{Ll>W_gG^fNFzKgY$7yA>uJW2A~O{1?*rlGZc)8<&0@WG$7#A!; zJC2iO-GDe*>P=)H7=uI#4DNj97;n$8E~f$WGVoScW_K6qL?Lh{58l16v< zbip-HNdrP5u9JY!5Qsd4WMyShjwO{t+D`Itk5Yufc=Z3TmxK>$?SsL?#-k#*30a1J zjcjsr@-8PY5mJE|T+o1W2|y}Io+gE)@x`)5AUbq&dfCcQ}0IE0gAq8^F!2)^ai`STX#+22_0t-0Spm;yj2}(hjgfzrJ3YZ`l^1u!b@ad0ozyh@v z*I9>SPzVm7*5meI0Xz7hOakO?K;Bxi&>?d6I=-{SZ=9)M0yAubGf)ct-x*2`{a_C4 zf*bG|f_~sPQs@WMVIMq)ie>m-2Vx)t7QsPhrGzAy4qM?WP_6<>3|%49h>xvs z2Lx^cDhztSG}r`Z;XTxH7f^aggqg4#@HIN+>mi_8z(m*u_rcE-U*bY4tc9!K?Iob1 zU=A_yu7D5Dx5!(cg_g?G@<8($;C7+4B+cn*~+3aAJe1uNk){D8)l1XKd7gBMV{ zvVe+#sqh!vgDO6F02m63;UJXw2#i$qD){aidc!Q(4L9K{)b$lm9bh!9gj4ViYE?xS z!9>^y7vL*|`w6I?Favf&3Dl{Eucu)wY=YZRu{yd2`d3H)&qw4uyn}!m_~IQ>U>WR( zM^M3EK9 zkOphvItYR=upkNM!G0)(y21G83dn?=@Cf{B<9tYkjc^%0LQNt19Y(+sI0oN=tAnQp zBae@R@Dlv$V&K3a_ycTk9jJN&N(3437dXH>L_n#aFU*FWa09+Wn>8R}oqix*72?9yY-(@DgKXf@H{rgYX1=B^ZD( z6js1-cn85!%mf$%o1q9iWEkC$3_Rq+0|=C(EKG#$a2t&8@e!iHw1IK(7o3N8;Hwm1 zgNvKO5;z1epsET}76w8N=4(x*m zP*;nA0%Kt{oQ8K0tV2Gez$&-^Z=sGJPX^QBAbbLq0WAwQcn6^oxDRZBVyGU8b0Uox zB#3N-BJhgBlfhtE0;j>fIrHUg?U%zzzm54_uAkU&?M20Ne#JlhE<3G{@Sup1tNZ+pyZNP_ur z1l~e}Xbd!%3;E!HN*&NbU`)WrEU>{pP`M*o07k${I0HW*JO&qmsgMUZp>ix%GnfSH z;VP6t!%hOK6%2y8@E4qf2SCN4dm#eG#i9SVA@UFcI}51JkON2HJ1D#0#&u zcn^|Z0xAI(!!_{gjVFUF*bna^qz@Jq$br4^6axF=VIT+g!7FHzfcFRd2{*ti5o?YS zAH!iaT!Qb=upep$3*ZENhlWWQlwg7L!1Tw;2oqr+ltTCbR2~k1??8+LutEvcAB2|_ z`~f$iRx-L1jLYzG8!8P(ZD0gg;3E70@el!(05c#T?n9-aSQj7}7C-^Kg@9q0DUb#$ z;W)g52E%bPmHp#2~WX) zH0CX&!WuXOpP}&>?E8R+v+xFlV=*hh2>am;gp9+}f)RFt1N_IMqDFjVz$Q2cf(htX zNQXRl4^1Yb3t$;s0k=t*qA&m!!r$-&ye11M1@wb#*a)ZK6;#86YM>v?hHY>ai~$bme#0biiuRO|^L1(v{3 zD4mM_uQ3gC8U{ix?1o!FXJb`_IG6;h;20Ex*K{;Jw1HGGLq6O9YKDMn2AyFNY=-mj z1_EbdfITo?I9gD!Wk$5pB$_M&q1OJ=l~{I59h%693R1p@V0_vm<`+E2K<2fe_%F12AIJP z#o%tnl!Uf07Pi41a9NB$ae+9P1v}stxGX_FB*GNf23MA#|KA`IxD?Y1#=>Se52X;i z3=0kPgIqWY&%k#%o*w$ZRM-Z$L9hY?6Ov#y9DvtQZzY}_Oze>9t0IVmJ}?pH!e%%O_rP-vDhtVw1*_pGJcD}1 zwRn$17HohM@C-cGVak9W`odUP1b@RV_zb@5v9du5tb()f4eD&b(?SNUgyT>GwKigN z3MpWQgJ67#kLsJy3NQ>-zy97m#gYOos6)+N(!)bU2 zb++OfFafr~4PgGl#s>QSh5pY$WHX$DVsP7rCx@2M8^*%|*a8Lc0DeI2?Pyl$0TW>* z9DsY^n}=x#Jzxg>1*hQ!)YyR?HuQjjJEQ_?G9t@iAKZfXP-!O?A7~DJU?Thpm!Nc~ zExed%?O~f-%Cx9zdm|7Wb+-k03$`&Ezf}?};f7hUo|OO8vSIzef7nI-5aicS59E>m z*vr1_civd!^^axd*QxgZ|DoFdr+=ungK0G&JtlQzQbhm$sRPo|DBG#cf`;z-I|ap+ z+~q2fSR_-JU)cpB_nwp+rJ}0Y8Xgv0psUL9kAW&mgio>aQ${Jwo<{{=E6SbOBokS- zDg}a`F2+yfi{cpkg%X0-a#~SEK`W~$>nKIa2xY7?Q8`LEMLA!&TDe1cSV^m@sOqRh zst8rA%0<0P-JA>2OwvT_cIj|(0!3{?;3rBHjS@`}%@?f}?GPOnT@>9Hy%y2pD&jg~ zkvKvcEK|z*$i~W+$}F;jvd2c*Re3MPa>Z>$wsM2=xYAoCS5;TPQomDwQ!|_=SDCB9 zwdPK812q-2@!C<^aoU;MCEAVJGun&V+u8@(672^qrE}4F>HKuTx<#ZB58?BqD%hu)Umgv^%+UjrUpX)#AsT6!!h>Ci#RapgV{La=99hNUtY*d_AJX3s9 zxF~&;4U{Tn59J_brgE`zlk#unb>$1?8>K+yg=cTerE;^m{oHe|uBM@;siub}K{H6R zMDtMdLi1MRt8J*=qCKIlqwAy_p)1z8==J(8`my?1`sMm2a*%{eKS(v;?{#q_l$Q4@^`3k$@wBm!pQyHXeq>NW4DVHkk z%CpK>XsxO$p{j|hnM$VOR4r7|s;;Ue)dPqIbqQ}!kMmc@7zxr!=^d_@5wp{Tx5)KnxDsYH>YR-z7~cu`MLf6-7;nrJMB z&^*z4(N@t;(H_wO(NWPE(G}4P(MOT1*h}myt|1nR>x-L;rDBy>FOCssh$o4&#B;@e ziVMZ}#4p63#4eI*k`PIlL@ZHC43gH8Xh~N|FG)Yi5J{?Jnq<9Xi)5GNsKj_j@<8%b z@>=pm;vx-{s-!KY(bBHce$o-r4C!QPwse7XiFA$hlhjLAUlt*Yl?{}o%f`tj%T~zt z%C5@p$sWm`%3jLKWOd~VxmMm>-cjB~-b(muFA-9Ix&9%iq?5pXoxuTJ4+i8z!19W1YQMW+1 zR9B$8qPwYkp!=$0^qzWueYn0gx-m_krC+DtsW+b0U)MYI#d^v@QM=HGu51N11pOC@ z9_+;SVu!LBY$iK{{R2I@iOpw^uxHsz>?8IW`;KKq70{1?qK4=~y{NsY3%V~+^rz^g z=)CB%=qWnuyU0ac0o_#--PKSWE|!Tk;wW)jaV$FOsQ9G#kx~3cOiO~$Q%xkzBrVWO zagzR$VUn>DqhzOKzvQIEA^9Mo(FI$ihou*#52PNl5Lp&x$!ggV*>%|iS*h%cOdzi; zuO<(WHn@2uJVEMaq{Kz4f37xTk;3;C-QglAVr8mq|l=aIw^)IMxqnuDV8XV z=MHoi*EM&X>%u3EKwDAkr>&zE zX_Z=?wzamawy$=mcA`<6g$2W^wPQuQqP?Sij1}#T_LJ5{=c}us3(_^fv{dSJx)!=_ zI$9s5SL=JC_r~cb>vQzy^jGy%9{$81i-`y8i>b%4aqJ%UG&@stT;vc1iPhpx;$Gqb zVsFfaAW1ij{-Kg|$xO)t$zjQ9$z{oXiSe1lTUu4xK&nB*Hj;^D?PQ4<-TSc!U6I|# zLL`!_olP1ipD3RypNU4zlkdj3zAb+#|0rh^o{B(>Y!(ZZMiHrKt>~zTSM*l&R}598 zD#j_MC}t|=D^@5rD7GkeDE?L)Q(RU2qj<0Qp=hq`s?1Pk8I>Y+vU;RCT|HJkQEgIR zQwLx~hj5L!rra^@4Q-6>xsJlZS*oY(_?uNc={Po*y}_2U@7ZA@MqE|AM-m`gi;-|o z_FDEsCX~m@Z^~85zRGmvTxGtpKzUmEkFp|OTUyMVSXE!ucvX(dta_|^uez#cw8obD z{bWtXf~-N%R6G>R$V_pbI9*yzCREhN^9)twV4zs=3|AHR6<;s~m8vvVmg>5i#asu!wvs${h35^k%O^7(n*3$;52aR|q9 z8m=wZgENlgvboLNLGB87pL@l9=R7pQ8nK4cyuo|@B6+V1X|g?_)`)sZc1lBKLF)SI zB=u1Bb@e^<1MV3Ys0q<@(@fXqXy<8pty#MaFPF7=L2uC>)o#&k#~Z|^`&)NNcT{&m zcSd(XN3k>|#PxpP_eft!KS*0E+jE_{ z9Bu)(oKz@=cK$7M9NUx4X6LZ?B*;sksdNOLM7+o>S|(a0S}WQp+9KL6vWje??HC7_ z@e;qSyr+DqJftpCzgPQk0i0R$m&SNXQ(aq6E7rEs#%lXxMvlRAEYw=G>$Q8eGj#Lt z4*XO12}96JUsWHXm+M>TM>*eoc$25lrJWC~di*)!R6`8D}{xlqvtTb}!v2``LT`Kv2CD*G!(D#u{MF$05TiE<-W z{JW@YWxU<%t1>WT_NlI`+|*Un^|>zG3~m{hk1fb~&RgTF@z=iBe$%$mXX+^vO?F|_ zIyP3kR(wTVNs=VFBq^3;VOKFgHb=Hmc1U(y_C)3*uaB2ib9rz1Xt{Br{BL=o+#!D< zudWDE=oEt#6BTn6%M`mXSILWsQP#k2u(`5>@{*RyrGM^R@X|geDU@iX9i?5Q-!M~Z z$?D05;0E_(Rpd>v_^yy|mp_!dVWAzbSgi2Dl$)>Gs@kE-R~=WKQ5C8js()0^RF&1C zMzu=aLLI9fpq`*!tv-kOUx{nL$uTxNqR&Thi!eC1aaKI*4X&7b!M))sY66`bFOjCb zrl)40W~e3w%kB!zCiLb`&1G!F0<{KogL0>~KwGH2t1Z*IVKtTL3|L9ybTf6; z^v(2Ay!4E;b5ZFfauZh)UlOaO!=$sMo1|{C$?{`(0$Q<3QCB$~&96~+Qt!dQDO1!CZK`=P6-Z>R60U!y;SrTOQz4Qw|y2k*|O>AcBPqo0v7Wb^0{*30{LR+i*m302)3MF3aMf=res}Z8|6Z! z5{qV(ss6vQi)~S{e?&?ahyYbUE&@1(A z^}X~X^d|iR>~He1xp}Jps;5e6vcI7!vbEXHcrUt3>PQAjMoXqjjH@M^F-dM>?RJwI zq^+dWrE{fbY&EV(?@B*Pb$B0+mu1WL$j-|=Ycg6`2ZN@m*0B zTeZnb3w}ostEQ^%s-CHvaQ(R@++MDLyTtXz@cc`2NOMZ_T;q*jU{-05W5o2+&A{q- z-l&^}HSY?Z75~R8sG&PHUr}tJXt}6@xEgxV1^d@%>1Syr**^4}PWiX0t$LJZqGld` z<*;Fk5u{b&f;L>RvMvIf_bFI#AM4z(Q~0Q-d>D$wHEA{!n>dN|zSJZ$$+yb8iOtI_bj^0mk2CsPdi;$A#WK`#)ba%zEK0!Yy$jpN%OW90ZizTpl8tWpLz<5z zG(Z-Jr9~@mferRRY^!g`?_yt92U`z~qMf1-w$z&xM-|@6YRX{jpgZCHzgX#|nxLAZ z%Es?QEAYbIuezeTg*U&ex`H}h-B&#vdk*6a^g10n4p-0-OM4Zj}w$T)pfXm+y;$On~aUzeC-On`F3cJ zXdmKtsw&vP)zdZ6h3jM(rfqc{bX|1)@Js0!=S%G8fBQ4cR&-rZ&uhNJr}n0LxDSIK z%dGc@n`e{k*4ZB`((a5Uv)*)MWtnR~5OnH1aa^B+QJYq450~|keCqq<`r_AJj$Z!s zwsHFgL)RW0bmzJyGw2?h>GFfk6g;*F7@A>xDn_<-98}LJOEAJO;u4v3 z-T$l=?TT;l>B?vc+Kb7gY3j)1#HoXh&3a$aV_l2WNke0=tE)sF@XE-DUbxFUW_JUh zA3-Na&L8Ui$CFyUTEA-k&!J_B=c>)`*JDrFpbE>AjNj!$rhIAqsVFpM+Fi!~?bzY_ zCw)FK+*5mS$mr=$XC3%7wRiC7Q;&|19<7eMc=2)%`Ml$6?>7rj+Y+y(m2?;`nKiL@ zi?DV(Vjf4R74g}3_P#j(uc%eD>R3Ew=Bls5YM88`O*YFej~R__M>8(sRw9Afd8O+Z6>`3ZL-UJ@RLAM zJpzpyBy>@;N>=XXnULL@&i+2kebE({uuiqfp?WU{zhRz&E-W8hm7CPjv|L^y9{BIS+Rw+gl9Kh z6zo#7TUv6WI4tq!cnC{R3r|WN_Um|ZdU}ewSu^BF!~0|WBw_r7CygB5?0DLRt2<4*jAO@`x4#iItl05aCd*_;nL|qiA--e)mXE(S&7EV$to$MfHeyJ$4!pDb z>C$@ppVWFHtTcB}%kPn?vFTp*TCLr(;8Oj9lejnR*>^S-OhPJm)I<4Y2zKB{m;mNL|h`KYsPG8ef(Ba#= zAGZEulKR%`G&n2sORcyUxo79Bu8~&po$>7eRZ6?J%dd@}aLaqYR$Lfx=6&L~3=eAb z{wb9{+3)wdP*5fHNkIQLH|j3Us22G?Ost%8>s`W{eY-k+?d3=eso!zuy;F@hrA5Ww zI*@d&cF$!W!vi{24f@!&;;6}H+dKW#=Z7DzZL|8z`HhF-FYN0+I&o&-$s2dg9W?f{ zeDVD=jc&<$PTw%A8Jp>fnd4Hke42Z$u7B;CIAC(bBiCDU^O0)*IibijAK;wktwPwk z=v++mfPW|Bf6VYsBS)r}&uoz#Q&}Mrlga#RX8%f-uNlVw7i-4PJC;3v*s_&dtuB)*G@NW-^WNgPTUTGHZ1SS7Z`bat ztMlJl?`z_kbetAc5Tx0D;nr54_eEQ` zK8-Kqe@*rCnChqhW2XMkiLAg({?Do2;`y5G?-rcN6otj+Y}{C9#oOU0E3>|2E?1@L zG8Yfl4FQAy^MUbi1R+&C*m1vR9H!xLcIeM(81*X?(@^1@hQFsE86Hs)nD^=Ilqo;g zi1F-LR&7yQPvu zT-YXTqhB>+=<0#wW@%V)#*7*BUl*LHm^kyklAnvjs71a{W2eUtKKH8V*2F)P##_f; za8nqjzG^r1(CG^T=KHaYM=J>Hkmd);|7yXDSn; z`?U<2o-}*Du~XCSjc5Kdw)V9Oe(O!weOskiGp_Q}_{sST27Qf7oVn@!&_C?&x(%*4 z@g%)tZ=(#`lB8*MXD6N>w{UXzZ?h{u9J!lrkUwnw%jvOo9(7Atw$D2(boiQr$$uBr z4{gPGOl-5QYX1F+k&%s#`^R61kme8Uou5A8eY~V@v%2z~?bfti~DlC#BocI_(JUa5#uzY{n1SLT~V7a z$f)AF`QDzA;k8t^J|v~>ojUkjo9rK%?zHYz1uW!{7znj&k-t6eMc|rFjZWVOrsyyQk zKj>b+Q`E)*AJ*LWyWN#PGd0`P*}UI(gFbF+S*SN3*~_~(YP^Af}Ln}ceu%NS~KBy(L>E=l-y2 zZJu<$bNfQ879m3_9-rSkzq_MNMA>D%WbDG0U%&Kht4e8xtZ#_iM3eStxRi*v$2*$M&)a7SxfXf<=$;45A4{vf zd6`w*W$PT}-hThwi7jjrQ&{YOFtm?%#RU7qI!o_HFUol8zv;r4US7BK748jK|GnF@ zs@0Ypz7taEQqZcp5w~X-1^!W15Hxps+OUU$7Ol6==^OU;d)I>G9`%;?%C=s7Hf+%6 zC4XFeRQjY!PW0@p1);*q&*?YU7yIU1iay#%9oB15?*qXj+bBxX20x5r{?44VI+J19 zOs46-8%a+$Q6>|FteOl>vs1FmUl7gzpT8jf=YG}P*4;&G6p2J)iAcq&WQrcxss7p@ zd%B3~x(L<1(-o73TjQtSxLRXIY{P*=n@ZzqZeEhqFVwhY?({F$|Hm+({$hB^jE7O{{k1X;yQ_=L2+Iwk6c-d-sy|Zzh9Iv}Ay3C|cc+|rfw(@P7zw)e) z@4@4;y3H3qtF`ckd-(2Z*GewL9WsxfmtCpE`uw?e9o;H0gpX|AVKGbBbr+m`+N^!0 z5i>fi2z$`$!ui>$CCLX;G}}T%Z?9`(-_7-H8FRKt$EDe4Y!M6Ng5QJ|u3)~M^sL)T zZIrie9P#*7Zf4T-d;PRC0*|h%-0ji8YdhA>dlT}ss`vUIcPpHj?w(hp)w!ZBlJIj0 z3l`s!YcD6x8JF5}wO-n`O~Z-vRwS?dR^2;iydm$qb?w9-e>FKTxOmR6>DX&auj?U4 Oic^dg-r~0n{QNHgyx|%E diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api64.dll b/com.rlabrecque.steamworks.net/Plugins/steam_api64.dll index e1ca6923adda8e2cf8c520593ad069011f69646d..2154994cae70d6b1d9578e6836c70ad3d0dfd5ca 100644 GIT binary patch delta 12883 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 G)c*nEg{;c} delta 11810 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 g+I?)J2kZ7 + /// Steam Community items equipped by a user on their profile + /// You can register for EquippedProfileItemsChanged_t to know when a friend has changed their equipped profile items + ///

  2. ZPiBFi@yz?_7C|eFTaWbvV1Yi#8 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 ???? CFBundleVersion - 1.53 + 1.54 CSResourcesFileMapped yes DTCompiler diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/MacOS/libsteam_api.dylib b/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/MacOS/libsteam_api.dylib index 8d3c5eeb87d48eaa3a62ed8c63a1a484b920de82..314c5d74783583d70a4c90e371a35da075e978e6 100644 GIT binary patch delta 149551 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 efW7 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

+ public static SteamAPICall_t RequestEquippedProfileItems(CSteamID steamID) { + InteropHelp.TestIfAvailableClient(); + return (SteamAPICall_t)NativeMethods.ISteamFriends_RequestEquippedProfileItems(CSteamAPIContext.GetSteamFriends(), steamID); + } + + public static bool BHasEquippedProfileItem(CSteamID steamID, ECommunityProfileItemType itemType) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_BHasEquippedProfileItem(CSteamAPIContext.GetSteamFriends(), steamID, itemType); + } + + public static string GetProfileItemPropertyString(CSteamID steamID, ECommunityProfileItemType itemType, ECommunityProfileItemProperty prop) { + InteropHelp.TestIfAvailableClient(); + return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetProfileItemPropertyString(CSteamAPIContext.GetSteamFriends(), steamID, itemType, prop)); + } + + public static uint GetProfileItemPropertyUint(CSteamID steamID, ECommunityProfileItemType itemType, ECommunityProfileItemProperty prop) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamFriends_GetProfileItemPropertyUint(CSteamAPIContext.GetSteamFriends(), steamID, itemType, prop); + } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs index e27e7fd5..b9577a3d 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamNetworkingTypes/SteamNetworkingIdentity.cs @@ -42,6 +42,7 @@ public struct SteamNetworkingIdentity : System.IEquatable Date: Sun, 20 Nov 2022 18:04:01 -0800 Subject: [PATCH 30/55] Update to Steamworks SDK 1.55 --- CodeGen/SteamworksParser | 2 +- CodeGen/src/interfaces.py | 3 + CodeGen/steam/isteamapps.h | 3 + CodeGen/steam/isteamdualsense.h | 169 ++++++++++++++++++ CodeGen/steam/isteaminput.h | 8 + CodeGen/steam/steam_api.json | 20 ++- CodeGen/steam/steam_api_flat.h | 2 + CodeGen/steam/steamclientpublic.h | 1 + CodeGen/steam/steamnetworkingtypes.h | 2 + README.md | 2 +- .../Plugins/libsteam_api.so | Bin 420805 -> 421001 bytes .../steam_api.bundle/Contents/Info.plist | 2 +- .../Contents/MacOS/libsteam_api.dylib | Bin 609952 -> 610128 bytes .../Plugins/steam_api.dll | Bin 264664 -> 266128 bytes .../Plugins/steam_api64.dll | Bin 296408 -> 298384 bytes com.rlabrecque.steamworks.net/README.md | 2 +- .../Runtime/Version.cs | 8 +- .../Runtime/autogen/NativeMethods.cs | 7 + .../Runtime/autogen/SteamEnums.cs | 1 + .../Runtime/autogen/isteamapps.cs | 8 + .../Runtime/autogen/isteaminput.cs | 8 + 21 files changed, 239 insertions(+), 9 deletions(-) create mode 100644 CodeGen/steam/isteamdualsense.h diff --git a/CodeGen/SteamworksParser b/CodeGen/SteamworksParser index 27010524..3f97c62b 160000 --- a/CodeGen/SteamworksParser +++ b/CodeGen/SteamworksParser @@ -1 +1 @@ -Subproject commit 270105244015cce1030ca094026466c58e69dbf3 +Subproject commit 3f97c62b4c4e0a72d23ee9fa97e4ee7077ea3a4d diff --git a/CodeGen/src/interfaces.py b/CodeGen/src/interfaces.py index 4203e29e..3f3e25e2 100644 --- a/CodeGen/src/interfaces.py +++ b/CodeGen/src/interfaces.py @@ -82,6 +82,9 @@ # SteamNetworkingTypes which are stubbed "SteamDatagramGameCoordinatorServerLogin *": "IntPtr", "ISteamNetworkingFakeUDPPort *": "IntPtr", + + # External type that we don't currently support. + "const ScePadTriggerEffectParam *": "IntPtr" } g_WrapperArgsTypeDict = { diff --git a/CodeGen/steam/isteamapps.h b/CodeGen/steam/isteamapps.h index 82d01215..fd6b3340 100644 --- a/CodeGen/steam/isteamapps.h +++ b/CodeGen/steam/isteamapps.h @@ -108,6 +108,9 @@ class ISteamApps // check if game is a timed trial with limited playtime virtual bool BIsTimedTrial( uint32* punSecondsAllowed, uint32* punSecondsPlayed ) = 0; + + // set current DLC AppID being played (or 0 if none). Allows Steam to track usage of major DLC extensions + virtual bool SetDlcContext( AppId_t nAppID ) = 0; }; #define STEAMAPPS_INTERFACE_VERSION "STEAMAPPS_INTERFACE_VERSION008" diff --git a/CodeGen/steam/isteamdualsense.h b/CodeGen/steam/isteamdualsense.h new file mode 100644 index 00000000..5acc8574 --- /dev/null +++ b/CodeGen/steam/isteamdualsense.h @@ -0,0 +1,169 @@ +/* SIE CONFIDENTIAL + * $PSLibId$ + * Copyright (C) 2019 Sony Interactive Entertainment Inc. + * All Rights Reserved. + */ + + +#ifndef _SCE_PAD_TRIGGER_EFFECT_H +#define _SCE_PAD_TRIGGER_EFFECT_H + + +#define SCE_PAD_TRIGGER_EFFECT_TRIGGER_MASK_L2 0x01 +#define SCE_PAD_TRIGGER_EFFECT_TRIGGER_MASK_R2 0x02 + +#define SCE_PAD_TRIGGER_EFFECT_PARAM_INDEX_FOR_L2 0 +#define SCE_PAD_TRIGGER_EFFECT_PARAM_INDEX_FOR_R2 1 + +#define SCE_PAD_TRIGGER_EFFECT_TRIGGER_NUM 2 + +/* Definition of control point num */ +#define SCE_PAD_TRIGGER_EFFECT_CONTROL_POINT_NUM 10 + +typedef enum ScePadTriggerEffectMode{ + SCE_PAD_TRIGGER_EFFECT_MODE_OFF, + SCE_PAD_TRIGGER_EFFECT_MODE_FEEDBACK, + SCE_PAD_TRIGGER_EFFECT_MODE_WEAPON, + SCE_PAD_TRIGGER_EFFECT_MODE_VIBRATION, + SCE_PAD_TRIGGER_EFFECT_MODE_MULTIPLE_POSITION_FEEDBACK, + SCE_PAD_TRIGGER_EFFECT_MODE_SLOPE_FEEDBACK, + SCE_PAD_TRIGGER_EFFECT_MODE_MULTIPLE_POSITION_VIBRATION, +} ScePadTriggerEffectMode; + +/** + *E + * @brief parameter for setting the trigger effect to off mode. + * Off Mode: Stop trigger effect. + **/ +typedef struct ScePadTriggerEffectOffParam{ + uint8_t padding[48]; +} ScePadTriggerEffectOffParam; + +/** + *E + * @brief parameter for setting the trigger effect to Feedback mode. + * Feedback Mode: The motor arm pushes back trigger. + * Trigger obtains stiffness at specified position. + **/ +typedef struct ScePadTriggerEffectFeedbackParam{ + uint8_t position; /*E position where the strength of target trigger start changing(0~9). */ + uint8_t strength; /*E strength that the motor arm pushes back target trigger(0~8 (0: Same as Off mode)). */ + uint8_t padding[46]; +} ScePadTriggerEffectFeedbackParam; + +/** + *E + * @brief parameter for setting the trigger effect to Weapon mode. + * Weapon Mode: Emulate weapon like gun trigger. + **/ +typedef struct ScePadTriggerEffectWeaponParam{ + uint8_t startPosition; /*E position where the stiffness of trigger start changing(2~7). */ + uint8_t endPosition; /*E position where the stiffness of trigger finish changing(startPosition+1~8). */ + uint8_t strength; /*E strength of gun trigger(0~8 (0: Same as Off mode)). */ + uint8_t padding[45]; +} ScePadTriggerEffectWeaponParam; + +/** + *E + * @brief parameter for setting the trigger effect to Vibration mode. + * Vibration Mode: Vibrates motor arm around specified position. + **/ +typedef struct ScePadTriggerEffectVibrationParam{ + uint8_t position; /*E position where the motor arm start vibrating(0~9). */ + uint8_t amplitude; /*E vibration amplitude(0~8 (0: Same as Off mode)). */ + uint8_t frequency; /*E vibration frequency(0~255[Hz] (0: Same as Off mode)). */ + uint8_t padding[45]; +} ScePadTriggerEffectVibrationParam; + +/** + *E + * @brief parameter for setting the trigger effect to ScePadTriggerEffectMultiplePositionFeedbackParam mode. + * Multi Position Feedback Mode: The motor arm pushes back trigger. + * Trigger obtains specified stiffness at each control point. + **/ +typedef struct ScePadTriggerEffectMultiplePositionFeedbackParam{ + uint8_t strength[SCE_PAD_TRIGGER_EFFECT_CONTROL_POINT_NUM]; /*E strength that the motor arm pushes back target trigger at position(0~8 (0: Same as Off mode)). + * strength[0] means strength of motor arm at position0. + * strength[1] means strength of motor arm at position1. + * ... + * */ + uint8_t padding[38]; +} ScePadTriggerEffectMultiplePositionFeedbackParam; + +/** + *E + * @brief parameter for setting the trigger effect to Feedback3 mode. + * Slope Feedback Mode: The motor arm pushes back trigger between two spedified control points. + * Stiffness of the trigger is changing depending on the set place. + **/ +typedef struct ScePadTriggerEffectSlopeFeedbackParam{ + + uint8_t startPosition; /*E position where the strength of target trigger start changing(0~endPosition). */ + uint8_t endPosition; /*E position where the strength of target trigger finish changing(startPosition+1~9). */ + uint8_t startStrength; /*E strength when trigger's position is startPosition(1~8) */ + uint8_t endStrength; /*E strength when trigger's position is endPosition(1~8) */ + uint8_t padding[44]; +} ScePadTriggerEffectSlopeFeedbackParam; + +/** + *E + * @brief parameter for setting the trigger effect to Vibration2 mode. + * Multi Position Vibration Mode: Vibrates motor arm around specified control point. + * Trigger vibrates specified amplitude at each control point. + **/ +typedef struct ScePadTriggerEffectMultiplePositionVibrationParam{ + uint8_t frequency; /*E vibration frequency(0~255 (0: Same as Off mode)) */ + uint8_t amplitude[SCE_PAD_TRIGGER_EFFECT_CONTROL_POINT_NUM]; /*E vibration amplitude at position(0~8 (0: Same as Off mode)). + * amplitude[0] means amplitude of vibration at position0. + * amplitude[1] means amplitude of vibration at position1. + * ... + * */ + uint8_t padding[37]; +} ScePadTriggerEffectMultiplePositionVibrationParam; + +/** + *E + * @brief parameter for setting the trigger effect mode. + **/ +typedef union ScePadTriggerEffectCommandData{ + ScePadTriggerEffectOffParam offParam; + ScePadTriggerEffectFeedbackParam feedbackParam; + ScePadTriggerEffectWeaponParam weaponParam; + ScePadTriggerEffectVibrationParam vibrationParam; + ScePadTriggerEffectMultiplePositionFeedbackParam multiplePositionFeedbackParam; + ScePadTriggerEffectSlopeFeedbackParam slopeFeedbackParam; + ScePadTriggerEffectMultiplePositionVibrationParam multiplePositionVibrationParam; +} ScePadTriggerEffectCommandData; + +/** + *E + * @brief parameter for setting the trigger effect. + **/ +typedef struct ScePadTriggerEffectCommand{ + ScePadTriggerEffectMode mode; + uint8_t padding[4]; + ScePadTriggerEffectCommandData commandData; +} ScePadTriggerEffectCommand; + +/** + *E + * @brief parameter for the scePadSetTriggerEffect function. + **/ +typedef struct ScePadTriggerEffectParam{ + + uint8_t triggerMask; /*E Set trigger mask to activate trigger effect commands. + * SCE_PAD_TRIGGER_EFFECT_TRIGGER_MASK_L2 : 0x01 + * SCE_PAD_TRIGGER_EFFECT_TRIGGER_MASK_R2 : 0x02 + * */ + uint8_t padding[7]; + + ScePadTriggerEffectCommand command[SCE_PAD_TRIGGER_EFFECT_TRIGGER_NUM]; /*E command[SCE_PAD_TRIGGER_EFFECT_PARAM_INDEX_FOR_L2] is for L2 trigger setting + * and param[SCE_PAD_TRIGGER_EFFECT_PARAM_INDEX_FOR_R2] is for R2 trgger setting. + * */ +} ScePadTriggerEffectParam; + +#if defined(__cplusplus) && __cplusplus >= 201103L +static_assert( sizeof( ScePadTriggerEffectParam ) == 120, "ScePadTriggerEffectParam has incorrect size" ); +#endif + +#endif /* _SCE_PAD_TRIGGER_EFFECT_H */ diff --git a/CodeGen/steam/isteaminput.h b/CodeGen/steam/isteaminput.h index 1c18f033..e28f274d 100644 --- a/CodeGen/steam/isteaminput.h +++ b/CodeGen/steam/isteaminput.h @@ -682,6 +682,11 @@ struct SteamInputActionEvent_t }; }; +//----------------------------------------------------------------------------- +// Forward declaration for ScePadTriggerEffectParam, defined in isteamdualsense.h +//----------------------------------------------------------------------------- +struct ScePadTriggerEffectParam; + #pragma pack( pop ) typedef void ( *SteamInputActionEventCallbackPointer )( SteamInputActionEvent_t * ); @@ -895,6 +900,9 @@ class ISteamInput // Get a bitmask of the Steam Input Configuration types opted in for the current session. Returns ESteamInputConfigurationEnableType values.? // Note: user can override the settings from the Steamworks Partner site so the returned values may not exactly match your default configuration virtual uint16 GetSessionInputConfigurationSettings() = 0; + + // Set the trigger effect for a DualSense controller + virtual void SetDualSenseTriggerEffect( InputHandle_t inputHandle, const ScePadTriggerEffectParam *pParam ) = 0; }; #define STEAMINPUT_INTERFACE_VERSION "SteamInput006" diff --git a/CodeGen/steam/steam_api.json b/CodeGen/steam/steam_api.json index 2ca6002a..25e3e7e9 100644 --- a/CodeGen/steam/steam_api.json +++ b/CodeGen/steam/steam_api.json @@ -2099,7 +2099,8 @@ { "name":"k_EResultNoVerifiedPhone", "value":"123" }, { "name":"k_EResultInsufficientBattery", "value":"124" }, { "name":"k_EResultChargerRequired", "value":"125" }, - { "name":"k_EResultCachedCredentialInvalid", "value":"126" } + { "name":"k_EResultCachedCredentialInvalid", "value":"126" }, + { "name":"K_EResultPhoneNumberIsVOIP", "value":"127" } ] }, { @@ -8026,6 +8027,14 @@ { "paramname":"punSecondsPlayed", "paramtype":"uint32 *" } ], "returntype": "bool" + }, + { + "methodname": "SetDlcContext", + "methodname_flat": "SteamAPI_ISteamApps_SetDlcContext", + "params": [ + { "paramname":"nAppID", "paramtype":"AppId_t" } + ], + "returntype": "bool" } ], "version_string": "STEAMAPPS_INTERFACE_VERSION008" @@ -9378,6 +9387,15 @@ "methodname_flat": "SteamAPI_ISteamInput_GetSessionInputConfigurationSettings", "params": [], "returntype": "uint16" + }, + { + "methodname": "SetDualSenseTriggerEffect", + "methodname_flat": "SteamAPI_ISteamInput_SetDualSenseTriggerEffect", + "params": [ + { "paramname":"inputHandle", "paramtype":"InputHandle_t" }, + { "paramname":"pParam", "paramtype":"const ScePadTriggerEffectParam *" } + ], + "returntype": "void" } ], "version_string": "SteamInput006" diff --git a/CodeGen/steam/steam_api_flat.h b/CodeGen/steam/steam_api_flat.h index c2c73949..d0e3c48a 100644 --- a/CodeGen/steam/steam_api_flat.h +++ b/CodeGen/steam/steam_api_flat.h @@ -510,6 +510,7 @@ S_API SteamAPICall_t SteamAPI_ISteamApps_GetFileDetails( ISteamApps* self, const S_API int SteamAPI_ISteamApps_GetLaunchCommandLine( ISteamApps* self, char * pszCommandLine, int cubCommandLine ); S_API bool SteamAPI_ISteamApps_BIsSubscribedFromFamilySharing( ISteamApps* self ); S_API bool SteamAPI_ISteamApps_BIsTimedTrial( ISteamApps* self, uint32 * punSecondsAllowed, uint32 * punSecondsPlayed ); +S_API bool SteamAPI_ISteamApps_SetDlcContext( ISteamApps* self, AppId_t nAppID ); // ISteamNetworking @@ -706,6 +707,7 @@ S_API EInputActionOrigin SteamAPI_ISteamInput_TranslateActionOrigin( ISteamInput S_API bool SteamAPI_ISteamInput_GetDeviceBindingRevision( ISteamInput* self, InputHandle_t inputHandle, int * pMajor, int * pMinor ); S_API uint32 SteamAPI_ISteamInput_GetRemotePlaySessionID( ISteamInput* self, InputHandle_t inputHandle ); S_API uint16 SteamAPI_ISteamInput_GetSessionInputConfigurationSettings( ISteamInput* self ); +S_API void SteamAPI_ISteamInput_SetDualSenseTriggerEffect( ISteamInput* self, InputHandle_t inputHandle, const ScePadTriggerEffectParam * pParam ); // ISteamController diff --git a/CodeGen/steam/steamclientpublic.h b/CodeGen/steam/steamclientpublic.h index 4d34f711..1521e333 100644 --- a/CodeGen/steam/steamclientpublic.h +++ b/CodeGen/steam/steamclientpublic.h @@ -140,6 +140,7 @@ enum EResult k_EResultInsufficientBattery = 124, // user device doesn't have enough battery charge currently to complete the action k_EResultChargerRequired = 125, // The operation requires a charger to be plugged in, which wasn't present k_EResultCachedCredentialInvalid = 126, // Cached credential was invalid - user must reauthenticate + K_EResultPhoneNumberIsVOIP = 127, // The phone number provided is a Voice Over IP number }; // Error codes for use with the voice functions diff --git a/CodeGen/steam/steamnetworkingtypes.h b/CodeGen/steam/steamnetworkingtypes.h index 33dcea72..6f93c04a 100644 --- a/CodeGen/steam/steamnetworkingtypes.h +++ b/CodeGen/steam/steamnetworkingtypes.h @@ -1716,7 +1716,9 @@ inline SteamNetworkingPOPID CalculateSteamNetworkingPOPIDFromString( const char template inline void GetSteamNetworkingLocationPOPStringFromID( SteamNetworkingPOPID id, char (&szCode)[N] ) { +#if !defined( __GNUC__ ) || __GNUC__ >= 5 static_assert( N >= 5, "Fixed-size buffer not big enough to hold SDR POP ID" ); +#endif szCode[0] = char( id >> 16U ); szCode[1] = char( id >> 8U ); szCode[2] = char( id ); diff --git a/README.md b/README.md index 0334d2ac..4992f7b3 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ _Steamworks.NET_ is a C# Wrapper for Valve's Steamworks API, it can be used eith _Steamworks.NET_ was designed to be as close as possible to the original C++ API, as such the documentation provided from Valve largely covers usage of _Steamworks.NET_. Niceties and C# Idioms can be easily implemented on top of _Steamworks.NET_. -_Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.54. +_Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.55. * Author: [Riley Labrecque](https://github.com/rlabrecque) * License: [MIT](https://www.opensource.org/licenses/mit-license.php) diff --git a/com.rlabrecque.steamworks.net/Plugins/libsteam_api.so b/com.rlabrecque.steamworks.net/Plugins/libsteam_api.so index b343945dfb7d87dbf89f0cde938e60b531510f32..d755843a12c235c21e45d8f3ba5a7e467a2621dd 100644 GIT binary patch literal 421001 zcmbqc34B|{(SJ^y-~D2RI!PPL-*>KU1qMWF6U^tZ?7_XgoCAx=?=8C!85LIp>)6cM;eS!do zIx9Ja6awb+@A`R~D1<|u1+6%IA0}JG^)9awMn5O_kz|HCt8z!9oM>OM2RF~y1_cBU zC%q_sie9y^j^%VJ=iZ4*sxxa<)-?`44FxP*vdnnlcc0$A$A*c+F06d#y37Ck&5f}i zUjIndX?GTU+%`W5`NrDd7XjzC!M6Z6#RlIEoZAL}DR6fDuL9nV&nDpA0R4Cj2s=Kn zIN<-_fPc#Y|DFTBw8Xw%w*!7p2Yk5$zSRMLkpuo72mJF6co7He^tKQD%MO2q1O6@t z{O=v`{SNqlIN(2b!2jrg9}h>clYgoMejnh+ppW%qwgde^4)`M+@CzOAiyiPMIpA9y z@ZAphGac~fIN&dIz`x^w-yT8EPR~0!;P-IA@8f`<<$yoJ0l&Zjzt{nPwgdh`2mGrJ z_|+J`?DTNE1Afo}Ux&fQj?YOB_@D!Rg9EBXxFY84){3m zQ*>v<_p=@7dmQM0 zx{>zn8nTN$eq5VT}OD=;Z{CVe?fSk$BI8q>R~&h_dW!096^lt;<$Gr z(R+sz{f>k-ZaRkW>B)qLJILdB8TY{FZDMdW^ZCzS%x8O|hndOaW#-e*d=!41w3F=& z@7`89XR;ppSP!bbiSvnn>_DQQ&HTTpC%nP^rTA|+mhe4OtnwVe{SxDT;WXMj>|eW36{zG(^xh8dm;i*ATvcXTpzVKHpRj z-nWyLzADc2Gp+c;b|8H3P%Hj|dkEjSfbhz$9yo~b#&|1!D!0qa?HbMUoX+?djGGDX^%8%j&lQ^qpRTgj`xD12-(tcm zz5O_Y`Hv>Nif@-LWW1)g(cHf&t$%mBhUGcTTJN8@A3a(>?l+$3`%8&lwQC*6jb4r$ zO3o>}5q;kXqF4U1d=}x29jttoEGN82i$AwKNcaKPgNkn}?j*cd)7#Pt!n-xQdU-YB z2f1C!zkb7Ueo(WABlacwewS7L3w}d*SDh6`yOErV{%=DG?|Fj;1f@^Em+(Ckt@IDB zB)nUT|IhrE@ZNtD{o~*(j!L$}e$5U)Kc#stI5>zp%KKh=|ozGqwFujIeEmhgkS zSndx9tUuI7~IP$PY?S`jQs_}mORe6h2-&+6TQke_U8ED_npD|nPrvdF}CLz+q2@|Q%3a057fVhvz#+43E!xV*E_NPW19ZE))IY> zrspXzROv68{a?><-oyT`&<7O|9n+jihCDF$Ywd&{4yOrOIF4 zKb!D|Ha~jkCc+Q0{qMqh*myDXKZy84UGf;g<8048gjeJ2`w61=?Mrx-cYXT{!uN5$ zs`_ygZZ?Sadbxj9yGC;SjA`+6`Cdft(#Ex;P9S`GD%A@!mPhac!mArSN)LNYVm{jt zy}}>%Fyoh6@t$o6-}7&>lWUm&w)iUK_iZy&Vh-gneHq93J}u7wneB5xv(E?8#K*f6 z@!5g-|K~`;$F%Y23eK+vwfyQ#wv&D>zd93!E#w?zyHatZiS5M4cA~~*R~^y2Ieseo zzyFT#p0On7Q7q@Wsf15!@qE+~%ty=L&N!LyF^(Hkn9t%M^Vi~J=r+RlRZzdE_*1(p z;ayrj|Bw9%-#eD*m0f*$AmP0`TJdvZgimukQSpBq`&T3Tm(s)ToQHUhBtF-({M{!K z9}kZ&N}r$95Z=Z8sPG@5oamR>dt_H^KE_cT-`rY!d*?Bt_a002c2YMOuX0>UYjNpv zC`#I=7SC^q626D|D}VfaE#cEz980B`Ud!{3zKrnRLr5MKACBTYu#x>y>HodCL?0VR z^eR4_%zo!#zuS@ZnRr6vZ=;RIiKP;QuqlrNE+IaRJnkz#2i!_{AKQuQuZ^6C^betW z6@K+@L_et6PY0?Kdh`B;`bGKU7LH@R+Ppi${L{=|>9ch@@kwcU-S8!ZZ{+#7lIInU zhdyn*JLDXqcXQlU@{CFozHbZ}LY(z8jmHtUHjXU&CD9LXf2n@y4l!QKZ%5q2^)9gX z*Q7_7p8Kns>)kYg@IAwbek|kXabDM><#k7)LxrAQ+BkR!$NwIV|4Ki{{+8(bULpRE zATEpJuk#tN`So5`6W-9`P^$Uqj5TU zw6f2cEi5PJIf~ESr!#*Z7nJ>6%X;qhQG3x$d7Q!Hj%OP6`v%6Ju!i^yvY)DYZ@QED zR}mi-e@0-Smv&xe?XPPQ&}7`;{!)Iur}W1OMtTow*9@-rP&U0uAM`DpXy zC)h7~HNUtX1FNXFQR}Zu&`g0hUL}9zZa4ZMhNS-+;p1>R@Vm>=C&1zSZE@FCZoqr*ZM{dn-`#ArJY57mwM|>JJ`PZ`FdH+g!xQ9F7L>^CF zn%^Bgh4{ERA5eDq%RQO@XyT*n|Bl&&k7@qcaWUb2oPR1lKGshU>qq5#FOMYp0WHtp z#QoyZ+VzJp(WkWajZrr-p7UYVzsEgJ_{OtI{%?5vedm6{`)UZU#;+Q-!#-_X_-QWD z_wYEV{OcbG?82@FwE05SafBb#{A(Q?P}(8uQ|aehjvKL~NuFx9+vhGIdXHu&Uq4CX zta~R6d^q-C`mYcu1pgk*kG_u)-aV7}tA4x<4Hxvi+W2)R&o>9O`Q{58uRL15v15q% zq_y#A-Dbk~a~xCSOF8G69xcy&1pXrB-;O%!O>WmGJRYSFC;3(XzQS?F!*PbZ%rKr} z{~BbyDLrq?aUjKUK;hp%i0XA|_eaLF{q)AEUNvu;<7WD839s7qaUZvr$6r(@kLXT> z@72b~0FNVHZGQ32jYJ>Q?D_Ju2|vL1n-u>Y5`=f{Ywh1HNcg3_Y4efArxJcp8#hm> zBz#PpM=wkgzL)tc{aSJ{L>eID&uH@Za&GS# zE4aNJKb8G7KS20Fp2wkE<c>CcLiCN=I@^!zr(Vs!KI8Gl ztIgMTYUFySTig5KLxfK+A^d2TXA=5B=-)V*@KxL|%b4EB^h*Bo=M#Mo>sk5NIJPT8 zv#XlJiGD!yqf#UQGA?QBv1_?qZf=+2{|Lw7zH3R&Eo3f675iyQ%MX{ZJ@;z%JaQA& zJIMX6^#ADYginto{wkjD&hag+>HnV(6Mc_1pDJTHeG#iZZ<;~${i6x5+V!T7`Dl60 zZHEwkkjEn>=V6@ZyV<{#J$Lf_J*L@1BMJ&V`?UP(uamf5EuXxX`^(^Q*~ND9FCLeB zcO=Ds!uY3qiI1Vhu`_u7;^T2&$+?u{Wg892N{^28t-mB?<^ErfXWILI{{GW|6e{Fu@XMOrKeg3+S z=+jz!uD*%zJseMzKGQtU>SudX`d1EIHj3z#JsiG)@I9P| zC_cNNNO%{=8HL}t58?Z^Cq7DVCo{g6@rwSddx_q?km!|tuI2I6$K$EWmnKeSdA75* zYs5^#4>ErhCws4E{#v}M{Vm~RFA$$OoTt_K2=CMKhh?nK0oJFox4kgXh<+c?{GxR| z;k~Rk6(9CHits5d-frP>`O5a;+#_^)1r-VYDJ|~Ra=dEP;?>ujf2P?E)%^WL&gTcT ze13fe@%L!+(;s*o@7MhF#M@aO)`RNb%T?YxKz@YqD34d+P(uD*E$@1b$B{m*UrtCd zf9*cYmp2jK<)!}Gi}~MML-;|SZ>oO(-^GOQ(dGr`-_Q6(#0SH)JifY&@G+kMD*J?b zAU~Y!e>A=`xp6#-i*?8puS3E;<fl^Z!13kd64B!w<4Bs<;TN$yud$vznx4xz zo}{(-d_gzMvp=;<`PUl=3&M|jz9j$JmHEe!aLV|j#qB9`3Gd-NM8)%4s|oLBeJcEj z)r9ZekLp$U)F!59IaPl3FvrQ17AIF8N%US#Z#_J|^k{NUJ)G$Kwefl-_xpg>?<;=C z>;HUTNyXteeoK4?{!8-T!R~qq98Kt_Q5%1cx5^l16X>E%Q} zpylTSuq$!@-8+F21emcrPTP;@`^FG|6*o?r$9OIOU%}&!v54r;VLqErBKjU}zV@`6 z@QvDhYB=K!#;f+exDD6)4aEn1mB+`Y5#FV(hxcqGyysx6KA&I0eAxa~-m-WV;Tt(V zDE<4o2=CV7)d~nE`aPz_;k{2Lyod8!rMJssgf}?fR_$^_fHB6dM(-lB93{_<#}j>u z$5|DZp6wxgKacxre7P+|_(9G7@7hFoj~0ioS;q7{E@$N7evfg#t8wbYYlz;bYgPI-gw?FamjJ4Y54MCQZ`76C$ z&G}fbCja5pL~m&0#lj}WYyP+g^GRuZp16zXV_H5l^B%%`d430V$zu@VLfDU&_rr_l zLd8*i2H|@(d;XT^r~RCVtNwZwm}$N65iTjh6;v~#_hAMMQJg-;tV_CrHtd*7$H zbON1>x#I}$Dy4QQ{`V|mdd@$UoPC!Peo%{7PjY-Sw0>N@hWQ_0<$qr}^U?fnb%gMq zeTZJw`#kqcn)`)D0mC@5f#}^FAD}LI^c_q1UTvN}o#zDu8vf7#)3aTvdavX-(5JTnGA@^}jYQ{el!-<94joI?0U&IdB~z~gDZHlFr_t>6I$=zn##+d^qkY`FDylUK_t|K%y?{ z^^G7stMP8&OvY>T+!N~v@76Y!%|3U;#9YWT$a+xy zcyBY|Q(7K1f!AjSI6f=ARbR|Y= zKUMwmeS+{Yo)0QHzno6^K5f1;o%1N4mPd``_NKM?HVk5mbq0gS{T1Bau4%;I&HPnA z-gqA4IX)=-=A8-eDznmqz3&x6Krzg)UI;d{0D{<&unJ~qc%?|SwxgU1)uUrXjQe{Fm} zm*=f9p0_G{n{^A(8|B1*KbGgq6yejFUkpEp@f!c*m49*Ep2U2%G!lJE8>dcP$Mtf% zl>BcjCcJM~YkN=O@vcwf)9)qvK5blHaWvu6oS!KDzsr8q!+xajO;;1WON;-I+^Yo|T=r`I($4zt*Yy9VQsR^1_4Xs!U#2tvK^_-WyZUY?`d)3m zd36in`!)NV%Khkh$lAXp)kHt2#n0b&5#Fce312QHyhqFPN3uQp__-dqp*&tap6GkD z`StVckAuudH+)kCM}eju3kDYH{XHwx8HP zNlx)TDRC^BLG-=aymA|k|1r+54kdD9$Q+{Y*VfOMK0*EB<>yn}Ouy?>l(+QpbH~b0 zds)s#P0shB5Fvj`TcK-5eiOKh|AE__Q|fcozjldmD#a z?d>}5-@cCtul&mo{Y(AqH&n`v?vux?8p8Lm{VRP=I)m}rJo?)c2yd`osC;aNoA4f9 zhg5tfG!WjU%{#u}aeqJ?_aA2Yd%h(3)w=!X7Z4xsd~16T;y9ev;_z#y6MamR|7wnh zUM(Iz&hf#+{iytL)^Or8!21EFkot@!o`0pad}9sgAu(+n+3j-TlhW*J)`5gKw7l!~ z+X$c5#;@uS;rq4qmjA9Gymt!eN6DXRBzz<58SX5Py{{m=TN_XRc^Bb(s)>*4$JaQ% z^=R?!uO||{Pm7ah+(-Cc&SQshy+=LH_%*~|*=K7l;RklH_U{-J6n5Ls<0+PRpx0Ar~QuN(x7(#=$+e%zE2yMp9m7ZQHvY*Z6^F6 zk6%h}Gae*-Y%#TKD$D=)y@YqMev~{FiwN)0#-kML!KK|#T*vXDUyBa|Jl}D#JSv`4 zTuS`=wRvT$8W;XZaw@;O9riBt@6w(#`g%{or?l~6_bG%owj(}D4~L>71Ru{3!mIX< zWjpb)9@Ka`o&9})=dFs*W9%;;&0p4Vzj(P{R9u?C{n)7W<6Sq9JbgTFDtWHuyws)T zrF-)Hs9&phr^AR(jOUMv&lKh}z;QP5JkLY{H5g#=kov?}UE=><v^?h#&MRV?-Zq~|^jn`RtEA%^zRo`H`X7 z^Y&|qPro(~dTw9Bd&Us|-B>?C&X?R8{c9}efF|cu&MW$+5+CKiyHyZ>mo~2%&vDYN z#mU#tBKjWA2UPt3H{*M?JmEw3uO9XW%UEtNig~ zjx)VlocU-xw`&-+SNZANwS+gc_^|FF=D&pKYgo_Mu>M`Fe`Qxou;3%?p-01C$9f)M zJu5qTrHSZ0Jl|CKUvOUPVZTuJ^J0qV`?UUD!ShECuZJ|UoM-WPG|2HswbvWvc4>L? zHJ1>+m*b4m=iRJ-ua-}4Vn6EF{OG2enU9zBHihMRj{VeKPk1HIjy#UIcpOpfH9Ck- zk9J=m%<@m$$S@xo$xVj+_`ow;d`}w?6C^Mdo_RmY60Q;{6)!s!mkLQE+;;4D|rOju3~Ig9>$N|z!C-}L&JGQZ*ZQY z+Ld6xNNIj?-?l{WF|2x+JBRQC+I-y4w(M^gI}eQYf8QTFiP7Qzp59KbYF9`&sM z80%m8<5{eKm!|*mXA_@3E#3~W-uhW@N}oy2KizMUJZfFynkOhfPigNf`wW3s#5Y$7 z(X0M?8yz9=1Kchp=Wh=syiXg~uD_7*DQ#YPCFdc7ml1!pj@on-(f4Tcl;3c^=hpJZ zXV@RTnmwB7>3ZZ!RrsoeqNbHc(-PU@6Bd8HT?A#5q?0^|LD7z56?rD zJTp%ryk{oqP1XD0xy*;>r%FH5?e6kK@n&{n{AML~TGstmF)$2Qn=wn*``OI3v_i6Eb z2*(*0`{Rx*=L-R%@7MD1uND&CrR8-#wtpYn|0L$Kn*9zFONmi>`|b?lGpMcqJpLQP zd+LZDVN)KrCkdbCJV&*683tBi=e>)G9@AcV9Q7pOeG{l3KVgt(~wm#gyobZh-kCOAooe1Bj#o?-p2%pyU z@F3e~n(b5Rd9sh_y}MC+RlATn?~4Aj4&q~IS`*g-@adO34!l$%&e*8GXyV;MFo@e$D zzE_JI=en8yw$^$-98UN?etzK^3KPbyVZz6>d~%x_#&i5paUivT@F~tql{^QtpT@L# z^yNJ6q_uHpEbGCo>EU0DPigqeyi{+mrq6FS5#Fce`FruWlRldCFq-Y*Opb>>EgqKg z_&cDDzq>t2{p-^1qrJj;`@kMnJ)d?X$>TkO@Jc`Xa=y{e`G(Tx-Q7grx4)Ios?!KR zppCPwJkIuM`Z=Ecx>57%z&#^2&=e?@ldED^PuNZk+7?n7XKgQxD@+miPX$E4%|QS z`o;i{zlwkF1;ocapX66@br$DEu15*4_S;-=Ak%C25su)v=hNcevz$NlX#D^30P*o1 zMf|~59*cJ)d_U_GU*+*2(|eeH2gYy9e7LWU_%v#H#hXdO_iOq5p&ZXWTD%&# zn&>@RKGwwXut$rBZ?V7lZXx}vasQh~nNL08Rh<8zlJGs+`2NqU2tTOBp9^@s!pnJr z(*OROiN3dr_$z;z$K#-n$3f*^hq0Ukr(5NW%_lxFwnIgK;ge!~8Ey3P{tY$X`2Y#L z@Rxy+)_V6w02g>X046O;$=SDo@M$d`p33&%(d^-_ZHT^CdtPY~+)(g$-%0+c?BwJr zg!l4%N6G&k=gBcGPaeU3H>kxEVFvR3fjpkBV86Iw58^*KirS_8`lcq9M~gErLNFm` zBac%mu6{R?`Dp9XV~%7#+WhOW(5KnM@N#NbTB~<` z72*3ef0;0x^}zcvFuclRM+7vX{~j%#&*k{$(c;@76NuhB%-Y^N*iTbjugd>VYGitj zd&=ITzaV@}%Zol+!}MDIT*v*}ul4V{cN4wA^A6?Lk6`=}?eg+-^q+EjKYobt{YyxG zML*s}csH;AD1Tf&iSQmR-#dI4!Z&hWq4;d!@ppjzMd_jG5~5EXO!X=~oZCV8ejdM+ zpWc!pe6O}%F=idpYx;SD@op`DF#P_uj%dW6NCx6bzu#zXZwbYXg|#&mmHyfL&E9XW z5e_vq@0W<~H&0w8lEFZSKM)H6WB5anP}1@Dt{d_uM7tgiD1HL z2}fhWh!CqKEF_$5bS6U`L8D`(U?8s(_|h6`jT-er@N!>`e_2FTS{Vq3n*z-%jm}6o z6j>=W(beUT1>=dRs5IH_U*$34!AJlsTjRl?5pLNRgq>accFmu+@4PuwWe2!Ko3s4u zgUNQ|qooEITb8PDj#9RD<=2JRDaiM>qO2Wm1;b0)4aOj9G(S^q~EMGFqBj~yU zO`%n@W*vxYp=E!vI~GJgw??atKvOhsLpytx-@mFOluMt(bv9~9*bz$kVx94ze^n@+ z>7!k|Pce`_EVHd>`Dq7q>vEE6GNQGphtwK*I`Z=i}~G;FL4p$9XTx-ghrB)|AV zv7illSt1Avun=Xw$=_PS#9cC}42Oadi)l%hFOS7)T9*WygNZ~S-fgr(Q3=DWLDhm5 zgP4gnLLY%7>83l840gx@^Mu-3O}&$8NPT-}vL%Wq|1y}GguJZlj6_0_HsM{e8gPy^ z#aCwO>d0CvJLB-fWP=PMi-R3eNSfgVCRs<5x`ia!UscRN7t{q4oney-tf4^vb#Wj9 zORNedU?0ux{u&YMGHkUUA;W^Wh!ai(=$IwJuA~x_bSa{gQ-K8tIJJR9wghz3+!1r6 zM+Jy(g1_F5V}vU$MvSiNM0vpm{*P0Z6+)K!y)xR-VKEc@Rsl<084I)sQ>n_9f{CeL zD&v7f`=UTZcmuf$su0o!nuTE*3B;yIYqltamF=#Hzy`x%9~@8=Yw66$CkhJ(fr_ME z!OJ31Kb$C#3`Na`Bzi^Ij?g7Sr*QI&N=28|2U<A8K1TNHe|lG29MSlH1C zlxUI|dBREx>#rD@=y&-uRlX2*Rv(P73da4=qaGpbew7Wi3S=UaLdjn>q*Ps-KPG>p z@R6m+$ebgT)!VZr{1!*mE3BvwHe&$D;g&HKwmcI*{8Zzs6eeF8?Np)7wrjG5vK=H$ zlB|ob4A=y?gqzz%sFE2025ot6ZtsY;NE2vHz*2}pwm@VQH6{hI-AIfzY+I-*IIv~u z*uIn<=JJh3BEjZlLv&#{+7t+9yEK@uavJCnyiLdP1KP&!XcbU z$!dHRa2*l*WfeJenaUT$F>JN4-#L>lONPP)i581M-VsDpi=k!0!>6k!V z)_`d;gh^t7mXKEP7-FC!77o@ylTOu@cP88G!4kdF5Ncj&p0k@eq(V&f zO{BKmsv|9hNGb!7=3rP*<*7`lbx|Nu3)M#w!3EJcy41G9ikd`4upPtilJW*yg7Ow5 zm&s5DMOUlC|&3)Ti#1x>SIlUl(~III{y zv8dxr$5M*XD=3t=tghC!HBgAJ9jjH#F@U#*at8!yupnw!9bFJ;2Dj>nu*aN%L(xfQ zH7#(YP;0kMvSFbULWZ!U(MGlBOmHkQV{sr3TdNL-+Cohsu|#Ft9_Xj4GcIRJJTBRi zA?4QTmWq`y4EGkxmlALuhKPtK>m(*S7^~kzztHO05_F;y6>2SlD$7fghU~ypC0&}P z0Jee=RYiAAq$SwpBpNCuI%LOEeTnu^jt}Kj&8;a;&f=O*bqH6GhMr?-PBI9+FGA{I zGcxBCadsXPDf!tFggChj>fG^MW??+q87r*?pO}23I)Q^d?r&bZflTq$iI-&IaPuFUmR=+b#@dy#SH)q5MnmqR78*{-c+bS0l7A`RVCoABIpDon0s+t;#Da}53dWx!rcu~ zqGn>J7G%t*2s*4pMOO#oc{{r%foVL*@(h#JkMp!59!*A@qv4te=L{9`=<2P@1kBa(!cINLf!uX)r7(_()tDs4VnMV$+8PQ6YjD%m z(WokrqT0~s(XojuE@PPdcjuQ1wrEpkS;)L}B;8T2%Zo{)CtJPzL3Dk+yo+T=!jpZm zs4te25vRMUZcuwHC!ajHsE)Gfq6N;y&ReesGw5>4#(372=I zh2Cry8>NO3xY(eVM6qNMqBRI#G=W7(%gt6P2eq*#0p-xWH?dZRH6Z7jiEsgy@oA-8Ld5z_Y+ZSIZVixpXj9=k1F9+9dZ%R_siX>}qF}HkK`B}8I;o_rY!5cCTmUbv z54B-6Hgi`~x2AgBXcTUMTk8$-=CIAGcE+Hp#f|A;i;2EA7-`E*{qq#CT{h3qQ{UFq z1|rxflzXp7sY;UZzKxp5@;dvDw6`eS?zdSel{(`MAvKYTP@4~FF_gAA+T!3Fw8mUl zg-r)dQEYUwm!T%HylxSO3)G2VhSUI2Hg69@=&dZlQdeRzHBcMqj5K3FaS#Rz`Y;Lf zq3CLRnnJ%LwAJ`l&Er@lXY;mePIg_jl(HkNh3DKJBXVJk3o!K;H(*Rgmd9qGEu%sL;b zNGetZi>H=L=e5zMrf$1z$}BI0;PF30PUA9}NndZjpOt2$~!9p=rKlnk21R?JCz1<4in25fH5C$pjxjwg4r%Mr?PY>_=;yQpZE zRWU7!5c|@D)YEz7B;||21Ys_Q1;wDBQ1rDWH#axQ<5*ba>%o?WC^Ol*`s;$&)0=1) zVN*Cvp29vP96v*Bn_|TaOn0>snQAdu5~?9uU`Wre{H&s! zgeHDYVZLAcbBf|NS2OO_N8?*rSUv*6nl7SG5M8N)s$dd9A!p$!Cz>Suv}5JyPAp3l zQ2`rMvE((df9WnZ>t;5xWW+C&3{WEzc+N<2r>{kbFJe*g#B%3K@tP#Y(gTYSh4fBk zG<8bHq|sOGyA%$Yv$xIkGh$-)8#dDgau*!4zhk@+JhAXCaAK)ej)l6wP6g_t;har^ zCfag5MG%vd%{&Y-wH13;M6o_D^6PTSM^jcno4CR!9^CK86pv9bx2xPY?nsR3m7kDaSsYW;s?ReeoY-RC5NQjd z3&brnIfHkitP=OMquu$XgvzXKwoWsoSit(Q-I;QtZ3P z8SZl{m%67#R$(Oh*=IV73dpjR?VWf4SN45&c9pjtd3$#2O2|#Lg^N^oVIoyTqs2}> zal5yGIl|4%kQvh4C&ctww$^=w^Z(qW@|k#UA>}0Mesa^+Vz&-HlRZjEpC6d#jydr zs516xvsHBPE*zU6LuCMW8CpPHTxVv;>G90`;>vsXiS}dgY!IH}i3vl+5@$g+yeL=Nb^s36| zSCfcp=H5`HimKJpp)#{*F~^PqdgjiweMHP^X;7p^NMY7uLQu&2GV)pMCQ;EXxcxi^ zThTt#Xn}Rb+(*}KQeE_hd^}b(kW8nzD6bXD-{tbDBvFG*y|8&C_aRKH`Z0HNBA0Ct z+7x%9#UkIVoJGFuuRJL5t`%8Amo!TZRR{_!1RjuwB~!_J%g($+Mq8K{Qx)Jvo>so9 zO*|eZxH?x0;mVua#d3r7oeI2}C8IS|Toj$$=vx$}wPqx8%jAm$Y_}|B#lU<^wkXGM zExlqApazriVw*2sq=BWc@+1~uny@9yxf~wR5nGVp;ThdIWm^`(~;rX@1uQZZhKmQ2Wg{8G8~1 ziXucSO?3JD!%8dfXWE8HrC_;#(8RqS?=V`7ou7E0gErlCD#3Dsg`>+Z(nwc(YY5i;1UuO!W15MmLWu!dnB)?IwDRX?gVqAH*|P zOIta{^Ma*w5q2+nsfEdOF}cQLtVt~Yo}XLRRFA5f z#dWUI(#`^o2JuKAJZ9y-6C~TA7TT&P^8P%%X(8s@P6$;+^XDQ(RAW++3f=Oie4=n< zbS$ccO7dR3>_RLa&(}4N-L45g9@)(%{!SFN(bdaCQM@`V_W>Klq_P_}-E4i4P_}y1 zvb?;qB7oKWoR}gxK<(@fVm;hxgQX(PtPGopbDThlmTey}PED)|utCBObcK9_@J zB~KB#R{yg~h&ga17%rj?7)iDUF>vPezp1TAcB88^jTI03=eWO#ns;Z4wSGK=TtMr* zB03w-f2iBLMV8r$0(_&bAY-Nz+h>XpT^N>#z}PEZsFgJdL6|YCB1)(m@1h(%`dvVg zS`~TB%gj0t87zd_WtSY9x?4m=lfnv96W46_+07KJ{1*qh$bGH%S7b;qy+lhyj05x* znSZDIZq4egTlq+_og-UPY;$Xhi}!uXDzo=rvLp#V;vHUK6wjja5sUY3WhrywxalWs z6_IOPcB^-0GOTrrG&f(RAh9g$<)cL^n9);0NSixmnh5+**Ydh7!bV|IbMoz4qMLGd z($Fs$I~*Q4$^0&+NH#+c{Vt*!eiv^k7BQ_eN3ldEX!OSOFM-b7huN})07c;EUfwG&FRXWnwe?Iv_$9U?MGHj zmfEpTEtGg&UTdq(j3HNo+9;kG&B^w1>5yi2+FOgIV$mSnzRJA^Z|2CiTR>XCIhZxk z7tmy2v&bT|^Puv{c4G@xn|kcaiw)Y{!Oz97p~@IkdRs z$)awHk_w$;B0>6v*C{9E6KX|}b3P`6I9??nCV0`@cS_pSBc3P?(t~hCRD(fqX&ety z(}qwy2$7S|a21gjQ(GJuTWG}Q9Qjl$EMGqIVOyvw*ov0|7EmO=PXUjj7otRSh=i&n zU08EiQ#aaDJ9m&qUJ-5SE|#^R6%z|v9WY5HRt3^f|E!C zOdRV1tA%L@IcxgCe8WQ`JvGv~Obw!ddOIr-72x*d|ZIxC5i{xi&lE~Q0+pr8~ zH*2y}fqeO4FtME9yjUsTJ1Jj4kdr6alrC>dAOTGV*?Sk)+qNlVSEq2y zsZ8$w3793RI3|Fn$)oaBtoC(QED5f*%+T%0pc<&Ra^YSkPR zFMbetS6)(TuzaCx0eZ+m#KQite3yF@gG7+wTHYBJvqum+H;eu;BE!|5Fo$2Qc&n(P z-oYQWxhFt^RAC=F-lu04g^JqtrinTn&WI!nI4F=6vWj=Pprr+uqqf*1i7(N&nGSr)tbPKJLu{%IlFR+P|Y(!4U82@8q5Fx(w$ z$8<|>NEIeU1st0w>Fbwo9lgffUmI)-H0MP8j7~CYB()TfC`)ZprL)elr9Ng>(Bi1r znbMi_)~t*)i}6AjJR@T>wh{?15-k_YNp>qb_EgnfSdX-MUeQ8b9}>@wE(&0mWwQ(- z_T3_Uqq?dRPY~tgR>Y3ga6XN7r>IWy|8c- zS&LXAgk2PH)NDuwtw^5nrWo7z*OKI5ZYDyRECWYzG6uAwDcV)Q*rfS`Z4snq;}y%j zg^D!91CazCIN*TCg2egXnH;63(TMe4hoMQlklT@(W_4or!uKw6Ux<{^q@oZbH`Le~ zYU4L5!`^IPQcorEYZd-A2utaSAp1sjYb&18%nBukh-}Y@j3ejvwdrTOw8QkXQ|@6R zaY`mkBrqL(6R(-in+RA-P#>ek_GWA%7L=C3GOG>BYfQ94lmdgdi8_a~?J#UAU>b|% z22v3|B`#tJ$}QwLAe%^q>8p{m z122KaU)-txeVjEXkB1f->P%I@J`0a`R{HF>0)t+bP`o0r=#kG_EMpta1C+IZGQVQ! z%{G^RAT-ruKN>nmD6~IY+Ho|L<*|VeBaZojN{P-c&E*nMh!%KSk-#cvT<)L;%3*;{ zBgXyqEUn#pu=CMlG)Uy;c3KI1<^3UfBoa5cN%*{iLz`JDyT_VE-6kUJd6W<4;4d?i z;@>jyPmbbEjN-4|bT86MqF7;yJU5OscKjTa-QQeTCB_EWK#NUIukpis?ZPeiYn}o! ziaV3IU6cFLSB;(6pN&8C6VrqMHvhRCp*Syl`vEMH*1T730Ns?-;pcY0M2}pmWoCye|#kr_>)1uaT%>AT#dxt12!DWt2mc-97o>CxF+Zuv zkWJQQ$CLv%M0VKeCmKW2iHFqeSfJKyE*JSP)PHo^%8ngz>ZGLqOmX;4vQL1eQIk|L|hCd z3`HZetDLF08Nz=GQ`tUXD3nT8B5EzbFNe^PWwyQfG%a78BI(S>s%^(-Hl_=~?0A`;vUMVX+!)U@oTPo& zRtCc2s6N^v7 zuSSbvYO4ep{L~nR8AP+)AK*xf!6NX_rNf+zJ>OOam=QL%i?!WI?h?1Cn=B|l4VYl# zb$%M+Q;-auWu~#&7b1kB2icvhP)v7KM^!JY&3zj?8HJfdn3#D}9c7{PubyJPFK4$P zgcN&Dg>k{+GY<&>oug(GX|Z%DVs}fx#0i(otjhLz10@{ja`yJi#+m**R5Wm|Zp7x_ z?N&6+zdJ2ynrSExaQOcPGa(sD5rnmPFwSP?WafoY)_zAq=6_TDV(mz9%GZ9(6ADl) zj8?#X^YK_1g(t4IdH1Nc#$sh(J{Y zk$7AUemfcbNg#E@V?wAmbAXobcs!g9P1#r_Y|%vAV8BK-RddLU-|D6g5+ z7f9f5U~ng=C~EQOZ{8-uO$yN<7UD6UmE}pNKcX;;2OTLb*oJ>JjI`Lj-CnD|%2y*ei+kV&d5gDX;ocPj0sd^IAsWqnr>2>?Ov~l) z?y$IJCO)#B{@l%J{%NKa`Ll>tP9w=JzLJ*bk6w z^*6WYM6xU`IvIlE)q(nusrI|5x-*1gn9dm#Z5RqVoA_zKkt(TXLN|7nkG zxsc9r^H%&HP)D=?AqJ!jnR83bRC#(DlidWKJ`hzp^TO&_yI932AedZm$5u%}c629N zWAoR#*$xrw$bzy8=7j+^o@~M%0cRQbrjII-j}UuH3rH&5RdNcphQyzQ+q?}kD=1qI zc7Zaj%>rN^>cZ~B@reGA7#rG@4PI|$>VBBEPec_he^R$xRbiqQ7$0a+wyr{cf7Z(`1WJABHn#1Iw32l9FgSGj2NnBXMdpD=oj>~ys*jji2(nO9*2`P z2XIRx_kYVGa?VR8ly+^=YNU z<7J8@!&@sRisnADV^>N{`EVzzcxwEIlb{z<#%zPB2kiJSKDKWxjzgzz+G25xKiP`b zKbdXH)CHS^_>Vs&>{9VxtKu2+Y_lAzqetJ1e(qgW;g`?9|IA`6UEwF-Gqss|Jo5;; zb(K=ZbW!c&!pG*oRyy`MQuS2>_dJSw|Vnwwy!f~ zuzwJL)?=y(&-@o%RZ+BL5=ceG-Z>kmvJomAO_*LkUxYZKfVmNciy-P}MG{N@cKfh$ zMT6!1oMM*R?1ETw#_yYeLjhpp(@+{m&Og)O?b zx~r2TS&HEG9r7PZ?dQ?C?L=X^%_=v1vh{97VY5MQr9+Z?`U1Ht&ADPi|8ncC$zyQ4 zH8+#bEr|x!;5LNaOfHvLEJ>Gl;{Sj_PcQE;Y*(njTBKO*Q2_K|RnT@{N3L|dn6MQk zEH1ef<#J4T>&qfJhUE$PFH0{12aB=PhjG2|4iDa}x{`IX`3oTrfZBD#=$XvE?K`77kyr9Fdj!kBAh0r6Og@Ch7fYI(a6#3@7DhcZ5ugHa%&i#`scKPl zS(VS~QCbqp|3Yh;Im~gk03sI4;^IBAJX#kb7cpLj8SVvu~lRFfc2T~*M3AUgg}dJd82e`!@lEh5cSX%%7tl`YhAG=yGg3L8To>+)z z%Uv>b*1XQpE?NHnF*Qf?|EG{-$o99+3O7;B7kQ1RU@DTa8MbbvDvb~QL1z)(Wiq&} zqlS@mnx9S7rGj$()H8)0Cw-(-i&p@<=q&-C^^(JB_flRrewjK?SNp z9L!r=1>T{Bdm4GTz&2zj@_){ya5GEZ&Wt8>(|QE}3}HBEhmqAiDsI zKe)>>&97=D0UncVCLxNewSqPqhn!)L$;y}Hg3m*s_{92 zAe-BXjE>i`@Z3N`{NJq!r7PIJoaI&)rHI89)RyOqD^xH3FS1i?vsE*}9{4F))PM zOh30_45T_k*iU8Ozd1CJ%9;@7P@sRT6#5)T-pR-A2yCIu%4$zklfY8dJgoR07mPjiPqcAb?u4O5~XwhsM%`)+fZcap~xz1el|UGpx3NOp?~?4 zdE(_ni$)bqo8@bMXLn)F#ZZH{c-@EyzN?Yy7b*JI7C|k(`Xxm&FOpJfCD0NI6v-B8 zNRhxSxo%om0XOaSfmc(|Fj%!4>^arCjx3=fYyIJ z)pTJ;o+pOnkZXB*A?}u2ABBi*Ek#VO+VIa(v`2w+7~4VLo)XUEi^g)|hdnXWhsUb8 z5>mOiV-VpY2V(x#cn}W-MGW;-e1QV_tMwbb0Y&|mz(h@5hs|Hab(V$vDf>0i zj2GHss}oniU$ei98co0Z{at3(et%f|F281rD}pRW6kpYv$W%yQt-o7;ZcSu=ZEo+t zUt_Yc&3N=Vqp7gvTcW!I+dEb&O7nHc%1D+4mRqqB$^1GaR=U;@{-%+C!(Mo#q3T;F zZiZXGWE#}5(xk39~gaC9^zuH&a(vpeeL!)@)oSLjLA3mLdJ} zeN7?!S!A{0KdzzX=Mm025Znv0n>E+(Z;j$#EnEDZk=5ApWK-p=gCtE5*||U1)f|+6 zFb_HiAMhg!4Eu4X1Zzd&KDi0m83}fYry;OBOxU(y(%%-2HU+{7e`^4@rU@O#|DML9 ztN9z)$?X%_n)nAMI<8^)63EjQ=@hz~?ZF*%yon3Ti+=Gikv|xZN8{XvBFJPD+B)&X zvOmxywpKyk){e1PqbvuX4d#exY9ui$R*DuxWa!GjDilv5xfO+%TYBEUt27#iuF7eZ zZMSPJcjRU1fqCdfypmeJ9J4tHD?{gKG7eV$_#;jWSMG!C* zWy)+|vO8^m7TPm)V}8jjqy;341XuepCB~b@5sCFanmx-J8J z8#g~arLyGd@!scms3!*53uBS}*R3#o%qIM$3w-lAC4@y|8?{afWN%*wQ^qcOEiy!I&{#uWMZU$i{7kpSRwa zHhP%h-otH-tsU36oo`#;K-n^5tQW;BlU)lL~-r7-7(DDJNeuy_oQi47cH7`bjggdr9*p$c*nT5 zgHntkWfjB9X1LOO>^kl;W6Y3~DoZw&Rd_ZHFH5DX4P#=NF~e2b>Q1@W-eMeCvVKT< z-RzPvLoPjM4LJRx>UuY^`)h$2aF+J z*BApfzu71m0?U6raII19tr)Y-RN)_ufB>Kw&;keo+5zeasSDG2C0~be?f@hJos1Kw zReZe~=Wf0}73b3cX8_IwqyTFG;#fx~`FRdL&joA%oCi1`a3Me(7XdB?Yy`k`a*oS@ z`6b{Az?J;#ReV;bt8sCS`oiby_9#F0OEKV@Cu+G@EYI^z#jmA0=x-$8}JT5 z9Pa|&2Yd+lJHUK=gfAZhK4s)*rXN4Y^%th^U*Y;|z`p?B0=@(M2>1ygjuIHuP(UeQ z7@!Owj*&QT3)qgokHUF-z!<<-zzzU$jKg_6U;c~0KgpnK9|qpw|TfekiXBz`5?f-{9XKhC|@6r^AP|qpqz1)e6GTI0bmh- z7v+w`^XKoR0GufHMIpz#70>z*&HE0P6u80OtcP09**T2+#u%$E7%52DlvX zOTZNX{kU4gU4!q}0d4^F@^3fsS(LrmbbSl1Zw1^2*aWx(a2G%v_u~8j;MahM0FMBE z19%i5j>mESEnkc8Pw@3qe0~P!XHCBgn&mV z{Aa+MfVTi|1Kt6M<1c*vE6(o%-UEC9_z>_9fH*$mGkwc`{uB7m`M0ld{u=Nv{{C-1 zf5T@{>RZ144(A^L{{j3ca0uT+0i^(p-tyQ6=Q6$?!RL`UZwD9!*q(7NK99k92fiN9 z=Lt9?L6OHKoOcH72H2f(;s>|sdNN;6!FeiR8emVrUI20I&1Z4F53ctG><^d)m<>?J z99+)@%md5^90WK7a46s~z~O)+0OBa;Gkwc`RsdfKs0J(o90gbk@BzeeG|mlx<$x88 zqhILrSjHWP^9caIiKfwXEvN(d-UMhd;e)tt1+iQF3zlrnPfOi0Y0So}t@jk9U0Q`+{ zAL9IXz(@RD(0z>SPXV6+zA)jx!u8jt@Bha2H-K+VI91R0!2O`%f5i8n1a2sN86b{f zIB&z(WqcmN=aD#X$Jc^(G_J=2c3|8%oOc9_=kJ1MCtObg>wR$Em#_E3d4GThFbgmnZ~#CYb8w!^*9YP}A8-)hV8$JS^Pzyl0A9wG<6Hr#0xSS5 z0@MK1vDkFI1lKt0T(dtLYyxGTnxB`ahKwJ8Q^lj6@V)NR{^dDsN))3UkkVna6RA# zfH-<_zKO4I#`zY&uK>3JZU=~CGtPGb`T+Mbj(&kp(_C91F!|~C%~HkalD1|+kkffe*ydzppJL>`hA=~ z0DK7eJLCSr=Z|py1n?=~GsgXs&!6M`1z-^H72schZvfu{z61OK5XXP{{3FgkiR)4f z!GNIv^DzwHM*v1Lel*V816+U|06PN411190u`^%q%IDqrJeki^_^jxs;`=nf48UH1 zeE|CbJb+n%*?>6!am>T{K)`&!A&ff|=feR<@b_|@D*%;%YQ~AO3vj&^d3?SA=L`AT%;yruU5fK%fM1$ut}tC+$=BEL`8qydk8>~J zM!-#gn*rju1?SuN`gT6w$>+^D-^JH=^I4R+2iJZ4{XU!@0Q?&85a40JBY;N%;&=?_ z#{p^nE^trb`f2|D49?F2o(KFM@FGAQFX8+$;8j3B;B~+jz@Gr(coXNh0Rw;!0RMh- zw-tB)_PU0DMCa@_EA=1$jn}@o%_?u;e-}OR_7DH~_dnWBIpjY}CVe%1%iDL4^6&G| zkJVd_Z`<;(=MMeN=E&_^_71t;zrO0my?g)rzkeLx_3oV?-FQuG&%nNkU;X0d!)JZ> z-9vAEm3-;wrHj^8-gE6cGfO_+@817)Z`*jo#?LA{9{l{yW49mr>8kWjEEn z5#M?A%C9b4ux5C??2)#~Cq262jj>mS{&>?~A04v#uYbSrhssY%c1$j~`%kH>pIPw1 z4@)1ZpS;g8r}X^x?5`HC92z+2p5*%eSFYRboCE$i>7iR+`+9z`)bB5OW9&&+)m`z> zqss{DOZ42KV{bJrfq6xZ?Vg z9{B0KGyak~|Jwa8H*R?E=s$Y`hrj&!m_yGu_TKf+Z`YrG=A7ztw%fI1P0RDHonJ|I z4g3DA&8H7P>Y0w2#0FlU7wjTcive?&VKH_H{ZE+`-d<5a`fPrdrjH>z25zYRE~31Tt4!_yRIHx`|aoJ z8-6o#^-J-KT>)Y|+aNXP&U+kzYdu!Odz_nj5d8?;qkAHn% zb@OX~{$#lSaqoY|wom;e@!YrP&iMRKkA3{R_ujp9!i;mfyDwYz-*>M&_>L{*um8Pn z=J}yd*6p(6m6i98|Ie8vmk)iTyJqEsS51CnLi@-S!^(%gc1(l&j@$0}wC{&!5~n{N zxb~Rv&?kTTdh~an@3-Ol_KS|{UbSTS)eE0!eg^BgH$Ad%_a3o3PWt=s)*nvWe8_LE z_~HJKBK_&dzW(MHcc!MUziOBAxrvV3Kl-e_YR`w0*X(@CGv{pk!47So*Z%vCm;TV% zbJ9L<9r?etzde1!2R|P3+KY>xd$#?o^y9Z)anljkdH4FH_L5B_?w`}tyXC%@LmzK> zxI4Nmx$UclbczV_}9{wsHz^}wYYH$FY>zI}fEMa7YiN9VjT z<;|-m&baOE^QKL zbDia0Qg7z)ffo++S>JZ^sa12vcMeOP;S%131v#U6&EbdbL&4%Bf z-}Xi0n`<)KyyP9QcjDEl$`?(J)OlxBgWJ37XU^DpVDg-eH$RMBG4;D&&mHVLCFi?m zTD?$U{(3>=h+|5Z=JgULpYg72Q1$I=&;NQQp~3shUZ_xSO8I`9NB;cP@)xg9ocK$C z_5F_9Q$Al(YfH{^-_8zANjQCOa)zPvq??nMU8!^1-S^3~Rqr+0w!KT==I_L{{WEIG zl4p;FH>~}{h1ajV_1)0lUp2K@p7m?rsnM06t@2&y=31>bT%2p$meTV3fc8~$Yjqf0 zWBkhTCw_AGyBr&5n3U1bSgYsZ)DBzcJ=|sNgc`r6l)rK9p?c3fG-%c5yI1Akxn22K z#LJhyYFh2i^y4&V<}{i&rB>653H748 zA3Ndw==P2D+|*YNeLkw$YR}ffJ;(ijwwgC?4Z6{(x%ZcSS8B~Fa#ws}Yx<>8&py|D z;tfx`rA22WJJzlQja4rb{>+=ZQM+ExXojxjTOCa9&c6S$8+sEwqN}0o{U$nzqabx{l%F@MfIv|&z}GGXWupIf9|)#gPO(U$6cFr zu;-X1W8c2hw%M0c5|?l8)34pEslUCv$aDLf!i}B2f68_7)74-6n%FTqbV>6uSt)mZ zcfWpaWzhG(O&)alllRVVh}iezyr>k{dq1>Y6SC@?Ll4J|?KA$BRbzji*Lh>dub0-` z(y;uaUB9T4b#>lHowh`Ec;bXHI%rI)vv!TW6W+e~+wt4YTTDz_@ZyH-o1MZ7md%|y z@zDuYS{_)IJ+fIB&x)q6)~^~qxAwX@?=H)kboseYn~n7R(cs&LEth>?c;&Somp=cr ztKp+Z*Q_%o9oqfwuc?bK>{wi*%CsLx-Fp3y=i=yy=e{XiQTUVJBWseM@Al=is8+8x zsqu=T)#A_o%KPBRcY(Qu5i?u&-t$St^0LL(*KJGs`J15a^l`sUje&j;jB-`x8fL(}W8MeN_-a6>D{qCo%UTchi&yRd2O#y5}H zx^0=bqvBcn^l1f;EXqIjq4yn6;ol>_-e0u%!ur7{nq`cgv-#@AwX0V)8tNamVslRO zn)9oCICRJQr3;p?F+R8b(ZhGfZaMp$J-o`Uf8>4AKk-gn_omjt$LhS1*`@IEt%IjO zYtk?K%TTxR$cn1F_kL45dcoF}ueF-%cj54q_2Y-O3F@%sAI~Npotw7f(&&_gCzRzk zTF$Tc$4vL-0cnNPt_IXzl%H@jsOB|8^0&i(y)ouZzX@-Q{NqH(h{wMOeS3EFmJ#dr z?_C;Isq2Z$YwDZY{CfC8`OZxj?iyVFnMabdoDKHYTc4Ph_S}i|$WA|;b~dgwb!6C^ z5f|q#s=F^QtaA5mZ63YVrB<=`@BU|=zH@F|tLPR+=h`2fAFQ6Y_MzeX>izy+#^zcM z%g&)wx)wZABXU>ewcq_UC_E_Q#IZLPZ*6*XTW-QLUvIm9bNtN;Z-12VsPgo?RbsMh zS4ndI^yLoag_PF4{2Ln+W@KMDR+yH%b#8?b3Ga^h;=mshrVrXzr^=yTm%k0LHtYMx zi}u&!Ds-tlXWXeS%Grmv`d_KB_e$l84ccEg+&fBrCuLmwPUnC6^x1wPk9|4AyKUdr z=uT(e3Cm9y`0-O;R6Owd?-}P(<~6SITXF5}e|+5alOJ-=?y1_p>&~;!c?Xb ze)FdPo6T2UzEeG{x^erRQ#l8wJUsjH52_yg{Gky)O#Lc!N$vLztW@55ctLpVl=+pH zwyGMqG^OR=^`<@isxg0D_Nwo?`A>T|E8uwbu2b9ORz2G3`_>~DcbZn=x3ya~C0ulW z`ds|)PgSiR{a4)&y`P?n{_^?hKc30&z4)o`W_9m1FJ(%?(zJp)zaM_ee@e$QJD-U5 zyOL1&!W(z$rUyU$df&B?RUC;g8V=r6E{#8OYe@A&pDr0)rApUZ8)rQ~Fzno%Gku@W z`*h-!O22pPxNCOh1Ewi&Wz{&)zInyhU!3*UE78Ws=C_Kyv3$>0(PIm?KfUS7oN;N5 z%72>Na$neQeZyw_IOz7bYdX(eLVJ34>y9<%f3~5KsayqPdT@>G#PTc4UPipIa)uA2U}^|75x<~B@Qcx~d*F=06s-?_bH+18%9 zqrAVq{^Z|3yPO|)j*jf}i81VhR*xOoGik~BJ8i%Ges=CQbL+47pGciB`rKm;KYR0b z4`;LUFIMk%^^03p+hdeH{jje#LM5b`ti<~ucozJfAaIpxvhsbo^xby{Jh*b ztD{%XAN$y+`%c#I2G*(HTPyD;j#OXsTy!rH7wIcndA1{CFn0@K&u14dZZ7%QY z+U>?;>sq&5;@AJ^7j+Zo-R>|bX-a>;xrQ$qZ~m*pACtHI-S*(5^H(0*a;n10-bh~byy!+i3pIAc(kCaJpBK65$gIB4zg}U;H_P*O zEzGX4uT$H$ZC-wU@PTKH2TvYscShQ4_9=AAG90a`29SkMjW|LJCGd*|PfBGgbbW(xX$0HsxNd@?q<}!xMh& zIP0Z}D=Y2FAN|lT$?b0}Tia<~QtK*j4eBzoONI6are&^(nR4Nycc(rvJNj(OrKRyj zPmDgfYH8(_HPxdZURg2d`Cf^?=8n3w`@N6%?yMczCB8+2gN%@kimblEJvR88!`3YstvZfL`}nVie|_)o;0n#339V3W-HkVQR!un;Z~bO%$ljD_ z^TIuctUWESkLi5y$r|h8t9-v8>&Ezn;h*%H`@_+9BG$~FZT|kf%XMa-88&`o$AO_o zmdzNF(S2>*OApo9I&wg6tKiQ&Pp;wj>wpVg=l_xQ?Vqo`_j#oXz1yZ%s{HlDu8ud? z++N=ArFRyknIGA^a(TC2?HXjKckTA$*Nf-Gt=mxX9~&E0N)0(W`nPqih96e?A+gV6 zZHhllZ}Hhr@%@IktMGe_`qATUmwmjU+_iIU;x?9le`RCW%!sG{Sn7Ir@#cmfoZZke z>iqB{>&MqGp7&SzPi|MP*Zs)rn||ET<9JTt%8!<;EsUIXbmXCKR>R;HmtM4Z_RTod z)mi1#f}mIHS9a{K{8O`uwI0da&|1B{vE#g&33Dz@Y}0n^n?tI_1pV^qFOP@x4P4i? zWB&f-mW*%vEuS=Q<(kpnz7bhtP5YxA?Z#71ye+8|J^H{J^JoRK9ckrA-qa zd2Rf{=*qAD95~sTo;m+SzZbvT(><_axg$fyt$)LNddIkg+fyR!dHJ6=8b7q^+95$5 zV)mQEKUrA0rho6NKOGo5EFjZ8a<+MHl~3wKHs2q;$nr^i&~F1%<8O6+XxI7{`D<%z z9@f8Hs|LT0?s9axxuM^5&!CFZ+FU5?{SbXNQ#1%V|MF1FhAwL+HCVjqleK++d;hbS8g{s}prZGUi;o9( za4xZ&o_J$Wm*IsEja$3WyQy-e6TQMK5088`{n$4T?-&<&W!cLcesIJ_{4m1R@U*>^ z^)2s9V<)Vu`Brz+V0T)?vn`)EzVMw-V~#%LOl($ecCDT7rTwGhyXE}8U*Z_)AN$0l zTB}kY|LW)TM)B9b+CTJS=XIA(#thssYIJ&pxAO1jTJL%#+YmO_Jb2x$tl9@=KZa}H zpb<)B=c18cq%Ljz=ILB@vv=!b$DinLi2v>LPZ#w6Ejjnon$?#X4z~$@t^J)FrZO@{a19H*> z#vk)u*k>I3Tw!wJ`X
o)fF^?!GrIlh%=+v(?Cc%st23xSWlm-T|B-wRLGH1&Ua z<$%f)ZoaX0>JxVwMP2*8UpqfbzbYdt-uc-+W!Ajin?8Se!R|*}FPbte${0TRMx~(# z^UBrTzBnRk#ldCkTx#uC>OcCGYfQQKX2vCM|8D$@=%^}r&(69%cvQ~kbH{c&mS@^t zsotMss(#$oZ{nZRSGDbRX-3|%cEJNDy)vu9&iC5>J={9E{l^n5dC@)hF3oFHzV$0g zS2`o2TNYK=l|mJPegCUusKgjN2*mzZ#ZVsC0Q^_p;LpMuPqF;*UnTtKW2zusilP0h zOXO>nk~kFdAz6=b6@y}^fdBNo{S5#4-+x-*KP~W|7WhvK{HF!}(*pl#f&YKEz^wE~ z@X)mOdxT&8uwH74a3KCm!hfmt$5oJct)pyzf-r}nsU)##>pRoojVT#I3a zJ+nu6!Rv2TFklr{eG&kEen@Kvt|SY?e_Hw#rSt<>`VceyNATQRY5hti`dWUKOP&#= z9(|XWjpA$RS7G{u)jA4YuqxGl$IIhJCw|w<;7xT)>(8v9>4%lUTO@uS*H4uAw>Y0% z2A?MJtGIr)#DB&49ErEk!v^@}O1z%VE{Wg9(>WsXSv(z8;`efWLvZQ#`I+;967S~e zm?YlI^&=(z8t1JNf1Rh3DDg@~t-f}Nug&=^iLcA~g%V$%^EndVi1WD;--PoUBz_<- z|1OEAmpSN{FY(PeUm)=ChVy|E--+|V60hrrN_-U850m(A zoVQ4PZ_ZmKz7OXUB|e_>NfMvH`4oxo&-pZof0FZA5d=lq3 zNc?!tyCr@i=kq20Mb00Q_?etnC4Ls?izNPK&Kv5N?)O(XA0Y8A&Ie0;Hs?(e|1Eqx z{lX;v4Xz(4@mb|GeXGR3#q|>;ei7%BBz_6!lO=vB=hGy98RzX1{{iQ-C4MF67fSrc zoL?pJpK?A|;?MGV#4Yi;Tz{9uujTv^iT{f81rlG`Uu(}IiQmBWuS@)9&IdFoZ4X;H zA1LwLId78qZ#f?-@w+%5De*sY-XigbIiDc$$2gxT@xO3BS>jJ}K1JeBao#TRr#YV` z@hayRN_-*bb0q!(=W`{#i1QmHULU`^B>oE5&zJbCoG+008=O}q{x;{YOMJNi%}xvr zOZU6N`9O&e;C!&e>-7zl_$pjKOya9^-XigVoVQAREzT!Od|l2bNql|Ir$~Gw&ZkMd ziStai8piJ z(5Q63v-cI@w*w?zFHf+<_u%Q6B)%8t!z4bI^N|uC$9b#7Kf(C~iSNhxB#9r$`DBS7 z#Q8LdAHsRN#6QFNY>9uK^9v<@66aS*yp8j@5Uqg;{V|KVP)_ZiND146UyL| zB)*vIrlc;58=97G{}o(6ungWL@gH;j zurhdy#INQ031#p}68|;VPbq`XlK3KeNfy6si4UU}XYpGo@pgK#7QY;cH}Q0KNqjyp zk1Fv6oWCydZjOVSm2PMKMHiFA7jXSZiMQ|93Ob1kUG5e34Pp-yrkVHQp`p_~r{M&n}72=jF+lcmvljlKAXUt^Wd>m+r?TUY=ly zw{zYk@p^qjC0?&@n8fS#jg)y_UyH=&@O-TjpAx9GLxRL7aQzgC&*eB<;sa}G=`57^ zFwW;ld;#Y-NPPKVZJydC@qwJrmw3HA0S}jMf1MAM_-vkUu*4f`Yvngdyk1VL#JhPp z5+pu{r=KYCCZ2wh#20b>Y>9Vsexbx$csltKpU?G=NPH64H?+8S`*;la_C&#G4vue3-lf;{fwRzSe@dnN($^0En-!Ab5oX?SXH~ZKJ-tm-qu3sSWIb7cmUb*q+kf%9&OFSxC>LxIHGdHRO-rOWB&`X-6b z;k-rS?VL}N_$0mjGSBsMB;LY#x5S$`Um)=Y&Ko+EF29B6Ym)c^`k)Jb7KwLrK1t$p zIB%DDJLhvGK8f>giMMdRK;liDH*_prego%C5?`R(kId7@YVb>vcsJ+m5}(8Qg%Yp( zs~m|h;Ny3d#OKu1#%Zp^>;5pmwN@{BjzIi{aUKsT;K>2sFH+#Olr@=M;584d@fLyC za?*IKz*qDoZ%7b$eN2)#QQ#jE^fw4ReIHE!1#>?@Wv?Ps;5uJ-5Y_$|5|^q3@q$KA{YKeSahC zCkf>j(=RB4PZH`S>g($}IsGEOzLNPsp}t}|xn=PBIFQpx7W#$K(SKGUojwBZ7W73v zODN|UK|e*%7x`qNeP#*zNrJxk9il9Or*97Fzht33e-(KByn*UV-`mm0t3HlpzCcJv z)GsQ7*ViL*Itztzir@KBh5B|89DypN|G3Bt?H?!byM%V0De!4Rz9L^B@b3uvIRgKo zz~>754Uredh5p?R>Vq7iJR)CE2A?Ig!w|voWeN4AZ+YmyT|#+8{<@IQNnA|=ua||yp#q;Hv~!ri z({};&U!=g-(n(w`0$)e4f2+XLH?H(wg22-^^YmY$z|%8&`Y%b~Yw9Gf$pSC-dy2q| z^GKS&*AvpQ3w(Wn&k}h0CYb)q7WjrbiR(gvZzS+J0^eBRR|$L*fzK6qlfZ8f_@)By z7WifYzf0gl1U_Hjn+yCAfqz)w3k06NYoz~Ffp4jkxE2X~D}lc*@T~>j(8g!y`m>uP z4iNaK1v?28c>2zi{tFiPHadx`N#NTGe5k@QDK7NwBvhf$t{hCkyZ>UjL>S$&Lv8 zAYB>P0)c;8;8lSiEbv7FA1d(I1^zLCH?;NHzgge|1ipvB2MT<5fe#k=Xn{8gyhY$c z1-^^GhY5U?z()%FP=U7y{1Ab+3Osw^j>{4RzO$g8DDa&GK1twP2z;`@M+$t3z_%0l zG=c9Z@OFWZ7x*lJj}!Q8f$t;m3kCjhfzJ{6o&vv0;H?6mEAYJpeuKb2De!KAe@ftY z3H$(o&lmXq0)Ir{2MT2>f+{e?s65?R@rMUEl)*9uMZ1`~n5u zSi<6abOK*l;7tNwRp3Jfp56o1e_;Yoduja_De!o4pyX!}_y#2`z6mMtg8MNf2z*^Z zKT+W83w|s~;Pvm8QnX}&4-))gionzNfAwFQz;_jRyTAwO%D83;d|jbD*#ci(NN1tI z2Mg)s2>e_@f0e-N?`}}ET!9}d`hS5RFQo4l_+bLSOW+d)K40L63;Yp*=SSE~S|ITJ z2$k`wz-I~VQzY=ag!*0=_-BNCt?B0i)H66av8L|~*x?ftM@+&eGmD$s@NYJL#mxyP zlY+OP7{BJ@2~!Thmk@BzYP zYTg`%_YfwN_hvJ^oiJ@Zymp2+5vC#PO<{NqVKQxR62l)8rmciGf#LTF(-y*OVfY=w z2#{@XLg0i{Ldd{32o68hDHTrut7JY$9C1@OZ)x5zc3L zB;lrn-3&iXxEbMGhWir^A)Lc-AHvNEXEWTLFfIMPc80qUrYYB(!f<=Sp@fqdZbi5y z;RJ@85^hDwm(u zB=;6De3mdR#l86qpCU|4aIc%;V}xnx?agKQ0AZT?y*Ui;AxukfZ#Ki*3DeTUYiD>9 zVOpYiQy5-Dn3fveB!)jGOiLth0>keUrlpkE!tgtUY3bt)V|YGcTEcrx48KB{mVDko zhF>O3OL?z>;TH+hQqfy~8bJ7HRKcwm(ur0^Cne3mdRJ-qo0pCU|4 z8n2t-V}xnxFuaB^O(otWhCe1u zOMhQu5DsH_K4Drqdrb_#LYSs3Zy>`j6Q-%bYhd_A!ZbyBi*B&~ zC!9pMfZ_3kM-a|ucqHMGgxw53O?VXHT!#A-9!)rh;XZ`N5YA?}JK?c}?F@Gz{4C)V zhT9XS3CNqoa4W*&2q!Syl<;`M7KZB+evWV$!!-#{AZ%i|GU17Y0~szy_#cD~4By1| zKKXgVMb}yX6HXyq!0=hZFA&aW_!Qwugxw4uBRrXKF2e^1+X&|{yoYcq;cSMt6P`lY z&hRF}QwgUqyoPWZ;UtDXCOnOB0>keUevz<+;dcm6CmhD`e8Mvbn;3qD@Jzyi48KhH zCBg<^t1D<42wEOkJ<6VJn#i$8a7FAu5RAKoF>k}90%o1gc$BriU@i};Ls+89yMxM+ z@`%@Xf)1rWf>xK34MCnVka(*@X+)$)sn6B&lm<-TTcbeu*ZVvTk8;@;yyy#_^98*; zxPw*5sr-e;<;WO6QB!ksZ{|6>;CJhEOO9r7Wshf@-V9-ulN+j zx0`ok{xPJsu%?@PLyRmPr)^cOPV;4a)?A%=wYXSKh8YgaQ*xl_cV)*|`nA=|jc8Un zZ?Qd$!Wntt>OYC{w+D^1it~qg2O$At6Fb$>`#8d4eCMEGtFw2YwR~^W)$M+^0IL)K zA6TQ<>hKhw8k=o(R5cNGmn^5(TTicTS?NXGm0m4h zdcksf*Z$df@XMG}QpB;}&c$)asnO3NSAwB#;?kRIKAK ztFun5<6>bT*+HzsV|7{r$u^DFs07pG3xL6Zsh8rS{OVHyRtI()I%HV% z(CA^&&qNR3!TZ(fLdreEf44efLITjPvCdh@vto>MYSrR|!1&DH9ovi<^Agl^)C83-f@ks<8}M7j=JH93-MQXLcuw`TTe$(oHH&Y zAl9)H0|p`gSZAuCIOrQVWtRLXB=5EQ?AMZI_Tp~)8Md zpuY!b!yRUw={9C;McJKC`NuhaE39gDU=(ZZTpi6k^P=9&m*b*-vsH{5V2U;N{n_dm z7S=PI?336^(axU!Q9VqyR#sRp>;%l(;X|9Vol^ zS!!vAM^jRlUxsJ+4F6C>?~|;B(B9F5Vjb6*2|5my)gGQQ+M{cN=_Ox##76yW%vb`| zuGA)RyiKlhd*kiWyNq^0qg;g{`D!4xOE5;wJ=*1v)GpCms5N4pQ+ex@)h=WrC4L-U za1r@q>i2ID9sV&5*kH`~9LR2doPo^u0jQN?jO)%u4~%yF`6M5xVR=d@RQw#1yIEZm zFhm@G6!t-XI5E8J=7}#ODMydU)Z`e)S&S9xWKX^VMz2Hu)KEHb zG0w@R=%}A&<=9Gm4sw8dq_AvS$ts9#BGvnibbq!WvAQkXwBTl1f6FvmJ>V=NzHWBF?D1V60{W1UMv z$dksqz7EO3)tY%cwT_qmJQ^QQJ(v>>LaE}MJxp;?-%cvDI(slzS{NI3(wK1xv3iDI zg(TWIKW{5-?bOrbP!$a7hiPmeQI92nUunK0OgnJYI@uKGNQSe!VRamfaa_YZuC}D& zr)Pw?q2MQt+w54!jF3dDYnFA()^dpNQjTMhY4!9rK^e*Q4vuvV4M|azi^av!S7Sob z{8G(OS_dU9g5zYoFAq3WT-Uhc}F~m71fJZcn|R|0P7jH zobvf6yZIyXxmXmr6!&a4@!Qebv_O9y0y0wdNMUg?`Fr|XgHT%rHIMQ({$+{|B?m$1 zk05=A@(x2vdJ02dYUnEs?bXmVx;Pa2qeHm((Z!|oA=0Dt#)YNpQ3mp0o{~x-kMg`v zmh20T@dZcnphubDBkv(cKEt^}o?=0$oJV=a7h{MosOOWXd;!uA5r4941@tJpN z2(?*_pt|lX+T9iO+H|T}L^3F}&ukoms-G~4@+47Mg6zObc7WrSn#wvdAu!IB6kyFf zU>g|cC@3`2I>mvhtv_7u0bBL1PqXzye^~#4)XU-LW21K3Lb@iJW;97{|6`)QodN$pfR%~-zwLSWez4KTCEWLWN0DW_;mU2z z@9+L)@2|E+HDc4@Qe?kh;(QAiYo5384Q*Zcq{X=I0$P*|*KYoS{phubKBkv(c zKC`$&o|1$R?E58OjOo6ho=={#A0*lLRsNWlM^Q^c$9M?U{|-U*r!&mHKgVAYgMDX# zLi;SM0{i|R67M`%GhfGIg#jzm`@>8bYyDw$oUm#=5{u}=yrWo;P&)OXq>e^9yg$Mr z_b4s!FYk{qEx${2aVV`AQff_LC`Lm)HS~;z=4zVR+U0ePJT?OnJj!8Qcz^uPgL#Sq z735j$lU?@(|MCSd^Poq$?IZ6YM?M$1LY|V35c=bSFGis+sOOWXM57GUA7i=Dqa>Du z`sfiHN>>EcUVpIuXfl;LBH}u8JLVdd(I4F)5&Oe#_EOx`idVFCCj38P>LOb$H2&8V z*KuNq_X_slPHv)R-k9QbS(#JFOrG~!J&|VE) zqYM1M7Qv4$@c%@@|Kq~@V;~R0|5FJ5-zQ7<1;_Y;BY6=1-$&jJ(lF8$x9&#AwU9O#k%AE6$I5fzp?(gIGLIv zVi$8`=3gtIf2u+vju&ly#%vPCx2wNv^Nij60;OqdhmB_zLYUxeHRBwou!we?EY8nx z8#6I?mFzZ4&Qs72QB;DAQ>?$Xp(pwwd)Phxr5}1IK`T!UO4gzDVMyulEJLF;G)6-& zX=o)~97?Ws`9dRak~4rE;KI_yoAVIRFHdPsA&=686Hp8G1%rISnmp)H8v4k4$dQ1N zE95Cf$PxWj-4~;ZFR15}r;Gqe{WXUd(4(Z4gvRTIb|^y-RLB0x`s=YtsFEup7!=x( z-q2BpLgGym$J0@YYiojjDIh&sxb}sddd1rd0e*huGJioS-!5SNupj-fdkXc#R{Tpp zwC64ak&lCtaVXmvQdW;)=w}W6qM@rAV*b~mglZ95(#54rA{l%aE-YP-GJ^;6ly@lv zU+R-(`+_cC@D(2PC<}b#J>sUPmZS<%m<6qSTd z@erzi5JC0CN!AbRX*KVP$OeV>`3UjUA0hE(QS-82$@#h697~z9`Q>rM349FqDX=;F zlBE<;TZ2fy2h`N}G&ZP&ZA5Gq*db5}0Pvl^m@iR@xO{)g!YvtQb z7l%@gA*FB>Lk%_52!C%CvQ8Qru4yJ~mvI`o1_`2hKG)OrC|~nnp7INYu!iu-@_oS{ ze8D|D=uv+3k@t`z9}ic^Q&u5_{>$^l*x?K6`Q$0}P)zE-N4e0Wgq4Jv>Jc1DEdHR)ii#ylT37^%qbs;W!%3-)wgIW`v zf3-&%-A$UCM5CfdN^1Dk9tlKD(Fm)plGQccst!61GjdKwsc{eK?0F3OlJO3CirN|S z!kz3qM!uiM@}GS!9~o!3t&V{qVOHF)h>XK+6`cIXg;;H!jV)tB5{xb5LXwOv2Zp2= zTP_K)L*3Z&19mQFZ23t@4#QuDx_9}b2h!O#yM^O8sQv@`I3_Trv!i@Wm6;zPYPdW6Y95{-!Qp-Ro><9b>;<`z znz68{)zuHTseUxhaRSC<#ZiG?(jpv zZz%pL*8=~PZ{drQ`U8~9A<;=)G-YIA$+$}T1{9-(%|EYav1thI^wJ?l$^Ezle?*y# zGZH&WVi*$cCTX_S@7vgxJMA-zafa9too&TwNNoB!zYSD;cEiK_5a>-bNoZA?Llahs z{r>m&FN{+&Nm!g_p<4_vNYO&|&W&>^aWUm28~ykQ>tm{bua8U0Z=HSa2qgdJvBd_` zMlvftnzW&|g&4iCG=fkc<@wH-;c2*)3@w-Wv**d7&dLF z{psFA8STFbFKv`mgw>!G)u2aRq4EFM?T4PeETjCz5pwy*|3u}lQbzgtd`~ww>HZM9 z;|feF5iZi|!Ttz;EZgezZyrh+;(m!0e7M_g9)kr1O7KaD#e}u@^mwO#$i{X|=OT_l zt&oPhvEW#N!l;|@6jXTeCfuz-5*O54hcHMp-MA%gTmV;d1AK-%&e6e`@hyV!&X5qU zjGOA}UQOBR_|}-wow9Va_Pz%--}sGl*+MMgS2vN5jB{L5Z~s_ayrB~w58RZR20gM- zELqQWgpF>PY#TFT;;4zE@z6j`>SWX8(a$k64Fia5H(}gA#$tl%2Jxc?b(EI1mT#PE z2A%YK)HcMrXckMqUL0rad6Q?&+5$zOTMg4t1nQl@c*hNlkC&16Mk*d;Y&31rfPYB1 zTdl^@GmnCfdWqsW9tlC5MBrG*HWp2bLp~n$LzH7Id9CTeu$oiD9v~h|V>tV>&dS#G z?f$OW#dq%9xwikIUCr(I*}RTz+q{7v+3lEIW3UtLQ_gCP*>7-L(~p(6wmfT{eUoyT zS{rfwc!}}!!ZkGuDdXy_Yfbm~yIy9A9(X8UPjtIhA#Jin;a7DiXV`XD&u6>UHHh-L ziF{m2D%RhcOG!UjKCb1pI6NKG@=mxr&hMJ)hivRKLM(>7jF89BUWU}#u%Ty=+9qCm zwK}W2`OI_W(HK`5t=>FH&22siE>HQ64p6KPJY;moS>2kR=kI!*x51v-r&uGXj{Rta zYumL}z&`K^D%~Z+0c-jRw89Uc3J)QyPmpZZMlDJwmq_) zEzp{-`dOoPrCvsjhETr9(^;NvJul&zPpeZKDWk0&w4r0ntcd9d{*T6$aBrq(#(87L z9mI%pnpZ!AmZ8Un*`$REz5gg|z-d%lp?&SY8bSkSns8jU5FIlg^4O?y@vxTfG9YgsWX0~=(FpSH1yUD*FL}NodLSw?8cD+S%syu_Ne(9%1i2F2 zu2c8#r;c6{5~z)(QsV<15l`hJL$NyiX$;i{#&B7USbU7&0Qw@se3%^juMCr8_ZlWF zd7Pdoej~HXK zoyswsyU;^o8OR;a?I@c{VefOK=JTgA)}D`u8})~_hMava0VaIUIiVj87!BAk&<$Mj z(N^4u*F7_;rHj5No8j5*<-Xqa`Y z#o9rgf`+==6(4NFT`_fMI<+M%yD8nIZ$yv3S*)&}ei;X{o-`OUPs7yMelX8c3`;Oa zjD>g82ImRY%DTb)5I7uX&~Xv-*f*Tv*7R-uuD6)S{^_C1B_8{yZ5K*B_D@#V3*@o) zlE*#@kA1_{uQ>C-OKmY%?4{GWQ3uk!<>)a{zsuH^djx--&-^u==P`f1gso;UdK$9P z!!``5lQ4wH!gVK&=Un+*7^gj*G~)+2wQ1Nom+VUh_{IADTr$3}2Qp?Ohhu@!3-%nZx4tT0HhK{$G{&wg?+D=z=DsCJBQT90S`icc{{~1xjOQO7{MQO;R6n;m~rz&3P zmYiQ}<3E}$4Kes5<-rdk+?`pR+KwF3f)FcH=un$AsWFp2216|hwxmV1`oktxwZ_o8 z{T&+{7{NB!&ro_m40hN9L;5J5dBZYm8|@7(SuYgZD#cP=qPC^}kr!QTP~WGR>1q?K z#0rdaXVA!SMGQxpNO}k*9sNBNFdW0Mdd2XAFSWf8?%rskR&*S*;&~^MY%w6_73=B} zP56nq6cYosJ$wjxW4LpyN!rm%GHL^oIZnnpzEuqf_RKtQ%%m5c3iGIkp?>QjlRZ;?`r;}o@L#KM;4 zSSe#Kkhd;-4IDoz@7}%<%V0R$xKVrHLt zZ^qunbq(uh#ndeqlQpz1hUaD9{7VKO8@0tMZOU<^+u<5cAaj4pqmTz@s z8&P~bIP(&1BHlo8S$$|>=0zd58Z2xKJw^jZotuYZli`D;N9Y_L%n<6fbIgu7ds6)Z zn1;nhs-)v29KdkIbEwzyx2a9Mcd*T+`{y)YXbsF3g>h(OZwL4XK3{at%cx35Yw%9S z@PNOaeUq$a>KWLE!8;tBIt@`u<^wE?*^@1`Fl!r(8S&_H)aQv|`ZmgC?t-uyQG_z3 znDHWpB{r zD-jU|`B~4*qioZIQ0=ewMt9oHDO66V_4F0J6%VFbk;}%xNCo-tqkI5DE4&g! zIcQ6@%35aa^c>KrrQQ!R_bW+f-wu{eH=a)6I$FP(qbLE^5FW+B3*fDTj;Hwx@_M@5 za?^r?`I#jQk)-Sm&q66-8RdREjZ?IxB`>El$9L zwB|LOiwDPEF+twN1+h+p1BY%_SG6HcX;SkPCnOJO!rIlKA9&D4tW%+te^3W#dZxZh~Gf@_@xyM

NHYR`cMbhRTU6d!NUl=MM$ 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≫QhDY#ff)&dE?#RG+wsnZ`GJt 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⋘12 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 literal 420805 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 ???? CFBundleVersion - 1.54 + 1.55 CSResourcesFileMapped yes DTCompiler diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/MacOS/libsteam_api.dylib b/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/MacOS/libsteam_api.dylib index 314c5d74783583d70a4c90e371a35da075e978e6..41fc923c2f0b6aa5caf6772a6d3f37226606550b 100644 GIT binary patch delta 136092 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 W4PL0X%&|Mzrsb2xJNsQ~^#1^cGPA}2 diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api.dll b/com.rlabrecque.steamworks.net/Plugins/steam_api.dll index 74013a0264b758cbee55c905a9897e3d7a7c2259..3c4d47f7bac208c1d634d3847583702d217331eb 100644 GIT binary patch delta 36407 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 delta 35633 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 I12ct?u|Fm`8Ee|stgoz$>vJi*WT*3> zBHr)G{Sogbmu%Q^;blRGWBBo#{GJn=L`;q-7T2VXXy*M-*prl*V=lZcpH%Dw*PjR7`)xdV>#w#xEoSCh{tu`Zl)3-_ diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api64.dll b/com.rlabrecque.steamworks.net/Plugins/steam_api64.dll index 2154994cae70d6b1d9578e6836c70ad3d0dfd5ca..5b798af163544229e721cccd2cfc3bd1f26082da 100644 GIT binary patch delta 50153 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 T{Z`ZK?aEks-ZL#oj=KK^Ryo6o delta 48793 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

    SEQz)6Ncb)@CU^fwtGj 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 Nz}OxGih5hB{{yE<*7N`X diff --git a/com.rlabrecque.steamworks.net/README.md b/com.rlabrecque.steamworks.net/README.md index f744cb2d..18e45cdb 100644 --- a/com.rlabrecque.steamworks.net/README.md +++ b/com.rlabrecque.steamworks.net/README.md @@ -5,7 +5,7 @@ _Steamworks.NET_ is a C# Wrapper for Valve's Steamworks API, it can be used eith _Steamworks.NET_ was designed to be as close as possible to the original C++ API, as such the documentation provided from Valve largely covers usage of _Steamworks.NET_. Niceties and C# Idioms can be easily implemented on top of _Steamworks.NET_. -_Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.54. +_Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.55. * Author: [Riley Labrecque](https://github.com/rlabrecque) * License: [MIT](http://www.opensource.org/licenses/mit-license.php) diff --git a/com.rlabrecque.steamworks.net/Runtime/Version.cs b/com.rlabrecque.steamworks.net/Runtime/Version.cs index 4d8f4e38..588a3908 100644 --- a/com.rlabrecque.steamworks.net/Runtime/Version.cs +++ b/com.rlabrecque.steamworks.net/Runtime/Version.cs @@ -14,10 +14,10 @@ namespace Steamworks { public static class Version { public const string SteamworksNETVersion = "20.1.0"; - public const string SteamworksSDKVersion = "1.54"; - public const string SteamAPIDLLVersion = "07.30.20.28"; - public const int SteamAPIDLLSize = 264664; - public const int SteamAPI64DLLSize = 296408; + public const string SteamworksSDKVersion = "1.55"; + public const string SteamAPIDLLVersion = "07.40.51.27"; + public const int SteamAPIDLLSize = 266128; + public const int SteamAPI64DLLSize = 298384; } } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs index 0c40667f..46ed9914 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs @@ -481,6 +481,10 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamApps_BIsTimedTrial", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] public static extern bool ISteamApps_BIsTimedTrial(IntPtr instancePtr, out uint punSecondsAllowed, out uint punSecondsPlayed); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamApps_SetDlcContext", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamApps_SetDlcContext(IntPtr instancePtr, AppId_t nAppID); #endregion #region SteamClient [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamClient_CreateSteamPipe", CallingConvention = CallingConvention.Cdecl)] @@ -1384,6 +1388,9 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_GetSessionInputConfigurationSettings", CallingConvention = CallingConvention.Cdecl)] public static extern ushort ISteamInput_GetSessionInputConfigurationSettings(IntPtr instancePtr); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInput_SetDualSenseTriggerEffect", CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamInput_SetDualSenseTriggerEffect(IntPtr instancePtr, InputHandle_t inputHandle, IntPtr pParam); #endregion #region SteamInventory [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamInventory_GetResultStatus", CallingConvention = CallingConvention.Cdecl)] diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs index fef25f98..995cbe0c 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs @@ -1456,6 +1456,7 @@ public enum EResult : int { k_EResultInsufficientBattery = 124, // user device doesn't have enough battery charge currently to complete the action k_EResultChargerRequired = 125, // The operation requires a charger to be plugged in, which wasn't present k_EResultCachedCredentialInvalid = 126, // Cached credential was invalid - user must reauthenticate + K_EResultPhoneNumberIsVOIP = 127, // The phone number provided is a Voice Over IP number } // Error codes for use with the voice functions diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapps.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapps.cs index 3b131ca5..9218b8aa 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapps.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapps.cs @@ -263,6 +263,14 @@ public static bool BIsTimedTrial(out uint punSecondsAllowed, out uint punSeconds InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_BIsTimedTrial(CSteamAPIContext.GetSteamApps(), out punSecondsAllowed, out punSecondsPlayed); } + + ///

    + /// set current DLC AppID being played (or 0 if none). Allows Steam to track usage of major DLC extensions + /// + public static bool SetDlcContext(AppId_t nAppID) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamApps_SetDlcContext(CSteamAPIContext.GetSteamApps(), nAppID); + } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs index bccdca99..0302b9dc 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs @@ -458,6 +458,14 @@ public static ushort GetSessionInputConfigurationSettings() { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamInput_GetSessionInputConfigurationSettings(CSteamAPIContext.GetSteamInput()); } + + /// + /// Set the trigger effect for a DualSense controller + /// + public static void SetDualSenseTriggerEffect(InputHandle_t inputHandle, IntPtr pParam) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamInput_SetDualSenseTriggerEffect(CSteamAPIContext.GetSteamInput(), inputHandle, pParam); + } } } From 0936aa860c99d5d1710110edeaacf1c4cf96882c Mon Sep 17 00:00:00 2001 From: Andrew Chappell Date: Tue, 16 May 2023 11:54:04 +0100 Subject: [PATCH 31/55] Updated headers and binaries from SteamSDK 1.57 --- CodeGen/steam/isteamapplist.h | 2 +- CodeGen/steam/isteamapps.h | 24 --- CodeGen/steam/isteamclient.h | 2 +- CodeGen/steam/isteamcontroller.h | 15 +- CodeGen/steam/isteamfriends.h | 4 +- CodeGen/steam/isteamgameserver.h | 6 +- CodeGen/steam/isteaminput.h | 100 ++++++++-- CodeGen/steam/isteamparentalsettings.h | 1 + CodeGen/steam/isteamremoteplay.h | 7 +- CodeGen/steam/isteamugc.h | 15 +- CodeGen/steam/isteamuser.h | 37 +++- CodeGen/steam/isteamutils.h | 19 +- CodeGen/steam/matchmakingtypes.h | 24 +-- CodeGen/steam/steam_api.json | 186 ++++++++++++++---- CodeGen/steam/steam_api_common.h | 21 +- CodeGen/steam/steam_api_flat.h | 24 ++- CodeGen/steam/steam_api_internal.h | 13 +- CodeGen/steam/steamclientpublic.h | 44 +++-- CodeGen/steam/steamhttpenums.h | 1 + CodeGen/steam/steamnetworkingtypes.h | 4 +- CodeGen/steam/steamtypes.h | 13 +- .../Plugins/libsteam_api.so | Bin 421001 -> 391056 bytes .../Contents/MacOS/libsteam_api.dylib | Bin 610128 -> 610496 bytes .../Plugins/steam_api.dll | Bin 266128 -> 266600 bytes .../Plugins/steam_api64.dll | Bin 298384 -> 298856 bytes 25 files changed, 377 insertions(+), 185 deletions(-) diff --git a/CodeGen/steam/isteamapplist.h b/CodeGen/steam/isteamapplist.h index 91de8324..d0fe2c8d 100644 --- a/CodeGen/steam/isteamapplist.h +++ b/CodeGen/steam/isteamapplist.h @@ -47,7 +47,7 @@ STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamAppList *, SteamAppList, STEAMAPPLIS //--------------------------------------------------------------------------------- -// Purpose: Sent when a new app is installed +// Purpose: Sent when a new app is installed (not downloaded yet) //--------------------------------------------------------------------------------- STEAM_CALLBACK_BEGIN( SteamAppInstalled_t, k_iSteamAppListCallbacks + 1 ) STEAM_CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs diff --git a/CodeGen/steam/isteamapps.h b/CodeGen/steam/isteamapps.h index fd6b3340..8a2197ed 100644 --- a/CodeGen/steam/isteamapps.h +++ b/CodeGen/steam/isteamapps.h @@ -137,30 +137,6 @@ struct DlcInstalled_t }; -//----------------------------------------------------------------------------- -// Purpose: possible results when registering an activation code -//----------------------------------------------------------------------------- -enum ERegisterActivationCodeResult -{ - k_ERegisterActivationCodeResultOK = 0, - k_ERegisterActivationCodeResultFail = 1, - k_ERegisterActivationCodeResultAlreadyRegistered = 2, - k_ERegisterActivationCodeResultTimeout = 3, - k_ERegisterActivationCodeAlreadyOwned = 4, -}; - - -//----------------------------------------------------------------------------- -// Purpose: response to RegisterActivationCode() -//----------------------------------------------------------------------------- -struct RegisterActivationCodeResponse_t -{ - enum { k_iCallback = k_iSteamAppsCallbacks + 8 }; - ERegisterActivationCodeResult m_eResult; - uint32 m_unPackageRegistered; // package that was registered. Only set on success -}; - - //--------------------------------------------------------------------------------- // Purpose: posted after the user gains executes a Steam URL with command line or query parameters // such as steam://run///-commandline/?param1=value1¶m2=value2¶m3=value3 etc diff --git a/CodeGen/steam/isteamclient.h b/CodeGen/steam/isteamclient.h index 3278780f..8cd45891 100644 --- a/CodeGen/steam/isteamclient.h +++ b/CodeGen/steam/isteamclient.h @@ -1,4 +1,4 @@ -//====== Copyright Valve Corporation, All rights reserved. ==================== +//====== Copyright Valve Corporation, All rights reserved. ==================== // // Internal low-level access to Steamworks interfaces. // diff --git a/CodeGen/steam/isteamcontroller.h b/CodeGen/steam/isteamcontroller.h index 53a49e6e..d8074550 100644 --- a/CodeGen/steam/isteamcontroller.h +++ b/CodeGen/steam/isteamcontroller.h @@ -21,9 +21,9 @@ #define STEAM_CONTROLLER_MAX_COUNT 16 -#define STEAM_CONTROLLER_MAX_ANALOG_ACTIONS 16 +#define STEAM_CONTROLLER_MAX_ANALOG_ACTIONS 24 -#define STEAM_CONTROLLER_MAX_DIGITAL_ACTIONS 128 +#define STEAM_CONTROLLER_MAX_DIGITAL_ACTIONS 256 #define STEAM_CONTROLLER_MAX_ORIGINS 8 @@ -448,6 +448,16 @@ enum EControllerActionOrigin k_EControllerActionOrigin_SteamDeck_Reserved19, k_EControllerActionOrigin_SteamDeck_Reserved20, + k_EControllerActionOrigin_Switch_JoyConButton_N, // With a Horizontal JoyCon this will be Y or what would be Dpad Right when vertical + k_EControllerActionOrigin_Switch_JoyConButton_E, // X + k_EControllerActionOrigin_Switch_JoyConButton_S, // A + k_EControllerActionOrigin_Switch_JoyConButton_W, // B + + k_EControllerActionOrigin_PS5_LeftGrip, + k_EControllerActionOrigin_PS5_RightGrip, + k_EControllerActionOrigin_PS5_LeftFn, + k_EControllerActionOrigin_PS5_RightFn, + k_EControllerActionOrigin_Count, // If Steam has added support for new controllers origins will go here. k_EControllerActionOrigin_MaximumPossibleValue = 32767, // Origins are currently a maximum of 16 bits. }; @@ -529,6 +539,7 @@ typedef uint64 ControllerAnalogActionHandle_t; #define ControllerAnalogActionData_t InputAnalogActionData_t #define ControllerDigitalActionData_t InputDigitalActionData_t #define ControllerMotionData_t InputMotionData_t +#define ControllerMotionDataV2_t InputMotionDataV2_t #else struct ControllerAnalogActionData_t { diff --git a/CodeGen/steam/isteamfriends.h b/CodeGen/steam/isteamfriends.h index 4ac4293c..21c23195 100644 --- a/CodeGen/steam/isteamfriends.h +++ b/CodeGen/steam/isteamfriends.h @@ -514,7 +514,9 @@ enum EPersonaChange struct GameOverlayActivated_t { enum { k_iCallback = k_iSteamFriendsCallbacks + 31 }; - uint8 m_bActive; // true if it's just been activated, false otherwise + uint8 m_bActive; // true if it's just been activated, false otherwise + bool m_bUserInitiated; // true if the user asked for the overlay to be activated/deactivated + AppId_t m_nAppID; // the appID of the game (should always be the current game) }; diff --git a/CodeGen/steam/isteamgameserver.h b/CodeGen/steam/isteamgameserver.h index 386e7fa4..ba4d1251 100644 --- a/CodeGen/steam/isteamgameserver.h +++ b/CodeGen/steam/isteamgameserver.h @@ -152,7 +152,9 @@ class ISteamGameServer // Retrieve ticket to be sent to the entity who wishes to authenticate you ( using BeginAuthSession API ). // pcbTicket retrieves the length of the actual ticket. - virtual HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; + // SteamNetworkingIdentity is an optional parameter to hold the public IP address of the entity you are connecting to + // if an IP address is passed Steam will only allow the ticket to be used by an entity with that IP address + virtual HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket, const SteamNetworkingIdentity *pSnid ) = 0; // Authenticate ticket ( from GetAuthSessionTicket ) from entity steamID to be sure it is valid and isnt reused // Registers for callbacks if the entity goes offline or cancels the ticket ( see ValidateAuthTicketResponse_t callback and EAuthSessionResponse ) @@ -264,7 +266,7 @@ class ISteamGameServer ) }; -#define STEAMGAMESERVER_INTERFACE_VERSION "SteamGameServer014" +#define STEAMGAMESERVER_INTERFACE_VERSION "SteamGameServer015" // Global accessor inline ISteamGameServer *SteamGameServer(); diff --git a/CodeGen/steam/isteaminput.h b/CodeGen/steam/isteaminput.h index e28f274d..9b302785 100644 --- a/CodeGen/steam/isteaminput.h +++ b/CodeGen/steam/isteaminput.h @@ -17,9 +17,9 @@ #define STEAM_INPUT_MAX_COUNT 16 -#define STEAM_INPUT_MAX_ANALOG_ACTIONS 16 +#define STEAM_INPUT_MAX_ANALOG_ACTIONS 24 -#define STEAM_INPUT_MAX_DIGITAL_ACTIONS 128 +#define STEAM_INPUT_MAX_DIGITAL_ACTIONS 256 #define STEAM_INPUT_MAX_ORIGINS 8 @@ -319,10 +319,10 @@ enum EInputActionOrigin k_EInputActionOrigin_Switch_LeftGrip_Upper, // Left JoyCon SL Button k_EInputActionOrigin_Switch_RightGrip_Lower, // Right JoyCon SL Button k_EInputActionOrigin_Switch_RightGrip_Upper, // Right JoyCon SR Button - k_EInputActionOrigin_Switch_Reserved11, - k_EInputActionOrigin_Switch_Reserved12, - k_EInputActionOrigin_Switch_Reserved13, - k_EInputActionOrigin_Switch_Reserved14, + k_EInputActionOrigin_Switch_JoyConButton_N, // With a Horizontal JoyCon this will be Y or what would be Dpad Right when vertical + k_EInputActionOrigin_Switch_JoyConButton_E, // X + k_EInputActionOrigin_Switch_JoyConButton_S, // A + k_EInputActionOrigin_Switch_JoyConButton_W, // B k_EInputActionOrigin_Switch_Reserved15, k_EInputActionOrigin_Switch_Reserved16, k_EInputActionOrigin_Switch_Reserved17, @@ -386,10 +386,10 @@ enum EInputActionOrigin k_EInputActionOrigin_PS5_Gyro_Yaw, k_EInputActionOrigin_PS5_Gyro_Roll, k_EInputActionOrigin_PS5_DPad_Move, - k_EInputActionOrigin_PS5_Reserved1, - k_EInputActionOrigin_PS5_Reserved2, - k_EInputActionOrigin_PS5_Reserved3, - k_EInputActionOrigin_PS5_Reserved4, + k_EInputActionOrigin_PS5_LeftGrip, + k_EInputActionOrigin_PS5_RightGrip, + k_EInputActionOrigin_PS5_LeftFn, + k_EInputActionOrigin_PS5_RightFn, k_EInputActionOrigin_PS5_Reserved5, k_EInputActionOrigin_PS5_Reserved6, k_EInputActionOrigin_PS5_Reserved7, @@ -643,12 +643,12 @@ struct InputDigitalActionData_t struct InputMotionData_t { - // Sensor-fused absolute rotation; will drift in heading + // Sensor-fused absolute rotation; will drift in heading toward average float rotQuatX; float rotQuatY; float rotQuatZ; float rotQuatW; - + // Positional acceleration float posAccelX; float posAccelY; @@ -660,6 +660,58 @@ struct InputMotionData_t float rotVelZ; }; + +struct InputMotionDataV2_t +{ + // + // Gyro post processing: + // + + // Drift Corrected Quaternion is calculated after steam input controller calibration values have been applied. + // Rawest _useful_ version of a quaternion. + // Most camera implementations should use this by comparing last rotation against current rotation, and applying the difference to the in game camera (plus your own sensitivity tweaks) + // It is worth viewing + float driftCorrectedQuatX; + float driftCorrectedQuatY; + float driftCorrectedQuatZ; + float driftCorrectedQuatW; + + // Sensor fusion corrects using accelerometer, and "average forward over time" for "forward". + // This can "ouija" your aim, so it's not so appropriate for camera controls (sensor fusion was originally made for racing game steering ) + // Same result as from old InputMotionData_t::rotQuatX/Y/Z/W + float sensorFusionQuatX; + float sensorFusionQuatY; + float sensorFusionQuatZ; + float sensorFusionQuatW; + + // Deferred Sensor fusion quaternion with deferred correction + // Reduces perception of "ouija" effect by only applying correction when the controller is below "low noise" thresholds, + // while the controller rotates fast - never when the user is attempting precision aim. + float deferredSensorFusionQuatX; + float deferredSensorFusionQuatY; + float deferredSensorFusionQuatZ; + float deferredSensorFusionQuatW; + + // Same as accel but values are calibrated such that 1 unit = 1G. + // X = Right + // Y = Forward out through the joystick USB port. + // Z = Up through the joystick axis. + float gravityX; + float gravityY; + float gravityZ; + + // + // Same as rotVel values in GetMotionData but values are calibrated to degrees per second. + // Local Space (controller relative) + // X = Pitch = left to right axis + // Y = Roll = axis through charging port + // Z = Yaw = axis through sticks + float degreesPerSecondX; + float degreesPerSecondY; + float degreesPerSecondZ; + +}; + //----------------------------------------------------------------------------- // Purpose: when callbacks are enabled this fires each time a controller action // state changes @@ -753,6 +805,12 @@ class ISteamInput // Note: this is called within either SteamInput()->RunFrame or by SteamAPI_RunCallbacks STEAM_CALL_BACK( SteamInputDeviceDisconnected_t ) + // Controllers using Gamepad emulation (XInput, DirectInput, etc) will be seated in the order that + // input is sent by the device. This callback will fire on first input for each device and when the + // a user has manually changed the order via the Steam overlay. This also has the device type info + // so that you can change out glyph sets without making additional API calls + STEAM_CALL_BACK( SteamInputGamepadSlotChange_t ) + // Enable SteamInputActionEvent_t callbacks. Directly calls your callback function // for lower latency than standard Steam callbacks. Supports one callback at a time. // Note: this is called within either SteamInput()->RunFrame or by SteamAPI_RunCallbacks @@ -897,7 +955,7 @@ class ISteamInput // See isteamremoteplay.h for more information on Steam Remote Play sessions virtual uint32 GetRemotePlaySessionID( InputHandle_t inputHandle ) = 0; - // Get a bitmask of the Steam Input Configuration types opted in for the current session. Returns ESteamInputConfigurationEnableType values.? + // Get a bitmask of the Steam Input Configuration types opted in for the current session. Returns ESteamInputConfigurationEnableType values. // Note: user can override the settings from the Steamworks Partner site so the returned values may not exactly match your default configuration virtual uint16 GetSessionInputConfigurationSettings() = 0; @@ -957,6 +1015,20 @@ struct SteamInputConfigurationLoaded_t bool m_bUsesGamepadAPI; // Does the configuration contain any Xinput bindings? }; +//----------------------------------------------------------------------------- +// Purpose: called when controller gamepad slots change - on Linux/macOS these +// slots are shared for all running apps. +//----------------------------------------------------------------------------- +struct SteamInputGamepadSlotChange_t +{ + enum { k_iCallback = k_iSteamControllerCallbacks + 4 }; + AppId_t m_unAppID; + InputHandle_t m_ulDeviceHandle; // Handle for device + ESteamInputType m_eDeviceType; // Type of device + int m_nOldGamepadSlot; // Previous GamepadSlot - can be -1 controller doesn't uses gamepad bindings + int m_nNewGamepadSlot; // New Gamepad Slot - can be -1 controller doesn't uses gamepad bindings +}; + #pragma pack( pop ) -#endif // ISTEAMINPUT_H \ No newline at end of file +#endif // ISTEAMINPUT_H diff --git a/CodeGen/steam/isteamparentalsettings.h b/CodeGen/steam/isteamparentalsettings.h index 2a22b01a..a1ff1520 100644 --- a/CodeGen/steam/isteamparentalsettings.h +++ b/CodeGen/steam/isteamparentalsettings.h @@ -29,6 +29,7 @@ enum EParentalFeature k_EFeatureLibrary = 11, k_EFeatureTest = 12, k_EFeatureSiteLicense = 13, + k_EFeatureKioskMode = 14, k_EFeatureMax }; diff --git a/CodeGen/steam/isteamremoteplay.h b/CodeGen/steam/isteamremoteplay.h index 9c2dafb3..569c2359 100644 --- a/CodeGen/steam/isteamremoteplay.h +++ b/CodeGen/steam/isteamremoteplay.h @@ -51,7 +51,7 @@ class ISteamRemotePlay // This is set to 0x0 if the resolution is not available virtual bool BGetSessionClientResolution( RemotePlaySessionID_t unSessionID, int *pnResolutionX, int *pnResolutionY ) = 0; - // Invite a friend to Remote Play Together + // Invite a friend to Remote Play Together, or create a guest invite if steamIDFriend is empty // This returns false if the invite can't be sent virtual bool BSendRemotePlayTogetherInvite( CSteamID steamIDFriend ) = 0; }; @@ -82,6 +82,11 @@ STEAM_CALLBACK_BEGIN( SteamRemotePlaySessionDisconnected_t, k_iSteamRemotePlayCa STEAM_CALLBACK_END( 0 ) +STEAM_CALLBACK_BEGIN( SteamRemotePlayTogetherGuestInvite_t, k_iSteamRemotePlayCallbacks + 3 ) + STEAM_CALLBACK_MEMBER_ARRAY( 0, char, m_szConnectURL, 1024 ) +STEAM_CALLBACK_END( 0 ) + + #pragma pack( pop ) diff --git a/CodeGen/steam/isteamugc.h b/CodeGen/steam/isteamugc.h index f6e43a8d..a528f2d7 100644 --- a/CodeGen/steam/isteamugc.h +++ b/CodeGen/steam/isteamugc.h @@ -157,6 +157,15 @@ enum EItemPreviewType k_EItemPreviewType_ReservedMax = 255, // you can specify your own types above this value }; +enum EUGCContentDescriptorID +{ + k_EUGCContentDescriptor_NudityOrSexualContent = 1, + k_EUGCContentDescriptor_FrequentViolenceOrGore = 2, + k_EUGCContentDescriptor_AdultOnlySexualContent = 3, + k_EUGCContentDescriptor_GratuitousSexualContent = 4, + k_EUGCContentDescriptor_AnyMatureContent = 5, +}; + const uint32 kNumUGCResultsPerPage = 50; const uint32 k_cchDeveloperMetadataMax = 5000; @@ -237,6 +246,8 @@ class ISteamUGC STEAM_FLAT_NAME( GetQueryFirstUGCKeyValueTag ) virtual bool GetQueryUGCKeyValueTag( UGCQueryHandle_t handle, uint32 index, const char *pchKey, STEAM_OUT_STRING_COUNT(cchValueSize) char *pchValue, uint32 cchValueSize ) = 0; + virtual uint32 GetQueryUGCContentDescriptors( UGCQueryHandle_t handle, uint32 index, EUGCContentDescriptorID *pvecDescriptors, uint32 cMaxEntries ) = 0; + // Release the request to free up memory, after retrieving results virtual bool ReleaseQueryUGCRequest( UGCQueryHandle_t handle ) = 0; @@ -293,6 +304,8 @@ class ISteamUGC virtual bool UpdateItemPreviewFile( UGCUpdateHandle_t handle, uint32 index, const char *pszPreviewFile ) = 0; // updates an existing preview file for this item. pszPreviewFile points to local file, which must be under 1MB in size virtual bool UpdateItemPreviewVideo( UGCUpdateHandle_t handle, uint32 index, const char *pszVideoID ) = 0; // updates an existing preview video for this item virtual bool RemoveItemPreview( UGCUpdateHandle_t handle, uint32 index ) = 0; // remove a preview by index starting at 0 (previews are sorted) + virtual bool AddContentDescriptor( UGCUpdateHandle_t handle, EUGCContentDescriptorID descid ) = 0; + virtual bool RemoveContentDescriptor( UGCUpdateHandle_t handle, EUGCContentDescriptorID descid ) = 0; STEAM_CALL_RESULT( SubmitItemUpdateResult_t ) virtual SteamAPICall_t SubmitItemUpdate( UGCUpdateHandle_t handle, const char *pchChangeNote ) = 0; // commit update process started with StartItemUpdate() @@ -371,7 +384,7 @@ class ISteamUGC virtual SteamAPICall_t GetWorkshopEULAStatus() = 0; }; -#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION016" +#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION017" // Global interface accessor inline ISteamUGC *SteamUGC(); diff --git a/CodeGen/steam/isteamuser.h b/CodeGen/steam/isteamuser.h index 82625dac..182f02e7 100644 --- a/CodeGen/steam/isteamuser.h +++ b/CodeGen/steam/isteamuser.h @@ -124,7 +124,16 @@ class ISteamUser // Retrieve ticket to be sent to the entity who wishes to authenticate you. // pcbTicket retrieves the length of the actual ticket. - virtual HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket ) = 0; + // SteamNetworkingIdentity is an optional input parameter to hold the public IP address or SteamID of the entity you are connecting to + // if an IP address is passed Steam will only allow the ticket to be used by an entity with that IP address + // if a Steam ID is passed Steam will only allow the ticket to be used by that Steam ID + // not to be used for "ISteamUserAuth\AuthenticateUserTicket" - it will fail + virtual HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket, const SteamNetworkingIdentity *pSteamNetworkingIdentity ) = 0; + + // Request a ticket which will be used for webapi "ISteamUserAuth\AuthenticateUserTicket" + // pchIdentity is an optional input parameter to identify the service the ticket will be sent to + // the ticket will be returned in callback GetTicketForWebApiResponse_t + virtual HAuthTicket GetAuthTicketForWebApi( const char *pchIdentity ) = 0; // Authenticate ticket from entity steamID to be sure it is valid and isnt reused // Registers for callbacks if the entity goes offline or cancels the ticket ( see ValidateAuthTicketResponse_t callback and EAuthSessionResponse ) @@ -210,7 +219,7 @@ class ISteamUser }; -#define STEAMUSER_INTERFACE_VERSION "SteamUser021" +#define STEAMUSER_INTERFACE_VERSION "SteamUser023" // Global interface accessor inline ISteamUser *SteamUser(); @@ -225,12 +234,13 @@ STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamUser *, SteamUser, STEAMUSER_INTERFA #error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx #endif + //----------------------------------------------------------------------------- -// Purpose: called when a connections to the Steam back-end has been established -// this means the Steam client now has a working connection to the Steam servers -// usually this will have occurred before the game has launched, and should +// Purpose: Called when an authenticated connection to the Steam back-end has been established. +// This means the Steam client now has a working connection to the Steam servers. +// Usually this will have occurred before the game has launched, and should // only be seen if the user has dropped connection due to a networking issue -// or a Steam server update +// or a Steam server update. //----------------------------------------------------------------------------- struct SteamServersConnected_t { @@ -350,7 +360,6 @@ struct GetAuthSessionTicketResponse_t EResult m_eResult; }; - //----------------------------------------------------------------------------- // Purpose: sent to your game in response to a steam://gamewebcallback/ command //----------------------------------------------------------------------------- @@ -411,6 +420,20 @@ struct DurationControl_t }; +//----------------------------------------------------------------------------- +// callback for GetTicketForWebApi +//----------------------------------------------------------------------------- +struct GetTicketForWebApiResponse_t +{ + enum { k_iCallback = k_iSteamUserCallbacks + 68 }; + HAuthTicket m_hAuthTicket; + EResult m_eResult; + int m_cubTicket; + static const int k_nCubTicketMaxLength = 2560; + uint8 m_rgubTicket[k_nCubTicketMaxLength]; +}; + + #pragma pack( pop ) #endif // ISTEAMUSER_H diff --git a/CodeGen/steam/isteamutils.h b/CodeGen/steam/isteamutils.h index 5f56d8d8..c5651e76 100644 --- a/CodeGen/steam/isteamutils.h +++ b/CodeGen/steam/isteamutils.h @@ -6,9 +6,6 @@ #ifndef ISTEAMUTILS_H #define ISTEAMUTILS_H -#ifdef _WIN32 -#pragma once -#endif #include "steam_api_common.h" @@ -60,12 +57,6 @@ enum ETextFilteringContext }; -// function prototype for warning message hook -#if defined( POSIX ) -#define __cdecl -#endif -extern "C" typedef void (__cdecl *SteamAPIWarningMessageHook_t)(int, const char *); - //----------------------------------------------------------------------------- // Purpose: interface to user independent utility functions //----------------------------------------------------------------------------- @@ -317,6 +308,7 @@ struct GamepadTextInputDismissed_t enum { k_iCallback = k_iSteamUtilsCallbacks + 14 }; bool m_bSubmitted; // true if user entered & accepted text (Call ISteamUtils::GetEnteredGamepadTextInput() for text), false if canceled input uint32 m_unSubmittedText; + AppId_t m_unAppID; }; // k_iSteamUtilsCallbacks + 15 through 35 are taken @@ -334,6 +326,15 @@ struct FloatingGamepadTextInputDismissed_t enum { k_iCallback = k_iSteamUtilsCallbacks + 38 }; }; +//----------------------------------------------------------------------------- +// The text filtering dictionary has changed +//----------------------------------------------------------------------------- +struct FilterTextDictionaryChanged_t +{ + enum { k_iCallback = k_iSteamUtilsCallbacks + 39 }; + int m_eLanguage; // One of ELanguage, or k_LegallyRequiredFiltering +}; + #pragma pack( pop ) #endif // ISTEAMUTILS_H diff --git a/CodeGen/steam/matchmakingtypes.h b/CodeGen/steam/matchmakingtypes.h index 0ae70c7c..791802a0 100644 --- a/CodeGen/steam/matchmakingtypes.h +++ b/CodeGen/steam/matchmakingtypes.h @@ -8,16 +8,6 @@ #ifndef MATCHMAKINGTYPES_H #define MATCHMAKINGTYPES_H -#ifdef _WIN32 -#pragma once -#endif - -#ifdef POSIX -#ifndef _snprintf -#define _snprintf snprintf -#endif -#endif - #include #include @@ -68,9 +58,6 @@ class servernetadr_t servernetadr_t() : m_usConnectionPort( 0 ), m_usQueryPort( 0 ), m_unIP( 0 ) {} void Init( unsigned int ip, uint16 usQueryPort, uint16 usConnectionPort ); -#ifdef NETADR_H - netadr_t GetIPAndQueryPort(); -#endif // Access the query port. uint16 GetQueryPort() const; @@ -113,13 +100,6 @@ inline void servernetadr_t::Init( unsigned int ip, uint16 usQueryPort, uint16 us m_usConnectionPort = usConnectionPort; } -#ifdef NETADR_H -inline netadr_t servernetadr_t::GetIPAndQueryPort() -{ - return netadr_t( m_unIP, m_usQueryPort ); -} -#endif - inline uint16 servernetadr_t::GetQueryPort() const { return m_usQueryPort; @@ -156,9 +136,9 @@ inline const char *servernetadr_t::ToString( uint32 unIP, uint16 usPort ) const static int nBuf = 0; unsigned char *ipByte = (unsigned char *)&unIP; #ifdef VALVE_BIG_ENDIAN - _snprintf (s[nBuf], sizeof( s[nBuf] ), "%u.%u.%u.%u:%i", (int)(ipByte[0]), (int)(ipByte[1]), (int)(ipByte[2]), (int)(ipByte[3]), usPort ); + snprintf(s[nBuf], sizeof( s[nBuf] ), "%u.%u.%u.%u:%i", (int)(ipByte[0]), (int)(ipByte[1]), (int)(ipByte[2]), (int)(ipByte[3]), usPort ); #else - _snprintf (s[nBuf], sizeof( s[nBuf] ), "%u.%u.%u.%u:%i", (int)(ipByte[3]), (int)(ipByte[2]), (int)(ipByte[1]), (int)(ipByte[0]), usPort ); + snprintf(s[nBuf], sizeof( s[nBuf] ), "%u.%u.%u.%u:%i", (int)(ipByte[3]), (int)(ipByte[2]), (int)(ipByte[1]), (int)(ipByte[0]), usPort ); #endif const char *pchRet = s[nBuf]; ++nBuf; diff --git a/CodeGen/steam/steam_api.json b/CodeGen/steam/steam_api.json index 25e3e7e9..2e18c6c2 100644 --- a/CodeGen/steam/steam_api.json +++ b/CodeGen/steam/steam_api.json @@ -125,6 +125,16 @@ ], "struct": "DurationControl_t" }, + { + "callback_id": 168, + "fields": [ + { "fieldname":"m_hAuthTicket", "fieldtype":"HAuthTicket" }, + { "fieldname":"m_eResult", "fieldtype":"EResult" }, + { "fieldname":"m_cubTicket", "fieldtype":"int" }, + { "fieldname":"m_rgubTicket", "fieldtype":"uint8 [2560]" } + ], + "struct": "GetTicketForWebApiResponse_t" + }, { "callback_id": 304, "fields": [ @@ -136,7 +146,9 @@ { "callback_id": 331, "fields": [ - { "fieldname":"m_bActive", "fieldtype":"uint8" } + { "fieldname":"m_bActive", "fieldtype":"uint8" }, + { "fieldname":"m_bUserInitiated", "fieldtype":"bool" }, + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } ], "struct": "GameOverlayActivated_t" }, @@ -347,7 +359,8 @@ "callback_id": 714, "fields": [ { "fieldname":"m_bSubmitted", "fieldtype":"bool" }, - { "fieldname":"m_unSubmittedText", "fieldtype":"uint32" } + { "fieldname":"m_unSubmittedText", "fieldtype":"uint32" }, + { "fieldname":"m_unAppID", "fieldtype":"AppId_t" } ], "struct": "GamepadTextInputDismissed_t" }, @@ -361,6 +374,13 @@ "fields": [], "struct": "FloatingGamepadTextInputDismissed_t" }, + { + "callback_id": 739, + "fields": [ + { "fieldname":"m_eLanguage", "fieldtype":"int" } + ], + "struct": "FilterTextDictionaryChanged_t" + }, { "callback_id": 502, "fields": [ @@ -968,14 +988,6 @@ ], "struct": "DlcInstalled_t" }, - { - "callback_id": 1008, - "fields": [ - { "fieldname":"m_eResult", "fieldtype":"ERegisterActivationCodeResult" }, - { "fieldname":"m_unPackageRegistered", "fieldtype":"uint32" } - ], - "struct": "RegisterActivationCodeResponse_t" - }, { "callback_id": 1014, "fields": [], @@ -1199,6 +1211,17 @@ ], "struct": "SteamInputConfigurationLoaded_t" }, + { + "callback_id": 2804, + "fields": [ + { "fieldname":"m_unAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_ulDeviceHandle", "fieldtype":"InputHandle_t" }, + { "fieldname":"m_eDeviceType", "fieldtype":"ESteamInputType" }, + { "fieldname":"m_nOldGamepadSlot", "fieldtype":"int" }, + { "fieldname":"m_nNewGamepadSlot", "fieldtype":"int" } + ], + "struct": "SteamInputGamepadSlotChange_t" + }, { "callback_id": 3401, "fields": [ @@ -1689,6 +1712,13 @@ ], "struct": "SteamRemotePlaySessionDisconnected_t" }, + { + "callback_id": 5703, + "fields": [ + { "fieldname":"m_szConnectURL", "fieldtype":"char [1024]" } + ], + "struct": "SteamRemotePlayTogetherGuestInvite_t" + }, { "callback_id": 1251, "fields": [ @@ -2162,7 +2192,8 @@ { "name":"k_EAuthSessionResponseAuthTicketCanceled", "value":"6" }, { "name":"k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed", "value":"7" }, { "name":"k_EAuthSessionResponseAuthTicketInvalid", "value":"8" }, - { "name":"k_EAuthSessionResponsePublisherIssuedBan", "value":"9" } + { "name":"k_EAuthSessionResponsePublisherIssuedBan", "value":"9" }, + { "name":"k_EAuthSessionResponseAuthTicketNetworkIdentityFailure", "value":"10" } ] }, { @@ -2236,6 +2267,7 @@ { "enumname": "ENotificationPosition", "values": [ + { "name":"k_EPositionInvalid", "value":"-1" }, { "name":"k_EPositionTopLeft", "value":"0" }, { "name":"k_EPositionTopRight", "value":"1" }, { "name":"k_EPositionBottomLeft", "value":"2" }, @@ -2743,16 +2775,6 @@ { "name":"k_ELeaderboardUploadScoreMethodForceUpdate", "value":"2" } ] }, - { - "enumname": "ERegisterActivationCodeResult", - "values": [ - { "name":"k_ERegisterActivationCodeResultOK", "value":"0" }, - { "name":"k_ERegisterActivationCodeResultFail", "value":"1" }, - { "name":"k_ERegisterActivationCodeResultAlreadyRegistered", "value":"2" }, - { "name":"k_ERegisterActivationCodeResultTimeout", "value":"3" }, - { "name":"k_ERegisterActivationCodeAlreadyOwned", "value":"4" } - ] - }, { "enumname": "EP2PSessionError", "values": [ @@ -2850,6 +2872,7 @@ { "name":"k_EHTTPStatusCode304NotModified", "value":"304" }, { "name":"k_EHTTPStatusCode305UseProxy", "value":"305" }, { "name":"k_EHTTPStatusCode307TemporaryRedirect", "value":"307" }, + { "name":"k_EHTTPStatusCode308PermanentRedirect", "value":"308" }, { "name":"k_EHTTPStatusCode400BadRequest", "value":"400" }, { "name":"k_EHTTPStatusCode401Unauthorized", "value":"401" }, { "name":"k_EHTTPStatusCode402PaymentRequired", "value":"402" }, @@ -3153,10 +3176,10 @@ { "name":"k_EInputActionOrigin_Switch_LeftGrip_Upper", "value":"245" }, { "name":"k_EInputActionOrigin_Switch_RightGrip_Lower", "value":"246" }, { "name":"k_EInputActionOrigin_Switch_RightGrip_Upper", "value":"247" }, - { "name":"k_EInputActionOrigin_Switch_Reserved11", "value":"248" }, - { "name":"k_EInputActionOrigin_Switch_Reserved12", "value":"249" }, - { "name":"k_EInputActionOrigin_Switch_Reserved13", "value":"250" }, - { "name":"k_EInputActionOrigin_Switch_Reserved14", "value":"251" }, + { "name":"k_EInputActionOrigin_Switch_JoyConButton_N", "value":"248" }, + { "name":"k_EInputActionOrigin_Switch_JoyConButton_E", "value":"249" }, + { "name":"k_EInputActionOrigin_Switch_JoyConButton_S", "value":"250" }, + { "name":"k_EInputActionOrigin_Switch_JoyConButton_W", "value":"251" }, { "name":"k_EInputActionOrigin_Switch_Reserved15", "value":"252" }, { "name":"k_EInputActionOrigin_Switch_Reserved16", "value":"253" }, { "name":"k_EInputActionOrigin_Switch_Reserved17", "value":"254" }, @@ -3218,10 +3241,10 @@ { "name":"k_EInputActionOrigin_PS5_Gyro_Yaw", "value":"310" }, { "name":"k_EInputActionOrigin_PS5_Gyro_Roll", "value":"311" }, { "name":"k_EInputActionOrigin_PS5_DPad_Move", "value":"312" }, - { "name":"k_EInputActionOrigin_PS5_Reserved1", "value":"313" }, - { "name":"k_EInputActionOrigin_PS5_Reserved2", "value":"314" }, - { "name":"k_EInputActionOrigin_PS5_Reserved3", "value":"315" }, - { "name":"k_EInputActionOrigin_PS5_Reserved4", "value":"316" }, + { "name":"k_EInputActionOrigin_PS5_LeftGrip", "value":"313" }, + { "name":"k_EInputActionOrigin_PS5_RightGrip", "value":"314" }, + { "name":"k_EInputActionOrigin_PS5_LeftFn", "value":"315" }, + { "name":"k_EInputActionOrigin_PS5_RightFn", "value":"316" }, { "name":"k_EInputActionOrigin_PS5_Reserved5", "value":"317" }, { "name":"k_EInputActionOrigin_PS5_Reserved6", "value":"318" }, { "name":"k_EInputActionOrigin_PS5_Reserved7", "value":"319" }, @@ -3818,7 +3841,15 @@ { "name":"k_EControllerActionOrigin_SteamDeck_Reserved18", "value":"375" }, { "name":"k_EControllerActionOrigin_SteamDeck_Reserved19", "value":"376" }, { "name":"k_EControllerActionOrigin_SteamDeck_Reserved20", "value":"377" }, - { "name":"k_EControllerActionOrigin_Count", "value":"378" }, + { "name":"k_EControllerActionOrigin_Switch_JoyConButton_N", "value":"378" }, + { "name":"k_EControllerActionOrigin_Switch_JoyConButton_E", "value":"379" }, + { "name":"k_EControllerActionOrigin_Switch_JoyConButton_S", "value":"380" }, + { "name":"k_EControllerActionOrigin_Switch_JoyConButton_W", "value":"381" }, + { "name":"k_EControllerActionOrigin_PS5_LeftGrip", "value":"382" }, + { "name":"k_EControllerActionOrigin_PS5_RightGrip", "value":"383" }, + { "name":"k_EControllerActionOrigin_PS5_LeftFn", "value":"384" }, + { "name":"k_EControllerActionOrigin_PS5_RightFn", "value":"385" }, + { "name":"k_EControllerActionOrigin_Count", "value":"386" }, { "name":"k_EControllerActionOrigin_MaximumPossibleValue", "value":"32767" } ] }, @@ -3951,6 +3982,16 @@ { "name":"k_EItemPreviewType_ReservedMax", "value":"255" } ] }, + { + "enumname": "EUGCContentDescriptorID", + "values": [ + { "name":"k_EUGCContentDescriptor_NudityOrSexualContent", "value":"1" }, + { "name":"k_EUGCContentDescriptor_FrequentViolenceOrGore", "value":"2" }, + { "name":"k_EUGCContentDescriptor_AdultOnlySexualContent", "value":"3" }, + { "name":"k_EUGCContentDescriptor_GratuitousSexualContent", "value":"4" }, + { "name":"k_EUGCContentDescriptor_AnyMatureContent", "value":"5" } + ] + }, { "enumname": "ESteamItemFlags", "values": [ @@ -3976,7 +4017,8 @@ { "name":"k_EFeatureLibrary", "value":"11" }, { "name":"k_EFeatureTest", "value":"12" }, { "name":"k_EFeatureSiteLicense", "value":"13" }, - { "name":"k_EFeatureMax", "value":"14" } + { "name":"k_EFeatureKioskMode", "value":"14" }, + { "name":"k_EFeatureMax", "value":"15" } ] }, { @@ -4556,7 +4598,7 @@ { "kind": "user", "name": "SteamUser", - "name_flat": "SteamAPI_SteamUser_v021" + "name_flat": "SteamAPI_SteamUser_v023" } ], "classname": "ISteamUser", @@ -4685,7 +4727,16 @@ "params": [ { "paramname":"pTicket", "paramtype":"void *" }, { "paramname":"cbMaxTicket", "paramtype":"int" }, - { "paramname":"pcbTicket", "paramtype":"uint32 *" } + { "paramname":"pcbTicket", "paramtype":"uint32 *" }, + { "paramname":"pSteamNetworkingIdentity", "paramtype":"const SteamNetworkingIdentity *" } + ], + "returntype": "HAuthTicket" + }, + { + "methodname": "GetAuthTicketForWebApi", + "methodname_flat": "SteamAPI_ISteamUser_GetAuthTicketForWebApi", + "params": [ + { "paramname":"pchIdentity", "paramtype":"const char *" } ], "returntype": "HAuthTicket" }, @@ -4831,7 +4882,7 @@ "returntype": "bool" } ], - "version_string": "SteamUser021" + "version_string": "SteamUser023" }, { "accessors": [ @@ -9021,7 +9072,7 @@ "returntype": "void" }, { - "callback": "SteamInputDeviceDisconnected_t", + "callback": "SteamInputGamepadSlotChange_t", "methodname": "EnableActionEventCallbacks", "methodname_flat": "SteamAPI_ISteamInput_EnableActionEventCallbacks", "params": [ @@ -9735,12 +9786,12 @@ { "kind": "user", "name": "SteamUGC", - "name_flat": "SteamAPI_SteamUGC_v016" + "name_flat": "SteamAPI_SteamUGC_v017" }, { "kind": "gameserver", "name": "SteamGameServerUGC", - "name_flat": "SteamAPI_SteamGameServerUGC_v016" + "name_flat": "SteamAPI_SteamGameServerUGC_v017" } ], "classname": "ISteamUGC", @@ -9984,6 +10035,17 @@ ], "returntype": "bool" }, + { + "methodname": "GetQueryUGCContentDescriptors", + "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCContentDescriptors", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"pvecDescriptors", "paramtype":"EUGCContentDescriptorID *" }, + { "paramname":"cMaxEntries", "paramtype":"uint32" } + ], + "returntype": "uint32" + }, { "methodname": "ReleaseQueryUGCRequest", "methodname_flat": "SteamAPI_ISteamUGC_ReleaseQueryUGCRequest", @@ -10360,6 +10422,24 @@ ], "returntype": "bool" }, + { + "methodname": "AddContentDescriptor", + "methodname_flat": "SteamAPI_ISteamUGC_AddContentDescriptor", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"descid", "paramtype":"EUGCContentDescriptorID" } + ], + "returntype": "bool" + }, + { + "methodname": "RemoveContentDescriptor", + "methodname_flat": "SteamAPI_ISteamUGC_RemoveContentDescriptor", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"descid", "paramtype":"EUGCContentDescriptorID" } + ], + "returntype": "bool" + }, { "callresult": "SubmitItemUpdateResult_t", "methodname": "SubmitItemUpdate", @@ -10611,7 +10691,7 @@ "returntype": "SteamAPICall_t" } ], - "version_string": "STEAMUGC_INTERFACE_VERSION016" + "version_string": "STEAMUGC_INTERFACE_VERSION017" }, { "accessors": [ @@ -12675,7 +12755,7 @@ { "kind": "gameserver", "name": "SteamGameServer", - "name_flat": "SteamAPI_SteamGameServer_v014" + "name_flat": "SteamAPI_SteamGameServer_v015" } ], "classname": "ISteamGameServer", @@ -12867,7 +12947,8 @@ "params": [ { "paramname":"pTicket", "paramtype":"void *" }, { "paramname":"cbMaxTicket", "paramtype":"int" }, - { "paramname":"pcbTicket", "paramtype":"uint32 *" } + { "paramname":"pcbTicket", "paramtype":"uint32 *" }, + { "paramname":"pSnid", "paramtype":"const SteamNetworkingIdentity *" } ], "returntype": "HAuthTicket" }, @@ -13011,7 +13092,7 @@ "returntype": "bool" } ], - "version_string": "SteamGameServer014" + "version_string": "SteamGameServer015" }, { "accessors": [ @@ -13431,6 +13512,29 @@ ], "struct": "InputMotionData_t" }, + { + "fields": [ + { "fieldname":"driftCorrectedQuatX", "fieldtype":"float" }, + { "fieldname":"driftCorrectedQuatY", "fieldtype":"float" }, + { "fieldname":"driftCorrectedQuatZ", "fieldtype":"float" }, + { "fieldname":"driftCorrectedQuatW", "fieldtype":"float" }, + { "fieldname":"sensorFusionQuatX", "fieldtype":"float" }, + { "fieldname":"sensorFusionQuatY", "fieldtype":"float" }, + { "fieldname":"sensorFusionQuatZ", "fieldtype":"float" }, + { "fieldname":"sensorFusionQuatW", "fieldtype":"float" }, + { "fieldname":"deferredSensorFusionQuatX", "fieldtype":"float" }, + { "fieldname":"deferredSensorFusionQuatY", "fieldtype":"float" }, + { "fieldname":"deferredSensorFusionQuatZ", "fieldtype":"float" }, + { "fieldname":"deferredSensorFusionQuatW", "fieldtype":"float" }, + { "fieldname":"gravityX", "fieldtype":"float" }, + { "fieldname":"gravityY", "fieldtype":"float" }, + { "fieldname":"gravityZ", "fieldtype":"float" }, + { "fieldname":"degreesPerSecondX", "fieldtype":"float" }, + { "fieldname":"degreesPerSecondY", "fieldtype":"float" }, + { "fieldname":"degreesPerSecondZ", "fieldtype":"float" } + ], + "struct": "InputMotionDataV2_t" + }, { "fields": [ { "fieldname":"controllerHandle", "fieldtype":"InputHandle_t" }, diff --git a/CodeGen/steam/steam_api_common.h b/CodeGen/steam/steam_api_common.h index 005fb117..f3d93e25 100644 --- a/CodeGen/steam/steam_api_common.h +++ b/CodeGen/steam/steam_api_common.h @@ -9,9 +9,6 @@ #ifndef STEAM_API_COMMON_H #define STEAM_API_COMMON_H -#ifdef _WIN32 -#pragma once -#endif #include "steamtypes.h" #include "steamclientpublic.h" @@ -25,7 +22,7 @@ #else #define S_API extern "C" __declspec( dllimport ) #endif // STEAM_API_EXPORTS -#elif defined( GNUC ) +#elif defined( __GNUC__ ) #if defined( STEAM_API_EXPORTS ) #define S_API extern "C" __attribute__ ((visibility("default"))) #else @@ -51,12 +48,18 @@ typedef int32 HSteamPipe; // handle to single instance of a steam user typedef int32 HSteamUser; -// function prototype -#if defined( POSIX ) -#define __cdecl + +// #define away __cdecl on posix. +// This is really, really bad. We're sorry. But it's been this way for +// a long time now and it's scary to change it, as there may be others that +// depend on it. +#ifndef _WIN32 + #define __cdecl #endif -extern "C" typedef void (__cdecl *SteamAPIWarningMessageHook_t)(int, const char *); -extern "C" typedef uint32 ( *SteamAPI_CheckCallbackRegistered_t )( int iCallbackNum ); + +// function prototype +extern "C" typedef void ( S_CALLTYPE *SteamAPIWarningMessageHook_t )( int, const char * ); +extern "C" typedef uint32 ( S_CALLTYPE *SteamAPI_CheckCallbackRegistered_t )( int iCallbackNum ); #if defined( __SNC__ ) #pragma diag_suppress=1700 // warning 1700: class "%s" has virtual functions but non-virtual destructor #endif diff --git a/CodeGen/steam/steam_api_flat.h b/CodeGen/steam/steam_api_flat.h index d0e3c48a..ff3a2a18 100644 --- a/CodeGen/steam/steam_api_flat.h +++ b/CodeGen/steam/steam_api_flat.h @@ -58,9 +58,9 @@ S_API ISteamRemotePlay * SteamAPI_ISteamClient_GetISteamRemotePlay( ISteamClient // ISteamUser // A versioned accessor is exported by the library -S_API ISteamUser *SteamAPI_SteamUser_v021(); +S_API ISteamUser *SteamAPI_SteamUser_v023(); // Inline, unversioned accessor to get the current version. Essentially the same as SteamUser(), but using this ensures that you are using a matching library. -inline ISteamUser *SteamAPI_SteamUser() { return SteamAPI_SteamUser_v021(); } +inline ISteamUser *SteamAPI_SteamUser() { return SteamAPI_SteamUser_v023(); } S_API HSteamUser SteamAPI_ISteamUser_GetHSteamUser( ISteamUser* self ); S_API bool SteamAPI_ISteamUser_BLoggedOn( ISteamUser* self ); S_API uint64_steamid SteamAPI_ISteamUser_GetSteamID( ISteamUser* self ); @@ -74,7 +74,8 @@ S_API EVoiceResult SteamAPI_ISteamUser_GetAvailableVoice( ISteamUser* self, uint S_API EVoiceResult SteamAPI_ISteamUser_GetVoice( ISteamUser* self, bool bWantCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, bool bWantUncompressed_Deprecated, void * pUncompressedDestBuffer_Deprecated, uint32 cbUncompressedDestBufferSize_Deprecated, uint32 * nUncompressBytesWritten_Deprecated, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated ); S_API EVoiceResult SteamAPI_ISteamUser_DecompressVoice( ISteamUser* self, const void * pCompressed, uint32 cbCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, uint32 nDesiredSampleRate ); S_API uint32 SteamAPI_ISteamUser_GetVoiceOptimalSampleRate( ISteamUser* self ); -S_API HAuthTicket SteamAPI_ISteamUser_GetAuthSessionTicket( ISteamUser* self, void * pTicket, int cbMaxTicket, uint32 * pcbTicket ); +S_API HAuthTicket SteamAPI_ISteamUser_GetAuthSessionTicket( ISteamUser* self, void * pTicket, int cbMaxTicket, uint32 * pcbTicket, const SteamNetworkingIdentity * pSteamNetworkingIdentity ); +S_API HAuthTicket SteamAPI_ISteamUser_GetAuthTicketForWebApi( ISteamUser* self, const char * pchIdentity ); S_API EBeginAuthSessionResult SteamAPI_ISteamUser_BeginAuthSession( ISteamUser* self, const void * pAuthTicket, int cbAuthTicket, uint64_steamid steamID ); S_API void SteamAPI_ISteamUser_EndAuthSession( ISteamUser* self, uint64_steamid steamID ); S_API void SteamAPI_ISteamUser_CancelAuthTicket( ISteamUser* self, HAuthTicket hAuthTicket ); @@ -753,14 +754,14 @@ S_API bool SteamAPI_ISteamController_GetControllerBindingRevision( ISteamControl // ISteamUGC // A versioned accessor is exported by the library -S_API ISteamUGC *SteamAPI_SteamUGC_v016(); +S_API ISteamUGC *SteamAPI_SteamUGC_v017(); // Inline, unversioned accessor to get the current version. Essentially the same as SteamUGC(), but using this ensures that you are using a matching library. -inline ISteamUGC *SteamAPI_SteamUGC() { return SteamAPI_SteamUGC_v016(); } +inline ISteamUGC *SteamAPI_SteamUGC() { return SteamAPI_SteamUGC_v017(); } // A versioned accessor is exported by the library -S_API ISteamUGC *SteamAPI_SteamGameServerUGC_v016(); +S_API ISteamUGC *SteamAPI_SteamGameServerUGC_v017(); // Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerUGC(), but using this ensures that you are using a matching library. -inline ISteamUGC *SteamAPI_SteamGameServerUGC() { return SteamAPI_SteamGameServerUGC_v016(); } +inline ISteamUGC *SteamAPI_SteamGameServerUGC() { return SteamAPI_SteamGameServerUGC_v017(); } S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUserUGCRequest( ISteamUGC* self, AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ); S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestPage( ISteamUGC* self, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ); S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestCursor( ISteamUGC* self, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, const char * pchCursor ); @@ -779,6 +780,7 @@ S_API bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview( ISteamUGC* self, UGC S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index ); S_API bool SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, char * pchKey, uint32 cchKeySize, char * pchValue, uint32 cchValueSize ); S_API bool SteamAPI_ISteamUGC_GetQueryFirstUGCKeyValueTag( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, const char * pchKey, char * pchValue, uint32 cchValueSize ); +S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCContentDescriptors( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, EUGCContentDescriptorID * pvecDescriptors, uint32 cMaxEntries ); S_API bool SteamAPI_ISteamUGC_ReleaseQueryUGCRequest( ISteamUGC* self, UGCQueryHandle_t handle ); S_API bool SteamAPI_ISteamUGC_AddRequiredTag( ISteamUGC* self, UGCQueryHandle_t handle, const char * pTagName ); S_API bool SteamAPI_ISteamUGC_AddRequiredTagGroup( ISteamUGC* self, UGCQueryHandle_t handle, const SteamParamStringArray_t * pTagGroups ); @@ -820,6 +822,8 @@ S_API bool SteamAPI_ISteamUGC_AddItemPreviewVideo( ISteamUGC* self, UGCUpdateHan S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewFile( ISteamUGC* self, UGCUpdateHandle_t handle, uint32 index, const char * pszPreviewFile ); S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewVideo( ISteamUGC* self, UGCUpdateHandle_t handle, uint32 index, const char * pszVideoID ); S_API bool SteamAPI_ISteamUGC_RemoveItemPreview( ISteamUGC* self, UGCUpdateHandle_t handle, uint32 index ); +S_API bool SteamAPI_ISteamUGC_AddContentDescriptor( ISteamUGC* self, UGCUpdateHandle_t handle, EUGCContentDescriptorID descid ); +S_API bool SteamAPI_ISteamUGC_RemoveContentDescriptor( ISteamUGC* self, UGCUpdateHandle_t handle, EUGCContentDescriptorID descid ); S_API SteamAPICall_t SteamAPI_ISteamUGC_SubmitItemUpdate( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchChangeNote ); S_API EItemUpdateStatus SteamAPI_ISteamUGC_GetItemUpdateProgress( ISteamUGC* self, UGCUpdateHandle_t handle, uint64 * punBytesProcessed, uint64 * punBytesTotal ); S_API SteamAPICall_t SteamAPI_ISteamUGC_SetUserItemVote( ISteamUGC* self, PublishedFileId_t nPublishedFileID, bool bVoteUp ); @@ -1120,9 +1124,9 @@ S_API bool SteamAPI_ISteamNetworkingUtils_SteamNetworkingIdentity_ParseString( I // ISteamGameServer // A versioned accessor is exported by the library -S_API ISteamGameServer *SteamAPI_SteamGameServer_v014(); +S_API ISteamGameServer *SteamAPI_SteamGameServer_v015(); // Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServer(), but using this ensures that you are using a matching library. -inline ISteamGameServer *SteamAPI_SteamGameServer() { return SteamAPI_SteamGameServer_v014(); } +inline ISteamGameServer *SteamAPI_SteamGameServer() { return SteamAPI_SteamGameServer_v015(); } S_API void SteamAPI_ISteamGameServer_SetProduct( ISteamGameServer* self, const char * pszProduct ); S_API void SteamAPI_ISteamGameServer_SetGameDescription( ISteamGameServer* self, const char * pszGameDescription ); S_API void SteamAPI_ISteamGameServer_SetModDir( ISteamGameServer* self, const char * pszModDir ); @@ -1147,7 +1151,7 @@ S_API void SteamAPI_ISteamGameServer_SetGameTags( ISteamGameServer* self, const S_API void SteamAPI_ISteamGameServer_SetGameData( ISteamGameServer* self, const char * pchGameData ); S_API void SteamAPI_ISteamGameServer_SetRegion( ISteamGameServer* self, const char * pszRegion ); S_API void SteamAPI_ISteamGameServer_SetAdvertiseServerActive( ISteamGameServer* self, bool bActive ); -S_API HAuthTicket SteamAPI_ISteamGameServer_GetAuthSessionTicket( ISteamGameServer* self, void * pTicket, int cbMaxTicket, uint32 * pcbTicket ); +S_API HAuthTicket SteamAPI_ISteamGameServer_GetAuthSessionTicket( ISteamGameServer* self, void * pTicket, int cbMaxTicket, uint32 * pcbTicket, const SteamNetworkingIdentity * pSnid ); S_API EBeginAuthSessionResult SteamAPI_ISteamGameServer_BeginAuthSession( ISteamGameServer* self, const void * pAuthTicket, int cbAuthTicket, uint64_steamid steamID ); S_API void SteamAPI_ISteamGameServer_EndAuthSession( ISteamGameServer* self, uint64_steamid steamID ); S_API void SteamAPI_ISteamGameServer_CancelAuthTicket( ISteamGameServer* self, HAuthTicket hAuthTicket ); diff --git a/CodeGen/steam/steam_api_internal.h b/CodeGen/steam/steam_api_internal.h index fcebd7b7..28251743 100644 --- a/CodeGen/steam/steam_api_internal.h +++ b/CodeGen/steam/steam_api_internal.h @@ -54,12 +54,6 @@ S_API void S_CALLTYPE SteamAPI_UnregisterCallback( class CCallbackBase *pCallbac S_API void S_CALLTYPE SteamAPI_RegisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); S_API void S_CALLTYPE SteamAPI_UnregisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); -// disable this warning; this pattern need for steam callback registration -#ifdef _MSVC_VER -#pragma warning( push ) -#pragma warning( disable: 4355 ) // 'this' : used in base member initializer list -#endif - #define _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) #define _STEAM_CALLBACK_HELPER( _1, _2, SELECTED, ... ) _STEAM_CALLBACK_##SELECTED #define _STEAM_CALLBACK_SELECT( X, Y ) _STEAM_CALLBACK_HELPER X Y @@ -244,6 +238,9 @@ class ISteamInput; class ISteamParties; class ISteamRemotePlay; +// Forward declare types +struct SteamNetworkingIdentity; + //----------------------------------------------------------------------------- // Purpose: Base values for callback identifiers, each callback must // have a unique ID. @@ -289,10 +286,6 @@ enum { k_iSteamRemotePlayCallbacks = 5700 }; enum { k_iSteamChatCallbacks = 5900 }; // NOTE: Internal "IClientXxx" callback IDs go in clientenums.h -#ifdef _MSVC_VER -#pragma warning( pop ) -#endif - // Macros used to annotate various Steamworks interfaces to generate the // flat API #ifdef API_GEN diff --git a/CodeGen/steam/steamclientpublic.h b/CodeGen/steam/steamclientpublic.h index 1521e333..a75e7af0 100644 --- a/CodeGen/steam/steamclientpublic.h +++ b/CodeGen/steam/steamclientpublic.h @@ -79,7 +79,7 @@ enum EResult k_EResultAccountLogonDenied = 63, // account login denied due to 2nd factor authentication failure k_EResultCannotUseOldPassword = 64, // The requested new password is not legal k_EResultInvalidLoginAuthCode = 65, // account login denied due to auth code invalid - k_EResultAccountLogonDeniedNoMail = 66, // account login denied due to 2nd factor auth failure - and no mail has been sent + k_EResultAccountLogonDeniedNoMail = 66, // account login denied due to 2nd factor auth failure - and no mail has been sent - partner site specific k_EResultHardwareNotCapableOfIPT = 67, // k_EResultIPTInitError = 68, // k_EResultParentalControlRestricted = 69, // operation failed due to parental control restrictions for current user @@ -208,6 +208,7 @@ enum EAuthSessionResponse k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed = 7, // This ticket has already been used, it is not valid. k_EAuthSessionResponseAuthTicketInvalid = 8, // This ticket is not from a user instance currently connected to steam. k_EAuthSessionResponsePublisherIssuedBan = 9, // The user is banned for this game. The ban came via the web api and not VAC + k_EAuthSessionResponseAuthTicketNetworkIdentityFailure = 10, // The network identity in the ticket does not match the server authenticating the ticket }; // results from UserHasLicenseForApp @@ -310,6 +311,7 @@ enum EChatSteamIDInstanceFlags //----------------------------------------------------------------------------- enum ENotificationPosition { + k_EPositionInvalid = -1, k_EPositionTopLeft = 0, k_EPositionTopRight = 1, k_EPositionBottomLeft = 2, @@ -908,6 +910,14 @@ class CGameID { public: + enum EGameIDType + { + k_EGameIDTypeApp = 0, + k_EGameIDTypeGameMod = 1, + k_EGameIDTypeShortcut = 2, + k_EGameIDTypeP2P = 3, + }; + CGameID() { m_gameID.m_nType = k_EGameIDTypeApp; @@ -938,12 +948,12 @@ class CGameID m_gameID.m_nAppID = nAppID; } - CGameID( uint32 nAppID, uint32 nModID ) + // Not validating anything .. use IsValid() + explicit CGameID( uint32 nAppID, uint32 nModID, CGameID::EGameIDType nType ) { - m_ulGameID = 0; m_gameID.m_nAppID = nAppID; m_gameID.m_nModID = nModID; - m_gameID.m_nType = k_EGameIDTypeGameMod; + m_gameID.m_nType = nType; } CGameID( const CGameID &that ) @@ -1002,10 +1012,14 @@ class CGameID return m_gameID.m_nModID; } - uint32 AppID() const +#if !defined(VALVE_SHORTCUT_DEBUG) + uint32 AppID( bool = false ) const { return m_gameID.m_nAppID; } +#else + uint32 AppID( bool bShortcutOK = false ) const; +#endif bool operator == ( const CGameID &rhs ) const { @@ -1031,13 +1045,15 @@ class CGameID return m_gameID.m_nAppID != k_uAppIdInvalid; case k_EGameIDTypeGameMod: - return m_gameID.m_nAppID != k_uAppIdInvalid && m_gameID.m_nModID & 0x80000000; + return m_gameID.m_nAppID != k_uAppIdInvalid && (m_gameID.m_nModID & 0x80000000); case k_EGameIDTypeShortcut: - return (m_gameID.m_nModID & 0x80000000) != 0; + return m_gameID.m_nAppID == k_uAppIdInvalid + && (m_gameID.m_nModID & 0x80000000) + && m_gameID.m_nModID >= (5000 | 0x80000000); // k_unMaxExpectedLocalAppId - shortcuts are pushed beyond that range case k_EGameIDTypeP2P: - return m_gameID.m_nAppID == k_uAppIdInvalid && m_gameID.m_nModID & 0x80000000; + return m_gameID.m_nAppID == k_uAppIdInvalid && (m_gameID.m_nModID & 0x80000000); default: return false; @@ -1054,14 +1070,6 @@ class CGameID // Internal stuff. Use the accessors above if possible // - enum EGameIDType - { - k_EGameIDTypeApp = 0, - k_EGameIDTypeGameMod = 1, - k_EGameIDTypeShortcut = 2, - k_EGameIDTypeP2P = 3, - }; - struct GameID_t { #ifdef VALVE_BIG_ENDIAN @@ -1080,6 +1088,8 @@ class CGameID uint64 m_ulGameID; GameID_t m_gameID; }; + + friend CGameID GameIDFromAppAndModPath( uint32 nAppID, const char *pchModPath ); }; #pragma pack( pop ) @@ -1135,7 +1145,7 @@ enum ESteamIPv6ConnectivityState // Define compile time assert macros to let us validate the structure sizes. #define VALVE_COMPILE_TIME_ASSERT( pred ) typedef char compile_time_assert_type[(pred) ? 1 : -1]; -#if defined(__linux__) || defined(__APPLE__) +#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) // The 32-bit version of gcc has the alignment requirement for uint64 and double set to // 4 meaning that even with #pragma pack(8) these types will only be four-byte aligned. // The 64-bit version of gcc has the alignment requirement for these types set to diff --git a/CodeGen/steam/steamhttpenums.h b/CodeGen/steam/steamhttpenums.h index 056b0e5f..21b03a7b 100644 --- a/CodeGen/steam/steamhttpenums.h +++ b/CodeGen/steam/steamhttpenums.h @@ -62,6 +62,7 @@ enum EHTTPStatusCode k_EHTTPStatusCode305UseProxy = 305, //k_EHTTPStatusCode306Unused = 306, (used in old HTTP spec, now unused in 1.1) k_EHTTPStatusCode307TemporaryRedirect = 307, + k_EHTTPStatusCode308PermanentRedirect = 308, // Error codes k_EHTTPStatusCode400BadRequest = 400, diff --git a/CodeGen/steam/steamnetworkingtypes.h b/CodeGen/steam/steamnetworkingtypes.h index 6f93c04a..f7f731b9 100644 --- a/CodeGen/steam/steamnetworkingtypes.h +++ b/CodeGen/steam/steamnetworkingtypes.h @@ -1699,7 +1699,7 @@ inline SteamNetworkingPOPID CalculateSteamNetworkingPOPIDFromString( const char // // There is also extra paranoia to make sure the bytes are not treated as signed. SteamNetworkingPOPID result = (uint32)(uint8)pszCode[0] << 16U; - if ( pszCode[1] ) + if ( result && pszCode[1] ) { result |= ( (uint32)(uint8)pszCode[1] << 8U ); if ( pszCode[2] ) @@ -1716,9 +1716,7 @@ inline SteamNetworkingPOPID CalculateSteamNetworkingPOPIDFromString( const char template inline void GetSteamNetworkingLocationPOPStringFromID( SteamNetworkingPOPID id, char (&szCode)[N] ) { -#if !defined( __GNUC__ ) || __GNUC__ >= 5 static_assert( N >= 5, "Fixed-size buffer not big enough to hold SDR POP ID" ); -#endif szCode[0] = char( id >> 16U ); szCode[1] = char( id >> 8U ); szCode[2] = char( id ); diff --git a/CodeGen/steam/steamtypes.h b/CodeGen/steam/steamtypes.h index 7b604345..6d6324a4 100644 --- a/CodeGen/steam/steamtypes.h +++ b/CodeGen/steam/steamtypes.h @@ -1,27 +1,20 @@ -//========= Copyright © 1996-2008, Valve LLC, All rights reserved. ============ -// -// Purpose: -// -//============================================================================= +//========= Copyright 1996-2022, Valve LLC, All rights reserved. ============ #ifndef STEAMTYPES_H #define STEAMTYPES_H -#ifdef _WIN32 -#pragma once -#endif #define S_CALLTYPE __cdecl +// WARNING: __cdecl is potentially #defined away in steam_api_common.h // Steam-specific types. Defined here so this header file can be included in other code bases. #ifndef WCHARTYPES_H typedef unsigned char uint8; #endif -#if defined( __GNUC__ ) && !defined(_WIN32) && !defined(POSIX) +#ifdef __GNUC__ #if __GNUC__ < 4 #error "Steamworks requires GCC 4.X (4.2 or 4.4 have been tested)" #endif - #define POSIX 1 #endif #if defined(__LP64__) || defined(__x86_64__) || defined(_WIN64) || defined(__aarch64__) || defined(__s390x__) diff --git a/com.rlabrecque.steamworks.net/Plugins/libsteam_api.so b/com.rlabrecque.steamworks.net/Plugins/libsteam_api.so index d755843a12c235c21e45d8f3ba5a7e467a2621dd..4217a2e2df932ab85577afc0b29a26f99578b0eb 100644 GIT binary patch literal 391056 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

    NHYR`cMbhRTU6d!NUl=MM$ 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≫QhDY#ff)&dE?#RG+wsnZ`GJt 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⋘12 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 diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/MacOS/libsteam_api.dylib b/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/MacOS/libsteam_api.dylib index 41fc923c2f0b6aa5caf6772a6d3f37226606550b..5237be0b29f03ea83a72332d19cbc9030556b680 100644 GIT binary patch delta 161390 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

    (LcZ}Bm0(Y@Ub0YWI0ClTF#PSikw| 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 bopsSw_LJs^ulp7pE88u#c++Xy%7Om}A$i8o delta 159218 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∈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 diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api.dll b/com.rlabrecque.steamworks.net/Plugins/steam_api.dll index 3c4d47f7bac208c1d634d3847583702d217331eb..49f738b7515c09942033f6521e0a7b15691e467b 100644 GIT binary patch delta 51348 zcma&P3tUuH_dk60fq_v$P`SxXP&B-wh+!j&2&M)#h=QabrrCt%btbJ;uz_McV%RZ{ zm6eE3Sy@_GXqka1V4C8kGDX9(Is_J$Ar(3AckMG=>UsXZ&&$Vk*4}HceP4U+wb$8a zEPBmT-Q`&{K1a_4AvG~o01|}jPQtJLi3?M0&lhga9P-ku&A+{4jJ7Tb@O3VoTt6r7 zYa#AL@6Z&d#p`=q+TFYo6@mSp}%t`MW2XZn;zG=|zmfAxYG+Jp5B65>Qbc$GI-_^T8No`5XSgjfR) zBj|z{{k3Bu!dVdTuYl>~IV^b0ccNhW7SZEQf{`;i3m08^Kzm>uOv4fMbQS{p3PRHv zQJA?U)GO$$DENUKTPq5&8mIO|^-I{6Q2*W|%nz?IgSIIat)Pa*$=$`^o);fOd%+|u z1)d_075jCobrOW0U^pOWiv31WO*Li=#S=P$_D92~#NRLeUr$jn8ngjn-2m-;?YX}JF2iqbD z)?<28IgjR-n?2N@iv&SR(t~Pa8I|f8S^mb=hv#3#^M6vrdrHkt;e=O;C!w$rX+=WKOv9T$kamcuxLX@5dXJ z!c$*CYPYB{S0@{iP0g61ih37a?3Kxe>{z2(`~W)S9*Z>Vu@I?ZQhS>9nv)IW(v95) z`^XDM4JiGxUtzCO>!>fC*~6s|j&0BnPh^5%ug$1DMSruTCJc++;$^pZO3ZF?lX9D} z7CO@9+Fm~0<2!Otbb4I}!~e)#-;wygODEmFp(Z$IfB1%3HjG}kcenO_N6Xjz`?2xzmiWFbmQsUT|JUqbKne% zZ$IWmgC#$n5W>{b)d^Nnmxykjk{_7r+ru&TxhO;q?d>H;O$`N2tIckVm2YyAGrpVBTc&r^H>Hgje&{5GQT)r!_;$)r)fxAq z_=lbGa^inoek9Q_i$aS!Q$mO{wKG1R(x-IBBPc$$Gk$>LgF54TDDETQPJCBKB`uKO zN_v}zO63RdU*9|IfZYyRB$Z&=L<|GupYFfR879l0JrKnndfph!qd%1nFrH*Q=r8}4 zoG5;>U!F9>tG%ol_pt}%*Jn&-50?HkV?VJ{q@dx7Nu|NjHm7(!ZV$OW{N-F8DB#2MV)bh z;;Ef+KZ;N3j7L+2W96@Ay)HiYo}809h^>}iPn|9HeDC?RiQ?xNo3vtfMgA^rs7_2) zU)e49nH?|gPLR`QPY@R-$S=+w6!37I!KSxOb(RwJ)^cZ~I(QBZhrZfn*u(Or*#rM8 zz2QMedi2Axe|qRx7#(4Ri^k6X}Uj96Ntas~VUQ6zJcfnjQxn}zr)$b?Eeh&`yKKQSc5Tp8^$@1(6 zgI!UaQLRsx*FBi)Pepf2RSWLnbK8=jXXYN+ZmH@IakB56LG8&?|B>vKs=gj4r_CAY z$4k02`(Jq&ZbxW2LV4(GwQf@ft*9fk)e)-F6(A&5>+*oMgFQQ> zDxuA(TDQG}b%!IQer-q<1XBo1>?)lRME0+CQkG(^u}eB~n>s=Z9ibBHiCQ}WWl`_d zV-w}+4_Vm``Se3U82hG&Mu}JNk^3zOU@yyt1rx?owlwJv+qyQ7ya@~<6GM|Hc;t;j zBsV6RNAklENs%)2sZ~0nFxx!O;`pob2MY$Uv+~yq%3YEKp?K<5`L%@u*wxa?g|F#c z&|5VjQZ{9O?uB6f36F#dtVU?ljS2c)`_IbL77s#umM;!4E`l)8(Ii_)v3rL=w4~vgJRZ~at677~YySFo?+2>_?Y%QNdYNJyEw2&OU zGFhyRkXNkqLkE*q_`2V+dkcZ>E=@>N6GBXZNKyZWMhTYl~@c6-4Kd3YKN6Y^}c z+DzLYk%yW6C-PzQ$a@pxR+zu!jNP6+*Qkz)hkk9QHn(`>ZAOw56Aeb>G-^yHaz)@k zEXn!iiQQ3y(U#Gye(;KX+8iL3OqLtX!}?sZL0&DY)S8;j(roMW>eym=h$TmqZKZEp zhA}a>Q2zSya9V5m ze^C(9)VcZc+9!qt6&1!BEUxN4IA$96*=rl$mhzXNmr|@}3@WI6VieWW^2E}_%i&!_ z%x-DzB4pG8i_;>TOJPErF%>iGy%4P;k=v(b%D0bu(ft9^p?;2i4yZ+R+~3J|y+Gu{7dMx9xVm2#xBuzoFR~Zq{R7 zQp|YNUy#rv*C3e3`{lw&idJnI^kw>fiMlwXodN05KWWG6z7bV9FfmF72XrV zVgD+3T@S(HX=*jey0v3n9;J3B%9GZHkOhiq<1tfUL|2f zI4`+}0E2gujfdvV$>jTb6ZQ~C6I*%xYyMaLuBbXNOCGsyk@&`jQe|Bx6YtF}y}f<| zn}T+wsW-93^Mz;eO;rP)}4K4FLQMHoQ$J-!BoH*YdRQvbIC58?3Zd(Ym?+7 zxg&CD+RQHd88s|rV}{=R)kblXWQu5DP#-Vvsog_-1rP@6ucPg-i5{*(X z`wYFtsO3d9CCE!s;)_!^@LkSjmLW!vZV1m$9Nv;&W0cDb~~!K+-*!NNT{Cs}Z5IMpcNQ2=}1KHSa zp^HL5Atmr#KQ1}>cFVwQeVSGZB+sN}=w+nUN#(0Ob;Rgqjk!*WU>;0XK5?dUQ>=l! z3`^rNNQk1Dl}}oS4y8fxrp2!gL*GbB`En?rHN@#!cFG}#=6Sn1=yFV6 zfE&s<1iK9q;Q5`rFmEIm+*FUe@gQciL)WQ=kN=JdiBS=R$yW?!ljmcQ0Z~0G@je>W zg?(V!5rejHd`fE2my%QTsHMjRJTfb#C|dF+*fCiCUveIv2?N-xojIq2+m!3zqhi|m z+`5)$+T-A$I@&p09hI4mITEREN1|CZ)oE0+9?h3bt%#u?-P`-|N^h)bd(;=wRU^KrGcd>MCY{uiU;U%(P^w9QVwC z04_Z1-Ax6^qD^{6C45iSy6acv+-JOVd@rIEw3wl4poF^_)mdNAGIP$Tgdv!_&Q0*h zuR*z~5|^uS7QIJ)8RAlhTB6NfawoL}`!!q=p$;JF$k-NY=|j(mb8)FH@g;K|kmm;{*wnhGJFV%qQ^5Ca{YrvJ&QF`2tjb=Y}lxJmBY zzmr!#8=S+(=U^@tYHHe%wLsaTM|`t-9ji!Mr%#nEZmDUe0=|xyV6j+_`PpJ0xwS8jKmkEcRSAmbF6UaeifN?N zmsBagSrDGH)SoxgL;TmF|Djp{&=U)^=9plONeQ?jEu~ z1hdnARyn$ydPF^edH0Xjqe-){gJCThkwS0H?B27p)cEs%R7i%SM=Q!*sr}+MIC97 zfdo2=^fBnLhs@j*I=Efm%k-P}bxb+TqORM%>L zR19}9St6*)73&&ykuz6X6gR3&Zrc+`MztXf>sX8N1fzQK8Lk>ot)E7( z%CCkMfWu4625nvGT2s{}`SRhyzL4K93%9$YCA6umpPi~!dC5<0_6L32=FwuVm;Bl0 zF@3qlIdO$##;u_etJf69Ngv9-&#m=BI}76dnKY}_dQ`Mt^Vqndd9nP)bN6^l{lOWc zr^fDS#4!skSkqr_c`l(J>T7tO%ArMLG)1E{Q#?KBu&7$)2aE1ut?~;+5w5(RrJ1o+$|>elAE{u z!_;Bf0?yo6(>U~C7qGU5q{t-r+PviFsMu>G@sYw-ld}VJ>~7s2XR})Bd-L_Pf1PF&OaaT zhximugNyC}0>VM+TeC-n6J%m*IrK-8L-e(6Zha4J!~E(!)_4zU>y%0LWgM(PQRS2W z-Z;!$ zr8iWWLsCs^pb}u3{J56On^Aod(=1g%dP>Z+Kw2_slj7ToWvFADf&XZymg~K>@-^Ap z6^xSmg{$)4vTqLUJJ?rys>^UFD%N6VC%mVEX4h=}&NIjVI)J9;pECzZe6NP-mpcb2@vX|AfFJUSSBx-wMj$TXp>8ns%-&m&aS3C)I> zTkOS4phAhSTF3P?ag>|qp|y5n~4wT(VqcUctd*k85%mhZCFI;x%O z&D1tIYzo?2JkoLVPVi;jb&G5`30jvOb5@SjWNjJ`F*Vg{Q}hd*PTY!k8t1Q#30~O~ zQB;+VtPsWx&0S=Es>k4WmlFI6*B#SN`6XnI9wDig5(2AqE2vo|oA9hoIM$4ks}pK& zadfJcquMr(F2o2cDefJcH?#Yqr#Zi+VN6mpi*-rMmQ`E6b^?w~*E6reaDl2Xd(5Z2;Xi#o3XNh=jr^dYDJr_FR0C*C)BtB=OzO z9LSvv$=s8=LK#ic2cZnM#&8KVdrM-n!~XmX!w%z<_Ri$Oe4z~{wGrJhs*iK~7|si# z;p9dKtjKcWJGckM{j&>&31kUi&*Oeq^`lR*?3X*+Bh=RyVwz9L{kI3ZZR#MNT_7iJ zkC^>y6^TG#SGhT5jj1QQ#oSABuSEdj?}``Iv0?Ul%^E4b2x^zQi|hUw$9n%!zOa2D z`%(ULdjOt3FAi``Xq9HQN#D!4y}adFF9zq(6rkiD#mx|Pn|?p8caUwN$t$k`i>gO9 zGpe8Rv%J1bg{L|i=0gn&vDZSY_Rxr=3<5Qy1HSw`_~CJWpax^?L#;8?RIEaKP85YC zHiJ|LH&HY$oNkB%e_Vl3y0eyEt)o(SN{2q6wpZ)Oz#)3I?t+7(nxcY3Cg`AZ7($4Z zhB6$y@`{%N{3s*Fz~36fi^hPXzNm{o%DZ0*%Lyx?S)kQQZW|M2RF^kUG5Qjo5l6YN zun74*5I0*=U13sPbwU$WEO{o=5y&wN*-j=Zo(9HEYPRu?lY8_f%Ip{#kGxG3;{##3 zi2FA)a#ATn1Ubh%@|Jfd(us@Ohyr^-+Ga#Zt@(D3y!*is*>Vti1jl%4xD$>%4neXw zSx<*ZuF@I1G0c|WM`zG}V7FTWr5?sq_|&9c(n+q$^!9UkNM%UPK_%$2Er{mB7DFSe z%10s67C-fE_#QC~?Zx|6CD>VHifk594YwDwpvNjh8cr(gcL_0iTpb?YLrwOV>(;~64V47A%l z1jNmg8w0Jau9lv(AKk7XsyU*uo3+)+G8pfMaDt?Uqiq;VeL=!)yb9cKjR~IA#tkPB z5YW=(RP_>f6zSD-u;}My?q_o(`P-NMBcTMU*)X^i>42P^3kKEy-_daa5SGycrDJSg+z8i($ozjV;&I0K_N}=IaVUNXPQ@ph)0+E%HM~rFESi zq7d3m5E|^T7r{>qBV_Ma5_3N8&bP^sg~fiDqa!MYMKU@!IvZ-uo=|C@(Yq<=>*mqr znU(ulW~I7O%iyZ+MNy4@>f?wT)uT09ZB9@{>YmR80cRvQwrf#lUU|C53!v`8DH88- zI7ja@JnX6lYzMXR2DsJkps6-Q5kV8x{_5UDf`e<*?jk$q5g4vk}v>!pHbk;k}@{qb%YsMgmRDZ20ADu#8jF*S0 zjav4$7BvqYUEUaBJz=-GQ-f{pxA?P_KZy}1wn*;I-#6voZ8E&$-m8Zjt4OXxg5o_EK}Hi*PWL9$FU^*>mUJInD3lT|bUq_Vmc|%4}ElEJo}Ul-^DcI#-~X zc5gFwJyR`Y)$Y9mLH^dYm&t2YSAuzpDFOtXr@4PGk-}1|7Q;)B-snY7TTD30D;b8z zyv)kTaw8m|IoMUVqtFsJP%)lAq6rUB6C8CLkyfmw;rOSWqN(?(N2qP6jw}RPm(~y* zM93=0%xKsFY5Xr9_cm-6;KU093Z>fgbY}ps4?8an5Z%Tv4RjPW!%5i)JX2$4BOcOPVTNvS%NA)|#&!;>5N4w=awOanN zWWYS?#REA07gI7`8#_mqH$FPGgfrXkwXM5OJy1vB?R7yyJ?=DUoe?dI)$c)5U8vP_ z@vsi$o#fo(&^tch>O=DE-D5}eq=r>Wmg{N>^3d9Ok_I^2&D2WOzeb0(b#CNK8y7Q1 zl@IU!#N*@rv3U1PH~-KNHA61=&&U9*6sQ#)^`Q^a&^Mk+GcKR|&sf(B@VuJ>>tv7D zeMh~I;M&WMJ>gz=)YkA$nx^&!Mx&>KwJFT%E}X+uWOuiF@63|ZUVpte60B#KEoM9d zjV?GNtFp%%_ZTSVBxN)g6Th_vw@;`Dn!^&J+=dSJ6f_IYS_9LGQpvtRs+{-6h#@?e zUZbPqTCSGL5Hku3(a4wq&R+LM=qRwq+M=isoP{IHPe1|00>jUYL5dIav@HqqECdX#hgnzbbxvOXCVycnCA3B++_EL$jsIa(Fp2^PwLoD) z6RJIch?LM=nA8@T&=i@_7Fltk5=V`5a>JYBa%im1&a=6DB0y>__NW`)WuiTH?_U@pvxU4+L)+oMZBV(Tn>)7$-GK# zemjAZna9(cAz=;QVNG~^G!V;X+TI`!EukKA%4wyRy?dFMcUT_qZj^uCVXW`4!mU6> z^w-f&gZFJ0y{N^jy8ZSRMAcdPvl7K) zrG56^YUGQ1|0SPB2uG@lH%WH>=Bm4<1?6Ag|CG&_-!C1BweoFgfgjq3BZ)1cSxRuT zCESt{ykc=IF&>kjJ}{+UaV1_TCb`)d#I%9by7gfUPQtMp$6^h%AbvcM$kOF89}Gs3 znICNJa~J5O^PsQVxR_kXD%E|so8gl4TV+Pp=lN%uV1p8IlP2p6S9wP2P=@=VXVKyp z4n>ATwF%~trnSIo!3IXY4%h(!QWR07(|G+!k_SE4d?*xIdVdsw`<|0OdX~*EJ^9f* zh7JuqJdicY$%nnd&@F4L-F%m3m|1!n)#LBdNEC-4C7qn2$KRE0hl8UKwOgEE%%osT zUPIy?MJ#w7`xIrkm~Q>cZuZT;Y)QvCohPX)-<9hQ_os!dP6rR)n|eoHPH`lU<+Mg; z>1t#Pu13XTA!nlOI+Q(6s+?14TKE}ksQP#8_7dJ0w3A!ECNrkYsNO~bFVa;dec1Rt z>|Wk#>JR!+hIFfY$T>GO97Y>#K~wz|+4jl(p2%)XxK0Kjj*~P_KYsEJuFX{+878vJ zrMJo_i?|sVU1?!irSDcQ6ESDORne|n=xC9*O3tYAb;USWGlZY28pN)Y?y5Sxu573%1^v56WcUlY@g$V`K|lv1I+FslhwxoJY6lyzROJjdI4xeu3bC zeG;;`$}g?(U>;%^2{O{`?qJw{a(K_>mpXJVB&ziMNnh5@`*N%Sj+hHs@^7ccqM1WJ zzo!>Qy8*RuizFra5p9B#+s|7Wh!@Jp3Ulz)2V^(O|GBbEtZb5ft`-JIH-QU~3YZ5l z0UiT94#;ULt+?9S9o_n6 zH{`;Wa6CV3Q8Dtb-QLZgV@scGEp$Rq-*&?f6P+!PT~GT)Vg5zUEw(31cK{Z6b_FxB%B@(;bVU za7u_#jobi>vaL~>@4+b^=%f5M$I5l(WTAZMd*2SJv_IogI6DqQgaZ$(R z^K4L4lCz7oJOtgQ6@z`;ddJOj(H_Oy`szF~H+e(T9fjevqOsE<2k+mw__os$IStBU z%~fT%C;O0HExYc?9>fY#CiZ4lL@Rr7I1zHAn-64aOZDj)l?`Jf?u z)4AIw-1F4mQ*djO;v39j9MNZlLM0=ZE$&vxQ>|`=WoLt#$QLKA^Q9zIDl5%P&^XCKsJvPnVRCaSH!`<#>%AH{>gx#<78_u?{I_16LY(0xnB1W)a z7OXrl0>r(_wGr$gHn=Q)B)gBXD@suW>l;vs&yiR{o0QPhYgX&+T4|jcc}_~YKA>7X zp&W}~JK4E69v;QSZX4rpmt;)-yp77zNH$iFXrXid>?+5HdKjAVuM(i@@Ntp!_Jhwn#5v6_Fh@t0}Lv;kMdwLn<)PFlk##h zi(+$?v&k%)4JhkAgGD=uB@2}JS#08M3?ZvZ31CE3)OgrZfMD=gE>@ye%xzkST_W754S@-ucGvoo#h z+5~eq&Ju`RIQ=+uQHfiVa`yr@6!WlP0h{KBK1bS9)6`ZYbYA&Q7;U(88nyqXa%=%x z(H(KAO1fQg@TM|xA&YiH9Ntvv8=LpRn`PF8tP!eSS+Q5lZ-OKkbi=?;*8_^kk=3awDJk5ML~mh{WO8|YlHpJYjr#MTm_jKU zMo}xG_9!YzoyLQdQ=Ncdx?6f>Lmx~I&i32CQ8G+Wv)?EOO)P_E+gjf*J0yK*4Yc+7 z8nS?u!H=^3(6fn;vgd&69%Va#p2%kR(>Ja5SWx{(cuZa50|kiN24q2e1qud5q!kplo@J`D2XsK8EJbS57>} zMz~?9M00=b7+L1Dl=We3v*NpqjRd-P85>PwS!pfzs#KqVd}B4a9Be+P6fR@_ebHLG zx5~xU;+LvcV>qN{vhJ1gWh};(CpTr4IWK2AlA!J@SRF|a_S3{0Wk0WAi8xCrhE*6d zwamPVh2s2Dw$04;GBk1W<1CrgD=$3GBG?y7)#Gd&tKYVo%|z0y)oiIRmIh|lR$#v?thIn4X*`SYJ8{sQcizPgP%m=+Kr9 zuY-0Z!Lgb@b{!QmZ#aHT8TIcM2tl*ejMSHexRf^ zer3u+t!e6#zv+&G`T%lasY&0!16Y@(Jn$s*L(!%up&HLA&pgQnMN(ledsA~R;S8DH zI6l=;!!sbF1`nen{x~r;evR^#Z=Ph~WT~W6H{vN4PNyvO7cXk>2wqx8doO|b z&-T`UqP15ke2V#z{b4z=fvc&zQoy#P~ipq{{VB?(FbIP4O z)(pLa!&?Ga7mg!9s%aB-Hjf?@g40v%QUbjJ?A)dsUF_bm z5Q5I_G1at_a&D&wg|eO1N+=_`1V;^^w?>`WGc$6qt!8G}2hurDTWqHNlywh1D3q;J z^Zt+gj_jVD*^g1q!}Op~wu_q3CA&8qOLR2kP9QoqhM?to-U6@ABDfsXQW4>gD7%YT zNU!b{4Wedv_v@jUYm)lxeTeVpGuX1|((dw`T%Nq8P+biMM_ z^Gph<#{!M>!TcoXac|^;FPg1cuT)EMYh&3UnJr>ih=p6(JodG6V=K!--uqu*Z*~I* zU4UzA+_sHXvYTbcwy{ST+ocTK&PD-cZpT92rL5J^OWRoncv`o!)x@*>B{szc@`;b5 zl*2DEzc3!2Fqf7i+&`A?8+rr3p}-lYqO$qP*5;A-T$Zp+JT zMeipU{V%$q?13Gy5Bgj~M{9d%cDmNtU`2Wb+sh4Q?0d{AGYtsY3h#YNP%|!k!#nlq9r#{t!}TeJTz#_YcS)ol+c~9SZ*j$ zJ7L>F-|oZ_sY1!w2_11m`Oi)k2c+&~d%(G+7{`Yj$~(nuXb?1NcK3pru0tee6bXlT z#ZP)fhw`ZMdoi*PR04Lv_PC)W?!pQ4hO%!Li}i$(70eAAdwP6W;c+Bae?hVDVliGQ zpdj93sP#`LOE2sIl3PBSX)J-M^@XyygoOvAXGV1&t}CX)iP1O!Jcg?tTPyCIki3ZX zy%Ls7n^bOMuW)hB(A(A@?$GzHT&$z7Dbshe(a@*sc4O1Lp}e%44fnbhM>2TE?s#P; zIlqEpF7IYZEJ_*tANDZVpZgDI-}@i-9&%;A&K7vA$Mz*9wL-~gBU$@8cbNS6I=jyg z)mOzk4e5@1>gF80dBGbf$(b5A{S6i#h}3zuq+8$^N*os0UY#79-(X>5!C{-#G_NY2 z4eOqwzIqSZhsC#o_>#1e(7&}TTv(Su7lQF2AwJ2Ruc&XZ&>qkUnD~C&a`f86VuH9N zm>-mqJjW$nUp>QV-E}Gl7CLXy(mm{6%;$%D*m-tV+4v^Q>p|^vs%X?5tU0greTzLa zEEQcfsw42kyFi?LJ|zv)#fN(Odpka6#f>N3_M6Jdx7aWv(jkQHE*i z@9?QolJyrq>(30Q9=evnwesQwy`PTiK{<(8%Dr#1188R3+w23N_xG{{pw_+2#y&24 z`W@!W*jDAGcUi4}WftFGF$5TvwxQn?I!}OlOfjl&DS7+gK{=D#xJC@$nx;==(JBagZAf~f%n6>rqf0F%(>}_pr!^_l!Ta-ch;6r%6zEFCQ zqvf13xeP}7d}VPNTgoz(OJz_yp2}ZDRLce&WMdgvA3TJ%T~gK^V)6Z8sx>UYri;_x zY*JiL{c^{SW0vJQz9u2#v;Gi^MV8Qy*nJDAt(NiCy4?uqah}2(D}*90QfLQ4;a|aU zuKg4TPvU^Fl>N8b3tJ+VN|kOeNU%^Vd766T2<{xJdQ_ZFq6Krp+7tqpx^m_tn5thZ zZ6EQI)}W8sB=pAgF??1xl^;LmX?~#R5%A7eK0Lx60}A_;jqfAQB(>NIce>qUpT#pZMIE55`jidnjk5B~ zOKMOWy|}dwthuS|`xIO6eC7P7IM2;joXXkVQ@{oHiuGr`0e4TXllVf>xS0;p7`CW) zxRXXx{&~25_1}J)3n>5mX=Q_n-KD%y&LRgOj+>VkHAJb1o#IGa7VZZNmA}iGk%!zVM{t?s4@4k&esdp z3b)2)8uRy#!pAXRxpEW=8{Mm9Dcw+tg!6vgO=Vss^Y!g)2RAE_cseo)iG@hy=l(BY zf>ajQ-&FQjVybGDk;mYHU8-z32H)T3WuuS73}ELKQx#6Dmy{2xunX=}oU2&@h=tYI z_KTET)ogH|B6wr_O3&=a5-7q-?wP8FDG@c;+>4a^Yq0vxD+g*=bTkd}+0bdtr1e@|21I*DbnOSyKEUF-elH2nTX@|D0aRp6VgdPuo&idDh6{PO2GVX@w2 zbI!23u8zyt^IhGW>(8_2$!FQ?E1cfDxHtPwKC)ywRZQ$Hw(hA6x|H`P&S zD1|OiD3n5{b}1*m!7>=8w0y&^F{^U19(`G+JaCOg`9gtn?LFDh5*r?3hO;p(ZHBs0 zdHEU}DE{3`IeHB`KS1gJEer7EVs0K-n9z)ClHOzHD^cIF`@P9136v_V*Ctl9x-32c zlZ1A!?ccJyb1=H(h5Bd{22`5jY0$+wD0?)Dmq8crpls79eg@rC2PIFV1R8XS4$4Z6 z5@OI99h5AM5@yiNbWrZsDA5L;=@LGir0U0Or11vb5(m=|jS_3nEq74-G)lZdXLe9r zG|E(iZjFO-OXA%~H0ahkDBltVQmmZ~v@3GybQq7|4EGt;3N4SbK{v*cXP-vV8+6eQ z$}1Wr0%v#!Mbao^47!C5$`eY!b!{J%395w$=Tb162eT+R4?*j(@b-3Fn*y<-u}L4txs_Zp7JXsTb#;z1=X(fEnNsjQ z8{+*KjttT*?8?E_E~jw0ud$C&bycdrXZ;6nI|+SlxkVReabG8!rKpp?q6)&W&Esm1 zA6=<+!(H+DO79<_p$nDqKd@k*aW)K{W8{*PQ&O{|vt!lM%JLteFK;S4e}IvGR5^zX z^y#3rI@<7;<=0eoQvq_}+jefD`F)EuJ@)7w`vzPG3=xEtp=vtPv%6*5B2+US8>(Oe zIez6P9ljOZv7v1W$Ne3ZD92`LlkUK)00U}W{kR1E+J584d_qR4Wt4gYeX==IOnLH0 z7C=I7EsrfB=6f4I#w8~dvQc^KM;1uVE^falr+;KVgJ?C(N5xmkME^@O(P1N^j-)p0 zTIOfBOiok3Q@X2c$N;P-Za_jeCbij+7+F5A(MOGfyQErx3tUirl{A%wkrl{I8!`&A z15K@@%*xB}kmF*OqNptRZmJ;RBJ|%(^%Z!)w5F5uVvtowjgFPRsrb$%MLmsvrAw7q zsoFAaQrVQA7~z&F;kaOrRSo+owtthy>h3^HG=O zcXT;f3Hpfz&Kv`ZHAGM+cBC{;&Ofo{E`vL-uiw8F4)hl_7iv6S?}vM>xAL_7c3{U~ z_Eic|GPbL?e!|{-Kso&rOtu5c?VqrNLs@3P&A>P0Xp*ZSC9;u?7>;4k$_-6ZKccb2 zJj8Q7XbDn(fs0)8yW-Wdi~5_gxse%%>;hG*u`wMZl;9Yl|Hrv)m|J28zq&|?ZDKw_ z?TZob?D0DY?MFR~IX~>JYGR>1(FD9`NhnAuOggN3DZ83jJPsQ_HnEB9f^ydlX7GLG z$Q`?sbdj8(v+AUE2c+NltSC?1V6px?zoZrF39q6@o)diAjk7#HboDq=fP>Zf8|)sI zsPz09C1xrqKf|SzqpbNE1NV^f!p|@Y?T+kBt04h!$UKh1lo$kZ_%C|nHt&Z1#HCb&a#Sq~$i~{;Xg+x|q`;DJt``%)~ zG@(*bJzohHZ`II|3(F+=7BhHVdr~W}3D~jPT$G)+a6~V1q`b^i;HnpJSh{%&?&BLu zuise?(3aoXQpZuW8<&ypEiCN58BcT+H3mUjL<2?^2LNY8(i?UoEUm+Bu4bI8`G{x> zHP)=lo#<~4Qv2}ifmGk`$`dW9=q2Tk78W$PXMadr`_5yHnTxIomcjg*ysw(HhAQQ) zd_!kE^vD*(~joG-I3>S<;~j=nI`44+iZ0pje2*8 zl4S9NW!Xm^3C3(6+MK5Al;A(u1m)#cHiKS%<}TES-@$7p6Mk?fo%_@%?=*C{J@3-T z+w3zg#iqm1#_zPTr`3_+EpF6Pq-a{o=E5 zztM`vwaSqg#X2V5h2yESD2@t1+l;E`W9VJi=4gc)MUh-_kAu&jq-po-kfwEdtDV;W z2TQc|TCP-xVqZ9|E{h_q$iGB!(7zUYGFTl;I#Mw>iBr6q7HgSr13OZBDK9vQQS3wI zq>~t;of9k`+K?Glqw<%N7>3eAoW*H@cq7g=csBc#e)}p-tt6XGz^9C=M_InJxXX#D zO1NHp2k1+^_$rX4n`j@7+n||q*7|t7i`xYWZ5SA9eR+=xn5-V}&T4b0;0;ZFkUmn~ z?{*hQ^?i3?he+4_iry!+X^Qcx(%M~o2!cPShxitdi<`I{XtkR-A850?=%f7NCYlhQ z?T%h?QW8*|yQlz}dy2I09q1{x_P92$eOg z)IksQRzL1c`vPf=I{dQ8O1hDs0GTdKYF5uEw>-sZ@XSo;B_^}ON>MK{Ms&|q&h!$8 zvSj72UScRar3CdB@e_E;gT2LZ>|SMSZ*jzuLF>75tsi|$GA<#+a*xrNnue7UrZ&C> zA;DXY5VT-enmX@1WH_<~KMY6#sjBedCfLUqpvcc*gwwWRw}jy1BfNK2BZ;N)g2Uqi ziyp^=X7vSSL?7{<9QQZu_Q(_XC}L}cRN?T-(8oF6YLB@cBQWqMoV#o6bOBC}ixyGj zD6xCbgbm|30Hi@MaTkw%8CVTLzVya0$7pp+Q@@x)1W)Uo`o{;VA0X24&TL-B*h;l_ zAMf)Isp{$JV1z|*ITb&w)LzSMZmgLvHlA~IAdJK#$V&`%M=K)F#X*O6`}nifWmCPx z4Ce6&JOk++g3@0(;4Mb=*qz=!$)75>yv3oze}L_Qy%aXz++VRZO~K@~pQe(zeF9zn zCsOQ>JF5>Wi9X`9F29lkd$e-HR~)K1`-=C#hcMAs?Aw#*9{GX2@pA_5%PW;dzF6eP zm2JM_fT73Y42};N1&wPz?#vTcoZ+JY+SuMit_ShM6@I@e*L}r%S*0?}PxJ#y@Dr`k zVEff$cFiJ>FB8L@uiy@Kxjt1>Sz-5ug%%EHZz%tjtQrvoTTVFB7e;KUD zMR=L~5vlV|~=a^sE@CBM$FH!IA%-R>hF6Mj?MWZ1}mO49bC0d%* z&lPK+cpY9*Q;--b0`KT2juTx_R0*cwa;P{ll#gb(cfE##Vljt{Ji-SyYw;-Im}2NJ z26g+4lMi}UDf9b_^T%mi7s2VhlZVqWZRwX6dCdNdX!}9?mB+(}dur*wgZ@^?G3BrR z(A&q9fC1tZpoa#CgOeRi(5jwUvB)F!=&v3}YlTG~$B*J0QNiqbMYjf}RDRTeD;$jv zEb{2>P0YV~WY!|=z8v9?^cc&=F%-=@R#rDa?9EX8FJWQ?P{=@W5>+-(91HZ~Krt`` zS*r4vL*Sh%yPvS^yK?dJ@LH+-L!T^|1PG3ASaVj|?a{~)mdDC92DPpKRv4uKl| zd5}0tBRzsx!Clay#}$3J_#DvoaIs&n<8g-WH_YPK_1#aH^;dMM$Ca9JaV9(dM$ll9 z-G|h#PkjCNm9MF)x}Z&nzx+-8s|V>*m{rwv?t4LK{Pc=$>%SQD+8Hqh!sD;jx$i!% zn1+ap0%)nFronR&<%OW#I}g(fpRexIm(MB&+XC#ZKQZ!WT+sV>HZBYI*Ok9N0-G+{ruoB;P zUL?!przf#J#PE-;*3Ln1_QaZ}TVu9fQZ|mj!oQ?cju0&a(frF9Z7;V}=*^y(;LF2X zLAjD~>t#e*Dm=~IFAsOFQZh!0i`i-A#7Hrdol(Lg#0P<_5#nP&HzP3cXB5v-5aM&n zq*3DGumxNAw|PBM)m(&VVDYY79pOT5ei#dppJ(E*5;|I3fei9!aRz%z`C+tZWUncA zM~W|?u+Jk!|EM#VrO`O3ef@J?Uo_^J?#bXQx*DPe|APwQEhj3+Wr1VF1x_&Ja_<%| z_Z)pUDKMN&1h_8nDmPjT?tPlB8OK^%gVx?`bj6+g@u!s+qp{5Ql+{Ozib&os?Srmj zWD|_mCcX9*m-3uJya8|Xy7A&zC@JN@1aavU)O+F}*mC(dVabJwVfvvp_*EUJihvV6 zD$*P7S#ZbRL3M4XhJi{Sj^SNP8qH9dX(CJ?l({EXTAW|+P(&P|%$6j`HQ zGTpHsJbWcC$I!5%J^QIshqj{v?I)xK)dO|6@E@UO+K*5#e;BjjZlXr056ytQ9&>Kt zzj%#wYNI2af@++WuJt0ny~U0n>Y$tMl{8_3Q1)z`xRm9*f5J)F4LAy*zn7|=ggt-{ z0p)?(VwRSk3#rfeDvKGILWX&G|o^z5+fl0lHnsmoZ&){@@|3{#3IX1C5Uy5-Cg$Py<#kLiV_5+xK;GpHcjjnbvDjW zgx{((u8B3wTDo}YveipN9$vHH;pOH>mn}uPSzXfic7&A))5MYE&c_*Ym!oYJv4&jy z?z|_8i8!axmV-_-BWU3czD}C*`ZV!;5Bw;2IiL-olus8!l-<+CcZP#``C1gZ-T|9Y z5Pt7hxDaQE?LsdCEw`|2{e9xyJ^YZi>n*Jh+q;AX<-MoHfy%F`;_4ibjrfF@MvA^U zq>m9ZYtY^=Ipq@Cd(K70RsUSB;+|z-*9CSYi4s_rUV3Nx)M?BnthdFQrFg0k5 zBOdLDkLPiG!xZZv#5)+KI&h)`8y)F09eB0_&voD|2VUsFCI?;uObuJ^z-9-1jRUVG zjQWLK1Zd7SIq-I18q%G>G%|aE;noz6IpVdzIJOAafyq1P{6w4~2sjLw;_;67LPtCg zcmU{ofbokK!ZF|wU==tAmo^3clW~SYz!AX2kO)lQ(ai;>9%KR2cZMbheGM=bxC5Ak zXg4r*U_UT!bqVFbR8Ac*HK+}EAaK}IafUG9L|}@WpTY(*6oH)}P=>?6A;9&(w39op zjWdJ;M*t52o(miRyat%0xd0dkI$;Me32D1dO|U}}&XzRl~)`J**y zZWp?Cp=zJ=c3B9=P?J!$PeJ&)GXFW^mp(baJTZwchtMZAyz#Y3h7SNfh!dPVILR;o z_gp^u9AN;;5FP;if(_w~lMH=coMc!9m~v9%x7BDo#7FrFFLU78z(nf{XhXdSmn~Z< zX0sT)!1n_LIv@m?Aj|>bj`$cyJk}9UXD2c%e*3Q5?$W?CK=(jHzY%rseqDJvfpQs$RkwTJ;d9(V#!axNa0MM4y3>@(q1_-bR&jy=HbAk(j$OrxyJ(2@}3Gz`p5`O`e-&VE%z*7+9FKA zwEC6<)2dtpOpb(HU{VJKz@$!!fZ?tbwgc0u&Dn_nEz3Q?xRo#L2PQ>#5Ex$!2<5=^ zBB2JDeqyK=n3nBDU{V+Lz_h$oU|QDAz@!LUfrEjCx8n?4zX69J>IobQ><0|>k|Q)> zFi4SwfIx~V9GDbS1TZPYXyChmV}S<)PX#7DWCSL?H5+&sa2D`zU=#32;N`$$f!6@v z4V()c4O{>`4!8(-0_qpGBQOz!oxricdw?ea?+2a?d=NMuxEy#2a1HRiz_q~BfG+}1 z2d)Rc4_F1hAGjI#0pM0(Be1X+KjZ?W2TlX_1bz_p3w{VZ3>*SX@o-=UAs7ZM0!ITo z0mlP710TkS>41%hy8zDxb_F&8>w(R{_}v77q`e1lF5+&$n}FScw*&VC-VL1NfxvzQ z=(k1>1NR~ZRM4B~z;^mr*zf;q?>wWTyxxBOFoOaX#E6L4uy=i? z_Zd{|4Z9MJpx9zVM8!JTyFsH4c2r_FV#V%=#@G_E#9pvPj15cd#&d1J{MGZm?^)}7 zIG>JdUHtZa@AB-v_b@Z~v$L*6N1y@@Ju0IH)QTF>MyLsGi<;30RIJZ_s2z<%9q0r! z1WiEepo`IZ=o&N>b))sslV}6cK|h+(y8YfY_J3P&c*@dJ@ft zUPKF^cThhx3oU}aNBvRn6y^fzj|QQ^Xerc))<8p1v14^c?Pzbb9vX}G^=AFeAmG84 zwHWn8*PveLHq-}oqxsO2XaV#h8id|K#a8zo?TdPErX04mK-3ehfO?@a>VsO*d}t%I z0NNG}@?*V45DoUxu_4CgyusxpasyKXb^fB6{#G{!az6uo*@u=rk;!!`8uSZcM0zPOJ5rJw^51Dl;{Ae@bM>`6? zmSrmZXteO7qlDi`j|m%{D{L!0CTw(rutVrEVWWqIhEmb3bt_x)HKL}%(Tti34P(8c zo}(n1Mo*xA+foB&DU|t~Y&3Oo$FZeSPszBau4ND!$YFy>q1YGEF!VCo8QqNbMw8H3 z^anH^J%!Fd|3DMbGiWlp7EM8Sp?lH8=uz}4>O4n4oCz7|N%SFl0DX-fMI)$~IHWxH z^7~t~B-$4Z#xG7iEp~TdQ(AA124ZZrh_1#O0ILp!49(I_+>jYgZI zqfj?G1wD)Q=7B!wT}Kc`;%lL6um_`Y#OFu1Vb4X~=uhZL^k?)U+8n*JpVM*& zfh-(*QE`#5qwle&pyEOzZaUrva_$lF6kGt?A6r~V5{MT!qhRb7gRg`aY2qKVisA|6|XCS%8;;wEKAQ?SROYs782FadFOa-e&On2Mf6+lT~YP@@;I zhod3b712A`y-*`|1vCr0C;A?pg+}AAj(WT6TKc2@=y+7(IW{C1dlKr*BB9u6YT%fF zCSuE|5qk+5iVj1=&>?7Nv>lp4#lJy&W6wup(Y9zj>OyxCUj&_jJrg}jxq37adkpF( z-e0W$WE|~90vtur6zmS@UNlko(HZDPbQzk7u0hjDAAr8b?kM81i=mze>smSqKM%B` ze%KSylIUu*3OW?kqKn1)&m?1U93eQq6$!{#4sC`Vg?2>uqrK5XXdIe?PC<8~iRcM* z4f-pZMR`H!PVCO8A6x!y^e}cBdKKM=zCc&;e5pWMUCRRWH5p5w6|fhgGTH@Ap+Xwe ziai1qx9bqJ5%x6nBJoDFBX&HRfo(#gu*aejc1a`}`#W?LIso;??<_@N3XZO*8;1^^ zi#-YzFJywzB(-fon7L7?=;wZ@m{75(Slgq}Ky(5sX6y`9%+$H4m}ra9@@Nt& z)^ai`*7zD!Y`ZC^T&1@v&a`+C)J)7rNdaQ*N1s=4oC=G#gmdGvcSr1t#9jOzeV$AtJxWyUXIVufCSWIgmR+Rr z$j)y5JgLZ@M3nop>|#=-V`qF-MABu~m{dhT+0WC8S{69N<^!Uvh%29JS?B#{MT)3+ zqC#_%3ELCeV)up#;D*;A;zU|yc5U;DEa_LWpIkL5H(DeSwM@bOI&0w7PYrcm{VciY zlZV)!KP9`eqAdRL-tb4E&Ee~siy}WSOQZ|IXFdC$;S#NBh8+Q;fam!B+Z>TNw>ctD z!d20nVr>bEqQpPZnl=B)`ftwc$lM{W(~p&;apNRu z4!nZ)<0Yx^1okF)1?@RHeYq&Sf@+f`sRRd3MTnoq(Rr0Xt?80<3#^>cvmlHegAI!;ox*1wPcZdSUafzeVKO z!=pqRDS~1drdoZXB4Z;f=!C0Zq#}E{*OKM#J=tudKiTzKx2@2zULBDp_Df$oTuv$O zOJ}%9IO+>unIYYeCf+BaN8HYw%O(F{Gzs1<%o4E4Sy8E;r^w0Qj>V^m4=%-j^2z zi3Am5vRh-krj+jR#9G}3XWQafix7EY2FG--Ad6Qk*q*MY`}qjn@&2w!`xWJja`2bS z^J8%ZaZ?CWq?CBswST`Nph{B9oPBKrD*QW8k{4ytO?8Clf+ijP8VUfSG+g5c=taEI`<=CvVxK z;#To>TzZe3^0F^1U*(G?pC~6Iw=y&_kCerOM0>udO^vHL4gb6*;u!k+X_I;HUidz> zB8q&X6|txhKD9!eLtp1@PF_B|o_+3L%u&}ew<1s8*&9PF$s1kk+=|kQ$D6ZN-nJ#@ zL86e=gg<3Gms^0a6Sjs}Hi1avN^mRu^X}(!0w<4Vm*D&8LQYIF`tt?XcLx-U3-N(By{46*zIB1iTEzZ>vdh$RMu z=To25xSrFOM)XsEh?7sGq1M^$7o*zuTu#3Ks%avvd@Z{n%DbiOxYoNBrId@x+U&+)BYtqv(l6u2|6j^zc2EZNO%CPKw>J)a)_ zb>U@({m+FT=5N9MTVjDHBl)|N@E?x|B~SR;vwz~(o%J+xA?FEILbm?T347$e z>7Cu}^+gS~9QrcH-mhxldHT!vuOEHLwV4{0?Q!ADWQV^hX1%M`5gOwD`^#ismv;G0 z?wnkxsGBo6@8``4R9WYhvypx3<*z5_jKVqb*-a~uV&!rQqKVlaZ=WW-5(QWKc4c6# zd6`tDb;b>xX(cnxFIZnUoN0o z;OE--yP{0;1_x(+O`e4>q#S8Q9vPds1biuw z?kavtQQnzFP<+!XsVc=0?dPB18xtR1X!^lPJ%P9WAOC!Vw;gGl9qy0d*7?Wj7T_3ZgK4S&&ZmNOkBU z9u!8Kg9%H-yD2P;TaApJgkRjlA|RN!c%l4)APJ4H#xv+MH(}8rKYn2#8k13{2#Kgb zL@gXVSgMQdYM!nr=9CGBK|JO9m8P?LlUHe6iR&{0usOtS&&3s zGRonjbJEKb=JJt2Cq&SZek>T#;W8QxDfK1S?Q}(9XF5g}NDW8;30!DG&}bSHfyN6T zotA`(Q4=F3CV*S`DL5XocyK}m9)?e@Na2LjMO)c|WU&p23Xn%sCY`i?JWn*34*D*8 zN{9pzVz@}009lnOM1*NgI+{Xjve4j0R1Tsci9BMKiHe9>C)4UMZaWFYMTj^w-F5o3 zqKGp~B&R+y#fi?2ppFruevK&-#6bGt6BF4@y<~h5!VhA7$UG*Aa5{)tB{d-*gg`WL z5okOlfg3VJn0)E<1Cz%ogY2ps5KBS)-3l=(Vh}{9$Ym(hOc=imVUQvw z4+TaOP7pSvLl*dP`uJ5LEgA-5&_pLk6HWp*WHfW~pyoUX!XO$FKxV2Zp?-8$I+_K+ zElA47;({%1a8OxsU>L`oM1ErA|M`;zzrD??4*UFOM-K|CAtzB z!>}O)A|M__cZnW~ptnBtSoXRjPIPk$J?JLvriU^_o|=RyGlMCcQG+sDQ6_{y1jIuU zRCDvgk13UbO07u*ArJv#Lx@L{z}?#Q&sjxjr>Kks8TkC#&{Ghh&Y6x0)rrEE#3sQU z%D_%xNTcz^Lx`A;DjGt$N!V`4fM`AW>1nAgWopQaO3XVkRYM4iX%K-%w`IO05y)P} zsMvioP_ZMsNgNMZ*zr6_Ojf^kR1iW$1*uR3!zFfcF>f+z^AOUf({u5}g^@0Mr$NJ* z@JXoHF~qi+L=UE8N0el~WQc_ADOf-OA!r0hwRi~X1~FOvMC)m-%v?#wmq0=3A&@(v z#lz#7XX#8*KT#plNFAskh)Rh@$%LichK3LhbBgZbLBTvAj4_VDDY`O(#1aq6UgdCg=DTS#LdV;Omp2rnm19H1$rb3?&&eq?~ukp!;D z^X%1rov07U5CUNk0nrc-3E+lw$bc-6!g(G9LkL7bd@f0-8!|xtmU18o(jg0^&iEl7 zQaUpwG6?u}!3hx%4@uw#zwhuvST50M0!UqXFoZ!gBtbd^M^FZ&Ko$f?k|vjUG##XF z_(6t{ZcY*qh=6E_hXhE16mUa2WIz@qtiTU$kdmQ0c_0NcK#HQ$AVUa*K{Uie5~M>0 zWI=E;)||j2PmbQ z&=JPL7Pth;VoFJdZ($6qfD@1fMFW+R0lLC;NQF!&QCumthH1t5?m#MmzaTJ(?+?Im zSP!?LcnPJ{5Qf5PxCDMB`BDSKzzR4HAD~t#S_;uH9}dDDC{~&>AQslbIrs?rGD>NL zlOKoRZ>SWkl)_;uY=JuvP?j!-XjlS=;31hqLeof~zoJU^Hxk zE0DJ;6@iv86xPB;cn@W&DW&?*zZ&B|pTMv15vo^LN}XT^?1KjoP=g+TVXy?!;6C`) zAQf&x z0X35ey2B#41PYB(QbA{!0b3vg@@Sde&<=*cQaA-gbSzgG1MA>|lOG?Tnx2ZlP*?=N z!UG60FwW2&ro#@n2LVQU1^U2zI0%11F%v@pePBN9glq5ts+yHjGZ+X7uoav)_~B_G z5}H8_B*E{H1;wpOsR8tbg>VeAptOx{h5;}KcEDwj>@)_#UiL8Bm~w zQqn;s3MRomc-x-wuhN0t3Kqb5DBh8S1m?jX z;Ma*|2i;&M?1M}w8cqwKA1r`h;WbqHmSqQHU;|u&f1pBV_Iwxv>)<>{T^Ro=UHF0; zjDr-o0p8znsK9sd1GwQiRP4$@1LI*MT!Fk1Y%b6NCcqZB3SN;+H0TS7a01>z#cu4Z zFd9}l`EeBjyVErg11sPpya4|wHWK(2M!-DS1i!%(@a@5bgOQK|_n~Z0<_-J+$01KI zPE_a%$?ykw_vR1-=TLsEfNM~y59<~dz$wW4y;72m+_E-@{Zm08gRBbbR21jc^x=&tS-42rPtj zC@_-)3PwX3yn>pu7%Er}XTj?Sx=;OsQi_BrunjJNXM$3y4Q*f~EQbAX2lCBk3x*Cb z7FNP>cntw_=pl%MHSh;Khax|+1R(+@!74Zfubup;JeR^?3~Yi+AkAalLpPWLo8dhC z1Htn-d|)ulhXZgQ0$l8f&>LnzD%^y;iS#bChEb3Vze5%{0~Sy-_!dUMLO2AO;I)w1 z4y_;_euCfOEtFZr-T?jKN7x28Am3uT8CpRsEP-F(HI!UJ1tAh9z{Vwv{{;ehmeSqO z9hSjScmrjZvG!pm`~pv*R1!Y;5st$vsJ@)78m7TMcmgF>&`U584#Fb{Ude6={U8xe zuXM8B2~<2Y9Dx^5Z5^$Jcvu6cAn$s*7}`TTtbuFr0jh0aTZI9T z2#4VXRNTn<0{vhi?1k&#Ebuey5qiQb*aDY9+C*W{0i5tN+yL(s<_q+PWpEtcL#53u zONfR<*ag?%0p#7nQU)11!8lk4ziwgtGYJ&k%94VnFc4-zGVF)T@EY=MqZMF-Z($;A zfjjUKN^Peh&=Z!y1^5W%b}&()Crp5qum`Tdiye%A;Z!ad&>n`sEZ7GRp~OzsGsM9X zI1W!CXcrp}^oIFx5FSF2-5f;lJRGTAq_6UOYl9&&{pP02z&=4 zU=eJA^Y9vi(im^}7G}XtI1iqOn9hbof>RHXRx@V2ln^}s8@rCOR91z=MKx}A_!QEr}M8^({aXlTb z^iQ?NDt$fuzK(Panxrh^3K_2SO>GvZoT~Wma-SNZJmUAwkl5aB`*iQyBeuc7m<~O< z)rs!oIz2-fm^yd5@_a!LgX?3Wvbbx)0%c_nUFwDf%C`CNc_b^fd~si&tQ_HKl`^UK zr+@R0aaWDt!;GK#&f^mw+OhunpL8$qMMWxRmo57L|8B$o)4$uWS<$dZY*@^|?scM~ zVtVkIlGM@bl0 z%0eEV^Y{RPtMGPaARo%|pDlZay7@!*pOOjvzp?rFMxdPgSrAc1bRwTBUchJV62wP4 zis#`G{NGvow=3%@7xFcWgNnncM|UXuEw%IkWnYhSlBeWF0e3vJ%aO9Mvsk^K>5$hmx1ixZN&Z)|(Rq8tGR_aLgAoW=FZ1r;WX7xe! zY4uI@Q?-Zgy6&~EwBD!>*GK5b=vO)Q^9&`8osEl(4NN^vlT0T~FHPson=IQbdo5{} zW0q5v3l?wd6l*2h30r_&WjEOy+dJ8N*{9oQ+ZWka*f-dB*xmNS_T%<*_Urac`xEvrtd0hbFh?gxcZU?sR}!dTJ~>fdFYlC(%V*_RvU8v6rfRIAt+AJJ zmT{eNr}3~c-T0^RjWNhn*;Lom(bU^C(&RF2G;J{*G99Pw`K)SdGwUepdh0FgJ?lej zkS*9&+1AOn(zemI)po{q&(_yI*?!ahjiZ)hr{kRHnRq_Eh7^)3%8lf3xt}~nPLNl~ zSLGm8U8gEsHAJ;k^<3qpm9-A7r@ocmsXwoOs;^+!$Z&WV^BPAPCm9or3ynvNmyC~$ zuZ@*V8q@ct1k+;E0n=5}ZBv%%t?8pFk2$}&sJWE6vRPxco4c4-+tO_%>^1FL`pjW( zY42hmU>{+hVqa!Ywx`&)+fQWonDe&%KAjfeC_{JEb2N6eaSU>dcT9E6aU?pHJ5n9T z9H$&t9B&;`0{e#t&5(=A!L($gJX78v?~;F&Ps``!JMw+`3Ef#yRb6FM)l)TAwN&*` z^;Jz)%~7SPPOGk}GF2Z`K5Ace5p|$CSY1(FQ>|88)FDoFeRVT+TXiROH+3)d0QFGy zNc9BuboGzwL?+HA^)Kp^>NDz#>TBxT>Ido<>VleLnu?lg8nwot3DMNoG}E-zbkcOy zL~G`0mS|RLe%2hXllB+w z3GErJ^DpfiE&r#l&R17VS5{}zb<*|J_16v4jnmE2&C@N_tBjOU%k>&83AC&t32;--qG>L#_xYzi?oH1#m` zHw`w8GyTNW+iKcxx@&r5dTx4WDr_!m?q%+8o?)JC_OvXq9JbW7hFH_Ae^|e_jj%aw z6KpSR?d^T-ckLEOYsWIj7RPSK9mfmD8!-`+_|gYMsE|v@<>aceQEnkSd&}|ikMc_S zuzW^-$OuX*Zx@w+kg=&pz2V;3ubzXH#^-%Rp<*Cl6_E(ov zS7#)x>V^zrS9L%25C(9p`nWn%{aF26?Za@D(p1n?XTVGhSVK(6zO?S=rnn4WJ zZKozvo1*5CGr?UpT{y(F8{Q2QwRSoVN9_C)(i z`#Sq3`%e22mfID3hW)AimHoZl%Td@7=&0z>Ijl}cT}Ly=x9m>?9r2FIj!i7N!z{Ur zjts|Njx5JZ$9spA!gr7uH*YzBkt-`#lU1@+t}8c|JIjSxZcSKd(WVoL?CIOU)XdbHy|XJ@dVf}6U{%G>saHgPU{5r`x({*>z~%@Hrb}N8EsbEAC62hgWcKZj1(cill@fbDoH(6 zoy1g=GYnjE>&O(04vx`xlsa>xp1#!t!=ME^79a%vXDMli`kr&=-?1rGh4Xrd$y1Hwq3U0ZFg)>Z69p~?Sb}M z_PX|_c7^ErV2|vc=_22hw`lt5()1QXO{>m2*gBGP@QL-A?X9f_hfQz0%dv=!XQgAc zV?EP(D-(K;QMN_46*ei%Bl`p48|3clzUukvCF&ifz?hsK|2lOzi>f5$#jmH~N}-o4zjVsg=I7zL$O^2fNnL(C|GQl8al$Q={xO zbuw*WD*bKxVDd3nGIuq{nw{p!<~im>rpj7#s`(G|V`^K*B3pEpiIz>4F_bl0jYEwajR%a+ zjRB?+rfH@%reN0FaxQlVEk`WpEmxeD3`>^fZ_8Ut8LP$G*xJq-X&qvnZryCX#`-U9 z)7u&_HM=tAV{Jb%IrrNR(b`PgYug8#!d}W=!)~x!?RD&(IrE0vN801zM9HU{a=W9m{Y$7QK|@A?~YO$(#XlO}U;NCbyHj%L}-_I5_$GX#%vR zwYRiQ^rQ3(^*i+ehFQixXhUJsCX?FiVhEa9yIGGieG1vC**4i6_BK5HkUcN+{eXa%>-CMm#y;J>0y-{=AsTrkxtj(iq#g05% zw}GwrnJzEqn_3^OpP@geuW2-JA-zxcl`>T^=}k6MJ=1sG4uaST0xbX7?%2~D_r(L< z9@*blDkIC>p{}Z5sXa8YnhTnjn&R3hZC`DSb~u~a3hf5%F6|-hS#4Eaq;9G%&fr{R z$S^!K{9|w!r?aOg8kZVZ7}v0~?=T)Sp5eL~WD4b4o`*BBlR4Skh>f$2rK9DvWvca@ zwXSV1!|@xtMOn_hLG~Z)3+-?0lEcg4>nP#q$4zo5D`^6|YR=wKp9{y&aw;qTom`e{ z?`YLLr)s5YJ!|}T)g)@Qo+V?|_tT%z=Qot&06J{2aI>X#86MeRfoZS$j;qLGRc)P) zg%!(!dT%;rJ8QefwR@#wokPmXnUtY&8!p&8>pm%Z8TdhB>zoUPw_cFBL zOq^zzZ#ZhWZYXXHHbxsKa01>pe#5{tF^x9OF|FhVQQjP5o@GukD=d7k-}2b<)@ruJ z+Sb~R+0JoG=+6}0XFtV`^Uhw<$yIxk<9yDfkrd*Um=wb+lmqg0c_BOB9aS;4R^3Kj zL$g6sLR*nh^w-tZbWrZyZrx z8M&3*SDwwb`%(_zzTl-U%+-6Mx*o4GoC$^mZa{rZ{v5#f%snlOEq__YaiMG`CRK1w zg*K|Ts=ndgUR~Wp-Cli5+g#U67pqIw9o3y>H69(*z~;6{Ae%jXvv|Z$bOZ)T)v`usVcxFtD1V2Za%YPl4-hW z3AdV4?32^YX;zhOsBMS6kt5FWBd?)0asnQ7oN+uCJ<2!p#KGprHLkL(k2C#tIREB>w2nvx@SHv?UC~+&)79-Wo!xCj(`iV4s`I^w{XMq$u%BM{BCW~o^r1z2lZ)N?oslTVg2_7 z`M)UAWJK+nsm3QSKF05Qz5La)nClhxwpJc(kzVck+nVi9y?OC!gFIs4^exWs&Ye14 zFLY78vJd9REN`@J!HFd;SLan08CE&;+&yPzr!`pzYUf{d|C!eM@Rjn{$!pFu3n{K^ z@O_`QDLa?9pY<^L4_oHus~<{Ud@(G%bK4mMpDYivy&vk+d&07T$FBs>)J2q3C{F~Z zZ0MNe8`Axk#Bv9>bo#qp-&2*>_Z#~A!16U;jHxo{`|^Fuef(x;+nSZfTr^+G+A(?l zhi^}J-Vk`G`Le;O9&49%Sod9(Tf63_&by_YpC>irk+N68l5RSDO>T!5Xx=BL>D;&0 zYE5iaz2a@*uI}%YBP}MiO3wZlUaX)-qf+r(7!9vyP2q9_ResrrPWQ}PMA5E|s<2#0 z82O5LhxX~!r(TbkSXY_%%7)HU4}Yp;KC<>%-#s%A7F>8`d8YrwSWQr+4e2G@l`gIC zzjsc%0+BD4_zbfZo$p<{Z&dP!yyF8d%${Q`sZz{;7qi)AZnsJEFml@cRaLGebnm=x zYMTsm%^8#H{#+^f&YrlqT_XZ+wm;(D9o1$}wSaqJjrL6GQ((%Gr~5N%kG5<+-ezWq zbA0K0Ct?~`Dcvl-^u+e}CO&!=xp$q}YxK+Y1Mc>`cB}K>wI9tq*L>cD-nZjVd_Vm3 z8Nb;Lsy?t+dbVxGZ_Re~Ji2FHn6cp98FRZ74?pnt$dCa81J*2DJg?!TiNoy$zUw(7 zC|`yBi`Si5yyI2N0da?`I98S{6qeVp+xwDk)%Mbt<2sfyIWu23o9#D$O!J%9(l-7y z=5@^yWgb><5V*4VOVg{r54IdsYpSyFil%!K54>%8XQci~-q1VkKI;FvJ4$u$d0Okk ze+G;UAM;bi!B^bhFDP5H``u1|H?N&grgG|;_5OE_Jtw#F?)$DyJyUwr+xDk2UgZ1J zzkgKRp2QDx4-GE+ymnfx;0t3nIL|)yI(Kv5r7leesODCk{%4)!9&_Ct@7}FdHDOh1 zWYpVB!TkbTMeJTRwvbQ7Hct;&?yvXq{oc#et@yF?6P-ma%^ZHJ+b<7qj@)&!R}rs; z2jd-fQz+*LG({7q8k$+2U=Nzv>Sz zIbqC&-#u@gGY@n1{6{(4zuUCy>5=b$Q29S{<^RoAZLa@~){9f~e`GImwp&*%=y`+Z zaUBfu`ysbmo}XC$>H9bHOp7Z1`6^~w;-O*ZqTUyMr%!9#sz%(D?(KXUn56f8&K+M= z_1#K``saNBk{WfaiZ*7)r>UJx#=Su%-^(Qw;tXno#o>%=)=3t57^wjz>x+amfySR&ULcaTNwEBp<^cwy<1eI>-XD#&3K;Y zP^TM}yH&ql=UAIvAGLnHURF{kj{K){-MM4uj$5)J-}EC*i#9o%m{31L6Q5E3`fFwK z%lZxP{=QRLw_#=-{h(nRKdi`f#kQz*xpb)+;YUj^{39*vNVzpF7wx;~EV;1N;o1vd zc3oZBwR?W8i5=V#_u|?+zkiZ8Z(-BIilgHe9}CJeYWJY+Ek-Qp_abxYx$wlJ%MQ%k z6WF=l-|5vdZ*_Yd=Xqt{>384eTN6Dd%QYeHwzslN!y4V!R5ZFg&N$4M@7{g+=c21) zYMlI7tXXqu#l`a;zB{Ks{xc({-P9VDi${9C9Of}2)mPzJ+1okFb8?$4{k^W&DVeb^ ze0zhgv-)&d^y7hZ{`W?BPON-kvitL0-6N0WIZh$@`os+%&U^f|o9BzOj2@g+ugA-< zgPZogw*ImE#?H2?_0qgmtN-fcza#wkn|ihRo%YigzxYnsROLo5hx5jaxw{kYZn%7+ zeAf<-tX;niasFMX&h}*0-Lm<&?5*8guPgJhMZfTRvlji_^WKT+=N_I7O&z|h=C;JO zXM?618wiCd!SU5Q6r2}F%hxUGb9zYT=BKR|FTUIS#O$hnX$r3LoKZJ_A8kgVv8E0u z7rYs~clFKL)qbsA@8Q|iu~U+@A1YeHD|~czYaCIuZGp+lyERK`=$^8xMMO;C%nuI~ zXWndnyStsT)Ush0=S5o5I{6iS9BO`Db?w3`i6<6JO<8-b&Oezeu2op;-t19e^9iM4 zq{^w-GiJUn)y3&)?n$GV|{zvU$v#?y_wRo z@AvoJbD^($qU(m&f`#X9yLuP!ob30%onapfc-ov?@zh-3R2rQwT(14^rNGBiRn9Yb zSnV@a2jy*1WM-4+f3E6X7U#uAko+GW6{9n09Fa8|>ka=cFE-=LnmeuqDVhYv0`E$uVJ5PA@-uh?ZF5cs-*PN6V_2cPLZ3nLVCvwxW z{4LmL^!HAPQ)xm{ycpSUzcO-FNZP;0M34wb;h2uPXX{|8K{K zoCrD4@P}4kcY2lX%bXv>zx?asnZWX;FHJu6VS4LH z!Uir1&gS`4zh=LEek>yC8g4_QLqOg)}ALP43)J@zl4aK8OBY`MP*S`QkNFTF) z*%I>-a95#xh$yTE#z@n|f!)fT1fd5)-j|lche8QD_{ybcMc*D&4xXMbpytpKaTePi zqU&vH{d9)j?j2)@)|=MOiPkHwyQSWmr`?j^EXhR%%FP{8vBt}7E*MtMIJZNp0D~l! za>m;`r0ZZLf-!?L3U^3Mt40~Z8LM_kgTRMFw#KD-s8Gr4R zHnpe08P|47#ab^{O2dgWK9=@sym^}6?VvRG?3AuMGO6T@tep~bRx>H#jMSadAZITf z3YsA(Q9GpwXCGdK@1CakqqldIsgg6?w@aJa<8#K%qK-mZIpbWBQ~?QUo28ubc9C@5 z!I;4rg{lNqbO>jxDv}1dsD*OkjD(_&ihj3=m!pU($}3jM8SY@9eW~UpoN;rTRP5q4 z5)9Pi;x<9Bp3<4hxi_!e?4cY7%a))6w}7QqDlhMlzH#Zpm=wc4_|Y z&q{yke0ZUT@X%EV?G`rS{0x1fsRdnB(cr9&JU2t15ou61%|V6SBN1jj6=17~Y7ets zcPaq;(3Wl^`t(7K?G`V)#nZ;@7B{$pH|?R;DF-{aaM=XC@k38}7UpP841_89*yo^!P$5aRzMysa}_`f2*eZk{Nh zjoESnr9pmP()`GUEM9sqa`1qF|5dDZ;hEB{$e}uahln)I$B+3)Q=*13FKJ2C&^|55 zL#>cn02@oS?{$-QM@^P~i~5LpO544>T`ALfNFmkUAhG)fvRdiAX@hk!?P>lQ6WpUq z8`^T}qzN$_rMa6e%Q>HV00>(gFeO4%R<#|919_uql&6i1CmNf)F0 zu?Zw7U7F!7)kF_) z_x(ep?`L{S#`|;7@6?=;>C$Sq{?e8E^-|odS0vr+H>Xw1&@0R1X@Y2MLZvCQ9DZY` z{|5QvI{auj6ZDmkA=oWC<(=hH%WOaAEm7Kv?>!~&_+Sx3VOo4{Hcw=BN1`)%BAxzP z@=xsakD@{h>-3w*->1``Lw@H@e-XvMGpi&0eH8wEr$4TZ1U~O%1d_k1)4z)%9O?9X zk^i+$e>urNFKtfH&nK6$GbDf{<2wCQDSTq5KZN|lI{k;q->1{RpZv~J-#PDSDWxRo z?3}l_t3-P8fsMUlKCs&{L1>1Uwvs?^sk`9{7YLPpG=#AwQb6JW?*Ho0jKohEcXpS0 zC&i1`-jkLjd9^2&G@GSJRY@~g%AxM_4l53V){4Z`@6c$2%D<38F6;=AulFDDOUk4sg_3&b(+O92a}i#O3Y3yRq}$tfjR%Mz76 zB~oZgjQDEq)Cg0wFig)E!fMb9FCHnSTxj! zr}S0wKjJA_w=2ji&xpsA=UiovZ zAQV0}3e9;ZPQ$1`NB8i-;=>72eOi>*FirAX{M-n#!S$@b4p z#|TSeu;RgUnR{k(&*GB!^U{}#Lr|{n>5Ikk2x&$70C={f=ZU@%QqLvcVorh-w4_8l zxKcW|9S~HwNwKkIgf7RLz9j=@X*IKx8QP*ni)(&1#hij+9Ri({`ORU!B0(L<>BcLj_ z&8b?ut3!0R!=?N%#V80SPZ+jUS_7EuALXPd#cE+!cEmPyxRyCwB~%mT>jaZHiT73cbAnrV__y1 zkaIEGz5S8SVp~<(LWdRAt`TbOLn9H?;ib}HIkkKHfJ?INe$TFcH!k93kg`_!kqsDH z-s16I4_l4(uH77!cg8Z(6oj&x0`O2ixM#OxrlA~zITw|J=~26C7&Az}t_o$(O2b!A z#dF!}XgptEJ)IRwKk(=9HB;eUwuU(S)+G3C4dr9Hz{P0Du%iSSf~oN@*m>S74U*g1 z;gn^kvO~E^y+GYnJI_OixrfOI`!u6cH(FY_cCah4Tr;3sN=8fhYln#S=cTvT4)u?s z0f@O(n5W#e+YP1(3s8?3dU!67ep)-a2UNS=I~|RIdMq+XBi4;WJr=H;8CQ>XP`pwF z;V8MPv_D|0Mjcg{$ZYm4EGoC$ayR&FVU#_ue53!Cd=kpJyU5%<=k8duc4l6Ac2iXj z3emW30`rgtte@C##5i7ETT8Mr!=BW&va8nnbwde^wpQi$5NZ4Rp<;E2RJMMkE0}i6 zZLnVqk#4RZ77Tx0`Ozmag*{^K8kJ=sJVm>u&F-zCF#F;(kDcWUNo`1T9!nH|8Y>k) z=7S2YTHn|Gw%uEBFdXQ#(n;$-Cme*JFzgK71W#v%PWK@rsEm6Amc2kR%mud z7SeF@;B>UKQAyuQd>RF7Ot(2_P6sE|)W$heJ2*4Y+7xSK2WOnghjV;7IDJi{ILBFf z!yM|>0KI7_%SQzrYEyYmy4&NFgCYfew%4mvb4zJ zJDoR^NA4SFr^39I7wqxbmj3;Of+nj zx@88@+{!EW$W5bl%I-bEAVp>F5=)*rbR}~HmvMe_w%D*iN_uh>!KNpN=uYkugk)u9 zu5{qZk^R%RM(Qmt%Dc{j(DbgouIVjX-b&Qc7U>y*41Rrb9OX0Ysnzj!hj$rLc1vrQ zK}997I4v)5E{tt67}2xd%TOvBV&~LId3Lk2Ew-&-h9(1QN;xMrJT=IjMzN`e>aGaC zNdJaq;**VWOAY#d8~ZS9(jw@l&8uw*uSW95}F3Ii_~%v7cSz~ zA!4HvB%A7}`lQsLwd?b)m}AkZGap3mmoRurYN>@5kT=W=l~?659>A#ZDhVXUC7XKy z5VBDP+_iXN8ehkov1T}m*vj+IZ=oXoBYziU?Qf74Z(J^x<{YZtn8w89>_fwIHnBLA zD_LP!()q-*^ffBM7{{2M`Was4(Tmf@moH2`sS`~3T(Ev)yI?OqvI}SU7-6@?OFwNI zlTF=bc0S0cU`bn2b*4!@*YPV932< z9%JjC(cR>OU|W=%?X117#Ggbl{(r*ww|P@Y-lvwyC>~{J6K!XWc2Ao-C0Ig%23t@2 zT%9VY#zi(Ih)Zca2DC;{%L*26H4;u3JRQkKF5>khjQY&4z z`i|>ZpwJq5M={F`IBY{5>|u2XD$J{;nZoC-c@fp`x-=?xyf}8Cl%DHPjp0xO8CYJS zivqwQCBO#qk&|b)49(CbtEph*nbZh94KzC`eWiz%1l_C=mq`&UhKb5M&b0TDNIg2D z2nrFlEcK7bCb{a;2=Ot-p-dH|xjUKsE!OUPsZ%_#z{|y}yp}+|fuNcB6&s2;7QMtZ_ z*U_LX>kU(m1k{Psr$oV8UeZjD7JA&qBdyXFMpNDtgUAN^=Uj$ILId_}7tZdGHsv_v zD4BLSx31}#_B$jfk9G+cM`or|jzG%W5olISS5+=qi{`IPt?;29zU}qc(+iW|9<~*& z;&DVf4qy+<$J1cS#M3mMGtBh-+~!^cr1LuOop9JHTu+*}%uQ52Lc^gI(ke4x*HG(C zxox)>UxkY%+rt=Ej%M&r>(UHrxW%nxd`F|DRhr@*BD@7iq*_Z=MGx?q+YgDER;Eeo zHxKdSgJ+|=DIZbPPEW1Gu~D`5@_FgtX7B9b^(X~RW~dq{;cf=y;m>HAX;Ld;_~m4| z2_AVhNY`lN<7%=+=aE+mzpX1Ozgg!EalyG*rxsT1$R%4$V z*e++*VxStrtr1IiA)a6vFVld_Ip?VzO9I`4mJ@ zN9II?;3*V@QD>SbIEK49*c!o8G!I6!%RD({Khi?O8I)ioU`)1qlLQi4oCc#Xrl60i z6U;pK4TP>Tj;#o~ zk#<|QO6kjjpzN)9AA&;uw=Mkt(pSsW2x(AQ9;C{!Q6gQn82cYvH9b3bJa840^6A1V zratWA4?t-Wb0TWKKv6yNoJg4nrW}mTj;+DoEdyXSpV;Du=ansfWO;Lw##Dxs{72E+CEl>LUq3a>qf6NMatsI@kG!)rNS*K5 zJ^vO;TAy~3*!RA6>6R|qsZ%ty z@rye3}UID^F@zZd#1H@z!P4DvGoS! z(M^2N(>gvItE#CPLM9DnZKz#|%!LL}cPHj~CVHh?m{$YiE7_pj9fEnR`gnjrQS!KI zK(;)N=#oi=rvs zFAjoa0M0oI^Y%Akn}rhO50Zv$j~$5o8ga0pZoUnsaHM96p$Bai6-nB%eG1+*oZcSd z!t>d&Mrzw0A38_|;e(WKUW_>9LR(<`ViUD$$55t`q#a@6X;10w4u4ePhaHo| zHJ(y{^fyz7WeC_~V@_k!gH^!V8esI0E0u64#AIbW*Q+{=_r=^Uzt2|v`?nrN6~BM! zT9c@_@=z!y)aVMDA6s>rL+$4ho$3jBz@RdjP<)<`dzXyrJfs?_Kett2$fEd3#$ z^U*;JpThfbBzG7Np^WO*;!)v*F|o58`Xj+H^wniwPc!5RFzw;<@*sz z>WpebEGqWmDNv#$SFPoGnk352i%~8N>HllNgAK=}uC+~lx~{U-+V=HTU2pkH zT&<}8k;9^(zVssimtR8W=y4j=wpjlv?K&z}3E8XFv8P&) za&>IYZ4R}q9O~LQT#gVPqQH6$hpRdc4Q?E6cyds@I5hikXz>SRIN2v9DRC>LEV-{| zVkR<8aI@80EAX;oMy9k+9?l+;YGt495akxK^0M@k+$Vvo9X{6Hy@|1=`r5}@G4)#) zO93rOgWeXWDbj1n>M>7nT-un4E=3+7>@YrQ?My7p6WU->8&DmC@(j0+ zad<#H?A&OB6Xmr@je?8|b-?m0 zFsocMm_a$gH}kqKIo5WRtPhnez+MNn>Z&qH8~CeM2M+IZagPNX2r4lee~>kT%8F@d z&kiG(jm;(9!EF>(s#;5RrfJ4C2!(6Z@M zVHCoWsMgXrp)jfVML!>kh&J%GM)0K3;>a(o{tM~yi-Fl*CDaWxUFqD$L=ly>jg*Y8 zgh#|)?l+{wFIKn}BsAl6*YUo{=9x%)AV)J~IGHGUY8W?LO98JqosX7LWJl9@mS>;c*Nj zi<9+yfX&5r!EOjtkJ{`Of2flrBTmz7xL1IC3p!g*l=o9~Vvs$IDq0Y6*$c@i@1L~W zlaymPYecP;!-~|rXK*O#1~v)@ZM1DnOoUm87Y6+JrWJ3gSfNp)z9zK}7OW3xgt-Rg ztQ7T9ADzp`c6+t+sfVP+FAbQ4MDS+i%t?(vv!9A^OF4Ip1j^K)R7a5Q7GAun2^y3S zrNb|ciLIp*<=Y13l|F(%wt15~;wzt22to?RtOt2|EKxn*r&e0Cbas#2-rWSD@fNHo z$df>TH2mfGo^N;Oi$}n+Vjr~Kapems_vL^`H>g|}RS;t{m6wW3 zRm9OM9a&gLR1|vYg>(K9pP(09)hZN7gI}4H{q+I7)yAg7 zo)TJKnc<>TqQz=4+xL2qMU7(Gz0J_~raFvAyZ3H5`TND5Ca z@lp4WRD0ubDjTw+wUOqYH2@|!t%qr;jk_@z|4YWb4O$YCI4UQXu|P*}$H$YpX@5OV z`~v=Zyd$Z(j---LP<}Y#m}!s-N`_~{Lod`jV<3ofr=t&?98n!He0rL6BzPY08EJff zo>plOqsrL5w?ekvT|}kkm9m9V3n5}ZbeHWsZv&o0djd^?YQ4v*xzR$aYfok;l5sQ$ z3W54}yu@6&R7%@7P;LiJeVo*G@na zg_cJ)d2C7j!EX6Z`AoX=>X5}$iwCgPEv8_+64iv3H$6JDgbUm6E6BP*HBhGF&1`;b z1K!uGl@To~lwZM9oT=1{@URZ$mE_WsQ9Itm%33M&wTWZ=sbG~h%MIl{#G%>pB$~7~ z!_Cx6*}qI1lPotnH<}zVp!;-G!6r zij3}d@4W`;iT$tjLV)!GD~Om1N0T%5gZ0wbH>T*x=VVK5DJFSq4Q^IY64Zw!#Q7as z*Hci96>ANw1PZ0q6rs|-H^z+Qv2-dQ6<1^3sSGe9u>h5g9^m3_Zwwj-@yLQON(B49 z(DE~w@{yp)TF-A`onoaxEjBd=BBi8^zP#*n-uwhRZQr*BCSxoY#TY=Z^HeIk67 zWo~GR$|U3Q^s~|WkLaQQ^|5}*wrNnA-C?V!YU2xQl}7*T`bM-O$(piB*!2HHSdRkF z&|6q#V-VT{t&PF#eE=mSt-)K?)J-Fl+r4YRL#1m0TyvD#nWbpDd$F%7`~*% zD?6URdnP^m$Ivq@lAaM$@m#*u+r+_r5r_Wa9JCWS3=QEhdK6&yHf=h<7Aus@tpPwquh!1v!K9DU9j*+`f)(XLbO7P&UfT+PMFVZG9e$H}spR=iECn-RgLYBN+ge&_T!-^5bvSGFZ8*B!GQ~ISe*G=n(nF=lzM$| zf+b3yelQkuMLd%4gYv=pE{JWh#kv*5-nPYhMOMc)hn$pNITAN;Qw3h0CAbwZ4AVwZ z>(+`?>j z{mN!06hMi%*=FbpAM*^=B8|}>ZAOVd_$V|8s!cGDHEjSYyEZX8c*n}`XA2{a?L1!f z(a3|I^E@^PQN|w&!Cl6s$2POXLrupPGgN5y@uBRBwC=c9AgX0;wVQ{lrkJINK{@>{ zwM20MLQ?1e@btUV8^;HP!E3iT!F)-=BAiLXJB&o|>hURxP@iJ`({ApYcg2!|Jt+@T z*1s#Y9Un{+S(ybHzBcs=y^`bzp2&Gk8r#>QcZ|x(NKE83qFSb=KtTe^cz-nrE z$8Im-g+V#Fxoa|`%M8lz2;fP&D5MXY{sT*wmzwH>dXysE>K<^?4F!jp2J6q%a87#T z#2imVFNnQCCLeYp)J`tt-{4Bv59Omo_Q@fy${8YVeJwa`VTMEJPp=WtXVYrJU3Soh zA$O^iRnyl6?Oe^^ez9g4J9p@0%}M6mj0-Nx9cjzi-QW!Wq`T;hr8nZa52Q)wM)XIH zp?7fXNcLW`GN73DICMkI+pax)Manui&>s@8NCH+=`6L&X<-&)SAhXQw4uP_Bqk9k13M-*Ut?2`G-h-E681m)b{}m1OH#bUyzIkSVQ)8sw4KxTe z5)=vw2StHqHA<(yStFMGC{1iA9N_aKq(Bov(?K&q2_PeA@sEeDH?(#~wZ3Yq61$bR zl4{92&?>$0(~w^OhR+7t0on_Cy;b`9r)0KHn)q`HTX(4F=c6vZ>u^_@-*<5~av5mqT}YwgdjNpH6X;rTh<(w~%0+}+2Y6A!)c zN1+p(LHBO@prbPcvgB#qD9o!@kAU_Yq|x>eOw=^{xc(ST_RsNB3RWjJZ?-Vfq-4~1 zg@)a}A|0@kp1NuutV05Pk$KLUJ=TvplxB8v;YMch-DIct5Kp8Q3zZ-2U_OjpD}9Tx zULx?g6PxJDYUJN~up;(F=`$WIld&tZ-IMiu6oWAXuOIcef07}Tw85+7rPEOoE)kFq zC&C#TV?kIeg?M+7TKsn@Esm|zDw9L)$0Jd8$80E!3ot05n_yD5U6D8SWPR8*c~?(1 zxDP}u?=B84$9sGlUMpgC;o8WPa$Qg6Z9+!&3C_yoJRS{t%BFF)mIt8TG-a@mTkpA9 z>g{2?tS>Dldy^M5#gP~`D5^N^Yw)s(kKcA)Jm*1MWS*B3da)zye5s~4dk|AdUhKuJ z@P6mT>YyS@5BFt9F_}tN_ha*ca)cl2D_`+tOTdHsmZsYVTw>Hs$-lipo)o|$9NuSy zEIBKHt>~7;L#=LErMCi@$Q=G>0<+|{L2O*R*C$J!IGBwWpBP=5F_?{J)8a=(>C-?f zK+l3c27LwUJ~~S80}2Gif;y_z+RbD08&C-t=P!} zNYDeIG*H%<((8e2A!9jm#4xspJzaWb7%OpR8|3WK>><~uu(Qag$Bn1t=F!ZTGX&Jw zv}i+V&oK-am$T&oV_5)8lc$em+gY=GaV*=&5@bUN8^FfMYeK+0CbMzuAvU>m**G?v zv77S2@vNWUB{vu&v2C{4=AQFgf3LG;DWRX*5^fBsR=$*PjAwh<$=CBjnb_^gXk46_ zkhl0r`PncwQ3r3KCU3#I(%LXK&xt)*I%qOvyGWg#(p5^QXNe^B;56ps^mnO2^5!V! z-I?INDAtWc--*G1aER_fwyWaU$WE!3&m{m+KKlA__ z#wN%G53mXBo6_SCun3V=l(r=@=;R^tlSyp4=+q>Cl*Gc=O8Hh23umFFBj>SjC(*h@ zUY5+J4~tt8rJn;bg3>|DK`TLPL63vxf}UDZdM26Oah~{vDT;JkB>;8_&OgKjcxamL zX6TxJ3&lANUR)hU;G3X#L1mz0rqbWi*cHaE$`{jFf0ii!oX+|VzktQCP2KTY%;IXA3b*n(PJ2>tP>L(gcAN8LA4^ZuK@`rkH*qMk zf87w9L7U=o-^=n0Fv%iTF|s3mKEw?RI( zj3vy$geEUt%*5h8#Avz-4!>&4FCWq+AUZzm+-Ij*v)Tl6H!k9jSlIqJbWw@hRXO=# z7L0zdKFsd-L7hYG#$=_{0G(HU9abA|ScV*Z}GHcp3D357j%t+d9(Ml$t4P?th`pWiJ_I9I_*XnPTCf?hic z^7Jmeh|aD$H6;ZFIfCewBZ5rdKNh7w8bGZMOUZ6xW_Sb1YlYVyMky)xb0@`Arooxw zmQvZ+8=ZsA{jLjgRtD7U1-U+hrBZKO8wO?sqy*PMTVJXn6Ii}~1se=KyK)8F254Ks zb_4#slFgy-B<=HCY)&?Bi2b^fO+&!=RSe6nyl@qp3*S4dSPWkeVcftP+;dntpC8%GxU?EnY-I3Ds|W^r4&q48``vXBSv0Jmi*gl7TlLsQnOb1 zZ8)9TqCMLKC#_)*U>a^-!?1gh-&@0c(MGjvP~1ehaSa>ehNcqDgVlXx>5#RoH)9*+ zN$VJtt^CM3HlEtD(pv6Ssr(D$8?(u|tmUNq_B!U<52dwxD}1 zGg%_5lRwC0A?&pLeI}a>U%P#a8#l+(6eB-6t29$Sk9&c3kVC>MEj&lcfQ-Y04>q)u(DXcmt z<-1R@pgANQ2jL_o4<|k;P36h$IGvR9H$XR@lwaGxhJ{jMFM3mPzQQgtrD>|sk;5}!A_otH!~Zx5 zHGPTnW%~veM5dZr-mzJ{yoM|mMEfk|XD=%67@k^3dA|bl@8zulM=h`Xb{6v?1@ikh ze)b`M;szB?F-$XZqwq!-cO^^ECfBnVKP;l%kvndcf^BuDYTGdz_>_mC=w@@)YpMF? zzOd(ugU-sK8`)r2jDrqF`bL-nC**q@F#w;I{j$;bkIM71al)P{YjfBS=;WI@>;&_a z-`<3YckTJ7*(i2U9{n`bOm2HZ~Q*^r(%EbD4qfKZ;G?$hY93_98WHtF~RRHcYR$>%5{a+=g$T zyb4X%7hv3eybZSwd+c7IQl3^`#_YF>zDe+|iRE#w2}%|f;T7Qygm*&jnr;k>R? zGjqtvrm@SRy+h0KY@^%$8H`TpGMKVjj@iZ*q&uc1Fa4KI?#iv}&|(5^-DCB{_P}J` z4z;qD9^}Fpwj&4%snXOy%zAo|E5l3qPkTr!F6=?{)Cp9bZGqg+**A`r}X$3-1067A~hEuCLqdQ;RHJuNjG>uOr6eJJhp)X8Q#NKyCGgIpO}CHMb`?}+Z%8T}N+JVp<4 zWjHIbU7~yAXo)t5{1^yJt1}5c5b7w2pk(>f4i?Zekz|{2Dn$qB^iE3t zZ3iZJqC7@oL(n;M0YRz|j24~pLJCGZPx|Q0h8g;@a`b2Dr}`SaoWVN0M`FW9gJYd0 zm_4o2>}H*PqWYzqb(jE?W79p7w=|^DdWQ|yt~$9zVgUoO5}H%6AH>+u9K^htWs7tx zs!-hbGjku>CXU_7ya%bFox46RZ=Y~bNy4o+iY-696Lxf+{Nhe#3#h{kjqZc~iPhnj z#O1yywrajoF2$`^O5>hm%Nb_k+t0Jbu({l2mX5fqW%folNYHgJq!_S^RkG`)H+Hc{ z7~3Jozkt2V4te7Xn94ik-70+e0!xLA&x`B{k}2BF;+!!+la6$;vEpW52xtqX`8((!Tm8D=*JN2o&lM zT%mpuZgV4TI;xoEBD433VYwOPs8?X5T$AU&0&@;3_7&`kPRTF70<~~WKK%-d2IxxI zen`Gof*r#(`CJJL?hhrJ(LH~j%Sf9BN#YQ^;zu34!Q3l*??dz;S-%hF#x;56K5Qzl z$rtvqNKfch!Q8l|hsTi$kK;MIQ}V!9S%eo7$dB;|w*KK{=?SH8bIU_9*S-qts$RCe z%7O-fxDAP5lCZ$q>Xdlr4Hh^N5(V>{7gxowQQec2m!_b6m~QJxEEU^Dw?!qHI?$@1MHbmDX6MJ8HXp{|6#Lpf^t9p|VNWc}I4`V+%O2loL~qi02|&PPl6 zAf0%F{K(tvFpBB_4*LM`={qbI;PWmkV4sw}@-FMk*gpBggRIW?QaWE!(FACgw%~6H zHPfIFlW=WB-uE63O-?@lKF(^g zdIHc)s+1y@K7xpu=9R1HJ9?gVz4BmwIv<1eKrmOxCDD(wNVV3Ahx zFy-cP+^AD@$Tx)s7R(20a{vy}<)4qiHa#Qzf6TX5aUZiNR3`sp98z7EU5@jx3CE$F z&d3Xovsr-Gjs6po_-Z-u=2_uhmL>PEWCq$GmekRMgi6#18G)u<7v*OvS$TKZX>{@f15GxZ zVv7f3OXudKTcIuIj*5bWT78YVw{?k5uvWM=wNRU1JcUDzMES2%P}iv5X_nLtso1c= zzj|HHKF#{}?JNg3BM^8#Gz@`nBamhUJ6#_8BbmIkMMTHllY9j$ixPo;ipaP=tBh!>A0G z4QH{I=g6ziV)9kWm(Q~BaBAd54QeARZym%J)|v4(_n@;-G<@rduWl#dra=TOz>6@% zdF$K5u*Zw}gl%G#rB$D>$NA~-In0C4cwhOMb1YhPpCz9?hgq^iX6M=UUfr>D zCMI6<4^%w)QmdSiZ=YvX?Ay|hE?`H+2A4i{kzMV2Qkni)*YnJmK4UxRkaFCY*sgau z&z$~MSE;P8SPn_uyT)pr20}kHhT+ns=_ zMP1g*YrbP)eWAX&?w+B)6B!g>#_3{m@?51*{^&b4R1|v2-+l*;KR_ONgZX*#VQwB; z7~5jNHhMy$JpTrp;|=5QF@IZy_4@RRR_7IG!qt_c>;{{Zjn<`Orw_NHL2YrKdTpeG zvtQ+S>9sKq&hskAN3Wgf;N+?tf4w%|!C9|z0`yvggOjdu0`=N?4$d5v6Ry{q&StCG zPgPk{_1cvVp^+*lQm;P|MV7`@i);5e(CnR;!egLB))s}Zl)Zg6nEB@RY0UedMi zz3C=g3hlo`&d!*_YkypgrqOFBIHDa;IXb;I+`)N4<%D3{?%?FBoC$jEG6&~zIsAJp zMl_JhBg?Ub)Jh`^kAxzV$!6gIUnK9baF0&(|Rfh zMRzDte@tqu(x+O5_)mK_J$7+~@JZaKT>0dupOQR)LbP zXgx;>5)+e*8Q~d`$|rK60+sob{ILSF{Dk~7B20pUwpNGh|FryKR0{GD3mn}hM)(=vQ2+!!2RuH1BlOJeg{TKhc5)le4ZMJ(jGJvU+)i60$w_)Jq z2_KXBX&I;7MBxiG+y@2XmEo3#rOa{Mtl+RmXnKXmw3bJfPzv`oeS~{WI3?IjDa$!O zGM^Zv)Ww9s+JyS>Ymu3c>cc3~V@q(f`!yX<{OP=+29pG4BMOtyX2nsI-7+ItX_1Hj z$VLvqBy$AX650w77+Su#sgE)qhbGkm4#EY+OE&+=0_p68TRUVZWcZs}NyB|yevghX z=He1=iuDtFLF$cA7^-arS(i82a}YNx#->)ZAhsTLou}-<@mNRQ&BLr(oT{{-LaNathwx-kRe@xDeMJZ-7eIJ+xQ z26cGxrby1allh3FEns5X?onIVombSOEqL4CiE%xv3cj z;6B;wCJX}T-c+1Y@bx{M#;C7sxXH$hM$@So3`$l$#IU2yR}5FHmi|gJj@Z?6TfCcg z#&~$^CNp@w46d4WQwo|emYT53u5Z-z`#S`br9FAs(i|@!HZ^ZWpLfn|y!FSg2B6vh zpdpA}p$?Rbeqw`qpbU6Z6Puq@m~c$#DWCX>#b5|%erD6Lr;GWS>Ddc%&d+?S`TWl; z(s$42$mx_Pjv+mAop2i7G~eThi^uVN?8{nyW>eVxa&QZhSSYV;VSxiSposLMnWST( ze{5N`O+NUkj>6b719sH!x4_i=Q~s(2N6(3JTMIHxl&9X}CwGtE!dtd$@>{pqKwq?8 z{vtNUG468W*=S8%(;;q8-?)Xw|6F$eg^il{9d2-?EZ0|Bf~;{G(fVh1i+6_m!X)LB zcD|=QPGgVLS*t~TR@?edns7#fv+^~+FrRt1@#7P;dzz2&`8^+>ciP8i&V~?dp{6Q* zp|)(1@zyfZxPqmJWB4L?gkbJZCw&f%-5lb>cUo6|VSX;sd-v>QIsNqu-^CC3m90cA zZNIXiL6~H?CX~=-t6ZEGdTyaI_~<>mqYKMCaXPG&9sFlpU%B^foNXk^=G*@xfyrf^ z3HVR~7v5D9sJM-d#x=R&HnXyI^0MDx{wK=2e`8}OP#K)53{`3wTuLbk9Oo>c;hTe> z7lJyo-n)kz=i8q`Z(>sImhHc>e%SB!yTkXp6YsDA)JL|220q9w-by$`9rMOlUVVq@ zy}o`@job)yggD6`-@#VC&=InWhu{!jP~Mk&{En05Yx0=iSvKIE-`Q%%mbDx2v*E2Q zaP|ZL>PTuFoCP6`XfA9O7(6MB`{1@^;igv$_TSt#QRiT!S(`K6*W6$6iG_wZuM^fM`4I)tORacGD3xGNrS zkNb=~dN$q8!i$({P1K|#ZUHPVmP+22~1ox{%bn34!}m)4Gne!9-Gkk6;ze-wE}ml zTY;0l%FUKm0cV`V zv4Fcy;&5z42WiA{e#p$AxUWLNyXK^t+N(4o9l1%6^QCStehuB8rL)>;vcA7koo^q@ zUu#5~tgRZ6W|WUs9QKdNItQYTDH$R!(28+hjVsj1w}Fn39`gHIF^nCO6|ESc?g%U% zYHQ#}nq(hmF%YRoIE(lD<7GG5K*<^G1pS6nvQkc_nSf976t~h>oW)n1a7Y*1U3?qx zYj^P_zz$c@J_R>D(-v;%haF}wljaf#>~yvP0c=7R7klV zcN53;dudt65H0%!O_9*1s}l0$9a&#*#-Ru`v0iR^&9x3?G}{*@|!(_0M2 z7;*K&q&X&!_7bP!L@L8eoXjT4`@F<4EBkEZCu#%fGm*)$0hTESgE1L1B2c;VCPoZi zW(1%Fqmq@mmoQdC?<6Vrlfzb3_;52`F`|J&&nd@cQuuaD0KO~2>s4hKi8Nhy>##VOf;VM>Oc!PgHvD{K{xJp_Gsj3v{$rw`Aos5=v?EwBBoYe5mp&Pu1~mY;o$uN~Qc= zUgz(P%JEqc#FBl*h+hk8&t(BOs?7CGpE@cKNW)`vA8~*?N)h^LG&FCwkIp_)x}cAk z$~=;BAdu2APAP=^M- zi4gna8cc;nKH_HQZ|T%}y!=-`F$Pe@r`}H8cN1lH#e53Ea_K^H|Kg{?K zmA?a398gVT#hHHX#IzNv`W2!SP$aY7<|5!Z}$`L!(5!|EBXND`-;|Z zi2dTRpk}$p=kbA>Yq%_3c}-gmX615^ll}L?;k?{qUjH08AhO6IQrvo7_Vg2zd>0?T zXJ3w&#vjrh!{z$3j|F-hxp+r2|CcRtmY?`U-+#~V=-xx$VXx5#cae&9-^#B3eBOun zi?h932) z>^c-${IDE6REz`QrwK}kxJ!+?cuU{Gc(_#5P!^LRf226D=LgaH?l;Zimkr&|n042*#t-EBk>Wh|!Rw=g zMK&9uU!M8$uWMgYR#*FPh5yBG8eS@+k6s?DzUqDejHVOUv^)PHnA8ks_ z59G{I;&MNlYsO?8SA==NY4^^h^}V%8d*Z1J^4(G5Ib1Za(Kc~ zPYxG2PJJLx9wUzA$E9CD$5|4Uf%2L$VjovX;HcPk!DjK4_l_3(b&9y+a^(kO#N|lc zf2_DR8j`qB3w2mhgo7k}m_uN_dk@p+B05g>{8+JX zZ^Xh+aUvc5P2*^8ez%Sl2e>!_ zmH2M6p6rybp2YeP!9T0oun@J`A8DRtjo5isejx-C|Ezo|M6?V=@vo$|y?CcWXZAz~ zUm4vB&b8FrFT!)D!qeRS%4p3IdDS>^1v@T(IZjN&nNj$7@j-wzUR(uWp=kIMazH2s z@ku!`R6G`#w4Hy2=W0~e!bJ^Bs(Xwx9q+?h2tAjkyef~IAg)7%k_qBmwnDx$K{T*! z@_k|Ab4cu3nCKgJ0=+aI--~?t)75?`%qi`Y1FmUnh&$kKTnyfF;&LnZe=9h$a}U%{ujaE&1gL@h0vp7fur=LP^P|BE{8l$oC9=HJ-!Gro_VdKwWSRek;bQ z!tac0MM~qyrT6R|T$gsP7r6B00nV|KsfS84qhR|W&9Z25gYPb%d-#3Q=Efo*N!1n= zl`X(`ca0nYsppD7cTli*A^DiZ*Vq-jqVg^rMxymps2_;FHlz)?Pinn4<*;}04SiUb)!8K4}{4$ywk zvxu`1^k%73wy+Y8hGWPS6m%4sfTBSUf-*oGK`(&b0i6XYpg%xfA36ymL6M*bL2E&| zpk1IhK}SI6L0^M@0=0p3A0Zwn5HubX{ZTe*1V=h(EocL%2(%aUKIj;z26P$pJxD+y zeLF>D@BK6$i>A-RDh2fj-tG-eCM+Qdg z>qbZG=S{(9S^xNZ=sDc3o*b<|>?gl-pV*&`E3Lgxyvo?b(l_oGBk8`$kF&&qVHMH( zwU0#VL!OA#&tJV_^_nME2Rxj)^x?JUN7t-Iis@a#4|KTYX|u(#lPjb3>1!hO4aXz( z>GW2Xc60x7}$KuX{+&=pwj2tNyiSEvP&b#NI-@>hXaq=g0`js=7p4pbcc zW{1DUfwxu67Fyw;nrKXFL>-V4a&!1S9q8rY`#8|wfdN1ok%10>kON0KFa$^in&9w< zJN#3*KO6rEl7kWB5SZz}cn2CB;qx50z=4Y#nC`%34m3G%C6EfX)`4aRKhuF52$8># z0|)ilRtN3^Qj_ilQp+3w;@D9*Ol;Cb44WfNOs=z@Y zZf*(XKuYH-kP6fW9109v5v>md#skT3UV+sk7>>PQP=sT^0AK@Xnhbc1UM47 z2;}>xZ6BQb9sFZJlCK9+i!}qOKyLU1uOF8WS4VUEplcsg?S0-p z7J|^!G$`AsotpX>`yMDgjsGF8mj6QzF+bO(H*w~j>Vop871g-_rHAq`y9eLhN`BuD9ool)f}&d%Nxt*-&qg6cq*LG_@kpazfvY5}!^G*3tCJwZMo z`n@aqu`BweEBcu$`iU$0eJlELEBa+C`dKUbO)L6AEBZC7z^9}2qd?)HND#@-1ZErX zSO7`~tpu4tIiRheBG69IUeI9>^#uKu!(9Wa1J#2XKnkb@)C$sBkufL;G!#^G)__JIz74ug(?PJwDcmq9l`tsqS7Ipk z3OWp;C8-4%vJDLc+7D_48H%FyyFdzvmaI0QZaerOzI>IMtl}W8`wmnObP#lGhx~lL z_(=8(s%8uT(lieOl1dK&(sYjm()6AQBzB`}6a*y26aplL z7!Di`j0BDV&IFPkG5|?$EdY)JrUOR=26!K^4tPJX9yklw0Gtg}fOCK?zz2Y>Km$}^fG$82 zPzN*v@$(1*jdoXH4*YJwtw49+E?^JfK47*790%c`|GVNCuqO#1gI>f3_6F8~?*+UJ z^aeHn`v9APKEPIBKcHq0#stt4=m+!%`U8W2{ecsJ1Avjhfx!4ZnDYT}EC6E=a2aqg za4m2Ma04(9m=7EZ+zA{8+zT8IJOCU4ECY@No&p8~>wu$xSAnB}w}E4U!b{Qm@jy4= z1fb7L+0ptiI0C_#2n+#E0!{^n17`v!1Lpy!0MmgqKUV^$0W*Qqfw{m)U=c71xEnYF zxE~k;ECo93+6?FgoC6F1J^&mAGyubabAd5H zBhUa$1}*|V2wVw#7`Oqr0=N~p61W>kzj3r5$e>8F55u8>gY=RMupItwz*=B;U_Hy1f_+Krf&#FaX#e7!Di-i~*9yS_GU1Gy!J-&A=5p%)hO0FsQ8E zKn-v|&;@uH*bP_?><+92x&i;c^3FRds_XC9hZ$7ts91xFiZzxq{Y*JC*t=q{QEX8o zDk}Ceh`nRM!Pv0Gii#DxV{fR~v16<;7A#3jV!6)-%};aR_q}V~weDZn z_ntXtm{hbFdLI=_-8-}o>bH!1SlWu9zGyI-4VBUCr~}P`)L zmQo|?<7UmQg(Eu}isnE&qQ%f&s8~~@P@fzcEn}wzZ=3y+Ulv7gH*RT&ji?G=sQZ4+cXefFe?TBthd!g}YBsvR?LeHVo(aUHY zdI4RDu0<2kUFcr)2zmm&iMlW05PL!znv6b051?<+6KEI(6PuK80w3O@foLBz2)o$z zjQG0=KLr*is1W=#gwzNfjkZOT&KjyrLjLXV)^(G>I`dK0~bK1NrfZ_o{>w6TW$4w4IB}xp)2tZL&ZtTh9=^VM%Rebay}g5=;T885-Q8tHGy#7Yx)Z-qDE=jA3OW)E#a5b4JG!zw! zP)k&-a$P&(5F@ucD%v?56$2^~6?1zOS_B=BiV-^<6(e;XDhApjv_b;O@aSn9vRL}epr|EGjK-R*Ji z(743kf*Zw$!eTWKZ^q2++)YzzZkop6yAmtE{9dRQ9~~1Yg`Z-H1@X5<7d7+bNzxP! z=B{GpgPG?P5yb}__-lQ#-6ve~jNPRvVErD2kw3pP~uB zFSNwp3&w*N-hv1dakUwx%_@?loX)s%#rRLbB8n(wBL06TEt34XqVAhtL>F!H6#ti3 z$tbMIi+|i0{wTCD{JZ2L%P;d1@j|dU4*#dSL~R=34}(#_b@KdE9TE9cbwrw&WKo^M zEpdvh#6MA+HUCNaPs)tIPcNzDlKe#)(e^j--~VJ2;h#pxm(fJ(w*&N_>=sew zL(F|hJHo=0%B`}-8mR|F!2w8vry$lJO_U~T?@^7k2zOi70Ab4-B}vW4vWUTPC>JeB zccJ?@{7`PZB;AJNY@vU_uN=#MgU~5#oe7*&KEM`sA)dpPIzcFV^>_0msV|I$+0Zgp zlJxT>sR4WkDQp(zrIOSHYAwSKIaWwgPACBeFoJj@@i~WyAS#e7yiGJxINH2Ltrokq zd2UU*-?dibAKxt5aNGUpp=bPF&3Lz@YNV=>J%&XF_Z3@QM$&XN(>Cm%EHeGWyNftd zDB1cDr+4=*kzInt4#;At$(Zg{Wx3n;EVdD!{WY7n3~pPqx`-3`wXGE0c)V|x*C z)K|9p8HuB?1rSy>Bg6VNMZ9@m$ID0?_m!Ad*@@tt9&x2u+zw_Atqen#;FjW| zMX+`E{S>K7@IYZ3#Zat(eu_6}m}q_cE3u2-{$wB0KRmLp=qIt=J=OkWA2DJ?_pV|a z?0D)^R}GBp<_@l3J)@*yUl@byx6deP_b+WNGvoF8%9a@~{Ie}GT)dl+BEIkkuKoa`MGuBo{3&fnSyNmrL)W}sv&GLZnBi( zPI>lwHH9j~G|pVt7NNqv3Kj7ZQIUpTmr_W>VZ!5oP~%r5lmM}Jwfz)9L=HIpMTDSF z5h{EUq28wmQQb6t?g(zZlSrD5kpUqsLU+O?5O#4q5c+wC%!NC>dq~FVPMj+K9hOL# zuw@)r&@a=4_TaBp@-O96VW?sjDV+<6`g~QI%E_4(|FR@v8~XRv26OLT*gn^yJLyC% zB2fiC*Fx+=|4wTsEsv;Y?E9&i>REb7lO?NrJ%37by=UDaO$p7}O&KcBOU%5G$Yc`k z&j~Mm%0T!dHiy_}fr#UYIiv~5x`gKh5{_l$kmtSaZg6_OPa0u4Sh}>_34>k#WIJO-_f{n}e`?Zj;Jq zGuu)@Kevb2`9vH_ol$?$s|_z?ru(m|CgS?v$f$_+Xkc~E`a_!H+L6UG9lbV}$h-~u zIpv8j8bzdxEctc#myIUEOO*bf!}WbK!!zobjx zO(Nb;NplWq5QGxN915|&!=`s;}Q z&S;+}-wA3oTB?ybIFo%d9TjF|$y~@j7wq4Ivwz;q@XX$hxAEy2h$?1S{Qj)VThw~I zol8m57ODF4JB=i!pt!FjsK>VS^d4K&8;vA$Gz)>x8XB9_{-j2qtyGxGdm4xbFQh?e zA#!mtt3dW_NYRvR9D>t}ImJS-aI;y3q3IkhBhWP7==v9DH(=w8s=^0r*g{H^T%?hS zBf_wyh%}y}=QU;A{w}UUaC}9wBUr{C%AqWX{Zf=7?Hl~qA|R$9pi#t)CrzS=3u%1* zk%Ic0$yR6x`GA-Bp=gvS9x93_k)K!iMe#z|!Xq#y5|{#slu;a%y%Zq67@1-7uTI#v z6bKFDLZQ?-1h+)ER}_v@jW~bBV~;?iAc(Mdp?pB#6}C!Tj5bTdEh^;C2L_@tQjG#c zq5xr4F>v9a8f5Nid_hy#9f~soqR7|31i`oyAr1U%5)J%mh%ht;ypRq-wI~lnK_aAq zKT|TEvZR&9Mgygk!EFEipD@nZOL=*f+n9k9gjbs$pk?N#BiVqLnEk6 z6dEsVG@2I`y(W5041hFYC*vqc=fW|;RF)-2E=vJ$r--`Z4;9N0aWc|Sm=xm5;+mqu z1*J|ILqbFd6WvARL`W}BL^OulqzfCh@vlb#Aq-+5o-|^ViGqkxCx%HVr=3I*M}(p2 zp7R$q1>FAiiB5TBvJ;IRMj69I`LKtGFgnd2n;6Jm$`y(&O4vcnk5KU9P6sinf*KGP z!XSpQC^R0tkOopi+_X~)?ZDu1OCfmD6f(ddQ_grshnNaML=?RuIzcpwT#}4!DE2f8 z6pBWGxIhe=DD0KFu$|0tr-NuCe|90!VWPKX++h#}@!)ObCIE+jV*(*mD8oDq^{1g? zP%lXIOc(`AgA@uQ=Acvwzlhg_feYR1+c#7hW-K@^BZARhHXS~E|ME1DAS5H1=eF5H~fflvse7NU7$zNOIk zCB{w=<0cJ%3f&lkEndVELr_Ph$k&TMO~h@1%}g9xI0&~tlQ9Ghq5@)gh6%TxYoakN z7$aUBQS^U0>J<^Fxzv&iiHV5cA9swIg3$^x?zF0ei!P&^QfQ%2(aID+B5o+*{nqVsQFX^F(SYi!p*N zhKrFI%<352Vo8aZ&jla`5<&J558@#W2B!U-GAbmOMR$>D$q(C}^{)8P8fuHb^LLq7uHq?tIU*+j@PDURfm;1d& zDg!oX1EXLi9E0aj^aCGqKzEn`Yatn)LxGPPsSXT<1+W`#f{&z?Nl95VHUWPc)0@ap&EbHI1Hj;1)PSzp{!ObHG~1+f&K6^!+10&<$pR7hXf9>^$HP zv)~YeLbMi$3aKmPJ48?M3r3Nq}7vC~ij^i?9%}q_A9`u6+uoqrH z$vj%A5sZZdxC(jlYNh6|5YE5{(EDqpE-)4L!gC1BN1iYk7Q#t*4TbY-C7YXh^vC|{K3gRzhZm*5X5UQ8?1hJLUVu7dU(t)zqQ5DSOl zIRpkW7-2B{2nXRI1Qe(L8x-dY9xw-X!!J;@gjQ+{!(kmK}|6YvsBRMtv0VIVAn6Yx6}twR6T;pGRI z30oi)G*zh$G=@>I4z7Tv8uJ%A!#vmzzkt6?3qo(01bg5K1nQWM;D(*>5Q6nusU?hr z)q48>ERJ+2Vc<(U5C!YuHe@xDF?P$=>I-AeuVSz0!mn!*DwecKoUFvf16fvLU))0JK+xGw9_ik0it0o zq`+?=JG4?Km<>sA3$m+BSLg||+`R0B`;gno2#3xv368^aDDKiqb)Y{ifWz<{3WjK< zS`Z0wa135R!mfOok*#1HUF($qYRq4o<^+Ff^sBU;=Dy>ZXZs zWC^9z&=ID>Hn;-?nlW`C0#?99cn=kuvs%I!*aqoPx&_k@M!-r)hNqCLB^QO}&=)4b zPjDO_x_K$lil&Fja1j0kxiuw+Q;72$K ze}Eju_<)&k5dH+Y3xgWw!8yp^mHhxlccuR~;kXO=yD`dPC@hC$_z0Hn+>?OikPLZx zu<^hkSPl1~)c0HfV&Nhb>q!kE3H*97_hB}i0-xS2$1nyC^mfyqI6{74;eoAi7Yg*@ zA}|D2z*Wc+&cK8YFcG%G1IXQ%LPBqd11~&+BK_zx=mQJjG`t5xe-zt<(l)!ajHgg@+LrB47!e1?_NFH5dRMI11?yJc2O- z9ykfFA$TNt!i16Z|2`Zqq1Y&D3Ikyc+=rs0nP%`KoP#W5=qeZv>){UMpbM=K2Gd~^ z+=OgVEKJY{`oTQd4R;~iSPm-CVk{9y;8+94;4M^$X28G%SOJIO7w{j)f<4Qt>k zWE;-{1Z}|$Tj4Hbo50A2RxlctLNdI9f)iO;p_iMNSlA0`kaH48XJ`*@SOqEY7D`WM zy@wxQ25f?}@Ei(HVf;V`7!5zcCHNCcPi38eLEwRd@Cf{-aSa16onS2d1SjAn6rE1f zK?KZ(?T`vSGiX+52jd_KUPItax(^0J0^Eh7vzSFN021I4l!)QI1h`>K4E=u_N50ui z73dGk;2IR1!zlfrIc2iZ7zSU=YN@VR!)97Be=W7tDerxB=QFtm)7KqF@bN z1;3?K1iHd}I03JrY&JFA%VS7KHw=0FJ>c2--+D!Dv_wSKPe#ZepQ;CNL0Y zzJSf3OE8c;3JgUOiiIHjE5w+3m>7%77ifLALhVbxDK|DyyV=< zyBeqtoxu%1!d6IuUqHK!3qVsC3bEUgHa^j`^h?U|TGM%4((EDHoW4nCMrfyKlE#kK zdi|5aXKF9!=C8$-TBI%J>9|PCuc9T5TcmB716%4Ut&uOv=U%NH;cNHbPUnC6w|^(= zEKkLV2N6F1`+!Y6Dbsz&e{6xfIEOdW%r5o+{hvwb#kkqSjDY{Qe)r?oZ7Gb#@#Km z4XV1TxBlmkKZFd5>>d&#g?|wi-oIz>Zk>A!9N2&0r%)cl`7*pmzn+o3zK-x^c-Jo7 zJO5Ytmk=!~E?%={m+E9#b1;-HqFYfEQqB7^(B8Tm-*`1${jKkbc{yUbcOo5d)bbb5>D#UZUO zTLsd5BN>v)AJ(4pDPZCAd!r=tYLaxk>LrUO`%&%Rxh)xHVZ@Y_@0hlOue&XGBP4E_ z)Iw&Pmzg)4msvJj4qDDz?pj`2e3X1jDMhDLSDGnZlx50h<)Ct2xvRWXR$5!y?%R&o zi#wjFEuAC|<3n0xo9v^@rz@q?>8k6R>AL6!=*H@1>z3&@>kjJ9>+Tx%8&i!Rj73Z~ zQ;4aPX`7FQrFVYGSw1iS!qeM9J5@r{AJ0e zlvWg_p3*@Xs?1R4C@Yk8)c%PrzrC`(qkWqFko~wl+5VSZa%6K@9pfA`9CIC89LF6E z)t>4>^_7~(IoY|=dB^#ivxuvb%i(I`3Udu~CAglrq$s|%N*VII4t2ykes#Qe_^R2}ylP3cit1DwsBP8$YNQ&aPEZ%p zY8zGeR&|$pKz*pbP<@;QoJE~woYkEzob8-loxPj`oRgdjoJ*bSou`~B&IitPYSPg4 zooke9ip%3#=33?2=Gx^t;5zR5&Golv(iqklA4$qB7m$m}C1sOrm)po))IYHhj zpOLT0x8-~CV>w;^O@1$HbUEERe_cUcpe|TfQK#2gbWU9zT|-?S zzombyf1}T02rv{klr~f_$Ogrr8tNJv8JZi~8@d_>8)6L$4esTJ-G-BfbA~I1+lEJm zmxk=dibk_hHP$sYH+C}iF!nPJF-9Aw80Q!t8~-vEH0ey$O|4DcO}$P1OfyVtO-D`V zOqWd8Ot(!hO!>{_%~i}sv&&rD+{oP4+}Yg29BGq4|H_P7^jgmw0R|+d8MOA7l&6UB*Xl0x-Q`xTUQw}Sq zGbW$Ks#-f*yI3z-`!ZAB+x+cw>_6FUjs}jVj+Txij&iD9-LB?zmUi}cMmwiEw>ghE zPdYC+e|5fc{^|5{m2fGpP**qCAeVcdYq@JLJ(%K3&FsZ^<}iI2AeWZ)vLe@z8_6By z9`ZnWm^_i5jFVT%Tjag+A^DPgUA`~BlK-Y3bLk4xh1GNpU2VFrneIp3PThXpVcj)4 z>zVG2?r*v)JKa@SUqWA2Us-R^+w|4xsI6}OPW>hQ&-$18-1Jm21HXz&FV!@(G;}od zGW0hrHzXK#8d3}o>6$slg~rXsgT@QSx5fa|Ak!$*Y||Fganl7;n(2w@wdtcNi#eyc zq`9owVph#{&8^M7&C|{E&CAWF%oog8&G*f@EdiENmTGiC4NH4VXF9>{woIY%kJ9iy zN|4e}`9YbWEMz)GSOaWETMt{DZNKddE8P=Yy6tz{JDbMtXD@Eo+pTt&y_vm({jfd7 z{+4f()^&7u{NU*C80?60Omxh4#5oo_Rynpgb~#Qu&N}Wm9yp#jesg?uWK|2OWz-dCTfzpK8^?9RN-BF>V|N~~fQX9MR; zXK|L2hV))ADLg7|1{@fYzJA&St?uf7RBPS)UhQ0b6KUW?669PJ3UrJg_{s7~M);rH3*|DP?PG>ul?8>tzeKMc9tn za@zgv0rn#HK>K!9^$_O`7N0~{ny9IlhlP>ea+G{RPLm(V9d)mCTKyVBPSadQ!#UGk z({q!*xw`qJxuVik>8^}XRw>(*-K>!Bm3*v>7Hf5DQ|k}bk=998_Z8~{>rvY)hnaPm zTvPb+3lgaBz)~_?AFuCj%wqDl6r@HS*rcXdVyMMYcE=~|ffcOXtb?q_ZQt70ibQD{ z8>y6PNMj`#XS``jXGJJy{?#&w{bQu!W*SdYrm<*$R3=%cS!Y@2T0L&-LhDlN3I^K> z+iKf-_Ped@czbLIY-E_8ajRe2X^J9Yf|5urb}D<70Bb+1_@0hJlnQLK3+U&*`f2)Y z`o)GC#;nR4<%5#b>L8ZeI@P+{ddqs>+Ll(GVqc_6{+a1++5WI)rG?!=>}5841AAxt z5c>lAM*9)_dHWsvGsbitM`_2mj-MT>^Pt$@gM7p>L7Jm$WLR$e#+2Ju(AL7%!FJqs z&UV3m-JZ)4;Hc*q%BJjA$ElOlY3eL>uIgc%*{UvN4_V<{%|5cpxz(BE+~Yjplw=<% zNIYu)oyALoo?;yj}(d2(2dhg(oNIN(#_R*bPIJ$bt`nMbxRoshn3^3q34u~ z$|k1u1Djj2=d@2^uI|d1nWa^WT3v0ac3=m0tK-!eHCA1#4s*JlvzQmLq0Yi%N5vMU}o?Kl&SARtRLEpk~ z$dGCnWNcz;Wg2brm^PVqn68>6b3wDaJo{B+^Y`ZQ=JjT;ImLX-oYj)sQq|JN5^fn| znZ{{od&cJUiqlX&#i%%yL#h(-CfZ)_E9CR=q|D_bAi zY}-CofDg7p_HqnO7k%EvK7qlx#J+;Mp0KCdZ`psgzh}r5b_6;~IUJ6Lj@FJ2jxfg< zj$mTpUG6ySxai2mBHNOaVg!S7Ip;$!YwHVE)!ZC%WT%NU;c%xri>st7*d@jLWGpI; zbieC9=nm;C89N$B7~_n;8~d5JQ-hc0S(g0DP@2E8t%hw41LuV;hkcg4q{G0aS2!Lz zW~uAdt1R2E)dtQD&gahePCMtlIj&7Eew{cYZ&|J^#@yz@=0sMo-_7sMewIR(;+8TNr=>QB(nRHV<+lBZW4U@# z{iurb)=s*@UvAB&d{w?Hx6~!+uIT>M)zUZAH`ljg8H?6W*Duho&~MdeH&i$DHncU3 zG~fN1l!%<>Bh^Fl z8VWL{S~8VxTGraP+V^n)AE!=LgPjJ>IrE)oooSqKd|icH6iqS8>D>Vw274QZ8s-@m8IBr~4fhOx8Vp7oy+77Cm5w-W zJa2qr)R~;7zNX=(^&HIKnY88>=APy?=4A74<{(QI4(Ed{6D{dX;8w~2WiH3?veu#2 z^VVCo;`TQ7=}gfi`%!zSV=PDVEsnj8+nfW!)j6EJue;S&&XLaLEU}|q8#spjC2A{a zB%Yv>3d?3WFKgHbou9s={ttawLkN@1$FzYRPN!_NsW$_HgQHeS2?e7+6&_C#v7O9&r`zWSwik5mor{64l)fgCz#t=+`b$zuPUvr)0u_? zZCh*(bum3e%pgt1QmT>t-ljXDyQmA&uhl=*moQ8;WHrub5k1EC6KJl?8Lzgv6-(C{ z4%gxsQpzG*9F~TbPL|P@HI~DcTuMQugi@X}bfgle=!ovDfERcidi%-g@E4qq@}D&eN`ku6Jxm8i_}}r2KL*d5mGA z(PJFKiC_lj8F79bscf;8vVU)1iPftZG3dOYf0svXy<1so@KKf?aPPU8Xt|u-zPZ7-zAisQwzOpIAHOci(b#R z``Xc3vusT=KG3evWa%VF`?UAme5CE_3H(c2z{k&{KGq(Njq)w+Y4=8()151eq>c9R zk$x})zfdQh3r~Ua#TnYgEPkQXo}C^36Hyu zEZ#b8!0y|fj#>5&@7Psp{I>pxW{tDzUmv|7RVp9!WJ=Y7*0jpbw}VGjj;`Ltl($UE zGgIt^$*~n{o=#iU)_+usnM-S*46+1xpSg?f9y8Q>q2>JJtMc738h#(#yhg*o#WUt# zjt#GyKOnesx$1uvtF!NR;)B_BwFyQ1PM^N<{S^1Ni+UW`Z)vi>%In1q_&dLKJDrG) z-EjW&o=RDR{&Wp|V*a)Ez&Rr-jttN`{%(Aw-hdJQ`KJ0so(ccPx8sGWvDzWcLR(y^ z`bUF0hd26H&M}}-;-nqrEw#dGCGCEp?VUUD7>&E}Q{(0s(O~kDlM8CZWbLLjp6FTZ zalO}${KlZS${GLK7tU?q9j(r&H<+v@YkRqoC+H7tdC%|fwRPOPD$Osms^i|ySL&x1 zj4txV@I1L=_`S5URWIo7J3==8z5d9(Vc(7EXnyir*%>ugjQv&V_NQZV@7slW?sb6nL~DW_Z?kM%s~m>b(<{4Ya_#4X4daP-?;@rE0X zgC{(Wo_DvJ_PKk4=H$e?mx}}>`PP1&rtDk3Z^VGOrv)Fquln@DLTPG3@fr50ULR80 z#g#kjPJ6b|U7_lsC22Vup71-b-!ty7GLCB>FHGO_N6j*K9vyC=z@KRZDC+S4@*>1p)TX(lTiZLn{-1;0cNaeHb^nK4vwpq5 zxzxysJ=>0Pmwf!~{eUfnu8duF>be}$=Xw9Z-b8b`Eq?Zo`}VuT3lzC?tnbR<^*2m& zcbSx>*B_T6?$wBWykyV9hFgB#QC)qsX?3v*CpUCSjIUm#Xp?7k7j}t#=FHip{S)Vi zxH-+vxK7r36g914je&m*-*RjGlk(4fKa3vHC)VLRJ77llq$#C7v~F8#e3#Wv`Uje4 z-P)9U`(0nHk2`mjGLfs!|MvDt!v!v%`@iS9zp2pTYg?y#qAM<{+25zidS!b=z60Zn zPIGgX*)8235);$h?alT&fqDqHzQ>?`!BCa*LQ>JwIiEa~76xRniOymRwi)(>mY&{C<<>y9^fOz`fB zkXsGA68E8HU-y8u^@y2W~ z;$x#{R_L?x?BXG}*A7}&?}v6ZH+FvVHgDD%i|=IZHUC4U_{a|3zQ5h4^3GxF8b|a^ zulzDw!7-+754Y!9?q2ZI)q;IYc_v&*tDKycD|qLq<~d6&81>@BiKElo_TIE!y?ZWs zbis`Q2c{0VbIP+hweFL^32C*PK5+Mzrgh${QH%xpH!>EHoqK`+PCu^l5g2+-=UfU zfl2qZzUBSgQ3Qgc2pUN*Y$F(_gU-YGB+zUzt8*J9}|1jQA%&> zd#nBaQ;naQa~>?K?Aq( zE={dbvwP>0N7@!x^5XTqYbA0v?{IZ~fkEwNHoJUdOVFJBol19j8u;6l0l~9N_74w? zjm-b!wHx+#g(^5_J=C3FFgv(;Vp#ij!TT52I`!SflG*+6BLub8O_pFQ6 z-6%)VkCmc)20r@OrDFR#v76s!t?(gkqIX2Vss}BD4;5RZ3%v*2h z=f;qHkx#q*^y`D?M=VRWoY?$Zt8Yh7-<)&A;9l*AUA0}ZwCdNm(x9upIajPt+LAjh zv2>w%kMq3F`CxOI&?SnJcX2ay@bsN|H{^esI(O>jmp#(2Un$!p>-*>YI!zwmN&f%a zHg!3Vuj9*{Spwd@&9lAX@AuQe4W7*_$Wna}f zHgQt))#k&EE3?)3^Y0l?mW-};?y4@@cB)06Zf!d5_B4vTmss>pbeH}wV<*)!YU6&H z8@XG}(#<{eUei&{J!7Q5&em`6xc-g{lim7XI!zk1u=LD`fFeN;d(PeTX!!&8@9XEc zYyGmXIs2J@RZ}mN$oqR2>&1oz{c66ev0zE>y31ylHxIlwCfMq@J<6MH@}27Yx3xH0 z|8HwxdW}1|3!V#1P<4OiZ#ZUQ7UvK5vS+gn{;THrCdqmDiIQsLXn^Sh_A6>W}G@?kO?ZH>lvsZA3xEep3`r=gJ<$0|?_#DXMv-Dv8 zVhQKY#irF>6S3pmi#NuAHCK`3mEvByws_9DdB&!8jV(56XPZCN zw@arOJH4KhQuj?l-tT9(t=jW}wQ9n%gTE#$9^_YM(x$7*2Rwf>A`@<(*FWY40*x; diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api64.dll b/com.rlabrecque.steamworks.net/Plugins/steam_api64.dll index 5b798af163544229e721cccd2cfc3bd1f26082da..2b42812096e86e8c1db29ad4dbbc14eef2069fdf 100644 GIT binary patch delta 62549 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 u+#d7Sq8+zJ)jjivi6$xInxYq1 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 H_x`^Cf`It5 From a71a187edb280424ede7935b07c46b0a79ca6747 Mon Sep 17 00:00:00 2001 From: Andrew Chappell Date: Tue, 16 May 2023 13:15:56 +0100 Subject: [PATCH 32/55] Mark EControllerHapticLocation as a flag --- CodeGen/src/enums.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CodeGen/src/enums.py b/CodeGen/src/enums.py index e15bac69..0cc74d74 100644 --- a/CodeGen/src/enums.py +++ b/CodeGen/src/enums.py @@ -10,6 +10,9 @@ #ISteamHTMLSurface "EHTMLKeyModifiers", + #ISteamInput + "EControllerHapticLocation", + #ISteamInventory "ESteamItemFlags", From 00e98bce7fcf4eaf6bde943d7f28fcf72d6a5620 Mon Sep 17 00:00:00 2001 From: Andrew Chappell Date: Tue, 16 May 2023 13:18:17 +0100 Subject: [PATCH 33/55] Updated autogenerated source for SDK to 1.57 --- .../Runtime/autogen/NativeMethods.cs | 18 ++++- .../Runtime/autogen/SteamCallbacks.cs | 79 +++++++++++++++---- .../Runtime/autogen/SteamConstants.cs | 12 +-- .../Runtime/autogen/SteamEnums.cs | 42 +++++----- .../Runtime/autogen/SteamStructs.cs | 53 ++++++++++++- .../Runtime/autogen/isteamgameserver.cs | 6 +- .../Runtime/autogen/isteamgameserverugc.cs | 15 ++++ .../Runtime/autogen/isteaminput.cs | 6 +- .../Runtime/autogen/isteamremoteplay.cs | 2 +- .../Runtime/autogen/isteamugc.cs | 15 ++++ .../Runtime/autogen/isteamuser.cs | 20 ++++- 11 files changed, 217 insertions(+), 51 deletions(-) diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs index 46ed9914..80f45a07 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs @@ -934,7 +934,7 @@ internal static class NativeMethods { public static extern void ISteamGameServer_SetAdvertiseServerActive(IntPtr instancePtr, [MarshalAs(UnmanagedType.I1)] bool bActive); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_GetAuthSessionTicket", CallingConvention = CallingConvention.Cdecl)] - public static extern uint ISteamGameServer_GetAuthSessionTicket(IntPtr instancePtr, byte[] pTicket, int cbMaxTicket, out uint pcbTicket); + public static extern uint ISteamGameServer_GetAuthSessionTicket(IntPtr instancePtr, byte[] pTicket, int cbMaxTicket, out uint pcbTicket, ref SteamNetworkingIdentity pSnid); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamGameServer_BeginAuthSession", CallingConvention = CallingConvention.Cdecl)] public static extern EBeginAuthSessionResult ISteamGameServer_BeginAuthSession(IntPtr instancePtr, byte[] pAuthTicket, int cbAuthTicket, CSteamID steamID); @@ -2665,6 +2665,9 @@ internal static class NativeMethods { [return: MarshalAs(UnmanagedType.I1)] public static extern bool ISteamUGC_GetQueryFirstUGCKeyValueTag(IntPtr instancePtr, UGCQueryHandle_t handle, uint index, InteropHelp.UTF8StringHandle pchKey, IntPtr pchValue, uint cchValueSize); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCContentDescriptors", CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamUGC_GetQueryUGCContentDescriptors(IntPtr instancePtr, UGCQueryHandle_t handle, uint index, out EUGCContentDescriptorID pvecDescriptors, uint cMaxEntries); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_ReleaseQueryUGCRequest", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] public static extern bool ISteamUGC_ReleaseQueryUGCRequest(IntPtr instancePtr, UGCQueryHandle_t handle); @@ -2826,6 +2829,14 @@ internal static class NativeMethods { [return: MarshalAs(UnmanagedType.I1)] public static extern bool ISteamUGC_RemoveItemPreview(IntPtr instancePtr, UGCUpdateHandle_t handle, uint index); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_AddContentDescriptor", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_AddContentDescriptor(IntPtr instancePtr, UGCUpdateHandle_t handle, EUGCContentDescriptorID descid); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_RemoveContentDescriptor", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_RemoveContentDescriptor(IntPtr instancePtr, UGCUpdateHandle_t handle, EUGCContentDescriptorID descid); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_SubmitItemUpdate", CallingConvention = CallingConvention.Cdecl)] public static extern ulong ISteamUGC_SubmitItemUpdate(IntPtr instancePtr, UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pchChangeNote); @@ -2955,7 +2966,10 @@ internal static class NativeMethods { public static extern uint ISteamUser_GetVoiceOptimalSampleRate(IntPtr instancePtr); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUser_GetAuthSessionTicket", CallingConvention = CallingConvention.Cdecl)] - public static extern uint ISteamUser_GetAuthSessionTicket(IntPtr instancePtr, byte[] pTicket, int cbMaxTicket, out uint pcbTicket); + public static extern uint ISteamUser_GetAuthSessionTicket(IntPtr instancePtr, byte[] pTicket, int cbMaxTicket, out uint pcbTicket, ref SteamNetworkingIdentity pSteamNetworkingIdentity); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUser_GetAuthTicketForWebApi", CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamUser_GetAuthTicketForWebApi(IntPtr instancePtr, InteropHelp.UTF8StringHandle pchIdentity); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUser_BeginAuthSession", CallingConvention = CallingConvention.Cdecl)] public static extern EBeginAuthSessionResult ISteamUser_BeginAuthSession(IntPtr instancePtr, byte[] pAuthTicket, int cbAuthTicket, CSteamID steamID); diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs index 22a6ddc8..d26a33fd 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs @@ -17,7 +17,7 @@ namespace Steamworks { // callbacks //--------------------------------------------------------------------------------- - // Purpose: Sent when a new app is installed + // Purpose: Sent when a new app is installed (not downloaded yet) //--------------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] [CallbackIdentity(Constants.k_iSteamAppListCallbacks + 1)] @@ -49,17 +49,6 @@ public struct DlcInstalled_t { public AppId_t m_nAppID; // AppID of the DLC } - //----------------------------------------------------------------------------- - // Purpose: response to RegisterActivationCode() - //----------------------------------------------------------------------------- - [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] - [CallbackIdentity(Constants.k_iSteamAppsCallbacks + 8)] - public struct RegisterActivationCodeResponse_t { - public const int k_iCallback = Constants.k_iSteamAppsCallbacks + 8; - public ERegisterActivationCodeResult m_eResult; - public uint m_unPackageRegistered; // package that was registered. Only set on success - } - //--------------------------------------------------------------------------------- // Purpose: posted after the user gains executes a Steam URL with command line or query parameters // such as steam://run///-commandline/?param1=value1¶m2=value2¶m3=value3 etc @@ -141,7 +130,10 @@ public struct PersonaStateChange_t { [CallbackIdentity(Constants.k_iSteamFriendsCallbacks + 31)] public struct GameOverlayActivated_t { public const int k_iCallback = Constants.k_iSteamFriendsCallbacks + 31; - public byte m_bActive; // true if it's just been activated, false otherwise + public byte m_bActive; // true if it's just been activated, false otherwise + [MarshalAs(UnmanagedType.I1)] + public bool m_bUserInitiated; // true if the user asked for the overlay to be activated/deactivated + public AppId_t m_nAppID; // the appID of the game (should always be the current game) } //----------------------------------------------------------------------------- @@ -1002,6 +994,21 @@ public struct SteamInputConfigurationLoaded_t { public bool m_bUsesGamepadAPI; // Does the configuration contain any Xinput bindings? } + //----------------------------------------------------------------------------- + // Purpose: called when controller gamepad slots change - on Linux/macOS these + // slots are shared for all running apps. + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamControllerCallbacks + 4)] + public struct SteamInputGamepadSlotChange_t { + public const int k_iCallback = Constants.k_iSteamControllerCallbacks + 4; + public AppId_t m_unAppID; + public InputHandle_t m_ulDeviceHandle; // Handle for device + public ESteamInputType m_eDeviceType; // Type of device + public int m_nOldGamepadSlot; // Previous GamepadSlot - can be -1 controller doesn't uses gamepad bindings + public int m_nNewGamepadSlot; // New Gamepad Slot - can be -1 controller doesn't uses gamepad bindings + } + // SteamInventoryResultReady_t callbacks are fired whenever asynchronous // results transition from "Pending" to "OK" or an error state. There will // always be exactly one callback per handle. @@ -1734,6 +1741,19 @@ public struct SteamRemotePlaySessionDisconnected_t { public RemotePlaySessionID_t m_unSessionID; } + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamRemotePlayCallbacks + 3)] + public struct SteamRemotePlayTogetherGuestInvite_t { + public const int k_iCallback = Constants.k_iSteamRemotePlayCallbacks + 3; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)] + private byte[] m_szConnectURL_; + public string m_szConnectURL + { + get { return InteropHelp.ByteArrayToStringUTF8(m_szConnectURL_); } + set { InteropHelp.StringToByteArrayUTF8(value, m_szConnectURL_, 1024); } + } + } + // callbacks //----------------------------------------------------------------------------- // Purpose: The result of a call to FileShare() @@ -2380,11 +2400,11 @@ public struct WorkshopEULAStatus_t { // callbacks //----------------------------------------------------------------------------- - // Purpose: called when a connections to the Steam back-end has been established - // this means the Steam client now has a working connection to the Steam servers - // usually this will have occurred before the game has launched, and should + // Purpose: Called when an authenticated connection to the Steam back-end has been established. + // This means the Steam client now has a working connection to the Steam servers. + // Usually this will have occurred before the game has launched, and should // only be seen if the user has dropped connection due to a networking issue - // or a Steam server update + // or a Steam server update. //----------------------------------------------------------------------------- [StructLayout(LayoutKind.Sequential, Pack = Packsize.value, Size = 1)] [CallbackIdentity(Constants.k_iSteamUserCallbacks + 1)] @@ -2578,6 +2598,20 @@ public struct DurationControl_t { public int m_csecsRemaining; // playtime remaining until the user hits a regulatory limit } + //----------------------------------------------------------------------------- + // callback for GetTicketForWebApi + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUserCallbacks + 68)] + public struct GetTicketForWebApiResponse_t { + public const int k_iCallback = Constants.k_iSteamUserCallbacks + 68; + public HAuthTicket m_hAuthTicket; + public EResult m_eResult; + public int m_cubTicket; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_nCubTicketMaxLength)] + public byte[] m_rgubTicket; + } + // callbacks //----------------------------------------------------------------------------- // Purpose: called when the latests stats and achievements have been received @@ -2808,6 +2842,7 @@ public struct GamepadTextInputDismissed_t { [MarshalAs(UnmanagedType.I1)] public bool m_bSubmitted; // true if user entered & accepted text (Call ISteamUtils::GetEnteredGamepadTextInput() for text), false if canceled input public uint m_unSubmittedText; + public AppId_t m_unAppID; } // k_iSteamUtilsCallbacks + 15 through 35 are taken @@ -2827,6 +2862,16 @@ public struct FloatingGamepadTextInputDismissed_t { public const int k_iCallback = Constants.k_iSteamUtilsCallbacks + 38; } + //----------------------------------------------------------------------------- + // The text filtering dictionary has changed + //----------------------------------------------------------------------------- + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + [CallbackIdentity(Constants.k_iSteamUtilsCallbacks + 39)] + public struct FilterTextDictionaryChanged_t { + public const int k_iCallback = Constants.k_iSteamUtilsCallbacks + 39; + public int m_eLanguage; // One of ELanguage, or k_LegallyRequiredFiltering + } + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] [CallbackIdentity(Constants.k_iSteamVideoCallbacks + 11)] public struct GetVideoURLResult_t { diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs index dbb744d0..c1259369 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs @@ -22,7 +22,7 @@ public static class Constants { public const string STEAMCLIENT_INTERFACE_VERSION = "SteamClient020"; public const string STEAMFRIENDS_INTERFACE_VERSION = "SteamFriends017"; public const string STEAMGAMECOORDINATOR_INTERFACE_VERSION = "SteamGameCoordinator001"; - public const string STEAMGAMESERVER_INTERFACE_VERSION = "SteamGameServer014"; + public const string STEAMGAMESERVER_INTERFACE_VERSION = "SteamGameServer015"; public const string STEAMGAMESERVERSTATS_INTERFACE_VERSION = "SteamGameServerStats001"; public const string STEAMHTMLSURFACE_INTERFACE_VERSION = "STEAMHTMLSURFACE_INTERFACE_VERSION_005"; public const string STEAMHTTP_INTERFACE_VERSION = "STEAMHTTP_INTERFACE_VERSION003"; @@ -44,8 +44,8 @@ public static class Constants { public const string STEAMREMOTEPLAY_INTERFACE_VERSION = "STEAMREMOTEPLAY_INTERFACE_VERSION001"; public const string STEAMREMOTESTORAGE_INTERFACE_VERSION = "STEAMREMOTESTORAGE_INTERFACE_VERSION016"; public const string STEAMSCREENSHOTS_INTERFACE_VERSION = "STEAMSCREENSHOTS_INTERFACE_VERSION003"; - public const string STEAMUGC_INTERFACE_VERSION = "STEAMUGC_INTERFACE_VERSION016"; - public const string STEAMUSER_INTERFACE_VERSION = "SteamUser021"; + public const string STEAMUGC_INTERFACE_VERSION = "STEAMUGC_INTERFACE_VERSION017"; + public const string STEAMUSER_INTERFACE_VERSION = "SteamUser023"; public const string STEAMUSERSTATS_INTERFACE_VERSION = "STEAMUSERSTATS_INTERFACE_VERSION012"; public const string STEAMUTILS_INTERFACE_VERSION = "SteamUtils010"; public const string STEAMVIDEO_INTERFACE_VERSION = "STEAMVIDEO_INTERFACE_V002"; @@ -91,6 +91,7 @@ public static class Constants { public const int k_ScreenshotThumbWidth = 200; public const int kNumUGCResultsPerPage = 50; public const int k_cchDeveloperMetadataMax = 5000; + public const int k_nCubTicketMaxLength = 2560; // size limit on stat or achievement name (UTF-8 encoded) public const int k_cchStatNameMax = 128; // maximum number of bytes for a leaderboard name (UTF-8 encoded) @@ -107,6 +108,7 @@ public static class Constants { public const int k_cbMaxGameServerName = 64; public const int k_cbMaxGameServerTags = 128; public const int k_cbMaxGameServerGameData = 2048; + // Forward declare types //----------------------------------------------------------------------------- // Purpose: Base values for callback identifiers, each callback must // have a unique ID. @@ -310,8 +312,8 @@ public static class Constants { public const ulong k_ulPartyBeaconIdInvalid = 0; public const int INVALID_HTTPREQUEST_HANDLE = 0; public const int STEAM_INPUT_MAX_COUNT = 16; - public const int STEAM_INPUT_MAX_ANALOG_ACTIONS = 16; - public const int STEAM_INPUT_MAX_DIGITAL_ACTIONS = 128; + public const int STEAM_INPUT_MAX_ANALOG_ACTIONS = 24; + public const int STEAM_INPUT_MAX_DIGITAL_ACTIONS = 256; public const int STEAM_INPUT_MAX_ORIGINS = 8; public const int STEAM_INPUT_MAX_ACTIVE_LAYERS = 16; // When sending an option to a specific controller handle, you can send to all devices via this command diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs index 995cbe0c..bb31a820 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs @@ -17,17 +17,6 @@ using Flags = System.FlagsAttribute; namespace Steamworks { - //----------------------------------------------------------------------------- - // Purpose: possible results when registering an activation code - //----------------------------------------------------------------------------- - public enum ERegisterActivationCodeResult : int { - k_ERegisterActivationCodeResultOK = 0, - k_ERegisterActivationCodeResultFail = 1, - k_ERegisterActivationCodeResultAlreadyRegistered = 2, - k_ERegisterActivationCodeResultTimeout = 3, - k_ERegisterActivationCodeAlreadyOwned = 4, - } - //----------------------------------------------------------------------------- // Purpose: set of relationships to other users //----------------------------------------------------------------------------- @@ -517,10 +506,10 @@ public enum EInputActionOrigin : int { k_EInputActionOrigin_Switch_LeftGrip_Upper, // Left JoyCon SL Button k_EInputActionOrigin_Switch_RightGrip_Lower, // Right JoyCon SL Button k_EInputActionOrigin_Switch_RightGrip_Upper, // Right JoyCon SR Button - k_EInputActionOrigin_Switch_Reserved11, - k_EInputActionOrigin_Switch_Reserved12, - k_EInputActionOrigin_Switch_Reserved13, - k_EInputActionOrigin_Switch_Reserved14, + k_EInputActionOrigin_Switch_JoyConButton_N, // With a Horizontal JoyCon this will be Y or what would be Dpad Right when vertical + k_EInputActionOrigin_Switch_JoyConButton_E, // X + k_EInputActionOrigin_Switch_JoyConButton_S, // A + k_EInputActionOrigin_Switch_JoyConButton_W, // B k_EInputActionOrigin_Switch_Reserved15, k_EInputActionOrigin_Switch_Reserved16, k_EInputActionOrigin_Switch_Reserved17, @@ -584,10 +573,10 @@ public enum EInputActionOrigin : int { k_EInputActionOrigin_PS5_Gyro_Yaw, k_EInputActionOrigin_PS5_Gyro_Roll, k_EInputActionOrigin_PS5_DPad_Move, - k_EInputActionOrigin_PS5_Reserved1, - k_EInputActionOrigin_PS5_Reserved2, - k_EInputActionOrigin_PS5_Reserved3, - k_EInputActionOrigin_PS5_Reserved4, + k_EInputActionOrigin_PS5_LeftGrip, + k_EInputActionOrigin_PS5_RightGrip, + k_EInputActionOrigin_PS5_LeftFn, + k_EInputActionOrigin_PS5_RightFn, k_EInputActionOrigin_PS5_Reserved5, k_EInputActionOrigin_PS5_Reserved6, k_EInputActionOrigin_PS5_Reserved7, @@ -721,6 +710,7 @@ public enum ESteamControllerPad : int { k_ESteamControllerPad_Right } + [Flags] public enum EControllerHapticLocation : int { k_EControllerHapticLocation_Left = ( 1 << ESteamControllerPad.k_ESteamControllerPad_Left ), k_EControllerHapticLocation_Right = ( 1 << ESteamControllerPad.k_ESteamControllerPad_Right ), @@ -979,6 +969,7 @@ public enum EParentalFeature : int { k_EFeatureLibrary = 11, k_EFeatureTest = 12, k_EFeatureSiteLicense = 13, + k_EFeatureKioskMode = 14, k_EFeatureMax } @@ -1230,6 +1221,14 @@ public enum EItemPreviewType : int { k_EItemPreviewType_ReservedMax = 255, // you can specify your own types above this value } + public enum EUGCContentDescriptorID : int { + k_EUGCContentDescriptor_NudityOrSexualContent = 1, + k_EUGCContentDescriptor_FrequentViolenceOrGore = 2, + k_EUGCContentDescriptor_AdultOnlySexualContent = 3, + k_EUGCContentDescriptor_GratuitousSexualContent = 4, + k_EUGCContentDescriptor_AnyMatureContent = 5, + } + public enum EFailureType : int { k_EFailureFlushedCallbackQueue, k_EFailurePipeFail, @@ -1395,7 +1394,7 @@ public enum EResult : int { k_EResultAccountLogonDenied = 63, // account login denied due to 2nd factor authentication failure k_EResultCannotUseOldPassword = 64, // The requested new password is not legal k_EResultInvalidLoginAuthCode = 65, // account login denied due to auth code invalid - k_EResultAccountLogonDeniedNoMail = 66, // account login denied due to 2nd factor auth failure - and no mail has been sent + k_EResultAccountLogonDeniedNoMail = 66, // account login denied due to 2nd factor auth failure - and no mail has been sent - partner site specific k_EResultHardwareNotCapableOfIPT = 67, // k_EResultIPTInitError = 68, // k_EResultParentalControlRestricted = 69, // operation failed due to parental control restrictions for current user @@ -1516,6 +1515,7 @@ public enum EAuthSessionResponse : int { k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed = 7, // This ticket has already been used, it is not valid. k_EAuthSessionResponseAuthTicketInvalid = 8, // This ticket is not from a user instance currently connected to steam. k_EAuthSessionResponsePublisherIssuedBan = 9, // The user is banned for this game. The ban came via the web api and not VAC + k_EAuthSessionResponseAuthTicketNetworkIdentityFailure = 10, // The network identity in the ticket does not match the server authenticating the ticket } // results from UserHasLicenseForApp @@ -1603,6 +1603,7 @@ public enum EChatSteamIDInstanceFlags : int { // Purpose: Possible positions to tell the overlay to show notifications in //----------------------------------------------------------------------------- public enum ENotificationPosition : int { + k_EPositionInvalid = -1, k_EPositionTopLeft = 0, k_EPositionTopRight = 1, k_EPositionBottomLeft = 2, @@ -1820,6 +1821,7 @@ public enum EHTTPStatusCode : int { k_EHTTPStatusCode305UseProxy = 305, //k_EHTTPStatusCode306Unused = 306, (used in old HTTP spec, now unused in 1.1) k_EHTTPStatusCode307TemporaryRedirect = 307, + k_EHTTPStatusCode308PermanentRedirect = 308, // Error codes k_EHTTPStatusCode400BadRequest = 400, diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs index e9e03808..49df0563 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs @@ -48,7 +48,7 @@ public struct InputDigitalActionData_t { [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] public struct InputMotionData_t { - // Sensor-fused absolute rotation; will drift in heading + // Sensor-fused absolute rotation; will drift in heading toward average public float rotQuatX; public float rotQuatY; public float rotQuatZ; @@ -65,6 +65,57 @@ public struct InputMotionData_t { public float rotVelZ; } + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] + public struct InputMotionDataV2_t { + // + // Gyro post processing: + // + + // Drift Corrected Quaternion is calculated after steam input controller calibration values have been applied. + // Rawest _useful_ version of a quaternion. + // Most camera implementations should use this by comparing last rotation against current rotation, and applying the difference to the in game camera (plus your own sensitivity tweaks) + // It is worth viewing + public float driftCorrectedQuatX; + public float driftCorrectedQuatY; + public float driftCorrectedQuatZ; + public float driftCorrectedQuatW; + + // Sensor fusion corrects using accelerometer, and "average forward over time" for "forward". + // This can "ouija" your aim, so it's not so appropriate for camera controls (sensor fusion was originally made for racing game steering ) + // Same result as from old InputMotionData_t::rotQuatX/Y/Z/W + public float sensorFusionQuatX; + public float sensorFusionQuatY; + public float sensorFusionQuatZ; + public float sensorFusionQuatW; + + // Deferred Sensor fusion quaternion with deferred correction + // Reduces perception of "ouija" effect by only applying correction when the controller is below "low noise" thresholds, + // while the controller rotates fast - never when the user is attempting precision aim. + public float deferredSensorFusionQuatX; + public float deferredSensorFusionQuatY; + public float deferredSensorFusionQuatZ; + public float deferredSensorFusionQuatW; + + // Same as accel but values are calibrated such that 1 unit = 1G. + // X = Right + // Y = Forward out through the joystick USB port. + // Z = Up through the joystick axis. + public float gravityX; + public float gravityY; + public float gravityZ; + + // + // Same as rotVel values in GetMotionData but values are calibrated to degrees per second. + // Local Space (controller relative) + // X = Pitch = left to right axis + // Y = Roll = axis through charging port + // Z = Yaw = axis through sticks + public float degreesPerSecondX; + public float degreesPerSecondY; + public float degreesPerSecondZ; + + } + [StructLayout(LayoutKind.Sequential, Pack = Packsize.value)] public struct SteamItemDetails_t { public SteamItemInstanceID_t m_itemId; diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserver.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserver.cs index 3dcce142..2a6692bd 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserver.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserver.cs @@ -274,10 +274,12 @@ public static void SetAdvertiseServerActive(bool bActive) { /// Player list management / authentication. /// Retrieve ticket to be sent to the entity who wishes to authenticate you ( using BeginAuthSession API ). /// pcbTicket retrieves the length of the actual ticket. + /// SteamNetworkingIdentity is an optional parameter to hold the public IP address of the entity you are connecting to + /// if an IP address is passed Steam will only allow the ticket to be used by an entity with that IP address ///

- public static HAuthTicket GetAuthSessionTicket(byte[] pTicket, int cbMaxTicket, out uint pcbTicket) { + public static HAuthTicket GetAuthSessionTicket(byte[] pTicket, int cbMaxTicket, out uint pcbTicket, ref SteamNetworkingIdentity pSnid) { InteropHelp.TestIfAvailableGameServer(); - return (HAuthTicket)NativeMethods.ISteamGameServer_GetAuthSessionTicket(CSteamGameServerAPIContext.GetSteamGameServer(), pTicket, cbMaxTicket, out pcbTicket); + return (HAuthTicket)NativeMethods.ISteamGameServer_GetAuthSessionTicket(CSteamGameServerAPIContext.GetSteamGameServer(), pTicket, cbMaxTicket, out pcbTicket, ref pSnid); } /// diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs index 3022003a..5f6a0986 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs @@ -165,6 +165,11 @@ public static bool GetQueryUGCKeyValueTag(UGCQueryHandle_t handle, uint index, s } } + public static uint GetQueryUGCContentDescriptors(UGCQueryHandle_t handle, uint index, out EUGCContentDescriptorID pvecDescriptors, uint cMaxEntries) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamUGC_GetQueryUGCContentDescriptors(CSteamGameServerAPIContext.GetSteamUGC(), handle, index, out pvecDescriptors, cMaxEntries); + } + /// /// Release the request to free up memory, after retrieving results /// @@ -484,6 +489,16 @@ public static bool RemoveItemPreview(UGCUpdateHandle_t handle, uint index) { return NativeMethods.ISteamUGC_RemoveItemPreview(CSteamGameServerAPIContext.GetSteamUGC(), handle, index); } + public static bool AddContentDescriptor(UGCUpdateHandle_t handle, EUGCContentDescriptorID descid) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamUGC_AddContentDescriptor(CSteamGameServerAPIContext.GetSteamUGC(), handle, descid); + } + + public static bool RemoveContentDescriptor(UGCUpdateHandle_t handle, EUGCContentDescriptorID descid) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamUGC_RemoveContentDescriptor(CSteamGameServerAPIContext.GetSteamUGC(), handle, descid); + } + /// /// commit update process started with StartItemUpdate() /// diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs index 0302b9dc..08ca24f4 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteaminput.cs @@ -109,6 +109,10 @@ public static void EnableDeviceCallbacks() { /// Note: this is called within either SteamInput()->RunFrame or by SteamAPI_RunCallbacks /// Controller Disconnected - provides info about a single disconnected controller /// Note: this is called within either SteamInput()->RunFrame or by SteamAPI_RunCallbacks + /// Controllers using Gamepad emulation (XInput, DirectInput, etc) will be seated in the order that + /// input is sent by the device. This callback will fire on first input for each device and when the + /// a user has manually changed the order via the Steam overlay. This also has the device type info + /// so that you can change out glyph sets without making additional API calls /// Enable SteamInputActionEvent_t callbacks. Directly calls your callback function /// for lower latency than standard Steam callbacks. Supports one callback at a time. /// Note: this is called within either SteamInput()->RunFrame or by SteamAPI_RunCallbacks @@ -451,7 +455,7 @@ public static uint GetRemotePlaySessionID(InputHandle_t inputHandle) { } /// - /// Get a bitmask of the Steam Input Configuration types opted in for the current session. Returns ESteamInputConfigurationEnableType values.? + /// Get a bitmask of the Steam Input Configuration types opted in for the current session. Returns ESteamInputConfigurationEnableType values. /// Note: user can override the settings from the Steamworks Partner site so the returned values may not exactly match your default configuration /// public static ushort GetSessionInputConfigurationSettings() { diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremoteplay.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremoteplay.cs index 63509036..0cc08d8c 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremoteplay.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremoteplay.cs @@ -67,7 +67,7 @@ public static bool BGetSessionClientResolution(RemotePlaySessionID_t unSessionID } /// - /// Invite a friend to Remote Play Together + /// Invite a friend to Remote Play Together, or create a guest invite if steamIDFriend is empty /// This returns false if the invite can't be sent /// public static bool BSendRemotePlayTogetherInvite(CSteamID steamIDFriend) { diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs index ea3bb876..0bbb3129 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs @@ -165,6 +165,11 @@ public static bool GetQueryUGCKeyValueTag(UGCQueryHandle_t handle, uint index, s } } + public static uint GetQueryUGCContentDescriptors(UGCQueryHandle_t handle, uint index, out EUGCContentDescriptorID pvecDescriptors, uint cMaxEntries) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_GetQueryUGCContentDescriptors(CSteamAPIContext.GetSteamUGC(), handle, index, out pvecDescriptors, cMaxEntries); + } + /// /// Release the request to free up memory, after retrieving results /// @@ -484,6 +489,16 @@ public static bool RemoveItemPreview(UGCUpdateHandle_t handle, uint index) { return NativeMethods.ISteamUGC_RemoveItemPreview(CSteamAPIContext.GetSteamUGC(), handle, index); } + public static bool AddContentDescriptor(UGCUpdateHandle_t handle, EUGCContentDescriptorID descid) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_AddContentDescriptor(CSteamAPIContext.GetSteamUGC(), handle, descid); + } + + public static bool RemoveContentDescriptor(UGCUpdateHandle_t handle, EUGCContentDescriptorID descid) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_RemoveContentDescriptor(CSteamAPIContext.GetSteamUGC(), handle, descid); + } + /// /// commit update process started with StartItemUpdate() /// diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuser.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuser.cs index 99a988d5..7fff6ace 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuser.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamuser.cs @@ -186,10 +186,26 @@ public static uint GetVoiceOptimalSampleRate() { /// /// Retrieve ticket to be sent to the entity who wishes to authenticate you. /// pcbTicket retrieves the length of the actual ticket. + /// SteamNetworkingIdentity is an optional input parameter to hold the public IP address or SteamID of the entity you are connecting to + /// if an IP address is passed Steam will only allow the ticket to be used by an entity with that IP address + /// if a Steam ID is passed Steam will only allow the ticket to be used by that Steam ID + /// not to be used for "ISteamUserAuth\AuthenticateUserTicket" - it will fail /// - public static HAuthTicket GetAuthSessionTicket(byte[] pTicket, int cbMaxTicket, out uint pcbTicket) { + public static HAuthTicket GetAuthSessionTicket(byte[] pTicket, int cbMaxTicket, out uint pcbTicket, ref SteamNetworkingIdentity pSteamNetworkingIdentity) { InteropHelp.TestIfAvailableClient(); - return (HAuthTicket)NativeMethods.ISteamUser_GetAuthSessionTicket(CSteamAPIContext.GetSteamUser(), pTicket, cbMaxTicket, out pcbTicket); + return (HAuthTicket)NativeMethods.ISteamUser_GetAuthSessionTicket(CSteamAPIContext.GetSteamUser(), pTicket, cbMaxTicket, out pcbTicket, ref pSteamNetworkingIdentity); + } + + /// + /// Request a ticket which will be used for webapi "ISteamUserAuth\AuthenticateUserTicket" + /// pchIdentity is an optional input parameter to identify the service the ticket will be sent to + /// the ticket will be returned in callback GetTicketForWebApiResponse_t + /// + public static HAuthTicket GetAuthTicketForWebApi(string pchIdentity) { + InteropHelp.TestIfAvailableClient(); + using (var pchIdentity2 = new InteropHelp.UTF8StringHandle(pchIdentity)) { + return (HAuthTicket)NativeMethods.ISteamUser_GetAuthTicketForWebApi(CSteamAPIContext.GetSteamUser(), pchIdentity2); + } } /// From 1181f35f29427f6da7d7c98fc39e9495fc0baf40 Mon Sep 17 00:00:00 2001 From: Andrew Chappell Date: Tue, 16 May 2023 13:40:19 +0100 Subject: [PATCH 34/55] Updated version information and filesizes including Mac OS bundle version --- .../Plugins/steam_api.bundle/Contents/Info.plist | 2 +- com.rlabrecque.steamworks.net/Runtime/Version.cs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/Info.plist b/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/Info.plist index 0fe660ac..459c2567 100644 --- a/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/Info.plist +++ b/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/Info.plist @@ -17,7 +17,7 @@ CFBundleSignature ???? CFBundleVersion - 1.55 + 1.57 CSResourcesFileMapped yes DTCompiler diff --git a/com.rlabrecque.steamworks.net/Runtime/Version.cs b/com.rlabrecque.steamworks.net/Runtime/Version.cs index 588a3908..acd848f8 100644 --- a/com.rlabrecque.steamworks.net/Runtime/Version.cs +++ b/com.rlabrecque.steamworks.net/Runtime/Version.cs @@ -14,10 +14,10 @@ namespace Steamworks { public static class Version { public const string SteamworksNETVersion = "20.1.0"; - public const string SteamworksSDKVersion = "1.55"; - public const string SteamAPIDLLVersion = "07.40.51.27"; - public const int SteamAPIDLLSize = 266128; - public const int SteamAPI64DLLSize = 298384; + public const string SteamworksSDKVersion = "1.57"; + public const string SteamAPIDLLVersion = "08.02.21.95"; + public const int SteamAPIDLLSize = 266600; + public const int SteamAPI64DLLSize = 298856; } } From 1213998eb260efd3626b6246ab827f192565f0c7 Mon Sep 17 00:00:00 2001 From: Andrew Chappell Date: Thu, 18 May 2023 16:46:46 +0100 Subject: [PATCH 35/55] Updated SteamworksParser to version which can parse 1.57 headers --- CodeGen/SteamworksParser | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CodeGen/SteamworksParser b/CodeGen/SteamworksParser index 3f97c62b..a7d2cc85 160000 --- a/CodeGen/SteamworksParser +++ b/CodeGen/SteamworksParser @@ -1 +1 @@ -Subproject commit 3f97c62b4c4e0a72d23ee9fa97e4ee7077ea3a4d +Subproject commit a7d2cc853d6baffcfe251f685e3f1987b87d4375 From 49ff8f9599e275e976848a37338859f3718348d3 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sat, 3 Jun 2023 16:14:07 -0700 Subject: [PATCH 36/55] Update Version in README to 1.57 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4992f7b3..5dea46a1 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ _Steamworks.NET_ is a C# Wrapper for Valve's Steamworks API, it can be used eith _Steamworks.NET_ was designed to be as close as possible to the original C++ API, as such the documentation provided from Valve largely covers usage of _Steamworks.NET_. Niceties and C# Idioms can be easily implemented on top of _Steamworks.NET_. -_Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.55. +_Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.57. * Author: [Riley Labrecque](https://github.com/rlabrecque) * License: [MIT](https://www.opensource.org/licenses/mit-license.php) From a3fe8091f7237eef3f38becc3faa29b2dc6f9ce9 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sat, 3 Jun 2023 16:16:23 -0700 Subject: [PATCH 37/55] Bump version to 20.2.0 --- com.rlabrecque.steamworks.net/Runtime/Version.cs | 2 +- com.rlabrecque.steamworks.net/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/com.rlabrecque.steamworks.net/Runtime/Version.cs b/com.rlabrecque.steamworks.net/Runtime/Version.cs index acd848f8..387af1f1 100644 --- a/com.rlabrecque.steamworks.net/Runtime/Version.cs +++ b/com.rlabrecque.steamworks.net/Runtime/Version.cs @@ -13,7 +13,7 @@ namespace Steamworks { public static class Version { - public const string SteamworksNETVersion = "20.1.0"; + public const string SteamworksNETVersion = "20.2.0"; public const string SteamworksSDKVersion = "1.57"; public const string SteamAPIDLLVersion = "08.02.21.95"; public const int SteamAPIDLLSize = 266600; diff --git a/com.rlabrecque.steamworks.net/package.json b/com.rlabrecque.steamworks.net/package.json index fb76de2d..85c70eca 100644 --- a/com.rlabrecque.steamworks.net/package.json +++ b/com.rlabrecque.steamworks.net/package.json @@ -1,7 +1,7 @@ { "name": "com.rlabrecque.steamworks.net", "displayName": "Steamworks.NET", - "version": "20.1.0", + "version": "20.2.0", "unity": "2019.4", "author": { "name": "Riley Labrecque", From b6ab9ab2f5d004c328715fc784583c9a95c0589f Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Tue, 27 Feb 2024 08:33:27 -0800 Subject: [PATCH 38/55] Fixed ISteamNetworkingSockets::ConfigureConnectionLanes parameters to be arrays (Fixes #597 via @Idles) --- CodeGen/src/interfaces.py | 9 +++++++++ .../Runtime/autogen/NativeMethods.cs | 2 +- .../Runtime/autogen/isteamgameservernetworkingsockets.cs | 4 ++-- .../Runtime/autogen/isteamnetworkingsockets.cs | 4 ++-- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/CodeGen/src/interfaces.py b/CodeGen/src/interfaces.py index 3f3e25e2..582bd0ea 100644 --- a/CodeGen/src/interfaces.py +++ b/CodeGen/src/interfaces.py @@ -438,6 +438,15 @@ "pStatus": "ref SteamNetConnectionRealTimeStatus_t", "pLanes": "ref SteamNetConnectionRealTimeLaneStatus_t", }, + + "ISteamNetworkingSockets_ConfigureConnectionLanes": { + "pLanePriorities": "int[]", + "pLaneWeights": "ushort[]", + }, + "ISteamGameServerNetworkingSockets_ConfigureConnectionLanes": { + "pLanePriorities": "int[]", + "pLaneWeights": "ushort[]", + }, } g_SpecialWrapperArgsDict = { diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs index 80f45a07..17ac77e8 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs @@ -2141,7 +2141,7 @@ internal static class NativeMethods { public static extern bool ISteamNetworkingSockets_CreateSocketPair(IntPtr instancePtr, out HSteamNetConnection pOutConnection1, out HSteamNetConnection pOutConnection2, [MarshalAs(UnmanagedType.I1)] bool bUseNetworkLoopback, ref SteamNetworkingIdentity pIdentity1, ref SteamNetworkingIdentity pIdentity2); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_ConfigureConnectionLanes", CallingConvention = CallingConvention.Cdecl)] - public static extern EResult ISteamNetworkingSockets_ConfigureConnectionLanes(IntPtr instancePtr, HSteamNetConnection hConn, int nNumLanes, out int pLanePriorities, out ushort pLaneWeights); + public static extern EResult ISteamNetworkingSockets_ConfigureConnectionLanes(IntPtr instancePtr, HSteamNetConnection hConn, int nNumLanes, [In, Out] int[] pLanePriorities, [In, Out] ushort[] pLaneWeights); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_GetIdentity", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs index dacad4a4..7d836303 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs @@ -546,9 +546,9 @@ public static bool CreateSocketPair(out HSteamNetConnection pOutConnection1, out /// / See also: /// / SteamNetworkingMessage_t::m_idxLane /// - public static EResult ConfigureConnectionLanes(HSteamNetConnection hConn, int nNumLanes, out int pLanePriorities, out ushort pLaneWeights) { + public static EResult ConfigureConnectionLanes(HSteamNetConnection hConn, int nNumLanes, int[] pLanePriorities, ushort[] pLaneWeights) { InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamNetworkingSockets_ConfigureConnectionLanes(CSteamGameServerAPIContext.GetSteamNetworkingSockets(), hConn, nNumLanes, out pLanePriorities, out pLaneWeights); + return NativeMethods.ISteamNetworkingSockets_ConfigureConnectionLanes(CSteamGameServerAPIContext.GetSteamNetworkingSockets(), hConn, nNumLanes, pLanePriorities, pLaneWeights); } /// diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs index 66bd295a..64671515 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs @@ -546,9 +546,9 @@ public static bool CreateSocketPair(out HSteamNetConnection pOutConnection1, out /// / See also: /// / SteamNetworkingMessage_t::m_idxLane /// - public static EResult ConfigureConnectionLanes(HSteamNetConnection hConn, int nNumLanes, out int pLanePriorities, out ushort pLaneWeights) { + public static EResult ConfigureConnectionLanes(HSteamNetConnection hConn, int nNumLanes, int[] pLanePriorities, ushort[] pLaneWeights) { InteropHelp.TestIfAvailableClient(); - return NativeMethods.ISteamNetworkingSockets_ConfigureConnectionLanes(CSteamAPIContext.GetSteamNetworkingSockets(), hConn, nNumLanes, out pLanePriorities, out pLaneWeights); + return NativeMethods.ISteamNetworkingSockets_ConfigureConnectionLanes(CSteamAPIContext.GetSteamNetworkingSockets(), hConn, nNumLanes, pLanePriorities, pLaneWeights); } /// From d9ac268c1cbcca47b0906d533eb62e8d0d0effab Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Fri, 8 Mar 2024 18:20:01 -0800 Subject: [PATCH 39/55] Convert ISteamNetworkingSockets.SendMessages pMessages parameter from SteamNetworkingMessage_t[] to IntPtr[] to fix #598 --- CodeGen/src/interfaces.py | 4 ++-- .../Runtime/autogen/NativeMethods.cs | 2 +- .../Runtime/autogen/isteamgameservernetworkingsockets.cs | 2 +- .../Runtime/autogen/isteamnetworkingsockets.cs | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CodeGen/src/interfaces.py b/CodeGen/src/interfaces.py index 582bd0ea..02947977 100644 --- a/CodeGen/src/interfaces.py +++ b/CodeGen/src/interfaces.py @@ -422,11 +422,11 @@ }, "ISteamNetworkingSockets_SendMessages": { - "pMessages": "SteamNetworkingMessage_t[]", + "pMessages": "IntPtr[]", "pOutMessageNumberOrResult": "long[]", }, "ISteamGameServerNetworkingSockets_SendMessages": { - "pMessages": "SteamNetworkingMessage_t[]", + "pMessages": "IntPtr[]", "pOutMessageNumberOrResult": "long[]", }, diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs index 17ac77e8..45db4ff0 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs @@ -2114,7 +2114,7 @@ internal static class NativeMethods { public static extern EResult ISteamNetworkingSockets_SendMessageToConnection(IntPtr instancePtr, HSteamNetConnection hConn, IntPtr pData, uint cbData, int nSendFlags, out long pOutMessageNumber); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_SendMessages", CallingConvention = CallingConvention.Cdecl)] - public static extern void ISteamNetworkingSockets_SendMessages(IntPtr instancePtr, int nMessages, [In, Out] SteamNetworkingMessage_t[] pMessages, [In, Out] long[] pOutMessageNumberOrResult); + public static extern void ISteamNetworkingSockets_SendMessages(IntPtr instancePtr, int nMessages, [In, Out] IntPtr[] pMessages, [In, Out] long[] pOutMessageNumberOrResult); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamNetworkingSockets_FlushMessagesOnConnection", CallingConvention = CallingConvention.Cdecl)] public static extern EResult ISteamNetworkingSockets_FlushMessagesOnConnection(IntPtr instancePtr, HSteamNetConnection hConn); diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs index 7d836303..c3d4d4cd 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs @@ -343,7 +343,7 @@ public static EResult SendMessageToConnection(HSteamNetConnection hConn, IntPtr /// / See ISteamNetworkingSockets::SendMessageToConnection for possible /// / failure codes. /// - public static void SendMessages(int nMessages, SteamNetworkingMessage_t[] pMessages, long[] pOutMessageNumberOrResult) { + public static void SendMessages(int nMessages, IntPtr[] pMessages, long[] pOutMessageNumberOrResult) { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamNetworkingSockets_SendMessages(CSteamGameServerAPIContext.GetSteamNetworkingSockets(), nMessages, pMessages, pOutMessageNumberOrResult); } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs index 64671515..2daa224c 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs @@ -343,7 +343,7 @@ public static EResult SendMessageToConnection(HSteamNetConnection hConn, IntPtr /// / See ISteamNetworkingSockets::SendMessageToConnection for possible /// / failure codes. /// - public static void SendMessages(int nMessages, SteamNetworkingMessage_t[] pMessages, long[] pOutMessageNumberOrResult) { + public static void SendMessages(int nMessages, IntPtr[] pMessages, long[] pOutMessageNumberOrResult) { InteropHelp.TestIfAvailableClient(); NativeMethods.ISteamNetworkingSockets_SendMessages(CSteamAPIContext.GetSteamNetworkingSockets(), nMessages, pMessages, pOutMessageNumberOrResult); } From 6879a840221f7d1771a1f8e4fa37c63cbd8d8efd Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Fri, 8 Mar 2024 18:32:06 -0800 Subject: [PATCH 40/55] Convert m_reserved in SteamNetworkingIdentity from a uint[] to 32 individual uints to make the type blittable/unmanaged --- .../SteamNetworkingIdentity.cs | 35 +++++++++++++++++-- .../SteamNetworkingIdentity.cs | 35 +++++++++++++++++-- 2 files changed, 66 insertions(+), 4 deletions(-) diff --git a/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIdentity.cs b/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIdentity.cs index c3c36213..f8f88871 100644 --- a/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIdentity.cs +++ b/CodeGen/templates/custom_types/SteamNetworkingTypes/SteamNetworkingIdentity.cs @@ -20,8 +20,39 @@ public struct SteamNetworkingIdentity : System.IEquatable Date: Sat, 16 Mar 2024 18:08:00 +0100 Subject: [PATCH 41/55] Update RedistInstall.cs --- .../Editor/RedistInstall.cs | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs b/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs index 8e02ecec..b7583898 100644 --- a/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs +++ b/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs @@ -55,16 +55,31 @@ static void CheckForOldDlls() { Debug.LogError("[Steamworks.NET] Please delete the old version of 'steam_api64.dll' in your project root before continuing."); } } + + static void AddDefineSymbols() + { + string currentDefines; + HashSet defines; - static void AddDefineSymbols() { - string currentDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup); - HashSet defines = new HashSet(currentDefines.Split(';')) { - "STEAMWORKS_NET" - }; +#if UNITY_2021_1_OR_NEWER + currentDefines = PlayerSettings.GetScriptingDefineSymbols(NamedBuildTarget.FromBuildTargetGroup(EditorUserBuildSettings.selectedBuildTargetGroup)); +#else + currentDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup); + +#endif + defines = new HashSet(currentDefines.Split(';')) + { + "STEAMWORKS_NET" + }; - string newDefines = string.Join(";", defines); - if (newDefines != currentDefines) { + string newDefines = string.Join(";", defines); + if (newDefines != currentDefines) + { +#if UNITY_2021_1_OR_NEWER + PlayerSettings.SetScriptingDefineSymbols(NamedBuildTarget.FromBuildTargetGroup(EditorUserBuildSettings.selectedBuildTargetGroup), newDefines); +#else PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, newDefines); - } - } +#endif + } + } } From a5222efb098b59817515ca84f4368117e961a140 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 16 Jun 2024 20:56:13 -0700 Subject: [PATCH 42/55] Update to Steamworks SDK 1.58a --- CodeGen/src/interfaces.py | 6 + CodeGen/steam/isteamclient.h | 2 +- CodeGen/steam/isteamfriends.h | 1 + CodeGen/steam/isteamnetworkingsockets.h | 11 +- CodeGen/steam/isteamremoteplay.h | 9 +- CodeGen/steam/isteamugc.h | 7 +- CodeGen/steam/isteamutils.h | 2 +- CodeGen/steam/steam_api.h | 73 +++++++++++- CodeGen/steam/steam_api.json | 107 ++++++++++++++++-- CodeGen/steam/steam_api_common.h | 5 + CodeGen/steam/steam_api_flat.h | 16 +-- CodeGen/steam/steam_gameserver.h | 34 ++++-- CodeGen/steam/steamnetworkingtypes.h | 47 +++++++- CodeGen/templates/nativemethods.txt | 10 +- README.md | 2 +- .../Plugins/libsteam_api.so | Bin 391056 -> 395696 bytes .../steam_api.bundle/Contents/Info.plist | 2 +- .../Contents/MacOS/libsteam_api.dylib | Bin 610496 -> 627648 bytes .../Plugins/steam_api.dll | Bin 266600 -> 268136 bytes .../Plugins/steam_api64.dll | Bin 298856 -> 301928 bytes .../Runtime/Steam.cs | 43 ++++--- .../Runtime/Version.cs | 8 +- .../Runtime/autogen/NativeMethods.cs | 19 ++-- .../Runtime/autogen/SteamCallbacks.cs | 3 +- .../Runtime/autogen/SteamConstants.cs | 7 +- .../Runtime/autogen/SteamEnums.cs | 58 +++++++++- .../isteamgameservernetworkingsockets.cs | 11 +- .../Runtime/autogen/isteamgameserverugc.cs | 12 +- .../autogen/isteamnetworkingsockets.cs | 11 +- .../Runtime/autogen/isteamremoteplay.cs | 12 +- .../Runtime/autogen/isteamugc.cs | 12 +- 31 files changed, 430 insertions(+), 100 deletions(-) diff --git a/CodeGen/src/interfaces.py b/CodeGen/src/interfaces.py index 02947977..1f0eed1a 100644 --- a/CodeGen/src/interfaces.py +++ b/CodeGen/src/interfaces.py @@ -246,6 +246,9 @@ "ISteamUGC_StopPlaytimeTracking": { "pvecPublishedFileID": "PublishedFileId_t[]", }, + "ISteamUGC_GetUserContentDescriptorPreferences": { + "pvecDescriptors": "EUGCContentDescriptorID[]", + }, "ISteamUser_InitiateGameConnection_DEPRECATED": { "pAuthBlob": "byte[]", }, @@ -335,6 +338,9 @@ "ISteamGameServerUGC_StopPlaytimeTracking": { "pvecPublishedFileID": "PublishedFileId_t[]", }, + "ISteamGameServerUGC_GetUserContentDescriptorPreferences": { + "pvecDescriptors": "EUGCContentDescriptorID[]", + }, # This is a little nicety that we provide, I don't know why Valve doesn't just change it. "ISteamFriends_GetFriendCount": { diff --git a/CodeGen/steam/isteamclient.h b/CodeGen/steam/isteamclient.h index 8cd45891..3278780f 100644 --- a/CodeGen/steam/isteamclient.h +++ b/CodeGen/steam/isteamclient.h @@ -1,4 +1,4 @@ -//====== Copyright Valve Corporation, All rights reserved. ==================== +//====== Copyright Valve Corporation, All rights reserved. ==================== // // Internal low-level access to Steamworks interfaces. // diff --git a/CodeGen/steam/isteamfriends.h b/CodeGen/steam/isteamfriends.h index 21c23195..50f370e5 100644 --- a/CodeGen/steam/isteamfriends.h +++ b/CodeGen/steam/isteamfriends.h @@ -517,6 +517,7 @@ struct GameOverlayActivated_t uint8 m_bActive; // true if it's just been activated, false otherwise bool m_bUserInitiated; // true if the user asked for the overlay to be activated/deactivated AppId_t m_nAppID; // the appID of the game (should always be the current game) + uint32 m_dwOverlayPID; // used internally }; diff --git a/CodeGen/steam/isteamnetworkingsockets.h b/CodeGen/steam/isteamnetworkingsockets.h index b4e9ec33..427727a6 100644 --- a/CodeGen/steam/isteamnetworkingsockets.h +++ b/CodeGen/steam/isteamnetworkingsockets.h @@ -206,7 +206,7 @@ class ISteamNetworkingSockets /// WARNING: Be *very careful* when using the value provided in callbacks structs. /// Callbacks are queued, and the value that you will receive in your /// callback is the userdata that was effective at the time the callback - /// was queued. There are subtle race conditions that can hapen if you + /// was queued. There are subtle race conditions that can happen if you /// don't understand this! /// /// If any incoming messages for this connection are queued, the userdata @@ -397,10 +397,9 @@ class ISteamNetworkingSockets /// lanes may be sent out of order. Each lane has its own message number /// sequence. The first message sent on each lane will be assigned the number 1. /// - /// Each lane has a "priority". Lower priority lanes will only be processed - /// when all higher-priority lanes are empty. The magnitudes of the priority - /// values are not relevant, only their sort order. Higher numeric values - /// take priority over lower numeric values. + /// Each lane has a "priority". Lanes with higher numeric values will only be processed + /// when all lanes with lower number values are empty. The magnitudes of the priority + /// values are not relevant, only their sort order. /// /// Each lane also is assigned a weight, which controls the approximate proportion /// of the bandwidth that will be consumed by the lane, relative to other lanes @@ -829,7 +828,7 @@ class ISteamNetworkingSockets /// different types of traffic. Because these allocations come from a global /// namespace, there is a relatively strict limit on the maximum number of /// ports you may request. (At the time of this writing, the limit is 4.) - /// The Port assignments are *not* guaranteed to have any particular order + /// The port assignments are *not* guaranteed to have any particular order /// or relationship! Do *not* assume they are contiguous, even though that /// may often occur in practice. /// diff --git a/CodeGen/steam/isteamremoteplay.h b/CodeGen/steam/isteamremoteplay.h index 569c2359..d07bb485 100644 --- a/CodeGen/steam/isteamremoteplay.h +++ b/CodeGen/steam/isteamremoteplay.h @@ -51,12 +51,17 @@ class ISteamRemotePlay // This is set to 0x0 if the resolution is not available virtual bool BGetSessionClientResolution( RemotePlaySessionID_t unSessionID, int *pnResolutionX, int *pnResolutionY ) = 0; + // Start Remote Play Together and optionally show the UI in the overlay + // This returns false if Remote Play Together can't be started or your game is not configured for Remote Play Together + virtual bool BStartRemotePlayTogether( bool bShowOverlay = true ) = 0; + // Invite a friend to Remote Play Together, or create a guest invite if steamIDFriend is empty - // This returns false if the invite can't be sent + // This will automatically start Remote Play Together if it hasn't already been started + // This returns false if the invite can't be sent or your game is not configured for Remote Play Together virtual bool BSendRemotePlayTogetherInvite( CSteamID steamIDFriend ) = 0; }; -#define STEAMREMOTEPLAY_INTERFACE_VERSION "STEAMREMOTEPLAY_INTERFACE_VERSION001" +#define STEAMREMOTEPLAY_INTERFACE_VERSION "STEAMREMOTEPLAY_INTERFACE_VERSION002" // Global interface accessor inline ISteamRemotePlay *SteamRemotePlay(); diff --git a/CodeGen/steam/isteamugc.h b/CodeGen/steam/isteamugc.h index a528f2d7..c1da2ee3 100644 --- a/CodeGen/steam/isteamugc.h +++ b/CodeGen/steam/isteamugc.h @@ -292,7 +292,7 @@ class ISteamUGC virtual bool SetItemUpdateLanguage( UGCUpdateHandle_t handle, const char *pchLanguage ) = 0; // specify the language of the title or description that will be set virtual bool SetItemMetadata( UGCUpdateHandle_t handle, const char *pchMetaData ) = 0; // change the metadata of an UGC item (max = k_cchDeveloperMetadataMax) virtual bool SetItemVisibility( UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility ) = 0; // change the visibility of an UGC item - virtual bool SetItemTags( UGCUpdateHandle_t updateHandle, const SteamParamStringArray_t *pTags ) = 0; // change the tags of an UGC item + virtual bool SetItemTags( UGCUpdateHandle_t updateHandle, const SteamParamStringArray_t *pTags, bool bAllowAdminTags = false ) = 0; // change the tags of an UGC item virtual bool SetItemContent( UGCUpdateHandle_t handle, const char *pszContentFolder ) = 0; // update item content from this local folder virtual bool SetItemPreview( UGCUpdateHandle_t handle, const char *pszPreviewFile ) = 0; // change preview image file for this item. pszPreviewFile points to local image file, which must be under 1MB in size virtual bool SetAllowLegacyUpload( UGCUpdateHandle_t handle, bool bAllowLegacyUpload ) = 0; // use legacy upload for a single small file. The parameter to SetItemContent() should either be a directory with one file or the full path to the file. The file must also be less than 10MB in size. @@ -382,9 +382,12 @@ class ISteamUGC // Retrieve information related to the user's acceptance or not of the app's specific Workshop EULA STEAM_CALL_RESULT( WorkshopEULAStatus_t ) virtual SteamAPICall_t GetWorkshopEULAStatus() = 0; + + // Return the user's community content descriptor preferences + virtual uint32 GetUserContentDescriptorPreferences( EUGCContentDescriptorID *pvecDescriptors, uint32 cMaxEntries ) = 0; }; -#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION017" +#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION018" // Global interface accessor inline ISteamUGC *SteamUGC(); diff --git a/CodeGen/steam/isteamutils.h b/CodeGen/steam/isteamutils.h index c5651e76..313ac4dc 100644 --- a/CodeGen/steam/isteamutils.h +++ b/CodeGen/steam/isteamutils.h @@ -246,7 +246,7 @@ struct IPCountry_t //----------------------------------------------------------------------------- -// Purpose: Fired when running on a laptop and less than 10 minutes of battery is left, fires then every minute +// Purpose: Fired when running on a handheld PC or laptop with less than 10 minutes of battery is left, fires then every minute //----------------------------------------------------------------------------- struct LowBatteryPower_t { diff --git a/CodeGen/steam/steam_api.h b/CodeGen/steam/steam_api.h index 494f1dd1..ac00b36a 100644 --- a/CodeGen/steam/steam_api.h +++ b/CodeGen/steam/steam_api.h @@ -55,10 +55,32 @@ // //----------------------------------------------------------------------------------------------------------------------------------------------------------// - -// SteamAPI_Init must be called before using any other API functions. If it fails, an -// error message will be output to the debugger (or stderr) with further information. -S_API bool S_CALLTYPE SteamAPI_Init(); +enum ESteamAPIInitResult +{ + k_ESteamAPIInitResult_OK = 0, + k_ESteamAPIInitResult_FailedGeneric = 1, // Some other failure + k_ESteamAPIInitResult_NoSteamClient = 2, // We cannot connect to Steam, steam probably isn't running + k_ESteamAPIInitResult_VersionMismatch = 3, // Steam client appears to be out of date +}; + +// Initialize the Steamworks SDK. +// On success k_ESteamAPIInitResult_OK is returned. Otherwise, if pOutErrMsg is non-NULL, +// it will receive a non-localized message that explains the reason for the failure +// +// Example usage: +// +// SteamErrMsg errMsg; +// if ( SteamAPI_Init(&errMsg) != k_ESteamAPIInitResult_OK ) +// FatalError( "Failed to init Steam. %s", errMsg ); +inline ESteamAPIInitResult SteamAPI_InitEx( SteamErrMsg *pOutErrMsg ); + +// Initialize the SDK, without worrying about the cause of failure. +// This function is included for compatibility with older SDK. +// You can use it if you don't care about decent error handling +inline bool SteamAPI_Init() +{ + return SteamAPI_InitEx( NULL ) == k_ESteamAPIInitResult_OK; +} // SteamAPI_Shutdown should be called during process shutdown if possible. S_API void S_CALLTYPE SteamAPI_Shutdown(); @@ -294,4 +316,47 @@ inline bool CSteamAPIContext::Init() #endif +// Internal implementation of SteamAPI_InitEx. This is done in a way that checks +// all of the versions of interfaces from headers being compiled into this code. +// If you are not using any of the C++ interfaces and do not need this version checking +// (for example if you are only using the "flat" interfaces, which have a different type +// of version checking), you can pass a NULL interface version string. +S_API ESteamAPIInitResult S_CALLTYPE SteamInternal_SteamAPI_Init( const char *pszInternalCheckInterfaceVersions, SteamErrMsg *pOutErrMsg ); +inline ESteamAPIInitResult SteamAPI_InitEx( SteamErrMsg *pOutErrMsg ) +{ + const char *pszInternalCheckInterfaceVersions = + STEAMUTILS_INTERFACE_VERSION "\0" + STEAMNETWORKINGUTILS_INTERFACE_VERSION "\0" + + STEAMAPPLIST_INTERFACE_VERSION "\0" + STEAMAPPS_INTERFACE_VERSION "\0" + STEAMCONTROLLER_INTERFACE_VERSION "\0" + STEAMFRIENDS_INTERFACE_VERSION "\0" + STEAMGAMESEARCH_INTERFACE_VERSION "\0" + STEAMHTMLSURFACE_INTERFACE_VERSION "\0" + STEAMHTTP_INTERFACE_VERSION "\0" + STEAMINPUT_INTERFACE_VERSION "\0" + STEAMINVENTORY_INTERFACE_VERSION "\0" + STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION "\0" + STEAMMATCHMAKING_INTERFACE_VERSION "\0" + STEAMMUSICREMOTE_INTERFACE_VERSION "\0" + STEAMMUSIC_INTERFACE_VERSION "\0" + STEAMNETWORKINGMESSAGES_INTERFACE_VERSION "\0" + STEAMNETWORKINGSOCKETS_INTERFACE_VERSION "\0" + STEAMNETWORKING_INTERFACE_VERSION "\0" + STEAMPARENTALSETTINGS_INTERFACE_VERSION "\0" + STEAMPARTIES_INTERFACE_VERSION "\0" + STEAMREMOTEPLAY_INTERFACE_VERSION "\0" + STEAMREMOTESTORAGE_INTERFACE_VERSION "\0" + STEAMSCREENSHOTS_INTERFACE_VERSION "\0" + STEAMUGC_INTERFACE_VERSION "\0" + STEAMUSERSTATS_INTERFACE_VERSION "\0" + STEAMUSER_INTERFACE_VERSION "\0" + STEAMVIDEO_INTERFACE_VERSION "\0" + + "\0"; + + return SteamInternal_SteamAPI_Init( pszInternalCheckInterfaceVersions, pOutErrMsg ); +} + #endif // STEAM_API_H diff --git a/CodeGen/steam/steam_api.json b/CodeGen/steam/steam_api.json index 2e18c6c2..bb09d221 100644 --- a/CodeGen/steam/steam_api.json +++ b/CodeGen/steam/steam_api.json @@ -148,7 +148,8 @@ "fields": [ { "fieldname":"m_bActive", "fieldtype":"uint8" }, { "fieldname":"m_bUserInitiated", "fieldtype":"bool" }, - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" } + { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, + { "fieldname":"m_dwOverlayPID", "fieldtype":"uint32" } ], "struct": "GameOverlayActivated_t" }, @@ -1900,6 +1901,7 @@ { "constname":"k_unSteamAccountInstanceMask", "consttype":"unsigned int", "constval":"0x000FFFFF" }, { "constname":"k_unSteamUserDefaultInstance", "consttype":"unsigned int", "constval":"1" }, { "constname":"k_cchGameExtraInfoMax", "consttype":"int", "constval":"64" }, + { "constname":"k_cchMaxSteamErrMsg", "consttype":"int", "constval":"1024" }, { "constname":"k_cchMaxFriendsGroupName", "consttype":"int", "constval":"64" }, { "constname":"k_cFriendsGroupLimit", "consttype":"int", "constval":"100" }, { "constname":"k_FriendsGroupID_Invalid", "consttype":"FriendsGroupID_t", "constval":"- 1" }, @@ -1941,6 +1943,7 @@ { "constname":"k_SteamItemInstanceIDInvalid", "consttype":"SteamItemInstanceID_t", "constval":"( SteamItemInstanceID_t ) ~ 0" }, { "constname":"k_SteamInventoryResultInvalid", "consttype":"SteamInventoryResult_t", "constval":"- 1" }, { "constname":"k_SteamInventoryUpdateHandleInvalid", "consttype":"SteamInventoryUpdateHandle_t", "constval":"0xffffffffffffffffull" }, + { "constname":"k_nMaxTimelineRangeIDLength", "consttype":"int", "constval":"64" }, { "constname":"k_HSteamNetConnection_Invalid", "consttype":"HSteamNetConnection", "constval":"0" }, { "constname":"k_HSteamListenSocket_Invalid", "consttype":"HSteamListenSocket", "constval":"0" }, { "constname":"k_HSteamNetPollGroup_Invalid", "consttype":"HSteamNetPollGroup", "constval":"0" }, @@ -4000,6 +4003,16 @@ { "name":"k_ESteamItemConsumed", "value":"512" } ] }, + { + "enumname": "ETimelineGameMode", + "values": [ + { "name":"k_ETimelineGameMode_Invalid", "value":"0" }, + { "name":"k_ETimelineGameMode_Playing", "value":"1" }, + { "name":"k_ETimelineGameMode_Staging", "value":"2" }, + { "name":"k_ETimelineGameMode_Menus", "value":"3" }, + { "name":"k_ETimelineGameMode_Max", "value":"4" } + ] + }, { "enumname": "EParentalFeature", "values": [ @@ -4152,6 +4165,10 @@ { "name":"k_ESteamNetworkingConfig_TimeoutInitial", "value":"24" }, { "name":"k_ESteamNetworkingConfig_TimeoutConnected", "value":"25" }, { "name":"k_ESteamNetworkingConfig_SendBufferSize", "value":"9" }, + { "name":"k_ESteamNetworkingConfig_RecvBufferSize", "value":"47" }, + { "name":"k_ESteamNetworkingConfig_RecvBufferMessages", "value":"48" }, + { "name":"k_ESteamNetworkingConfig_RecvMaxMessageSize", "value":"49" }, + { "name":"k_ESteamNetworkingConfig_RecvMaxSegmentsPerPacket", "value":"50" }, { "name":"k_ESteamNetworkingConfig_ConnectionUserData", "value":"40" }, { "name":"k_ESteamNetworkingConfig_SendRateMin", "value":"10" }, { "name":"k_ESteamNetworkingConfig_SendRateMax", "value":"11" }, @@ -4238,6 +4255,15 @@ { "name":"k_ESteamNetworkingSocketsDebugOutputType__Force32Bit", "value":"2147483647" } ] }, + { + "enumname": "ESteamAPIInitResult", + "values": [ + { "name":"k_ESteamAPIInitResult_OK", "value":"0" }, + { "name":"k_ESteamAPIInitResult_FailedGeneric", "value":"1" }, + { "name":"k_ESteamAPIInitResult_NoSteamClient", "value":"2" }, + { "name":"k_ESteamAPIInitResult_VersionMismatch", "value":"3" } + ] + }, { "enumname": "EServerMode", "values": [ @@ -9786,12 +9812,12 @@ { "kind": "user", "name": "SteamUGC", - "name_flat": "SteamAPI_SteamUGC_v017" + "name_flat": "SteamAPI_SteamUGC_v018" }, { "kind": "gameserver", "name": "SteamGameServerUGC", - "name_flat": "SteamAPI_SteamGameServerUGC_v017" + "name_flat": "SteamAPI_SteamGameServerUGC_v018" } ], "classname": "ISteamUGC", @@ -10316,7 +10342,8 @@ "methodname_flat": "SteamAPI_ISteamUGC_SetItemTags", "params": [ { "paramname":"updateHandle", "paramtype":"UGCUpdateHandle_t" }, - { "paramname":"pTags", "paramtype":"const SteamParamStringArray_t *" } + { "paramname":"pTags", "paramtype":"const SteamParamStringArray_t *" }, + { "paramname":"bAllowAdminTags", "paramtype":"bool" } ], "returntype": "bool" }, @@ -10689,9 +10716,18 @@ "methodname_flat": "SteamAPI_ISteamUGC_GetWorkshopEULAStatus", "params": [], "returntype": "SteamAPICall_t" + }, + { + "methodname": "GetUserContentDescriptorPreferences", + "methodname_flat": "SteamAPI_ISteamUGC_GetUserContentDescriptorPreferences", + "params": [ + { "paramname":"pvecDescriptors", "paramtype":"EUGCContentDescriptorID *" }, + { "paramname":"cMaxEntries", "paramtype":"uint32" } + ], + "returntype": "uint32" } ], - "version_string": "STEAMUGC_INTERFACE_VERSION017" + "version_string": "STEAMUGC_INTERFACE_VERSION018" }, { "accessors": [ @@ -11675,7 +11711,7 @@ { "kind": "user", "name": "SteamVideo", - "name_flat": "SteamAPI_SteamVideo_v002" + "name_flat": "SteamAPI_SteamVideo_v003" } ], "classname": "ISteamVideo", @@ -11715,9 +11751,53 @@ { "paramname":"pnBufferSize", "paramtype":"int32 *" } ], "returntype": "bool" + }, + { + "methodname": "AddTimelineHighlightMarker", + "methodname_flat": "SteamAPI_ISteamVideo_AddTimelineHighlightMarker", + "params": [ + { "paramname":"pchIcon", "paramtype":"const char *" }, + { "paramname":"pchTitle", "paramtype":"const char *" }, + { "paramname":"pchDescription", "paramtype":"const char *" }, + { "paramname":"unPriority", "paramtype":"uint32" } + ], + "returntype": "void" + }, + { + "methodname": "AddTimelineTimestamp", + "methodname_flat": "SteamAPI_ISteamVideo_AddTimelineTimestamp", + "params": [ + { "paramname":"pchTitle", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "AddTimelineRangeStart", + "methodname_flat": "SteamAPI_ISteamVideo_AddTimelineRangeStart", + "params": [ + { "paramname":"pchID", "paramtype":"const char *" }, + { "paramname":"pchTitle", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "AddTimelineRangeEnd", + "methodname_flat": "SteamAPI_ISteamVideo_AddTimelineRangeEnd", + "params": [ + { "paramname":"pchID", "paramtype":"const char *" } + ], + "returntype": "void" + }, + { + "methodname": "SetTimelineGameMode", + "methodname_flat": "SteamAPI_ISteamVideo_SetTimelineGameMode", + "params": [ + { "paramname":"eMode", "paramtype":"ETimelineGameMode" } + ], + "returntype": "void" } ], - "version_string": "STEAMVIDEO_INTERFACE_V002" + "version_string": "STEAMVIDEO_INTERFACE_V003" }, { "accessors": [ @@ -11782,7 +11862,7 @@ { "kind": "user", "name": "SteamRemotePlay", - "name_flat": "SteamAPI_SteamRemotePlay_v001" + "name_flat": "SteamAPI_SteamRemotePlay_v002" } ], "classname": "ISteamRemotePlay", @@ -11837,6 +11917,14 @@ ], "returntype": "bool" }, + { + "methodname": "BStartRemotePlayTogether", + "methodname_flat": "SteamAPI_ISteamRemotePlay_BStartRemotePlayTogether", + "params": [ + { "paramname":"bShowOverlay", "paramtype":"bool" } + ], + "returntype": "bool" + }, { "methodname": "BSendRemotePlayTogetherInvite", "methodname_flat": "SteamAPI_ISteamRemotePlay_BSendRemotePlayTogetherInvite", @@ -11846,7 +11934,7 @@ "returntype": "bool" } ], - "version_string": "STEAMREMOTEPLAY_INTERFACE_VERSION001" + "version_string": "STEAMREMOTEPLAY_INTERFACE_VERSION002" }, { "accessors": [ @@ -14099,6 +14187,7 @@ { "typedef":"PFNPreMinidumpCallback", "type":"void (*)(void *)" }, { "typedef":"HSteamPipe", "type":"int" }, { "typedef":"HSteamUser", "type":"int" }, + { "typedef":"SteamErrMsg", "type":"char [1024]" }, { "typedef":"FriendsGroupID_t", "type":"short" }, { "typedef":"HServerListRequest", "type":"void *" }, { "typedef":"HServerQuery", "type":"int" }, diff --git a/CodeGen/steam/steam_api_common.h b/CodeGen/steam/steam_api_common.h index f3d93e25..7e81c8b2 100644 --- a/CodeGen/steam/steam_api_common.h +++ b/CodeGen/steam/steam_api_common.h @@ -49,6 +49,11 @@ typedef int32 HSteamPipe; // handle to single instance of a steam user typedef int32 HSteamUser; +// A fixed size buffer to receive an error message that is returned by some API +// calls. +const int k_cchMaxSteamErrMsg = 1024; +typedef char SteamErrMsg[ k_cchMaxSteamErrMsg ]; + // #define away __cdecl on posix. // This is really, really bad. We're sorry. But it's been this way for // a long time now and it's scary to change it, as there may be others that diff --git a/CodeGen/steam/steam_api_flat.h b/CodeGen/steam/steam_api_flat.h index ff3a2a18..c6a168fe 100644 --- a/CodeGen/steam/steam_api_flat.h +++ b/CodeGen/steam/steam_api_flat.h @@ -754,14 +754,14 @@ S_API bool SteamAPI_ISteamController_GetControllerBindingRevision( ISteamControl // ISteamUGC // A versioned accessor is exported by the library -S_API ISteamUGC *SteamAPI_SteamUGC_v017(); +S_API ISteamUGC *SteamAPI_SteamUGC_v018(); // Inline, unversioned accessor to get the current version. Essentially the same as SteamUGC(), but using this ensures that you are using a matching library. -inline ISteamUGC *SteamAPI_SteamUGC() { return SteamAPI_SteamUGC_v017(); } +inline ISteamUGC *SteamAPI_SteamUGC() { return SteamAPI_SteamUGC_v018(); } // A versioned accessor is exported by the library -S_API ISteamUGC *SteamAPI_SteamGameServerUGC_v017(); +S_API ISteamUGC *SteamAPI_SteamGameServerUGC_v018(); // Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerUGC(), but using this ensures that you are using a matching library. -inline ISteamUGC *SteamAPI_SteamGameServerUGC() { return SteamAPI_SteamGameServerUGC_v017(); } +inline ISteamUGC *SteamAPI_SteamGameServerUGC() { return SteamAPI_SteamGameServerUGC_v018(); } S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUserUGCRequest( ISteamUGC* self, AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ); S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestPage( ISteamUGC* self, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ); S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestCursor( ISteamUGC* self, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, const char * pchCursor ); @@ -810,7 +810,7 @@ S_API bool SteamAPI_ISteamUGC_SetItemDescription( ISteamUGC* self, UGCUpdateHand S_API bool SteamAPI_ISteamUGC_SetItemUpdateLanguage( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchLanguage ); S_API bool SteamAPI_ISteamUGC_SetItemMetadata( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchMetaData ); S_API bool SteamAPI_ISteamUGC_SetItemVisibility( ISteamUGC* self, UGCUpdateHandle_t handle, ERemoteStoragePublishedFileVisibility eVisibility ); -S_API bool SteamAPI_ISteamUGC_SetItemTags( ISteamUGC* self, UGCUpdateHandle_t updateHandle, const SteamParamStringArray_t * pTags ); +S_API bool SteamAPI_ISteamUGC_SetItemTags( ISteamUGC* self, UGCUpdateHandle_t updateHandle, const SteamParamStringArray_t * pTags, bool bAllowAdminTags ); S_API bool SteamAPI_ISteamUGC_SetItemContent( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pszContentFolder ); S_API bool SteamAPI_ISteamUGC_SetItemPreview( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pszPreviewFile ); S_API bool SteamAPI_ISteamUGC_SetAllowLegacyUpload( ISteamUGC* self, UGCUpdateHandle_t handle, bool bAllowLegacyUpload ); @@ -851,6 +851,7 @@ S_API SteamAPICall_t SteamAPI_ISteamUGC_GetAppDependencies( ISteamUGC* self, Pub S_API SteamAPICall_t SteamAPI_ISteamUGC_DeleteItem( ISteamUGC* self, PublishedFileId_t nPublishedFileID ); S_API bool SteamAPI_ISteamUGC_ShowWorkshopEULA( ISteamUGC* self ); S_API SteamAPICall_t SteamAPI_ISteamUGC_GetWorkshopEULAStatus( ISteamUGC* self ); +S_API uint32 SteamAPI_ISteamUGC_GetUserContentDescriptorPreferences( ISteamUGC* self, EUGCContentDescriptorID * pvecDescriptors, uint32 cMaxEntries ); // ISteamAppList @@ -985,15 +986,16 @@ S_API bool SteamAPI_ISteamParentalSettings_BIsFeatureInBlockList( ISteamParental // ISteamRemotePlay // A versioned accessor is exported by the library -S_API ISteamRemotePlay *SteamAPI_SteamRemotePlay_v001(); +S_API ISteamRemotePlay *SteamAPI_SteamRemotePlay_v002(); // Inline, unversioned accessor to get the current version. Essentially the same as SteamRemotePlay(), but using this ensures that you are using a matching library. -inline ISteamRemotePlay *SteamAPI_SteamRemotePlay() { return SteamAPI_SteamRemotePlay_v001(); } +inline ISteamRemotePlay *SteamAPI_SteamRemotePlay() { return SteamAPI_SteamRemotePlay_v002(); } S_API uint32 SteamAPI_ISteamRemotePlay_GetSessionCount( ISteamRemotePlay* self ); S_API RemotePlaySessionID_t SteamAPI_ISteamRemotePlay_GetSessionID( ISteamRemotePlay* self, int iSessionIndex ); S_API uint64_steamid SteamAPI_ISteamRemotePlay_GetSessionSteamID( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID ); S_API const char * SteamAPI_ISteamRemotePlay_GetSessionClientName( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID ); S_API ESteamDeviceFormFactor SteamAPI_ISteamRemotePlay_GetSessionClientFormFactor( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID ); S_API bool SteamAPI_ISteamRemotePlay_BGetSessionClientResolution( ISteamRemotePlay* self, RemotePlaySessionID_t unSessionID, int * pnResolutionX, int * pnResolutionY ); +S_API bool SteamAPI_ISteamRemotePlay_BStartRemotePlayTogether( ISteamRemotePlay* self, bool bShowOverlay ); S_API bool SteamAPI_ISteamRemotePlay_BSendRemotePlayTogetherInvite( ISteamRemotePlay* self, uint64_steamid steamIDFriend ); // ISteamNetworkingMessages diff --git a/CodeGen/steam/steam_gameserver.h b/CodeGen/steam/steam_gameserver.h index 28a436f5..f3873db0 100644 --- a/CodeGen/steam/steam_gameserver.h +++ b/CodeGen/steam/steam_gameserver.h @@ -48,7 +48,17 @@ const uint16 MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE = STEAMGAMESERVER_QUERY_ // ISteamGameServer::GetNextOutgoingPacket.) // - The version string should be in the form x.x.x.x, and is used by the master server to detect when the // server is out of date. (Only servers with the latest version will be listed.) -inline bool SteamGameServer_Init( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); +// +// On success k_ESteamAPIInitResult_OK is returned. Otherwise, if pOutErrMsg is non-NULL, +// it will receive a non-localized message that explains the reason for the failure +inline ESteamAPIInitResult SteamGameServer_InitEx( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString, SteamErrMsg *pOutErrMsg ); + +// This function is included for compatibility with older SDK. +// You can use it if you don't care about decent error handling +inline bool SteamGameServer_Init( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ) +{ + return SteamGameServer_InitEx( unIP, usGamePort, usQueryPort, eServerMode, pchVersionString, NULL ) == k_ESteamAPIInitResult_OK; +} // Shutdown SteamGameSeverXxx interfaces, log out, and free resources. S_API void SteamGameServer_Shutdown(); @@ -101,13 +111,23 @@ inline bool CSteamGameServerAPIContext::Init() } #endif -S_API bool S_CALLTYPE SteamInternal_GameServer_Init( uint32 unIP, uint16 usLegacySteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); -inline bool SteamGameServer_Init( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ) +S_API ESteamAPIInitResult S_CALLTYPE SteamInternal_GameServer_Init_V2( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString, const char *pszInternalCheckInterfaceVersions, SteamErrMsg *pOutErrMsg ); +inline ESteamAPIInitResult SteamGameServer_InitEx( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString, SteamErrMsg *pOutErrMsg ) { - if ( !SteamInternal_GameServer_Init( unIP, 0, usGamePort, usQueryPort, eServerMode, pchVersionString ) ) - return false; - - return true; + const char *pszInternalCheckInterfaceVersions = + STEAMUTILS_INTERFACE_VERSION "\0" + STEAMNETWORKINGUTILS_INTERFACE_VERSION "\0" + + STEAMGAMESERVER_INTERFACE_VERSION "\0" + STEAMGAMESERVERSTATS_INTERFACE_VERSION "\0" + STEAMHTTP_INTERFACE_VERSION "\0" + STEAMINVENTORY_INTERFACE_VERSION "\0" + STEAMNETWORKING_INTERFACE_VERSION "\0" + STEAMNETWORKINGMESSAGES_INTERFACE_VERSION "\0" + STEAMNETWORKINGSOCKETS_INTERFACE_VERSION "\0" + STEAMUGC_INTERFACE_VERSION "\0" + "\0"; + return SteamInternal_GameServer_Init_V2( unIP, usGamePort, usQueryPort, eServerMode, pchVersionString, pszInternalCheckInterfaceVersions, pOutErrMsg ); } inline void SteamGameServer_ReleaseCurrentThreadMemory() { diff --git a/CodeGen/steam/steamnetworkingtypes.h b/CodeGen/steam/steamnetworkingtypes.h index f7f731b9..3f037876 100644 --- a/CodeGen/steam/steamnetworkingtypes.h +++ b/CodeGen/steam/steamnetworkingtypes.h @@ -26,7 +26,7 @@ #if defined( STEAMNETWORKINGSOCKETS_STATIC_LINK ) #define STEAMNETWORKINGSOCKETS_INTERFACE extern "C" #elif defined( STEAMNETWORKINGSOCKETS_FOREXPORT ) - #ifdef _WIN32 + #if defined( _WIN32 ) || defined( __ORBIS__ ) || defined( __PROSPERO__ ) #define STEAMNETWORKINGSOCKETS_INTERFACE extern "C" __declspec( dllexport ) #else #define STEAMNETWORKINGSOCKETS_INTERFACE extern "C" __attribute__((visibility("default"))) @@ -1152,6 +1152,42 @@ enum ESteamNetworkingConfigValue /// Default is 512k (524288 bytes) k_ESteamNetworkingConfig_SendBufferSize = 9, + /// [connection int32] Upper limit on total size (in bytes) of received messages + /// that will be buffered waiting to be processed by the application. If this limit + /// is exceeded, packets will be dropped. This is to protect us from a malicious + /// peer flooding us with messages faster than we can process them. + /// + /// This must be bigger than k_ESteamNetworkingConfig_RecvMaxMessageSize + k_ESteamNetworkingConfig_RecvBufferSize = 47, + + /// [connection int32] Upper limit on the number of received messages that will + /// that will be buffered waiting to be processed by the application. If this limit + /// is exceeded, packets will be dropped. This is to protect us from a malicious + /// peer flooding us with messages faster than we can pull them off the wire. + k_ESteamNetworkingConfig_RecvBufferMessages = 48, + + /// [connection int32] Maximum message size that we are willing to receive. + /// if a client attempts to send us a message larger than this, the connection + /// will be immediately closed. + /// + /// Default is 512k (524288 bytes). Note that the peer needs to be able to + /// send a message this big. (See k_cbMaxSteamNetworkingSocketsMessageSizeSend.) + k_ESteamNetworkingConfig_RecvMaxMessageSize = 49, + + /// [connection int32] Max number of message segments that can be received + /// in a single UDP packet. While decoding a packet, if the number of segments + /// exceeds this, we will abort further packet processing. + /// + /// The default is effectively unlimited. If you know that you very rarely + /// send small packets, you can protect yourself from malicious senders by + /// lowering this number. + /// + /// In particular, if you are NOT using the reliability layer and are only using + /// SteamNetworkingSockets for datagram transport, setting this to a very low + /// number may be beneficial. (We recommend a value of 2.) Make sure your sender + /// disables Nagle! + k_ESteamNetworkingConfig_RecvMaxSegmentsPerPacket = 50, + /// [connection int64] Get/set userdata as a configuration option. /// The default value is -1. You may want to set the user data as /// a config value, instead of using ISteamNetworkingSockets::SetConnectionUserData @@ -1187,9 +1223,12 @@ enum ESteamNetworkingConfigValue // ensure you have the current value. k_ESteamNetworkingConfig_ConnectionUserData = 40, - /// [connection int32] Minimum/maximum send rate clamp, 0 is no limit. - /// This value will control the min/max allowed sending rate that - /// bandwidth estimation is allowed to reach. Default is 0 (no-limit) + /// [connection int32] Minimum/maximum send rate clamp, in bytes/sec. + /// At the time of this writing these two options should always be set to + /// the same value, to manually configure a specific send rate. The default + /// value is 256K. Eventually we hope to have the library estimate the bandwidth + /// of the channel and set the send rate to that estimated bandwidth, and these + /// values will only set limits on that send rate. k_ESteamNetworkingConfig_SendRateMin = 10, k_ESteamNetworkingConfig_SendRateMax = 11, diff --git a/CodeGen/templates/nativemethods.txt b/CodeGen/templates/nativemethods.txt index b95e803a..89d9cd19 100644 --- a/CodeGen/templates/nativemethods.txt +++ b/CodeGen/templates/nativemethods.txt @@ -48,9 +48,8 @@ namespace Steamworks { #endif #region steam_api.h - [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_Init", CallingConvention = CallingConvention.Cdecl)] - [return: MarshalAs(UnmanagedType.I1)] - public static extern bool SteamAPI_Init(); + [DllImport(NativeLibraryName, EntryPoint = "SteamInternal_SteamAPI_Init", CallingConvention = CallingConvention.Cdecl)] + public static extern ESteamAPIInitResult SteamInternal_SteamAPI_Init(IntPtr pszInternalCheckInterfaceVersions, IntPtr pOutErrMsg); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_Shutdown", CallingConvention = CallingConvention.Cdecl)] public static extern void SteamAPI_Shutdown(); @@ -157,9 +156,8 @@ namespace Steamworks { [DllImport(NativeLibraryName, EntryPoint = "SteamGameServer_GetHSteamUser", CallingConvention = CallingConvention.Cdecl)] public static extern int SteamGameServer_GetHSteamUser(); - [DllImport(NativeLibraryName, EntryPoint = "SteamInternal_GameServer_Init", CallingConvention = CallingConvention.Cdecl)] - [return: MarshalAs(UnmanagedType.I1)] - public static extern bool SteamInternal_GameServer_Init(uint unIP, ushort usPort, ushort usGamePort, ushort usQueryPort, EServerMode eServerMode, InteropHelp.UTF8StringHandle pchVersionString); + [DllImport(NativeLibraryName, EntryPoint = "SteamInternal_GameServer_Init_V2", CallingConvention = CallingConvention.Cdecl)] + public static extern ESteamAPIInitResult SteamInternal_GameServer_Init_V2(uint unIP, ushort usPort, ushort usGamePort, ushort usQueryPort, EServerMode eServerMode, InteropHelp.UTF8StringHandle pchVersionString, IntPtr pszInternalCheckInterfaceVersions, IntPtr pOutErrMsg); #endregion #region SteamAPI Accessors [DllImport(NativeLibraryName, EntryPoint = "SteamClient", CallingConvention = CallingConvention.Cdecl)] diff --git a/README.md b/README.md index 5dea46a1..b454fbce 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ _Steamworks.NET_ is a C# Wrapper for Valve's Steamworks API, it can be used eith _Steamworks.NET_ was designed to be as close as possible to the original C++ API, as such the documentation provided from Valve largely covers usage of _Steamworks.NET_. Niceties and C# Idioms can be easily implemented on top of _Steamworks.NET_. -_Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.57. +_Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.58a. * Author: [Riley Labrecque](https://github.com/rlabrecque) * License: [MIT](https://www.opensource.org/licenses/mit-license.php) diff --git a/com.rlabrecque.steamworks.net/Plugins/libsteam_api.so b/com.rlabrecque.steamworks.net/Plugins/libsteam_api.so index 4217a2e2df932ab85577afc0b29a26f99578b0eb..85f66c60f4a4b4f6243a9ad28688dbb35da34bdd 100644 GIT binary patch literal 395696 zcmbqc2Yeev)?X(Mm=HiIgwT}&q!E;mgoG;B#KB2K>=eo&E4FNl$dV$-NlXdTta1IMi9mDX0X@ z;`{n}oJfR2odvBpe4izo#r1s=!szEs`${rHomILckS?ofqRIEmYB9D3k>KH^7sW%- ztMV=4{G8G?j--_8>}EzHuMvQOfH?~m8#69=;U7)!b)ELYjYA&1=9hiX`rn`DhMCm% zBS;O+8#!vX)k1O5{S{4WmpK~RKU zzT+M6vmNku;ecP~fIr^>f1?BbHV6FO4)_Ng@Q*s+N13Kf~{7eV@p$_;O2Yj6a zzQF;1v;%&*13v12U*&*LIpEKCz~AJ6f7t>5h6DaR2mEIa_ybjb-<5xz)y9+&vw9h_TYbXC& z2mEsm_HE;O}(6Z+5^x>VSXR0slt_{HqT5cO39XZDU`q4G#E)gYD@L+{qsQ zbc;QHkB~in#R_};i6=PV5kT10%Uw^|;~#gx rLyYd>aMU5OHug zXuNR>;oXx6zn#2m7&rfc@V-jI@6GtgeS~*;36JI`j}|}U_aMB=w`2q1(^CjPgy}y% zm+7Zk=})+p@dsG(+e*C+G29cZ_=`pneQF@#cVPY}FC~2cE`(RH|3c{>h8XEL5HR34 zg-*uX6NuhDnCQ_A<#8+XF?O}$OA&1fJ$uFyUX}O8GYH?!k7v zFDl>Qk%Uic`96Fv;}0V~Xb$q2IG_2CwDSM#5yl@*cvZi9KSp??j_~_2pJUe%-m@>^ zl{_D8OL*5Wq%c*kKrPenXwCPv3c~jfv*LG-6TWLND}K~)!h1`s__DhRpFWiEN}jIS zgzw(Lioft>?wI*{n6FrNj-5Z>6G z@Nh5kc)Wx0`&i|?doAG`ClelKERU}O18;01yj#=Tqzb~Pwf6Y5`*XME&v)II=)K!o!1eOjx> z)DeVtYxRD)jC+R|y)Tk~Q~Er}OY|O1Z#T>SeTd=G{C|0x=zYhNJYRBo_hdV4)a>vH z_VfLkpMRi<6<^A6QJf(9t`)Bh8-M-{*Iv!44jJ>SD|Z(8d&A3_BQK0St2ZS_p5j{iu46b`ZW#>(^FsztGM7g0jz# zI*Gn}yj7pmml8g$wcm5r65glz^NGwqrSV_M_1mMBYXrw{G44lHT(=ARhrTgZc|zP? zy0rE(;AWD?b0E>Hcw;N}4=MH!N1cI&tFdX*bLIAiXR@hllgFa8NuZ`YCYi%ZG5!<8`bKW=W4K->1R3upc~rf8wvpxJ{$0f<<2erZX>s^d7zhhJdxu#0 zJa+)$`?j~@cZ(6eNAm+++%6iqU8wrK@_wQ>IDR;vR)XKM-Xd6qp!^sxq#|8wTQnf*zZ=1;1(Cwk*o;;-aCJ4*PJ#=qq> z!lyO=^F)g2CsDqN&&wAR-aDP}O8$M0CVUsSBUO)&&LF&t^{?9FU%9;)bBGVzwLA`b zO2l2;8}0`O%Kvb8^0@0l;?v0ewc>NvErj>5ohUiO>_59S|5?8W(f4Zh6F`_G?dL7h z+i=eJDfUY-_DhO?E%Q%l{QtX(_{6mSv0^XAv)@*HKABJWZY^%SmHl2n`#lw(+`FFW z-Ry^zoCf>~9-2 zfBW_tqW5U+=-=F~yR>-kA#O)qT08nzn#K$1=U_-Ul-|mkiGQCq9{lDcmY@B+>VHQ) z%=o!f-ieZ%VZ3oF;rqEgD*k)iL3l6wZRKY^+m-OWrNl?s+o*2l&-J3(?-{b)jWp)+ zeuwd#@2$&-zEKd%C) zXM8U@CV}^HyHoc3GTXnw{f@#P{s8mW#ydarc(A*Y^n-3r9^bS7Y-Inb_$*n-e6%>~ z^!0>yaeGvHUVS0U$^J_5@o;Pr&;JGp($K7irc7x(+h4&ywo_i}ut^ss&!(`)VS4_$=! za(t-xymSfSyI4QUo=+Ogcr6ZJ$MxdV%Jp!V=woB8dOPz5!lyW1Rpok%`&pl#=znH= zSjPQ+teo(wpBl&hKc?B?``q7oSZ}I*JqbrG?V0_#(vO?xJ=|Kq=|=+;^j)k^rJn@* zhd%ZXs6KhjK9}fwwRrX6C#XN|zLWaXy_x=cZbx2C{=OLT>1Y3@=EHtW)#G3kQ^*-(f1>n1 z<1M61#BnXN0B{z$@+A;IbUu5B#3}d$m2PT=#`v{ zxW7wl{oVB^F})W5FJrrnX?DBadZO>!m-wrGw83@xoE9g!izW zt8$Iq$b2|n9me((zn<_et$zRXDB*i}{seAE9)mF;5_Xl={NX!2Os}oG?bgEdZfm)2 z<$m17{kYQGuXhu@OS9V)>(gL;s(M*^0nzufKUd{_hudkN)=pcv9W^c{d3NW1=cr}G z$E(E~AKlOL^Y{zZCyy|<-!85FHlIWEU79}(jwXDs)=t}QC43Lpi_$~t4}|w{oS^W( zXMfwT@qeHDg*5xs9azpN`=2!XAElo~HxvIxZC>j$ZjUal9X-$eMNI22zV{O!ueR

tXL+l+g{cA; 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

{2h{#RilVHo?l7S1@lh_D6i+CrTrV+P? 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 Xzi#^C{n}C6&aY6$&D%fxT8sY!55mkq diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api.dll b/com.rlabrecque.steamworks.net/Plugins/steam_api.dll index 49f738b7515c09942033f6521e0a7b15691e467b..1c65572a784748e9ab91f79ccda4591825124db3 100644 GIT binary patch delta 31302 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 rIra*3dq*CQ;WDWd1X1o6Y%;YLE delta 29556 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

SNI9Rxg?>p8Z?2lG)M{0cbn$rvjoY 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 delta 47283 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 /// change the tags of an UGC item /// - public static bool SetItemTags(UGCUpdateHandle_t updateHandle, System.Collections.Generic.IList pTags) { + public static bool SetItemTags(UGCUpdateHandle_t updateHandle, System.Collections.Generic.IList pTags, bool bAllowAdminTags = false) { InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamUGC_SetItemTags(CSteamGameServerAPIContext.GetSteamUGC(), updateHandle, new InteropHelp.SteamParamStringArray(pTags)); + return NativeMethods.ISteamUGC_SetItemTags(CSteamGameServerAPIContext.GetSteamUGC(), updateHandle, new InteropHelp.SteamParamStringArray(pTags), bAllowAdminTags); } /// @@ -703,6 +703,14 @@ public static SteamAPICall_t GetWorkshopEULAStatus() { InteropHelp.TestIfAvailableGameServer(); return (SteamAPICall_t)NativeMethods.ISteamUGC_GetWorkshopEULAStatus(CSteamGameServerAPIContext.GetSteamUGC()); } + + /// + /// Return the user's community content descriptor preferences + /// + public static uint GetUserContentDescriptorPreferences(EUGCContentDescriptorID[] pvecDescriptors, uint cMaxEntries) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamUGC_GetUserContentDescriptorPreferences(CSteamGameServerAPIContext.GetSteamUGC(), pvecDescriptors, cMaxEntries); + } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs index 2daa224c..f4da2a06 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs @@ -218,7 +218,7 @@ public static bool CloseListenSocket(HSteamListenSocket hSocket) { /// / WARNING: Be *very careful* when using the value provided in callbacks structs. /// / Callbacks are queued, and the value that you will receive in your /// / callback is the userdata that was effective at the time the callback - /// / was queued. There are subtle race conditions that can hapen if you + /// / was queued. There are subtle race conditions that can happen if you /// / don't understand this! /// / /// / If any incoming messages for this connection are queued, the userdata @@ -483,10 +483,9 @@ public static bool CreateSocketPair(out HSteamNetConnection pOutConnection1, out /// / lanes may be sent out of order. Each lane has its own message number /// / sequence. The first message sent on each lane will be assigned the number 1. /// / - /// / Each lane has a "priority". Lower priority lanes will only be processed - /// / when all higher-priority lanes are empty. The magnitudes of the priority - /// / values are not relevant, only their sort order. Higher numeric values - /// / take priority over lower numeric values. + /// / Each lane has a "priority". Lanes with higher numeric values will only be processed + /// / when all lanes with lower number values are empty. The magnitudes of the priority + /// / values are not relevant, only their sort order. /// / /// / Each lane also is assigned a weight, which controls the approximate proportion /// / of the bandwidth that will be consumed by the lane, relative to other lanes @@ -997,7 +996,7 @@ public static void RunCallbacks() { /// / different types of traffic. Because these allocations come from a global /// / namespace, there is a relatively strict limit on the maximum number of /// / ports you may request. (At the time of this writing, the limit is 4.) - /// / The Port assignments are *not* guaranteed to have any particular order + /// / The port assignments are *not* guaranteed to have any particular order /// / or relationship! Do *not* assume they are contiguous, even though that /// / may often occur in practice. /// / diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremoteplay.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremoteplay.cs index 0cc08d8c..575c923e 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremoteplay.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamremoteplay.cs @@ -66,9 +66,19 @@ public static bool BGetSessionClientResolution(RemotePlaySessionID_t unSessionID return NativeMethods.ISteamRemotePlay_BGetSessionClientResolution(CSteamAPIContext.GetSteamRemotePlay(), unSessionID, out pnResolutionX, out pnResolutionY); } + /// + /// Start Remote Play Together and optionally show the UI in the overlay + /// This returns false if Remote Play Together can't be started or your game is not configured for Remote Play Together + /// + public static bool BStartRemotePlayTogether(bool bShowOverlay = true) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamRemotePlay_BStartRemotePlayTogether(CSteamAPIContext.GetSteamRemotePlay(), bShowOverlay); + } + /// /// Invite a friend to Remote Play Together, or create a guest invite if steamIDFriend is empty - /// This returns false if the invite can't be sent + /// This will automatically start Remote Play Together if it hasn't already been started + /// This returns false if the invite can't be sent or your game is not configured for Remote Play Together /// public static bool BSendRemotePlayTogetherInvite(CSteamID steamIDFriend) { InteropHelp.TestIfAvailableClient(); diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs index 0bbb3129..83e7e5a7 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs @@ -379,9 +379,9 @@ public static bool SetItemVisibility(UGCUpdateHandle_t handle, ERemoteStoragePub /// /// change the tags of an UGC item /// - public static bool SetItemTags(UGCUpdateHandle_t updateHandle, System.Collections.Generic.IList pTags) { + public static bool SetItemTags(UGCUpdateHandle_t updateHandle, System.Collections.Generic.IList pTags, bool bAllowAdminTags = false) { InteropHelp.TestIfAvailableClient(); - return NativeMethods.ISteamUGC_SetItemTags(CSteamAPIContext.GetSteamUGC(), updateHandle, new InteropHelp.SteamParamStringArray(pTags)); + return NativeMethods.ISteamUGC_SetItemTags(CSteamAPIContext.GetSteamUGC(), updateHandle, new InteropHelp.SteamParamStringArray(pTags), bAllowAdminTags); } /// @@ -703,6 +703,14 @@ public static SteamAPICall_t GetWorkshopEULAStatus() { InteropHelp.TestIfAvailableClient(); return (SteamAPICall_t)NativeMethods.ISteamUGC_GetWorkshopEULAStatus(CSteamAPIContext.GetSteamUGC()); } + + /// + /// Return the user's community content descriptor preferences + /// + public static uint GetUserContentDescriptorPreferences(EUGCContentDescriptorID[] pvecDescriptors, uint cMaxEntries) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_GetUserContentDescriptorPreferences(CSteamAPIContext.GetSteamUGC(), pvecDescriptors, cMaxEntries); + } } } From 078ed3c7c9b767a42be555b75ea5fb014c067132 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 16 Jun 2024 21:35:47 -0700 Subject: [PATCH 43/55] Update to Steamworks SDK 1.59 --- CodeGen/src/constants.py | 2 + CodeGen/src/interfaces.py | 4 - CodeGen/src/typedefs.py | 4 + CodeGen/steam/isteamapplist.h | 68 ----- CodeGen/steam/isteamclient.h | 8 +- CodeGen/steam/isteamcontroller.h | 1 - CodeGen/steam/isteamfriends.h | 4 + CodeGen/steam/isteaminput.h | 52 ---- CodeGen/steam/isteamparentalsettings.h | 2 +- CodeGen/steam/isteamremoteplay.h | 1 + CodeGen/steam/isteamremotestorage.h | 3 +- CodeGen/steam/isteamugc.h | 2 + CodeGen/steam/isteamutils.h | 3 + CodeGen/steam/steam_api.h | 44 ++-- CodeGen/steam/steam_api.json | 246 ++---------------- CodeGen/steam/steam_api_common.h | 20 +- CodeGen/steam/steam_api_flat.h | 14 +- CodeGen/steam/steam_api_internal.h | 9 +- CodeGen/steam/steamclientpublic.h | 2 + CodeGen/steam/steamhttpenums.h | 5 + CodeGen/steam/steamnetworkingtypes.h | 53 +++- CodeGen/steam/steamtypes.h | 1 + README.md | 2 +- .../Plugins/libsteam_api.so | Bin 395696 -> 383104 bytes .../steam_api.bundle/Contents/Info.plist | 2 +- .../Contents/MacOS/libsteam_api.dylib | Bin 627648 -> 627088 bytes .../Plugins/steam_api.dll | Bin 268136 -> 268648 bytes .../Plugins/steam_api64.dll | Bin 301928 -> 301928 bytes .../Runtime/Steam.cs | 69 +++-- .../Runtime/Version.cs | 6 +- .../Runtime/autogen/NativeMethods.cs | 23 +- .../Runtime/autogen/SteamCallbacks.cs | 23 -- .../Runtime/autogen/SteamConstants.cs | 7 +- .../Runtime/autogen/SteamEnums.cs | 63 ++++- .../Runtime/autogen/SteamStructs.cs | 51 ---- .../Runtime/autogen/isteamapplist.cs | 63 ----- .../Runtime/autogen/isteamapplist.cs.meta | 11 - .../Runtime/autogen/isteamclient.cs | 10 - .../Runtime/autogen/isteamgameserverclient.cs | 10 - .../Runtime/autogen/isteamgameserverutils.cs | 8 + .../Runtime/autogen/isteamutils.cs | 8 + .../Runtime/types/SteamTypes/AccountID_t.cs | 1 + 42 files changed, 276 insertions(+), 629 deletions(-) delete mode 100644 CodeGen/steam/isteamapplist.h delete mode 100644 com.rlabrecque.steamworks.net/Runtime/autogen/isteamapplist.cs delete mode 100644 com.rlabrecque.steamworks.net/Runtime/autogen/isteamapplist.cs.meta diff --git a/CodeGen/src/constants.py b/CodeGen/src/constants.py index 21f25af7..bbb74cb5 100644 --- a/CodeGen/src/constants.py +++ b/CodeGen/src/constants.py @@ -64,6 +64,7 @@ def __init__(self, name, value, type_, precomments, comment, spacing): "POSIX", "STEAM_PRIVATE_API(", "STEAMNETWORKINGSOCKETS_INTERFACE", + "S_OVERRIDE", # We just create multiple versions of this struct, Valve renamed them. "ControllerAnalogActionData_t", @@ -105,6 +106,7 @@ def __init__(self, name, value, type_, precomments, comment, spacing): "k_uAppIdInvalid", "k_uDepotIdInvalid", "k_uAPICallInvalid", + "k_uAccountIdInvalid", # steamnetworkingtypes.h "k_HSteamNetConnection_Invalid", diff --git a/CodeGen/src/interfaces.py b/CodeGen/src/interfaces.py index 1f0eed1a..85cc5371 100644 --- a/CodeGen/src/interfaces.py +++ b/CodeGen/src/interfaces.py @@ -108,7 +108,6 @@ "SteamNetworkingMessage_t *": "IntPtr", # TODO: UGH - "ISteamAppList *": "IntPtr", "ISteamApps *": "IntPtr", "ISteamController *": "IntPtr", "ISteamFriends *": "IntPtr", @@ -144,9 +143,6 @@ g_SpecialArgsDict = { # These args are missing a clang attribute like ARRAY_COUNT - "ISteamAppList_GetInstalledApps": { - "pvecAppID": "AppId_t[]", - }, "ISteamApps_GetInstalledDepots": { "pvecDepots": "DepotId_t[]", }, diff --git a/CodeGen/src/typedefs.py b/CodeGen/src/typedefs.py index 207b2b5b..9c5c437c 100644 --- a/CodeGen/src/typedefs.py +++ b/CodeGen/src/typedefs.py @@ -142,6 +142,10 @@ "HSteamNetPollGroup": OrderedDict([ ("Invalid", "0"), ]), + + "AccountID_t": OrderedDict([ + ("Invalid", "0"), + ]), } diff --git a/CodeGen/steam/isteamapplist.h b/CodeGen/steam/isteamapplist.h deleted file mode 100644 index d0fe2c8d..00000000 --- a/CodeGen/steam/isteamapplist.h +++ /dev/null @@ -1,68 +0,0 @@ -//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. ======= -// -// Purpose: interface to app data in Steam -// -//============================================================================= - -#ifndef ISTEAMAPPLIST_H -#define ISTEAMAPPLIST_H -#ifdef _WIN32 -#pragma once -#endif - -#include "steam_api_common.h" - -//----------------------------------------------------------------------------- -// Purpose: This is a restricted interface that can only be used by previously approved apps, -// contact your Steam Account Manager if you believe you need access to this API. -// This interface lets you detect installed apps for the local Steam client, useful for debugging tools -// to offer lists of apps to debug via Steam. -//----------------------------------------------------------------------------- -class ISteamAppList -{ -public: - virtual uint32 GetNumInstalledApps() = 0; - virtual uint32 GetInstalledApps( AppId_t *pvecAppID, uint32 unMaxAppIDs ) = 0; - - virtual int GetAppName( AppId_t nAppID, STEAM_OUT_STRING() char *pchName, int cchNameMax ) = 0; // returns -1 if no name was found - virtual int GetAppInstallDir( AppId_t nAppID, char *pchDirectory, int cchNameMax ) = 0; // returns -1 if no dir was found - - virtual int GetAppBuildId( AppId_t nAppID ) = 0; // return the buildid of this app, may change at any time based on backend updates to the game -}; - -#define STEAMAPPLIST_INTERFACE_VERSION "STEAMAPPLIST_INTERFACE_VERSION001" - -// Global interface accessor -inline ISteamAppList *SteamAppList(); -STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamAppList *, SteamAppList, STEAMAPPLIST_INTERFACE_VERSION ); - -// callbacks -#if defined( VALVE_CALLBACK_PACK_SMALL ) -#pragma pack( push, 4 ) -#elif defined( VALVE_CALLBACK_PACK_LARGE ) -#pragma pack( push, 8 ) -#else -#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx -#endif - - -//--------------------------------------------------------------------------------- -// Purpose: Sent when a new app is installed (not downloaded yet) -//--------------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( SteamAppInstalled_t, k_iSteamAppListCallbacks + 1 ) -STEAM_CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs -STEAM_CALLBACK_MEMBER( 1, int, m_iInstallFolderIndex ) // library folder the app is installed -STEAM_CALLBACK_END( 2 ) - - -//--------------------------------------------------------------------------------- -// Purpose: Sent when an app is uninstalled -//--------------------------------------------------------------------------------- -STEAM_CALLBACK_BEGIN( SteamAppUninstalled_t, k_iSteamAppListCallbacks + 2 ) -STEAM_CALLBACK_MEMBER( 0, AppId_t, m_nAppID ) // ID of the app that installs -STEAM_CALLBACK_MEMBER( 1, int, m_iInstallFolderIndex ) // library folder the app was installed -STEAM_CALLBACK_END(2) - - -#pragma pack( pop ) -#endif // ISTEAMAPPLIST_H diff --git a/CodeGen/steam/isteamclient.h b/CodeGen/steam/isteamclient.h index 3278780f..ce9946cb 100644 --- a/CodeGen/steam/isteamclient.h +++ b/CodeGen/steam/isteamclient.h @@ -115,18 +115,12 @@ class ISteamClient // Expose HTTP interface virtual ISteamHTTP *GetISteamHTTP( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - // Deprecated - the ISteamUnifiedMessages interface is no longer intended for public consumption. - STEAM_PRIVATE_API( virtual void *DEPRECATED_GetISteamUnifiedMessages( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0 ; ) - // Exposes the ISteamController interface - deprecated in favor of Steam Input virtual ISteamController *GetISteamController( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; // Exposes the ISteamUGC interface virtual ISteamUGC *GetISteamUGC( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - // returns app list interface, only available on specially registered apps - virtual ISteamAppList *GetISteamAppList( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; - // Music Player virtual ISteamMusic *GetISteamMusic( HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion ) = 0; @@ -162,7 +156,7 @@ class ISteamClient STEAM_PRIVATE_API( virtual void DestroyAllInterfaces() = 0; ) }; -#define STEAMCLIENT_INTERFACE_VERSION "SteamClient020" +#define STEAMCLIENT_INTERFACE_VERSION "SteamClient021" #ifndef STEAM_API_EXPORTS diff --git a/CodeGen/steam/isteamcontroller.h b/CodeGen/steam/isteamcontroller.h index d8074550..057606c1 100644 --- a/CodeGen/steam/isteamcontroller.h +++ b/CodeGen/steam/isteamcontroller.h @@ -539,7 +539,6 @@ typedef uint64 ControllerAnalogActionHandle_t; #define ControllerAnalogActionData_t InputAnalogActionData_t #define ControllerDigitalActionData_t InputDigitalActionData_t #define ControllerMotionData_t InputMotionData_t -#define ControllerMotionDataV2_t InputMotionDataV2_t #else struct ControllerAnalogActionData_t { diff --git a/CodeGen/steam/isteamfriends.h b/CodeGen/steam/isteamfriends.h index 50f370e5..26351eee 100644 --- a/CodeGen/steam/isteamfriends.h +++ b/CodeGen/steam/isteamfriends.h @@ -103,6 +103,10 @@ struct FriendGameInfo_t }; #pragma pack( pop ) +// special values for FriendGameInfo_t::m_usQueryPort +const uint16 k_usFriendGameInfoQueryPort_NotInitialized = 0xFFFF; // We haven't asked the GS for this query port's actual value yet. Was #define QUERY_PORT_NOT_INITIALIZED in older versions of Steamworks SDK. +const uint16 k_usFriendGameInfoQueryPort_Error = 0xFFFE; // We were unable to get the query port for this server. Was #define QUERY_PORT_ERROR in older versions of Steamworks SDK. + // maximum number of characters in a user's name. Two flavors; one for UTF-8 and one for UTF-16. // The UTF-8 version has to be very generous to accomodate characters that get large when encoded // in UTF-8. diff --git a/CodeGen/steam/isteaminput.h b/CodeGen/steam/isteaminput.h index 9b302785..335f23fe 100644 --- a/CodeGen/steam/isteaminput.h +++ b/CodeGen/steam/isteaminput.h @@ -660,58 +660,6 @@ struct InputMotionData_t float rotVelZ; }; - -struct InputMotionDataV2_t -{ - // - // Gyro post processing: - // - - // Drift Corrected Quaternion is calculated after steam input controller calibration values have been applied. - // Rawest _useful_ version of a quaternion. - // Most camera implementations should use this by comparing last rotation against current rotation, and applying the difference to the in game camera (plus your own sensitivity tweaks) - // It is worth viewing - float driftCorrectedQuatX; - float driftCorrectedQuatY; - float driftCorrectedQuatZ; - float driftCorrectedQuatW; - - // Sensor fusion corrects using accelerometer, and "average forward over time" for "forward". - // This can "ouija" your aim, so it's not so appropriate for camera controls (sensor fusion was originally made for racing game steering ) - // Same result as from old InputMotionData_t::rotQuatX/Y/Z/W - float sensorFusionQuatX; - float sensorFusionQuatY; - float sensorFusionQuatZ; - float sensorFusionQuatW; - - // Deferred Sensor fusion quaternion with deferred correction - // Reduces perception of "ouija" effect by only applying correction when the controller is below "low noise" thresholds, - // while the controller rotates fast - never when the user is attempting precision aim. - float deferredSensorFusionQuatX; - float deferredSensorFusionQuatY; - float deferredSensorFusionQuatZ; - float deferredSensorFusionQuatW; - - // Same as accel but values are calibrated such that 1 unit = 1G. - // X = Right - // Y = Forward out through the joystick USB port. - // Z = Up through the joystick axis. - float gravityX; - float gravityY; - float gravityZ; - - // - // Same as rotVel values in GetMotionData but values are calibrated to degrees per second. - // Local Space (controller relative) - // X = Pitch = left to right axis - // Y = Roll = axis through charging port - // Z = Yaw = axis through sticks - float degreesPerSecondX; - float degreesPerSecondY; - float degreesPerSecondZ; - -}; - //----------------------------------------------------------------------------- // Purpose: when callbacks are enabled this fires each time a controller action // state changes diff --git a/CodeGen/steam/isteamparentalsettings.h b/CodeGen/steam/isteamparentalsettings.h index a1ff1520..bf3d0c68 100644 --- a/CodeGen/steam/isteamparentalsettings.h +++ b/CodeGen/steam/isteamparentalsettings.h @@ -29,7 +29,7 @@ enum EParentalFeature k_EFeatureLibrary = 11, k_EFeatureTest = 12, k_EFeatureSiteLicense = 13, - k_EFeatureKioskMode = 14, + k_EFeatureKioskMode_Deprecated = 14, k_EFeatureMax }; diff --git a/CodeGen/steam/isteamremoteplay.h b/CodeGen/steam/isteamremoteplay.h index d07bb485..df5ca3f4 100644 --- a/CodeGen/steam/isteamremoteplay.h +++ b/CodeGen/steam/isteamremoteplay.h @@ -19,6 +19,7 @@ enum ESteamDeviceFormFactor k_ESteamDeviceFormFactorTablet = 2, k_ESteamDeviceFormFactorComputer = 3, k_ESteamDeviceFormFactorTV = 4, + k_ESteamDeviceFormFactorVRHeadset = 5, }; // Steam Remote Play session ID diff --git a/CodeGen/steam/isteamremotestorage.h b/CodeGen/steam/isteamremotestorage.h index 01b8dae3..c0da367e 100644 --- a/CodeGen/steam/isteamremotestorage.h +++ b/CodeGen/steam/isteamremotestorage.h @@ -102,9 +102,10 @@ enum EWorkshopFileType k_EWorkshopFileTypeSteamworksAccessInvite = 13, // internal k_EWorkshopFileTypeSteamVideo = 14, // Steam video k_EWorkshopFileTypeGameManagedItem = 15, // managed completely by the game, not the user, and not shown on the web + k_EWorkshopFileTypeClip = 16, // internal // Update k_EWorkshopFileTypeMax if you add values. - k_EWorkshopFileTypeMax = 16 + k_EWorkshopFileTypeMax = 17 }; diff --git a/CodeGen/steam/isteamugc.h b/CodeGen/steam/isteamugc.h index c1da2ee3..96e9b9d1 100644 --- a/CodeGen/steam/isteamugc.h +++ b/CodeGen/steam/isteamugc.h @@ -121,6 +121,7 @@ enum EItemState k_EItemStateNeedsUpdate = 8, // items needs an update. Either because it's not installed yet or creator updated content k_EItemStateDownloading = 16, // item update is currently downloading k_EItemStateDownloadPending = 32, // DownloadItem() was called for this item, content isn't available until DownloadItemResult_t is fired + k_EItemStateDisabledLocally = 64, // Item is disabled locally, so it shouldn't be considered subscribed }; enum EItemStatistic @@ -154,6 +155,7 @@ enum EItemPreviewType // | |Dn | | // +---+---+---+---+ k_EItemPreviewType_EnvironmentMap_LatLong = 4, // standard image file expected + k_EItemPreviewType_Clip = 5, // clip id is stored k_EItemPreviewType_ReservedMax = 255, // you can specify your own types above this value }; diff --git a/CodeGen/steam/isteamutils.h b/CodeGen/steam/isteamutils.h index 313ac4dc..be5acb28 100644 --- a/CodeGen/steam/isteamutils.h +++ b/CodeGen/steam/isteamutils.h @@ -215,6 +215,9 @@ class ISteamUtils // Dismisses the floating keyboard. virtual bool DismissFloatingGamepadTextInput() = 0; + + // Dismisses the full-screen text input dialog. + virtual bool DismissGamepadTextInput() = 0; }; #define STEAMUTILS_INTERFACE_VERSION "SteamUtils010" diff --git a/CodeGen/steam/steam_api.h b/CodeGen/steam/steam_api.h index ac00b36a..55d90e46 100644 --- a/CodeGen/steam/steam_api.h +++ b/CodeGen/steam/steam_api.h @@ -36,7 +36,6 @@ #include "isteamhttp.h" #include "isteamcontroller.h" #include "isteamugc.h" -#include "isteamapplist.h" #include "isteamhtmlsurface.h" #include "isteaminventory.h" #include "isteamvideo.h" @@ -63,9 +62,27 @@ enum ESteamAPIInitResult k_ESteamAPIInitResult_VersionMismatch = 3, // Steam client appears to be out of date }; -// Initialize the Steamworks SDK. -// On success k_ESteamAPIInitResult_OK is returned. Otherwise, if pOutErrMsg is non-NULL, -// it will receive a non-localized message that explains the reason for the failure +// Initializing the Steamworks SDK +// ----------------------------- +// +// There are three different methods you can use to initialize the Steamworks SDK, depending on +// your project's environment. You should only use one method in your project. +// +// If you are able to include this C++ header in your project, we recommend using the following +// initialization methods. They will ensure that all ISteam* interfaces defined in other +// C++ header files have versions that are supported by the user's Steam Client: +// - SteamAPI_InitEx() for new projects so you can show a detailed error message to the user +// - SteamAPI_Init() for existing projects that only display a generic error message +// +// If you are unable to include this C++ header in your project and are dynamically loading +// Steamworks SDK methods from dll/so, you can use the following method: +// - SteamAPI_InitFlat() + + +// See "Initializing the Steamworks SDK" above for how to choose an init method. +// On success k_ESteamAPIInitResult_OK is returned. Otherwise, returns a value that can be used +// to create a localized error message for the user. If pOutErrMsg is non-NULL, +// it will receive an example error message, in English, that explains the reason for the failure. // // Example usage: // @@ -74,14 +91,18 @@ enum ESteamAPIInitResult // FatalError( "Failed to init Steam. %s", errMsg ); inline ESteamAPIInitResult SteamAPI_InitEx( SteamErrMsg *pOutErrMsg ); -// Initialize the SDK, without worrying about the cause of failure. -// This function is included for compatibility with older SDK. -// You can use it if you don't care about decent error handling +// See "Initializing the Steamworks SDK" above for how to choose an init method. +// Returns true on success inline bool SteamAPI_Init() { return SteamAPI_InitEx( NULL ) == k_ESteamAPIInitResult_OK; } +// See "Initializing the Steamworks SDK" above for how to choose an init method. +// Same usage as SteamAPI_InitEx(), however does not verify ISteam* interfaces are +// supported by the user's client and is exported from the dll +S_API ESteamAPIInitResult S_CALLTYPE SteamAPI_InitFlat( SteamErrMsg *pOutErrMsg ); + // SteamAPI_Shutdown should be called during process shutdown if possible. S_API void S_CALLTYPE SteamAPI_Shutdown(); @@ -277,10 +298,6 @@ inline bool CSteamAPIContext::Init() if ( !m_pSteamUGC ) return false; - m_pSteamAppList = ::SteamAppList(); - if ( !m_pSteamAppList ) - return false; - m_pSteamMusic = ::SteamMusic(); if ( !m_pSteamMusic ) return false; @@ -318,17 +335,12 @@ inline bool CSteamAPIContext::Init() // Internal implementation of SteamAPI_InitEx. This is done in a way that checks // all of the versions of interfaces from headers being compiled into this code. -// If you are not using any of the C++ interfaces and do not need this version checking -// (for example if you are only using the "flat" interfaces, which have a different type -// of version checking), you can pass a NULL interface version string. S_API ESteamAPIInitResult S_CALLTYPE SteamInternal_SteamAPI_Init( const char *pszInternalCheckInterfaceVersions, SteamErrMsg *pOutErrMsg ); inline ESteamAPIInitResult SteamAPI_InitEx( SteamErrMsg *pOutErrMsg ) { const char *pszInternalCheckInterfaceVersions = STEAMUTILS_INTERFACE_VERSION "\0" STEAMNETWORKINGUTILS_INTERFACE_VERSION "\0" - - STEAMAPPLIST_INTERFACE_VERSION "\0" STEAMAPPS_INTERFACE_VERSION "\0" STEAMCONTROLLER_INTERFACE_VERSION "\0" STEAMFRIENDS_INTERFACE_VERSION "\0" diff --git a/CodeGen/steam/steam_api.json b/CodeGen/steam/steam_api.json index bb09d221..7acd8ffc 100644 --- a/CodeGen/steam/steam_api.json +++ b/CodeGen/steam/steam_api.json @@ -1395,22 +1395,6 @@ ], "struct": "WorkshopEULAStatus_t" }, - { - "callback_id": 3901, - "fields": [ - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_iInstallFolderIndex", "fieldtype":"int" } - ], - "struct": "SteamAppInstalled_t" - }, - { - "callback_id": 3902, - "fields": [ - { "fieldname":"m_nAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_iInstallFolderIndex", "fieldtype":"int" } - ], - "struct": "SteamAppUninstalled_t" - }, { "callback_id": 4501, "fields": [ @@ -1895,6 +1879,7 @@ { "constname":"k_uAppIdInvalid", "consttype":"AppId_t", "constval":"0x0" }, { "constname":"k_uDepotIdInvalid", "consttype":"DepotId_t", "constval":"0x0" }, { "constname":"k_uAPICallInvalid", "consttype":"SteamAPICall_t", "constval":"0x0" }, + { "constname":"k_uAccountIdInvalid", "consttype":"AccountID_t", "constval":"0" }, { "constname":"k_ulPartyBeaconIdInvalid", "consttype":"PartyBeaconID_t", "constval":"0" }, { "constname":"k_HAuthTicketInvalid", "consttype":"HAuthTicket", "constval":"0" }, { "constname":"k_unSteamAccountIDMask", "consttype":"unsigned int", "constval":"0xFFFFFFFF" }, @@ -1906,6 +1891,8 @@ { "constname":"k_cFriendsGroupLimit", "consttype":"int", "constval":"100" }, { "constname":"k_FriendsGroupID_Invalid", "consttype":"FriendsGroupID_t", "constval":"- 1" }, { "constname":"k_cEnumerateFollowersMax", "consttype":"int", "constval":"50" }, + { "constname":"k_usFriendGameInfoQueryPort_NotInitialized", "consttype":"uint16", "constval":"0xFFFF" }, + { "constname":"k_usFriendGameInfoQueryPort_Error", "consttype":"uint16", "constval":"0xFFFE" }, { "constname":"k_cubChatMetadataMax", "consttype":"uint32", "constval":"8192" }, { "constname":"k_cbMaxGameServerGameDir", "consttype":"int", "constval":"32" }, { "constname":"k_cbMaxGameServerMapName", "consttype":"int", "constval":"32" }, @@ -2133,7 +2120,9 @@ { "name":"k_EResultInsufficientBattery", "value":"124" }, { "name":"k_EResultChargerRequired", "value":"125" }, { "name":"k_EResultCachedCredentialInvalid", "value":"126" }, - { "name":"K_EResultPhoneNumberIsVOIP", "value":"127" } + { "name":"K_EResultPhoneNumberIsVOIP", "value":"127" }, + { "name":"k_EResultNotSupported", "value":"128" }, + { "name":"k_EResultFamilySizeLimitExceeded", "value":"129" } ] }, { @@ -2682,7 +2671,8 @@ { "name":"k_EWorkshopFileTypeSteamworksAccessInvite", "value":"13" }, { "name":"k_EWorkshopFileTypeSteamVideo", "value":"14" }, { "name":"k_EWorkshopFileTypeGameManagedItem", "value":"15" }, - { "name":"k_EWorkshopFileTypeMax", "value":"16" } + { "name":"k_EWorkshopFileTypeClip", "value":"16" }, + { "name":"k_EWorkshopFileTypeMax", "value":"17" } ] }, { @@ -3953,7 +3943,8 @@ { "name":"k_EItemStateInstalled", "value":"4" }, { "name":"k_EItemStateNeedsUpdate", "value":"8" }, { "name":"k_EItemStateDownloading", "value":"16" }, - { "name":"k_EItemStateDownloadPending", "value":"32" } + { "name":"k_EItemStateDownloadPending", "value":"32" }, + { "name":"k_EItemStateDisabledLocally", "value":"64" } ] }, { @@ -3982,6 +3973,7 @@ { "name":"k_EItemPreviewType_Sketchfab", "value":"2" }, { "name":"k_EItemPreviewType_EnvironmentMap_HorizontalCross", "value":"3" }, { "name":"k_EItemPreviewType_EnvironmentMap_LatLong", "value":"4" }, + { "name":"k_EItemPreviewType_Clip", "value":"5" }, { "name":"k_EItemPreviewType_ReservedMax", "value":"255" } ] }, @@ -4010,7 +4002,8 @@ { "name":"k_ETimelineGameMode_Playing", "value":"1" }, { "name":"k_ETimelineGameMode_Staging", "value":"2" }, { "name":"k_ETimelineGameMode_Menus", "value":"3" }, - { "name":"k_ETimelineGameMode_Max", "value":"4" } + { "name":"k_ETimelineGameMode_LoadingScreen", "value":"4" }, + { "name":"k_ETimelineGameMode_Max", "value":"5" } ] }, { @@ -4030,7 +4023,7 @@ { "name":"k_EFeatureLibrary", "value":"11" }, { "name":"k_EFeatureTest", "value":"12" }, { "name":"k_EFeatureSiteLicense", "value":"13" }, - { "name":"k_EFeatureKioskMode", "value":"14" }, + { "name":"k_EFeatureKioskMode_Deprecated", "value":"14" }, { "name":"k_EFeatureMax", "value":"15" } ] }, @@ -4041,7 +4034,8 @@ { "name":"k_ESteamDeviceFormFactorPhone", "value":"1" }, { "name":"k_ESteamDeviceFormFactorTablet", "value":"2" }, { "name":"k_ESteamDeviceFormFactorComputer", "value":"3" }, - { "name":"k_ESteamDeviceFormFactorTV", "value":"4" } + { "name":"k_ESteamDeviceFormFactorTV", "value":"4" }, + { "name":"k_ESteamDeviceFormFactorVRHeadset", "value":"5" } ] }, { @@ -4196,6 +4190,7 @@ { "name":"k_ESteamNetworkingConfig_FakeRateLimit_Send_Burst", "value":"43" }, { "name":"k_ESteamNetworkingConfig_FakeRateLimit_Recv_Rate", "value":"44" }, { "name":"k_ESteamNetworkingConfig_FakeRateLimit_Recv_Burst", "value":"45" }, + { "name":"k_ESteamNetworkingConfig_OutOfOrderCorrectionWindowMicroseconds", "value":"51" }, { "name":"k_ESteamNetworkingConfig_Callback_ConnectionStatusChanged", "value":"201" }, { "name":"k_ESteamNetworkingConfig_Callback_AuthStatusChanged", "value":"202" }, { "name":"k_ESteamNetworkingConfig_Callback_RelayNetworkStatusChanged", "value":"203" }, @@ -4216,15 +4211,17 @@ { "name":"k_ESteamNetworkingConfig_SDRClient_MinPingsBeforePingAccurate", "value":"21" }, { "name":"k_ESteamNetworkingConfig_SDRClient_SingleSocket", "value":"22" }, { "name":"k_ESteamNetworkingConfig_SDRClient_ForceRelayCluster", "value":"29" }, - { "name":"k_ESteamNetworkingConfig_SDRClient_DebugTicketAddress", "value":"30" }, + { "name":"k_ESteamNetworkingConfig_SDRClient_DevTicket", "value":"30" }, { "name":"k_ESteamNetworkingConfig_SDRClient_ForceProxyAddr", "value":"31" }, { "name":"k_ESteamNetworkingConfig_SDRClient_FakeClusterPing", "value":"36" }, + { "name":"k_ESteamNetworkingConfig_SDRClient_LimitPingProbesToNearestN", "value":"60" }, { "name":"k_ESteamNetworkingConfig_LogLevel_AckRTT", "value":"13" }, { "name":"k_ESteamNetworkingConfig_LogLevel_PacketDecode", "value":"14" }, { "name":"k_ESteamNetworkingConfig_LogLevel_Message", "value":"15" }, { "name":"k_ESteamNetworkingConfig_LogLevel_PacketGaps", "value":"16" }, { "name":"k_ESteamNetworkingConfig_LogLevel_P2PRendezvous", "value":"17" }, { "name":"k_ESteamNetworkingConfig_LogLevel_SDRRelayPings", "value":"18" }, + { "name":"k_ESteamNetworkingConfig_ECN", "value":"999" }, { "name":"k_ESteamNetworkingConfig_DELETED_EnumerateDevVars", "value":"35" }, { "name":"k_ESteamNetworkingConfigValue__Force32Bit", "value":"2147483647" } ] @@ -4517,16 +4514,6 @@ ], "returntype": "ISteamUGC *" }, - { - "methodname": "GetISteamAppList", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamAppList", - "params": [ - { "paramname":"hSteamUser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamAppList *" - }, { "methodname": "GetISteamMusic", "methodname_flat": "SteamAPI_ISteamClient_GetISteamMusic", @@ -4567,16 +4554,6 @@ ], "returntype": "ISteamInventory *" }, - { - "methodname": "GetISteamVideo", - "methodname_flat": "SteamAPI_ISteamClient_GetISteamVideo", - "params": [ - { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, - { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, - { "paramname":"pchVersion", "paramtype":"const char *" } - ], - "returntype": "ISteamVideo *" - }, { "methodname": "GetISteamParentalSettings", "methodname_flat": "SteamAPI_ISteamClient_GetISteamParentalSettings", @@ -5908,6 +5885,12 @@ "methodname_flat": "SteamAPI_ISteamUtils_DismissFloatingGamepadTextInput", "params": [], "returntype": "bool" + }, + { + "methodname": "DismissGamepadTextInput", + "methodname_flat": "SteamAPI_ISteamUtils_DismissGamepadTextInput", + "params": [], + "returntype": "bool" } ], "version_string": "SteamUtils010" @@ -10729,67 +10712,6 @@ ], "version_string": "STEAMUGC_INTERFACE_VERSION018" }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamAppList", - "name_flat": "SteamAPI_SteamAppList_v001" - } - ], - "classname": "ISteamAppList", - "fields": [], - "methods": [ - { - "methodname": "GetNumInstalledApps", - "methodname_flat": "SteamAPI_ISteamAppList_GetNumInstalledApps", - "params": [], - "returntype": "uint32" - }, - { - "methodname": "GetInstalledApps", - "methodname_flat": "SteamAPI_ISteamAppList_GetInstalledApps", - "params": [ - { "paramname":"pvecAppID", "paramtype":"AppId_t *" }, - { "paramname":"unMaxAppIDs", "paramtype":"uint32" } - ], - "returntype": "uint32" - }, - { - "methodname": "GetAppName", - "methodname_flat": "SteamAPI_ISteamAppList_GetAppName", - "params": [ - { "paramname":"nAppID", "paramtype":"AppId_t" }, - { - "out_string": "", - "paramname": "pchName", - "paramtype": "char *" - }, - { "paramname":"cchNameMax", "paramtype":"int" } - ], - "returntype": "int" - }, - { - "methodname": "GetAppInstallDir", - "methodname_flat": "SteamAPI_ISteamAppList_GetAppInstallDir", - "params": [ - { "paramname":"nAppID", "paramtype":"AppId_t" }, - { "paramname":"pchDirectory", "paramtype":"char *" }, - { "paramname":"cchNameMax", "paramtype":"int" } - ], - "returntype": "int" - }, - { - "methodname": "GetAppBuildId", - "methodname_flat": "SteamAPI_ISteamAppList_GetAppBuildId", - "params": [ - { "paramname":"nAppID", "paramtype":"AppId_t" } - ], - "returntype": "int" - } - ], - "version_string": "STEAMAPPLIST_INTERFACE_VERSION001" - }, { "accessors": [ { @@ -11706,99 +11628,6 @@ ], "version_string": "STEAMINVENTORY_INTERFACE_V003" }, - { - "accessors": [ - { - "kind": "user", - "name": "SteamVideo", - "name_flat": "SteamAPI_SteamVideo_v003" - } - ], - "classname": "ISteamVideo", - "fields": [], - "methods": [ - { - "methodname": "GetVideoURL", - "methodname_flat": "SteamAPI_ISteamVideo_GetVideoURL", - "params": [ - { "paramname":"unVideoAppID", "paramtype":"AppId_t" } - ], - "returntype": "void" - }, - { - "methodname": "IsBroadcasting", - "methodname_flat": "SteamAPI_ISteamVideo_IsBroadcasting", - "params": [ - { "paramname":"pnNumViewers", "paramtype":"int *" } - ], - "returntype": "bool" - }, - { - "callback": "GetOPFSettingsResult_t", - "methodname": "GetOPFSettings", - "methodname_flat": "SteamAPI_ISteamVideo_GetOPFSettings", - "params": [ - { "paramname":"unVideoAppID", "paramtype":"AppId_t" } - ], - "returntype": "void" - }, - { - "methodname": "GetOPFStringForApp", - "methodname_flat": "SteamAPI_ISteamVideo_GetOPFStringForApp", - "params": [ - { "paramname":"unVideoAppID", "paramtype":"AppId_t" }, - { "paramname":"pchBuffer", "paramtype":"char *" }, - { "paramname":"pnBufferSize", "paramtype":"int32 *" } - ], - "returntype": "bool" - }, - { - "methodname": "AddTimelineHighlightMarker", - "methodname_flat": "SteamAPI_ISteamVideo_AddTimelineHighlightMarker", - "params": [ - { "paramname":"pchIcon", "paramtype":"const char *" }, - { "paramname":"pchTitle", "paramtype":"const char *" }, - { "paramname":"pchDescription", "paramtype":"const char *" }, - { "paramname":"unPriority", "paramtype":"uint32" } - ], - "returntype": "void" - }, - { - "methodname": "AddTimelineTimestamp", - "methodname_flat": "SteamAPI_ISteamVideo_AddTimelineTimestamp", - "params": [ - { "paramname":"pchTitle", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "AddTimelineRangeStart", - "methodname_flat": "SteamAPI_ISteamVideo_AddTimelineRangeStart", - "params": [ - { "paramname":"pchID", "paramtype":"const char *" }, - { "paramname":"pchTitle", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "AddTimelineRangeEnd", - "methodname_flat": "SteamAPI_ISteamVideo_AddTimelineRangeEnd", - "params": [ - { "paramname":"pchID", "paramtype":"const char *" } - ], - "returntype": "void" - }, - { - "methodname": "SetTimelineGameMode", - "methodname_flat": "SteamAPI_ISteamVideo_SetTimelineGameMode", - "params": [ - { "paramname":"eMode", "paramtype":"ETimelineGameMode" } - ], - "returntype": "void" - } - ], - "version_string": "STEAMVIDEO_INTERFACE_V003" - }, { "accessors": [ { @@ -13600,29 +13429,6 @@ ], "struct": "InputMotionData_t" }, - { - "fields": [ - { "fieldname":"driftCorrectedQuatX", "fieldtype":"float" }, - { "fieldname":"driftCorrectedQuatY", "fieldtype":"float" }, - { "fieldname":"driftCorrectedQuatZ", "fieldtype":"float" }, - { "fieldname":"driftCorrectedQuatW", "fieldtype":"float" }, - { "fieldname":"sensorFusionQuatX", "fieldtype":"float" }, - { "fieldname":"sensorFusionQuatY", "fieldtype":"float" }, - { "fieldname":"sensorFusionQuatZ", "fieldtype":"float" }, - { "fieldname":"sensorFusionQuatW", "fieldtype":"float" }, - { "fieldname":"deferredSensorFusionQuatX", "fieldtype":"float" }, - { "fieldname":"deferredSensorFusionQuatY", "fieldtype":"float" }, - { "fieldname":"deferredSensorFusionQuatZ", "fieldtype":"float" }, - { "fieldname":"deferredSensorFusionQuatW", "fieldtype":"float" }, - { "fieldname":"gravityX", "fieldtype":"float" }, - { "fieldname":"gravityY", "fieldtype":"float" }, - { "fieldname":"gravityZ", "fieldtype":"float" }, - { "fieldname":"degreesPerSecondX", "fieldtype":"float" }, - { "fieldname":"degreesPerSecondY", "fieldtype":"float" }, - { "fieldname":"degreesPerSecondZ", "fieldtype":"float" } - ], - "struct": "InputMotionDataV2_t" - }, { "fields": [ { "fieldname":"controllerHandle", "fieldtype":"InputHandle_t" }, diff --git a/CodeGen/steam/steam_api_common.h b/CodeGen/steam/steam_api_common.h index 7e81c8b2..cb8e6b77 100644 --- a/CodeGen/steam/steam_api_common.h +++ b/CodeGen/steam/steam_api_common.h @@ -36,6 +36,12 @@ #endif // STEAM_API_EXPORTS #endif +#if defined( __cplusplus ) && ( __cplusplus >= 201103L ) + #define S_OVERRIDE override +#else + #define S_OVERRIDE +#endif + #if ( defined(STEAM_API_EXPORTS) || defined(STEAM_API_NODLL) ) && !defined(API_GEN) #define STEAM_PRIVATE_API( ... ) __VA_ARGS__ #elif defined(STEAM_API_EXPORTS) && defined(API_GEN) @@ -162,9 +168,9 @@ class CCallbackImpl : protected CCallbackBase protected: friend class CCallbackMgr; - virtual void Run( void *pvParam ) = 0; - virtual void Run( void *pvParam, bool /*bIOFailure*/, SteamAPICall_t /*hSteamAPICall*/ ) { Run( pvParam ); } - virtual int GetCallbackSizeBytes() { return sizeof_P; } + virtual void Run( void *pvParam ) S_OVERRIDE = 0; + virtual void Run( void *pvParam, bool /*bIOFailure*/, SteamAPICall_t /*hSteamAPICall*/ ) S_OVERRIDE { Run( pvParam ); } + virtual int GetCallbackSizeBytes() S_OVERRIDE { return sizeof_P; } }; @@ -187,9 +193,9 @@ class CCallResult : private CCallbackBase void SetGameserverFlag() { m_nCallbackFlags |= k_ECallbackFlagsGameServer; } private: - virtual void Run( void *pvParam ); - virtual void Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ); - virtual int GetCallbackSizeBytes() { return sizeof( P ); } + virtual void Run( void *pvParam ) S_OVERRIDE; + virtual void Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ) S_OVERRIDE; + virtual int GetCallbackSizeBytes() S_OVERRIDE { return sizeof( P ); } SteamAPICall_t m_hAPICall; T *m_pObj; @@ -217,7 +223,7 @@ class CCallback : public CCallbackImpl< sizeof( P ) > void Unregister(); protected: - virtual void Run( void *pvParam ); + virtual void Run( void *pvParam ) S_OVERRIDE; T *m_pObj; func_t m_Func; diff --git a/CodeGen/steam/steam_api_flat.h b/CodeGen/steam/steam_api_flat.h index c6a168fe..a0e7ce43 100644 --- a/CodeGen/steam/steam_api_flat.h +++ b/CodeGen/steam/steam_api_flat.h @@ -44,7 +44,6 @@ S_API bool SteamAPI_ISteamClient_BShutdownIfAllPipesClosed( ISteamClient* self ) S_API ISteamHTTP * SteamAPI_ISteamClient_GetISteamHTTP( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); S_API ISteamController * SteamAPI_ISteamClient_GetISteamController( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); S_API ISteamUGC * SteamAPI_ISteamClient_GetISteamUGC( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); -S_API ISteamAppList * SteamAPI_ISteamClient_GetISteamAppList( ISteamClient* self, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion ); S_API ISteamMusic * SteamAPI_ISteamClient_GetISteamMusic( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); S_API ISteamMusicRemote * SteamAPI_ISteamClient_GetISteamMusicRemote( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); S_API ISteamHTMLSurface * SteamAPI_ISteamClient_GetISteamHTMLSurface( ISteamClient* self, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion ); @@ -229,6 +228,7 @@ S_API bool SteamAPI_ISteamUtils_IsSteamRunningOnSteamDeck( ISteamUtils* self ); S_API bool SteamAPI_ISteamUtils_ShowFloatingGamepadTextInput( ISteamUtils* self, EFloatingGamepadTextInputMode eKeyboardMode, int nTextFieldXPosition, int nTextFieldYPosition, int nTextFieldWidth, int nTextFieldHeight ); S_API void SteamAPI_ISteamUtils_SetGameLauncherMode( ISteamUtils* self, bool bLauncherMode ); S_API bool SteamAPI_ISteamUtils_DismissFloatingGamepadTextInput( ISteamUtils* self ); +S_API bool SteamAPI_ISteamUtils_DismissGamepadTextInput( ISteamUtils* self ); // ISteamMatchmaking @@ -853,18 +853,6 @@ S_API bool SteamAPI_ISteamUGC_ShowWorkshopEULA( ISteamUGC* self ); S_API SteamAPICall_t SteamAPI_ISteamUGC_GetWorkshopEULAStatus( ISteamUGC* self ); S_API uint32 SteamAPI_ISteamUGC_GetUserContentDescriptorPreferences( ISteamUGC* self, EUGCContentDescriptorID * pvecDescriptors, uint32 cMaxEntries ); -// ISteamAppList - -// A versioned accessor is exported by the library -S_API ISteamAppList *SteamAPI_SteamAppList_v001(); -// Inline, unversioned accessor to get the current version. Essentially the same as SteamAppList(), but using this ensures that you are using a matching library. -inline ISteamAppList *SteamAPI_SteamAppList() { return SteamAPI_SteamAppList_v001(); } -S_API uint32 SteamAPI_ISteamAppList_GetNumInstalledApps( ISteamAppList* self ); -S_API uint32 SteamAPI_ISteamAppList_GetInstalledApps( ISteamAppList* self, AppId_t * pvecAppID, uint32 unMaxAppIDs ); -S_API int SteamAPI_ISteamAppList_GetAppName( ISteamAppList* self, AppId_t nAppID, char * pchName, int cchNameMax ); -S_API int SteamAPI_ISteamAppList_GetAppInstallDir( ISteamAppList* self, AppId_t nAppID, char * pchDirectory, int cchNameMax ); -S_API int SteamAPI_ISteamAppList_GetAppBuildId( ISteamAppList* self, AppId_t nAppID ); - // ISteamHTMLSurface // A versioned accessor is exported by the library diff --git a/CodeGen/steam/steam_api_internal.h b/CodeGen/steam/steam_api_internal.h index 28251743..e3aa18f5 100644 --- a/CodeGen/steam/steam_api_internal.h +++ b/CodeGen/steam/steam_api_internal.h @@ -54,6 +54,7 @@ S_API void S_CALLTYPE SteamAPI_UnregisterCallback( class CCallbackBase *pCallbac S_API void S_CALLTYPE SteamAPI_RegisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); S_API void S_CALLTYPE SteamAPI_UnregisterCallResult( class CCallbackBase *pCallback, SteamAPICall_t hAPICall ); +#define _STEAM_CALLBACK_OFFSETOF( type, member ) ( (size_t)( (char *)&( (type *)0 )->member ) ) #define _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) #define _STEAM_CALLBACK_HELPER( _1, _2, SELECTED, ... ) _STEAM_CALLBACK_##SELECTED #define _STEAM_CALLBACK_SELECT( X, Y ) _STEAM_CALLBACK_HELPER X Y @@ -62,8 +63,8 @@ S_API void S_CALLTYPE SteamAPI_UnregisterCallResult( class CCallbackBase *pCallb CCallbackInternal_ ## func () { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } \ CCallbackInternal_ ## func ( const CCallbackInternal_ ## func & ) { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } \ CCallbackInternal_ ## func & operator=( const CCallbackInternal_ ## func & ) { return *this; } \ - private: virtual void Run( void *pvParam ) { _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) \ - thisclass *pOuter = reinterpret_cast( reinterpret_cast(this) - offsetof( thisclass, m_steamcallback_ ## func ) ); \ + private: virtual void Run( void *pvParam ) S_OVERRIDE { _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) \ + thisclass *pOuter = reinterpret_cast( reinterpret_cast(this) - _STEAM_CALLBACK_OFFSETOF( thisclass, m_steamcallback_ ## func ) ); \ pOuter->func( reinterpret_cast( pvParam ) ); \ } \ } m_steamcallback_ ## func ; void func( param *pParam ) @@ -228,7 +229,6 @@ class ISteamPS3OverlayRender; class ISteamHTTP; class ISteamController; class ISteamUGC; -class ISteamAppList; class ISteamHTMLSurface; class ISteamInventory; class ISteamVideo; @@ -271,7 +271,6 @@ enum { k_iSteamStreamLauncherCallbacks = 2600 }; enum { k_iSteamControllerCallbacks = 2800 }; enum { k_iSteamUGCCallbacks = 3400 }; enum { k_iSteamStreamClientCallbacks = 3500 }; -enum { k_iSteamAppListCallbacks = 3900 }; enum { k_iSteamMusicCallbacks = 4000 }; enum { k_iSteamMusicRemoteCallbacks = 4100 }; enum { k_iSteamGameNotificationCallbacks = 4400 }; @@ -335,7 +334,6 @@ class CSteamAPIContext ISteamHTTP* SteamHTTP() const { return m_pSteamHTTP; } ISteamController* SteamController() const { return m_pController; } ISteamUGC* SteamUGC() const { return m_pSteamUGC; } - ISteamAppList* SteamAppList() const { return m_pSteamAppList; } ISteamMusic* SteamMusic() const { return m_pSteamMusic; } ISteamMusicRemote* SteamMusicRemote() const { return m_pSteamMusicRemote; } ISteamHTMLSurface* SteamHTMLSurface() const { return m_pSteamHTMLSurface; } @@ -359,7 +357,6 @@ class CSteamAPIContext ISteamHTTP *m_pSteamHTTP; ISteamController *m_pController; ISteamUGC *m_pSteamUGC; - ISteamAppList *m_pSteamAppList; ISteamMusic *m_pSteamMusic; ISteamMusicRemote *m_pSteamMusicRemote; ISteamHTMLSurface *m_pSteamHTMLSurface; diff --git a/CodeGen/steam/steamclientpublic.h b/CodeGen/steam/steamclientpublic.h index a75e7af0..5cf5d4de 100644 --- a/CodeGen/steam/steamclientpublic.h +++ b/CodeGen/steam/steamclientpublic.h @@ -141,6 +141,8 @@ enum EResult k_EResultChargerRequired = 125, // The operation requires a charger to be plugged in, which wasn't present k_EResultCachedCredentialInvalid = 126, // Cached credential was invalid - user must reauthenticate K_EResultPhoneNumberIsVOIP = 127, // The phone number provided is a Voice Over IP number + k_EResultNotSupported = 128, // The data being accessed is not supported by this API + k_EResultFamilySizeLimitExceeded = 129, // Reached the maximum size of the family }; // Error codes for use with the voice functions diff --git a/CodeGen/steam/steamhttpenums.h b/CodeGen/steam/steamhttpenums.h index 21b03a7b..3592116a 100644 --- a/CodeGen/steam/steamhttpenums.h +++ b/CodeGen/steam/steamhttpenums.h @@ -97,4 +97,9 @@ enum EHTTPStatusCode k_EHTTPStatusCode5xxUnknown = 599, }; +inline bool BIsHTTPStatusSuccess( EHTTPStatusCode eStatus ) +{ + return eStatus >= 200 && eStatus <= 299; +} + #endif // STEAMHTTPENUMS_H \ No newline at end of file diff --git a/CodeGen/steam/steamnetworkingtypes.h b/CodeGen/steam/steamnetworkingtypes.h index 3f037876..e8c38dfb 100644 --- a/CodeGen/steam/steamnetworkingtypes.h +++ b/CodeGen/steam/steamnetworkingtypes.h @@ -1432,6 +1432,32 @@ enum ESteamNetworkingConfigValue k_ESteamNetworkingConfig_FakeRateLimit_Recv_Rate = 44, k_ESteamNetworkingConfig_FakeRateLimit_Recv_Burst = 45, + // Timeout used for out-of-order correction. This is used when we see a small + // gap in the sequence number on a packet flow. For example let's say we are + // processing packet 105 when the most recent one was 103. 104 might have dropped, + // but there is also a chance that packets are simply being reordered. It is very + // common on certain types of connections for packet 104 to arrive very soon after 105, + // especially if 104 was large and 104 was small. In this case, when we see packet 105 + // we will shunt it aside and pend it, in the hopes of seeing 104 soon after. If 104 + // arrives before the a timeout occurs, then we can deliver the packets in order to the + // remainder of packet processing, and we will record this as a "correctable" out-of-order + // situation. If the timer expires, then we will process packet 105, and assume for now + // that 104 has dropped. (If 104 later arrives, we will process it, but that will be + // accounted for as uncorrected.) + // + // The default value is 1000 microseconds. Note that the Windows scheduler does not + // have microsecond precision. + // + // Set the value to 0 to disable out of order correction at the packet layer. + // In many cases we are still effectively able to correct the situation because + // reassembly of message fragments is tolerant of fragments packets arriving out of + // order. Also, when messages are decoded and inserted into the queue for the app + // to receive them, we will correct out of order messages that have not been + // dequeued by the app yet. However, when out-of-order packets are corrected + // at the packet layer, they will not reduce the connection quality measure. + // (E.g. SteamNetConnectionRealTimeStatus_t::m_flConnectionQualityLocal) + k_ESteamNetworkingConfig_OutOfOrderCorrectionWindowMicroseconds = 51, + // // Callbacks // @@ -1545,24 +1571,24 @@ enum ESteamNetworkingConfigValue // Settings for SDR relayed connections // - /// [int32 global] If the first N pings to a port all fail, mark that port as unavailable for + /// [global int32] If the first N pings to a port all fail, mark that port as unavailable for /// a while, and try a different one. Some ISPs and routers may drop the first /// packet, so setting this to 1 may greatly disrupt communications. k_ESteamNetworkingConfig_SDRClient_ConsecutitivePingTimeoutsFailInitial = 19, - /// [int32 global] If N consecutive pings to a port fail, after having received successful + /// [global int32] If N consecutive pings to a port fail, after having received successful /// communication, mark that port as unavailable for a while, and try a /// different one. k_ESteamNetworkingConfig_SDRClient_ConsecutitivePingTimeoutsFail = 20, - /// [int32 global] Minimum number of lifetime pings we need to send, before we think our estimate + /// [global int32] Minimum number of lifetime pings we need to send, before we think our estimate /// is solid. The first ping to each cluster is very often delayed because of NAT, /// routers not having the best route, etc. Until we've sent a sufficient number /// of pings, our estimate is often inaccurate. Keep pinging until we get this /// many pings. k_ESteamNetworkingConfig_SDRClient_MinPingsBeforePingAccurate = 21, - /// [int32 global] Set all steam datagram traffic to originate from the same + /// [global int32] Set all steam datagram traffic to originate from the same /// local port. By default, we open up a new UDP socket (on a different local /// port) for each relay. This is slightly less optimal, but it works around /// some routers that don't implement NAT properly. If you have intermittent @@ -1574,10 +1600,13 @@ enum ESteamNetworkingConfigValue /// only use relays in that cluster. E.g. 'iad' k_ESteamNetworkingConfig_SDRClient_ForceRelayCluster = 29, - /// [connection string] For debugging, generate our own (unsigned) ticket, using - /// the specified gameserver address. Router must be configured to accept unsigned - /// tickets. - k_ESteamNetworkingConfig_SDRClient_DebugTicketAddress = 30, + /// [connection string] For development, a base-64 encoded ticket generated + /// using the cert tool. This can be used to connect to a gameserver via SDR + /// without a ticket generated using the game coordinator. (You will still + /// need a key that is trusted for your app, however.) + /// + /// This can also be passed using the SDR_DEVTICKET environment variable + k_ESteamNetworkingConfig_SDRClient_DevTicket = 30, /// [global string] For debugging. Override list of relays from the config with /// this set (maybe just one). Comma-separated list. @@ -1590,6 +1619,10 @@ enum ESteamNetworkingConfigValue /// in production. k_ESteamNetworkingConfig_SDRClient_FakeClusterPing = 36, + /// [global int32] When probing the SteamDatagram network, we limit exploration + /// to the closest N POPs, based on our current best approximated ping to that POP. + k_ESteamNetworkingConfig_SDRClient_LimitPingProbesToNearestN = 60, + // // Log levels for debugging information of various subsystems. // Higher numeric values will cause more stuff to be printed. @@ -1605,6 +1638,10 @@ enum ESteamNetworkingConfigValue k_ESteamNetworkingConfig_LogLevel_P2PRendezvous = 17, // [connection int32] P2P rendezvous messages k_ESteamNetworkingConfig_LogLevel_SDRRelayPings = 18, // [global int32] Ping relays + // Experimental. Set the ECN header field on all outbound UDP packets + // -1 = the default, and means "don't set anything". + // 0..3 = set that value. (Even though 0 is the default UDP ECN value, a 0 here means "explicitly set a 0".) + k_ESteamNetworkingConfig_ECN = 999, // Deleted, do not use k_ESteamNetworkingConfig_DELETED_EnumerateDevVars = 35, diff --git a/CodeGen/steam/steamtypes.h b/CodeGen/steam/steamtypes.h index 6d6324a4..657f5b33 100644 --- a/CodeGen/steam/steamtypes.h +++ b/CodeGen/steam/steamtypes.h @@ -98,6 +98,7 @@ typedef uint64 SteamAPICall_t; const SteamAPICall_t k_uAPICallInvalid = 0x0; typedef uint32 AccountID_t; +const AccountID_t k_uAccountIdInvalid = 0; // Party Beacon ID typedef uint64 PartyBeaconID_t; diff --git a/README.md b/README.md index b454fbce..44be79d1 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ _Steamworks.NET_ is a C# Wrapper for Valve's Steamworks API, it can be used eith _Steamworks.NET_ was designed to be as close as possible to the original C++ API, as such the documentation provided from Valve largely covers usage of _Steamworks.NET_. Niceties and C# Idioms can be easily implemented on top of _Steamworks.NET_. -_Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.58a. +_Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.59. * Author: [Riley Labrecque](https://github.com/rlabrecque) * License: [MIT](https://www.opensource.org/licenses/mit-license.php) diff --git a/com.rlabrecque.steamworks.net/Plugins/libsteam_api.so b/com.rlabrecque.steamworks.net/Plugins/libsteam_api.so index 85f66c60f4a4b4f6243a9ad28688dbb35da34bdd..4a1260ce813d5c4502168de6c58257336170fbd5 100644 GIT binary patch literal 383104 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%0AWXVvzid} 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�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 rLyYd>aMU5OHug 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 z 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%0DaZy|@-y~4DIVmWW; zm5G?l8NxJ8+2fn0@ZYDZwd%&Y8XK*j7ik+LL<^M-nF;<$ zq7l{pf_M?Lc+LPViof|aq$!ugy`MBz6-P7MRo{TbD?44ot2JZDs;QuDozAOsSHXJN z(kqlLG@FNMmPtjbC7%KhaTBF!@(yC}^g*>$UdP=Vqps=X^)F3>|8bU~jeHF2K?Y2wkP&uGSXN6Rt&NM7&t1)v*f^ zkGCqa&QTT&>u$cA1SMk>zlhSLBpJ!VfHg^iuws9Os4M6mEYOa-|JFLz1digNuu7Y?1M|XZ=(}o18 zwo}SI<3aK^^+Z+iOn5vAu^i_nfCZ`Q4T&CH2pm(WbD6bknuTmeV;-upp>-PNh$&gjv0ijQV z^2aM73!GaeFin!R)wR_wG~cA9s!M3a_Zp{BGpeUunqn5>QA(AVu})^!CgYBjl7+%t zbh9giX_jSKyF6v5SV{J-;Mzs~(_On<@RZP(H*~%Hb#%wnvhlJjyG}~IZLVt<)=QMZ z`J-pA5oJS*Q4UoP(J^r2xeFe%7A617pUjC@kSrxCwydkyyi+||a~x^XEpCMojqhO^ z>c=#Fvq319?9%R-%414OuM|qB{QjPUE-aCbq=}m@kWl)$Fmxo6o*-d9u}f0r$=2$=_QNhr?xRP`5Q$PRcC6$@$hq9%MxmZtX*l$lR5hW$ ziZA3qeD!`)clzqznlw?(a^xg)0PT&}{t z%dc*5E#MLn{Lo5s5~2F){oVWXO4I$dxVBEOE`>LW^wjvoQx(s*=Egc5?>ML>&A-5(NZI{yD6R~$W1Q`mxT5Su{E=bb`HQh%>t9N8lxs`JojaoyB?b{to zY$>jo>5L1=G0k!ee}o8n-Fv~dT<*|%ER`XWo-|)X8CI*3cjVOqxe7gx5agaqyrNXz zyu$OQlfw0SM5FY2oFA^&BO0yO%&l$KV&wJzw!k8}&s)H)x|obzSE-Vtd7{{{%hlIt zR7Fh|s=QMY_rc|I2dH*YGej2)<*0E>B(_p(L3?`i*=nfIHT_qWHUYL$CD?jEywmYn zG=$$;+NhGe`lOwA`76CLbWQz5s|@nyU5W7}N1=oc{gnbW=oF&Rgum*QR${BDSc$FT zH6Dqr;@Lp@ttKtrx>_uv0_Wu3V`8hbMm>dSkS2fSL|V7DC~agKrBg&f3bs-aqxUvS zg}FkbL2t^E5$V4TQJExqA7qiNt&t7%zpc`+);d+eTGi2!E2Csgv^FeX?!I;6sMQ+z z$@D_5Buw_z*hGe^=0#pFi|aO^5G1M@i_< zlb)`m_3t`-1~?zY^i6m004kn-LzLbp#OMA4mW3 z@HY|@Ax@zG#J~5yRfX4|rzkx6KezwY^otpOfbjaWfBYn<{3D64`twg%`1(6k{QC1< z|D(QZEjpb3ehUkq{8N!riG=<{_Dd%I$L+tBn2169H-+%}^B3ocQ0~8!`=|Wt-SmGm z{OO-j@$1houn5`L#79*4x{iPJc@u=O&=P_DReWtu$6PF|YG~+tF zXkX2LBrgBy&sq9I^q>6Sd8oL${nx*<<`gkh+r^}DFOSF&L_exUzKm9z_aG&@&lltR7H6Z-u52^4i JW-$Aj`2S0(DwF^K diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/Info.plist b/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/Info.plist index 23dba05d..6fde9906 100644 --- a/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/Info.plist +++ b/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/Info.plist @@ -17,7 +17,7 @@ CFBundleSignature ???? CFBundleVersion - 1.58a + 1.59 CSResourcesFileMapped yes DTCompiler diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/MacOS/libsteam_api.dylib b/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/MacOS/libsteam_api.dylib index 2d8957fed8872d5f22c20a070d1c8b9a7e3c8f9a..1897bef428fceb356ae1e9a9a2da83f07b91dc0b 100644 GIT binary patch delta 170641 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

pFE|<; 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 delta 168023 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 diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api.dll b/com.rlabrecque.steamworks.net/Plugins/steam_api.dll index 1c65572a784748e9ab91f79ccda4591825124db3..0bcfde3cb4f5767b05fda4c1a82eb79dcbb2f20c 100644 GIT binary patch delta 30189 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 delta 30346 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

p^X(LZG^6bWKs-_56NeM`}flFHYH%A~%jW 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 - /// returns -1 if no name was found - ///

- public static int GetAppName(AppId_t nAppID, out string pchName, int cchNameMax) { - InteropHelp.TestIfAvailableClient(); - IntPtr pchName2 = Marshal.AllocHGlobal(cchNameMax); - int ret = NativeMethods.ISteamAppList_GetAppName(CSteamAPIContext.GetSteamAppList(), nAppID, pchName2, cchNameMax); - pchName = ret != -1 ? InteropHelp.PtrToStringUTF8(pchName2) : null; - Marshal.FreeHGlobal(pchName2); - return ret; - } - - /// - /// returns -1 if no dir was found - /// - public static int GetAppInstallDir(AppId_t nAppID, out string pchDirectory, int cchNameMax) { - InteropHelp.TestIfAvailableClient(); - IntPtr pchDirectory2 = Marshal.AllocHGlobal(cchNameMax); - int ret = NativeMethods.ISteamAppList_GetAppInstallDir(CSteamAPIContext.GetSteamAppList(), nAppID, pchDirectory2, cchNameMax); - pchDirectory = ret != -1 ? InteropHelp.PtrToStringUTF8(pchDirectory2) : null; - Marshal.FreeHGlobal(pchDirectory2); - return ret; - } - - /// - /// return the buildid of this app, may change at any time based on backend updates to the game - /// - public static int GetAppBuildId(AppId_t nAppID) { - InteropHelp.TestIfAvailableClient(); - return NativeMethods.ISteamAppList_GetAppBuildId(CSteamAPIContext.GetSteamAppList(), nAppID); - } - } -} - -#endif // !DISABLESTEAMWORKS diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapplist.cs.meta b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapplist.cs.meta deleted file mode 100644 index 5b5e0a18..00000000 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapplist.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b4c4286d1bfb0ce438e20d1cf8b3fed9 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamclient.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamclient.cs index c0eddacf..58b69ef7 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamclient.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamclient.cs @@ -271,16 +271,6 @@ public static IntPtr GetISteamUGC(HSteamUser hSteamUser, HSteamPipe hSteamPipe, } } - /// - /// returns app list interface, only available on specially registered apps - /// - public static IntPtr GetISteamAppList(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { - InteropHelp.TestIfAvailableClient(); - using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { - return NativeMethods.ISteamClient_GetISteamAppList(CSteamAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); - } - } - /// /// Music Player /// diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverclient.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverclient.cs index 0c41cff7..3449588f 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverclient.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverclient.cs @@ -271,16 +271,6 @@ public static IntPtr GetISteamUGC(HSteamUser hSteamUser, HSteamPipe hSteamPipe, } } - /// - /// returns app list interface, only available on specially registered apps - /// - public static IntPtr GetISteamAppList(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { - InteropHelp.TestIfAvailableGameServer(); - using (var pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion)) { - return NativeMethods.ISteamClient_GetISteamAppList(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); - } - } - /// /// Music Player /// diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs index bfd7e52a..378006e2 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverutils.cs @@ -350,6 +350,14 @@ public static bool DismissFloatingGamepadTextInput() { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamUtils_DismissFloatingGamepadTextInput(CSteamGameServerAPIContext.GetSteamUtils()); } + + /// + /// Dismisses the full-screen text input dialog. + /// + public static bool DismissGamepadTextInput() { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamUtils_DismissGamepadTextInput(CSteamGameServerAPIContext.GetSteamUtils()); + } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs index 1952b101..005743fe 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamutils.cs @@ -350,6 +350,14 @@ public static bool DismissFloatingGamepadTextInput() { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamUtils_DismissFloatingGamepadTextInput(CSteamAPIContext.GetSteamUtils()); } + + /// + /// Dismisses the full-screen text input dialog. + /// + public static bool DismissGamepadTextInput() { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUtils_DismissGamepadTextInput(CSteamAPIContext.GetSteamUtils()); + } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AccountID_t.cs b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AccountID_t.cs index 0392ac02..e42f9b90 100644 --- a/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AccountID_t.cs +++ b/com.rlabrecque.steamworks.net/Runtime/types/SteamTypes/AccountID_t.cs @@ -17,6 +17,7 @@ namespace Steamworks { [System.Serializable] public struct AccountID_t : System.IEquatable, System.IComparable { + public static readonly AccountID_t Invalid = new AccountID_t(0); public uint m_AccountID; public AccountID_t(uint value) { From 7e5ab1859e30dab8162de2327d7fcfd176ce1064 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 30 Jun 2024 20:33:59 -0700 Subject: [PATCH 44/55] Update to Steamworks SDK 1.60 --- CodeGen/src/constants.py | 2 + CodeGen/src/enums.py | 1 + CodeGen/src/interfaces.py | 32 ++- CodeGen/steam/isteamapps.h | 13 +- CodeGen/steam/isteamparentalsettings.h | 1 + CodeGen/steam/isteamtimeline.h | 118 +++++++++ CodeGen/steam/isteamugc.h | 15 +- CodeGen/steam/isteamvideo.h | 7 +- CodeGen/steam/steam_api.h | 110 +------- CodeGen/steam/steam_api.json | 235 +++++++++++++++++- CodeGen/steam/steam_api_flat.h | 30 ++- CodeGen/steam/steam_api_internal.h | 60 +---- CodeGen/steam/steamclientpublic.h | 10 + CodeGen/steam/steamnetworkingtypes.h | 9 + README.md | 2 +- .../Plugins/libsteam_api.so | Bin 383104 -> 384800 bytes .../steam_api.bundle/Contents/Info.plist | 2 +- .../Contents/MacOS/libsteam_api.dylib | Bin 627088 -> 610384 bytes .../Plugins/steam_api.dll | Bin 268648 -> 265064 bytes .../Plugins/steam_api64.dll | Bin 301928 -> 300392 bytes .../Runtime/Steam.cs | 15 +- .../Runtime/Version.cs | 8 +- .../Runtime/autogen/NativeMethods.cs | 39 +++ .../Runtime/autogen/SteamCallbacks.cs | 2 + .../Runtime/autogen/SteamConstants.cs | 8 +- .../Runtime/autogen/SteamEnums.cs | 45 ++++ .../Runtime/autogen/SteamStructs.cs | 3 +- .../Runtime/autogen/isteamapps.cs | 36 ++- .../Runtime/autogen/isteamgameserverugc.cs | 39 +++ .../Runtime/autogen/isteamtimeline.cs | 88 +++++++ .../Runtime/autogen/isteamugc.cs | 39 +++ 31 files changed, 759 insertions(+), 210 deletions(-) create mode 100644 CodeGen/steam/isteamtimeline.h create mode 100644 com.rlabrecque.steamworks.net/Runtime/autogen/isteamtimeline.cs diff --git a/CodeGen/src/constants.py b/CodeGen/src/constants.py index bbb74cb5..ffbee361 100644 --- a/CodeGen/src/constants.py +++ b/CodeGen/src/constants.py @@ -225,6 +225,8 @@ def parse_constants(parser): constantvalue = "-1" elif constantvalue == "0xffffffffffffffffull": constantvalue = constantvalue[:-3] + elif constantvalue.endswith(".f"): + constantvalue = constantvalue[:-1] + "0f" out_constants.append(InternalConstant(constant.name, constantvalue, constanttype, constant.c.precomments, comment, " ")) diff --git a/CodeGen/src/enums.py b/CodeGen/src/enums.py index 0cc74d74..89f66635 100644 --- a/CodeGen/src/enums.py +++ b/CodeGen/src/enums.py @@ -28,6 +28,7 @@ # SteamClientPublic "EChatSteamIDInstanceFlags", "EMarketNotAllowedReasonFlags", + "EBetaBranchFlags", ) g_SkippedEnums = { diff --git a/CodeGen/src/interfaces.py b/CodeGen/src/interfaces.py index 85cc5371..9c99efbf 100644 --- a/CodeGen/src/interfaces.py +++ b/CodeGen/src/interfaces.py @@ -491,6 +491,16 @@ "STEAM_OUT_ARRAY_COUNT": "unArrayLength" }, }, + "ISteamUGC_GetQueryUGCAdditionalPreview": { + "pchOriginalFileName": { + "STEAM_OUT_STRING_COUNT": "cchOriginalFileNameSize" + }, + }, + "ISteamGameServerUGC_GetQueryUGCAdditionalPreview": { + "pchOriginalFileName": { + "STEAM_OUT_STRING_COUNT": "cchOriginalFileNameSize" + }, + }, } g_SpecialOutStringRetCmp = { @@ -798,7 +808,8 @@ def parse_args(strEntryPoint, args): else: argnames = "CSteamAPIContext.Get" + ifacename + "(), " - getsize = False + getNextArgAsStringSize = False + argNamesToAddAsStringSize = [] for arg in args: argtype = g_TypeDict.get(arg.type, arg.type) @@ -811,7 +822,6 @@ def parse_args(strEntryPoint, args): if arg.attribute.name == "STEAM_OUT_ARRAY" or arg.attribute.name == "STEAM_OUT_ARRAY_CALL" or arg.attribute.name == "STEAM_OUT_ARRAY_COUNT" or arg.attribute.name == "STEAM_ARRAY_COUNT" or arg.attribute.name == "STEAM_ARRAY_COUNT_D": potentialtype = arg.type.rstrip("*").rstrip() argtype = g_TypeDict.get(potentialtype, potentialtype) + "[]" - #if arg.attribute.name == "OUT_STRING" or arg.attribute.name == "OUT_STRING_COUNT": #Unused for now if arg.attribute.name == "STEAM_OUT_ARRAY_COUNT": fixedattrvalue = g_FixedAttributeValues.get(strEntryPoint, dict()).get(arg.name, dict()).get(arg.attribute.name, arg.attribute.value) @@ -869,18 +879,28 @@ def parse_args(strEntryPoint, args): else: argnames += arg.name - if getsize: - getsize = False + if getNextArgAsStringSize: + getNextArgAsStringSize = False outstringsize.append(arg) + for tempargname in argNamesToAddAsStringSize: + if tempargname == arg.name: + outstringsize.append(arg) + if wrapperargtype == "string": stringargs.append(arg.name) argnames += "2" elif wrapperargtype == "out string": outstringargs.append(arg.name) argnames += "2" - if strEntryPoint != "ISteamRemoteStorage_GetUGCDetails": - getsize = True + if arg.attribute: + if arg.attribute.name == "STEAM_OUT_STRING_COUNT": + fixedattrvalue = g_FixedAttributeValues.get(strEntryPoint, dict()).get(arg.name, dict()).get(arg.attribute.name, arg.attribute.value) + argNamesToAddAsStringSize.append(fixedattrvalue) + if arg.attribute.name == "STEAM_OUT_STRING": + pass + else: + getNextArgAsStringSize = True argnames += ", " diff --git a/CodeGen/steam/isteamapps.h b/CodeGen/steam/isteamapps.h index 8a2197ed..c47b1839 100644 --- a/CodeGen/steam/isteamapps.h +++ b/CodeGen/steam/isteamapps.h @@ -84,7 +84,7 @@ class ISteamApps // return the buildid of this app, may change at any time based on backend updates to the game virtual int GetAppBuildId() = 0; - // Request all proof of purchase keys for the calling appid and asociated DLC. + // Request all proof of purchase keys for the calling appid and associated DLC. // A series of AppProofOfPurchaseKeyResponse_t callbacks will be sent with // appropriate appid values, ending with a final callback where the m_nAppId // member is k_uAppIdInvalid (zero). @@ -110,7 +110,16 @@ class ISteamApps virtual bool BIsTimedTrial( uint32* punSecondsAllowed, uint32* punSecondsPlayed ) = 0; // set current DLC AppID being played (or 0 if none). Allows Steam to track usage of major DLC extensions - virtual bool SetDlcContext( AppId_t nAppID ) = 0; + virtual bool SetDlcContext( AppId_t nAppID ) = 0; + + // returns total number of known app beta branches (including default "public" branch ) + virtual int GetNumBetas( int *pnAvailable, int *pnPrivate ) = 0; // + + // return beta branch details, name, description, current BuildID and state flags (EBetaBranchFlags) + virtual bool GetBetaInfo( int iBetaIndex, uint32 *punFlags, uint32 *punBuildID, char *pchBetaName, int cchBetaName, char *pchDescription, int cchDescription ) = 0; // iterate through + + // select this beta branch for this app as active, might need the game to restart so Steam can update to that branch + virtual bool SetActiveBeta( const char *pchBetaName ) = 0; }; #define STEAMAPPS_INTERFACE_VERSION "STEAMAPPS_INTERFACE_VERSION008" diff --git a/CodeGen/steam/isteamparentalsettings.h b/CodeGen/steam/isteamparentalsettings.h index bf3d0c68..972e355c 100644 --- a/CodeGen/steam/isteamparentalsettings.h +++ b/CodeGen/steam/isteamparentalsettings.h @@ -30,6 +30,7 @@ enum EParentalFeature k_EFeatureTest = 12, k_EFeatureSiteLicense = 13, k_EFeatureKioskMode_Deprecated = 14, + k_EFeatureBlockAlways = 15, k_EFeatureMax }; diff --git a/CodeGen/steam/isteamtimeline.h b/CodeGen/steam/isteamtimeline.h new file mode 100644 index 00000000..800c6bd1 --- /dev/null +++ b/CodeGen/steam/isteamtimeline.h @@ -0,0 +1,118 @@ +//====== Copyright © Valve Corporation, All rights reserved. ======= +// +// Purpose: interface to Steam Timeline +// +//============================================================================= + +#ifndef ISTEAMTIMELINE_H +#define ISTEAMTIMELINE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "steam_api_common.h" + +// callbacks +#if defined( VALVE_CALLBACK_PACK_SMALL ) +#pragma pack( push, 4 ) +#elif defined( VALVE_CALLBACK_PACK_LARGE ) +#pragma pack( push, 8 ) +#else +#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx +#endif + +// Controls the color of the timeline bar segments. The value names listed here map to a multiplayer game, where +// the user starts a game (in menus), then joins a multiplayer session that first has a character selection lobby +// then finally the multiplayer session starts. However, you can also map these values to any type of game. In a single +// player game where you visit towns & dungeons, you could set k_ETimelineGameMode_Menus when the player is in a town +// buying items, k_ETimelineGameMode_Staging for when a dungeon is loading and k_ETimelineGameMode_Playing for when +// inside the dungeon fighting monsters. +enum ETimelineGameMode +{ + k_ETimelineGameMode_Invalid = 0, + k_ETimelineGameMode_Playing = 1, + k_ETimelineGameMode_Staging = 2, + k_ETimelineGameMode_Menus = 3, + k_ETimelineGameMode_LoadingScreen = 4, + + k_ETimelineGameMode_Max, // one past the last valid value +}; + +// Used in AddTimelineEvent, where Featured events will be offered before Standard events +enum ETimelineEventClipPriority +{ + k_ETimelineEventClipPriority_Invalid = 0, + k_ETimelineEventClipPriority_None = 1, + k_ETimelineEventClipPriority_Standard = 2, + k_ETimelineEventClipPriority_Featured = 3, +}; + +const uint32 k_unMaxTimelinePriority = 1000; +const float k_flMaxTimelineEventDuration = 600.f; + +//----------------------------------------------------------------------------- +// Purpose: Steam Timeline API +//----------------------------------------------------------------------------- +class ISteamTimeline +{ +public: + + // Sets a description for the current game state in the timeline. These help the user to find specific + // moments in the timeline when saving clips. Setting a new state description replaces any previous + // description. + // + // Examples could include: + // * Where the user is in the world in a single player game + // * Which round is happening in a multiplayer game + // * The current score for a sports game + // + // Parameters: + // - pchDescription: provide a localized string in the language returned by SteamUtils()->GetSteamUILanguage() + // - flTimeDelta: The time offset in seconds to apply to this event. Negative times indicate an + // event that happened in the past. + virtual void SetTimelineStateDescription( const char *pchDescription, float flTimeDelta ) = 0; + virtual void ClearTimelineStateDescription( float flTimeDelta ) = 0; + + // Use this to mark an event on the Timeline. The event can be instantaneous or take some amount of time + // to complete, depending on the value passed in flDurationSeconds + // + // Examples could include: + // * a boss battle + // * a cut scene + // * a large team fight + // * picking up a new weapon or ammunition + // * scoring a goal + // + // Parameters: + // + // - pchIcon: specify the name of the icon uploaded through the Steamworks Partner Site for your title + // or one of the provided icons that start with steam_ + // - pchTitle & pchDescription: provide a localized string in the language returned by + // SteamUtils()->GetSteamUILanguage() + // - unPriority: specify how important this range is compared to other markers provided by the game. + // Ranges with larger priority values will be displayed more prominently in the UI. This value + // may be between 0 and k_unMaxTimelinePriority. + // - flStartOffsetSeconds: The time that this range started relative to now. Negative times + // indicate an event that happened in the past. + // - flDurationSeconds: How long the time range should be in seconds. For instantaneous events, this + // should be 0 + // - ePossibleClip: By setting this parameter to Featured or Standard, the game indicates to Steam that it + // would be appropriate to offer this range as a clip to the user. For instantaneous events, the + // suggested clip will be for a short time before and after the event itself. + virtual void AddTimelineEvent( const char *pchIcon, const char *pchTitle, const char *pchDescription, uint32 unPriority, float flStartOffsetSeconds, float flDurationSeconds, ETimelineEventClipPriority ePossibleClip ) = 0; + + // Changes the color of the timeline bar. See ETimelineGameMode comments for how to use each value + virtual void SetTimelineGameMode( ETimelineGameMode eMode ) = 0; +}; + +#define STEAMTIMELINE_INTERFACE_VERSION "STEAMTIMELINE_INTERFACE_V001" + +// Global interface accessor +inline ISteamTimeline *SteamTimeline(); +STEAM_DEFINE_USER_INTERFACE_ACCESSOR( ISteamTimeline *, SteamTimeline, STEAMTIMELINE_INTERFACE_VERSION ); + + +#pragma pack( pop ) + + +#endif // ISTEAMTIMELINE_H diff --git a/CodeGen/steam/isteamugc.h b/CodeGen/steam/isteamugc.h index 96e9b9d1..40c5947b 100644 --- a/CodeGen/steam/isteamugc.h +++ b/CodeGen/steam/isteamugc.h @@ -194,7 +194,7 @@ struct SteamUGCDetails_t UGCHandle_t m_hFile; // The handle of the primary file UGCHandle_t m_hPreviewFile; // The handle of the preview file char m_pchFileName[k_cchFilenameMax]; // The cloud filename of the primary file - int32 m_nFileSize; // Size of the primary file + int32 m_nFileSize; // Size of the primary file (for legacy items which only support one file). This may not be accurate for non-legacy items which can be greater than 4gb in size. int32 m_nPreviewFileSize; // Size of the preview file char m_rgchURL[k_cchPublishedFileURLMax]; // URL (for a video or a website) // voting information @@ -202,7 +202,8 @@ struct SteamUGCDetails_t uint32 m_unVotesDown; // number of votes down float m_flScore; // calculated score // collection details - uint32 m_unNumChildren; + uint32 m_unNumChildren; + uint64 m_ulTotalFilesSize; // Total size of all files (non-legacy), excluding the preview file }; //----------------------------------------------------------------------------- @@ -248,6 +249,10 @@ class ISteamUGC STEAM_FLAT_NAME( GetQueryFirstUGCKeyValueTag ) virtual bool GetQueryUGCKeyValueTag( UGCQueryHandle_t handle, uint32 index, const char *pchKey, STEAM_OUT_STRING_COUNT(cchValueSize) char *pchValue, uint32 cchValueSize ) = 0; + // Some items can specify that they have a version that is valid for a range of game versions (Steam branch) + virtual uint32 GetNumSupportedGameVersions( UGCQueryHandle_t handle, uint32 index ) = 0; + virtual bool GetSupportedGameVersionData( UGCQueryHandle_t handle, uint32 index, uint32 versionIndex, STEAM_OUT_STRING_COUNT( cchGameBranchSize ) char *pchGameBranchMin, STEAM_OUT_STRING_COUNT( cchGameBranchSize ) char *pchGameBranchMax, uint32 cchGameBranchSize ) = 0; + virtual uint32 GetQueryUGCContentDescriptors( UGCQueryHandle_t handle, uint32 index, EUGCContentDescriptorID *pvecDescriptors, uint32 cMaxEntries ) = 0; // Release the request to free up memory, after retrieving results @@ -267,6 +272,7 @@ class ISteamUGC virtual bool SetReturnPlaytimeStats( UGCQueryHandle_t handle, uint32 unDays ) = 0; virtual bool SetLanguage( UGCQueryHandle_t handle, const char *pchLanguage ) = 0; virtual bool SetAllowCachedResponse( UGCQueryHandle_t handle, uint32 unMaxAgeSeconds ) = 0; + virtual bool SetAdminQuery( UGCUpdateHandle_t handle, bool bAdminQuery ) = 0; // admin queries return hidden items // Options only for querying user UGC virtual bool SetCloudFileNameFilter( UGCQueryHandle_t handle, const char *pMatchCloudFileName ) = 0; @@ -308,6 +314,7 @@ class ISteamUGC virtual bool RemoveItemPreview( UGCUpdateHandle_t handle, uint32 index ) = 0; // remove a preview by index starting at 0 (previews are sorted) virtual bool AddContentDescriptor( UGCUpdateHandle_t handle, EUGCContentDescriptorID descid ) = 0; virtual bool RemoveContentDescriptor( UGCUpdateHandle_t handle, EUGCContentDescriptorID descid ) = 0; + virtual bool SetRequiredGameVersions( UGCUpdateHandle_t handle, const char *pszGameBranchMin, const char *pszGameBranchMax ) = 0; // an empty string for either parameter means that it will match any version on that end of the range. This will only be applied if the actual content has been changed. STEAM_CALL_RESULT( SubmitItemUpdateResult_t ) virtual SteamAPICall_t SubmitItemUpdate( UGCUpdateHandle_t handle, const char *pchChangeNote ) = 0; // commit update process started with StartItemUpdate() @@ -389,7 +396,7 @@ class ISteamUGC virtual uint32 GetUserContentDescriptorPreferences( EUGCContentDescriptorID *pvecDescriptors, uint32 cMaxEntries ) = 0; }; -#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION018" +#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION020" // Global interface accessor inline ISteamUGC *SteamUGC(); @@ -457,6 +464,8 @@ struct ItemInstalled_t enum { k_iCallback = k_iSteamUGCCallbacks + 5 }; AppId_t m_unAppID; PublishedFileId_t m_nPublishedFileId; + UGCHandle_t m_hLegacyContent; + uint64 m_unManifestID; }; diff --git a/CodeGen/steam/isteamvideo.h b/CodeGen/steam/isteamvideo.h index 4832d7b6..cd7b1971 100644 --- a/CodeGen/steam/isteamvideo.h +++ b/CodeGen/steam/isteamvideo.h @@ -21,9 +21,6 @@ #error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx #endif - - - //----------------------------------------------------------------------------- // Purpose: Steam Video API //----------------------------------------------------------------------------- @@ -41,9 +38,11 @@ class ISteamVideo STEAM_CALL_BACK( GetOPFSettingsResult_t ) virtual void GetOPFSettings( AppId_t unVideoAppID ) = 0; virtual bool GetOPFStringForApp( AppId_t unVideoAppID, char *pchBuffer, int32 *pnBufferSize ) = 0; + + }; -#define STEAMVIDEO_INTERFACE_VERSION "STEAMVIDEO_INTERFACE_V002" +#define STEAMVIDEO_INTERFACE_VERSION "STEAMVIDEO_INTERFACE_V007" // Global interface accessor inline ISteamVideo *SteamVideo(); diff --git a/CodeGen/steam/steam_api.h b/CodeGen/steam/steam_api.h index 55d90e46..71d3a8b7 100644 --- a/CodeGen/steam/steam_api.h +++ b/CodeGen/steam/steam_api.h @@ -38,6 +38,7 @@ #include "isteamugc.h" #include "isteamhtmlsurface.h" #include "isteaminventory.h" +#include "isteamtimeline.h" #include "isteamvideo.h" #include "isteamparentalsettings.h" #include "isteaminput.h" @@ -224,115 +225,6 @@ S_API void S_CALLTYPE SteamAPI_ManualDispatch_FreeLastCallback( HSteamPipe hStea /// only call this in a handler for SteamAPICallCompleted_t callback. S_API bool S_CALLTYPE SteamAPI_ManualDispatch_GetAPICallResult( HSteamPipe hSteamPipe, SteamAPICall_t hSteamAPICall, void *pCallback, int cubCallback, int iCallbackExpected, bool *pbFailed ); -//----------------------------------------------------------------------------------------------------------------------------------------------------------// -// -// CSteamAPIContext -// -// Deprecated! This is not necessary any more. Please use the global accessors directly -// -//----------------------------------------------------------------------------------------------------------------------------------------------------------// - -#ifndef STEAM_API_EXPORTS - -inline bool CSteamAPIContext::Init() -{ - m_pSteamClient = ::SteamClient(); - if ( !m_pSteamClient ) - return false; - - m_pSteamUser = ::SteamUser(); - if ( !m_pSteamUser ) - return false; - - m_pSteamFriends = ::SteamFriends(); - if ( !m_pSteamFriends ) - return false; - - m_pSteamUtils = ::SteamUtils(); - if ( !m_pSteamUtils ) - return false; - - m_pSteamMatchmaking = ::SteamMatchmaking(); - if ( !m_pSteamMatchmaking ) - return false; - - m_pSteamGameSearch = ::SteamGameSearch(); - if ( !m_pSteamGameSearch ) - return false; - -#if !defined( IOSALL) // Not yet supported on iOS. - m_pSteamMatchmakingServers = ::SteamMatchmakingServers(); - if ( !m_pSteamMatchmakingServers ) - return false; -#endif - - m_pSteamUserStats = ::SteamUserStats(); - if ( !m_pSteamUserStats ) - return false; - - m_pSteamApps = ::SteamApps(); - if ( !m_pSteamApps ) - return false; - - m_pSteamNetworking = ::SteamNetworking(); - if ( !m_pSteamNetworking ) - return false; - - m_pSteamRemoteStorage = ::SteamRemoteStorage(); - if ( !m_pSteamRemoteStorage ) - return false; - - m_pSteamScreenshots = ::SteamScreenshots(); - if ( !m_pSteamScreenshots ) - return false; - - m_pSteamHTTP = ::SteamHTTP(); - if ( !m_pSteamHTTP ) - return false; - - m_pController = ::SteamController(); - if ( !m_pController ) - return false; - - m_pSteamUGC = ::SteamUGC(); - if ( !m_pSteamUGC ) - return false; - - m_pSteamMusic = ::SteamMusic(); - if ( !m_pSteamMusic ) - return false; - - m_pSteamMusicRemote = ::SteamMusicRemote(); - if ( !m_pSteamMusicRemote ) - return false; - -#if !defined( ANDROID ) && !defined( IOSALL) // Not yet supported on Android or ios. - m_pSteamHTMLSurface = ::SteamHTMLSurface(); - if ( !m_pSteamHTMLSurface ) - return false; -#endif - - m_pSteamInventory = ::SteamInventory(); - if ( !m_pSteamInventory ) - return false; - - m_pSteamVideo = ::SteamVideo(); - if ( !m_pSteamVideo ) - return false; - - m_pSteamParentalSettings = ::SteamParentalSettings(); - if ( !m_pSteamParentalSettings ) - return false; - - m_pSteamInput = ::SteamInput(); - if ( !m_pSteamInput ) - return false; - - return true; -} - -#endif - // Internal implementation of SteamAPI_InitEx. This is done in a way that checks // all of the versions of interfaces from headers being compiled into this code. S_API ESteamAPIInitResult S_CALLTYPE SteamInternal_SteamAPI_Init( const char *pszInternalCheckInterfaceVersions, SteamErrMsg *pOutErrMsg ); diff --git a/CodeGen/steam/steam_api.json b/CodeGen/steam/steam_api.json index 7acd8ffc..dcfde93b 100644 --- a/CodeGen/steam/steam_api.json +++ b/CodeGen/steam/steam_api.json @@ -1265,7 +1265,9 @@ "callback_id": 3405, "fields": [ { "fieldname":"m_unAppID", "fieldtype":"AppId_t" }, - { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" } + { "fieldname":"m_nPublishedFileId", "fieldtype":"PublishedFileId_t" }, + { "fieldname":"m_hLegacyContent", "fieldtype":"UGCHandle_t" }, + { "fieldname":"m_unManifestID", "fieldtype":"uint64" } ], "struct": "ItemInstalled_t" }, @@ -1930,7 +1932,8 @@ { "constname":"k_SteamItemInstanceIDInvalid", "consttype":"SteamItemInstanceID_t", "constval":"( SteamItemInstanceID_t ) ~ 0" }, { "constname":"k_SteamInventoryResultInvalid", "consttype":"SteamInventoryResult_t", "constval":"- 1" }, { "constname":"k_SteamInventoryUpdateHandleInvalid", "consttype":"SteamInventoryUpdateHandle_t", "constval":"0xffffffffffffffffull" }, - { "constname":"k_nMaxTimelineRangeIDLength", "consttype":"int", "constval":"64" }, + { "constname":"k_unMaxTimelinePriority", "consttype":"uint32", "constval":"1000" }, + { "constname":"k_flMaxTimelineEventDuration", "consttype":"float", "constval":"600.f" }, { "constname":"k_HSteamNetConnection_Invalid", "consttype":"HSteamNetConnection", "constval":"0" }, { "constname":"k_HSteamListenSocket_Invalid", "consttype":"HSteamListenSocket", "constval":"0" }, { "constname":"k_HSteamNetPollGroup_Invalid", "consttype":"HSteamNetPollGroup", "constval":"0" }, @@ -2350,6 +2353,17 @@ { "name":"k_EDurationControlOnlineState_OnlineHighPri", "value":"3" } ] }, + { + "enumname": "EBetaBranchFlags", + "values": [ + { "name":"k_EBetaBranch_None", "value":"0" }, + { "name":"k_EBetaBranch_Default", "value":"1" }, + { "name":"k_EBetaBranch_Available", "value":"2" }, + { "name":"k_EBetaBranch_Private", "value":"4" }, + { "name":"k_EBetaBranch_Selected", "value":"8" }, + { "name":"k_EBetaBranch_Installed", "value":"16" } + ] + }, { "enumname": "EGameSearchErrorCode_t", "values": [ @@ -4006,6 +4020,15 @@ { "name":"k_ETimelineGameMode_Max", "value":"5" } ] }, + { + "enumname": "ETimelineEventClipPriority", + "values": [ + { "name":"k_ETimelineEventClipPriority_Invalid", "value":"0" }, + { "name":"k_ETimelineEventClipPriority_None", "value":"1" }, + { "name":"k_ETimelineEventClipPriority_Standard", "value":"2" }, + { "name":"k_ETimelineEventClipPriority_Featured", "value":"3" } + ] + }, { "enumname": "EParentalFeature", "values": [ @@ -4024,7 +4047,8 @@ { "name":"k_EFeatureTest", "value":"12" }, { "name":"k_EFeatureSiteLicense", "value":"13" }, { "name":"k_EFeatureKioskMode_Deprecated", "value":"14" }, - { "name":"k_EFeatureMax", "value":"15" } + { "name":"k_EFeatureBlockAlways", "value":"15" }, + { "name":"k_EFeatureMax", "value":"16" } ] }, { @@ -4168,6 +4192,7 @@ { "name":"k_ESteamNetworkingConfig_SendRateMax", "value":"11" }, { "name":"k_ESteamNetworkingConfig_NagleTime", "value":"12" }, { "name":"k_ESteamNetworkingConfig_IP_AllowWithoutAuth", "value":"23" }, + { "name":"k_ESteamNetworkingConfig_IPLocalHost_AllowWithoutAuth", "value":"52" }, { "name":"k_ESteamNetworkingConfig_MTU_PacketSize", "value":"32" }, { "name":"k_ESteamNetworkingConfig_MTU_DataSize", "value":"33" }, { "name":"k_ESteamNetworkingConfig_Unencrypted", "value":"34" }, @@ -4554,6 +4579,16 @@ ], "returntype": "ISteamInventory *" }, + { + "methodname": "GetISteamVideo", + "methodname_flat": "SteamAPI_ISteamClient_GetISteamVideo", + "params": [ + { "paramname":"hSteamuser", "paramtype":"HSteamUser" }, + { "paramname":"hSteamPipe", "paramtype":"HSteamPipe" }, + { "paramname":"pchVersion", "paramtype":"const char *" } + ], + "returntype": "ISteamVideo *" + }, { "methodname": "GetISteamParentalSettings", "methodname_flat": "SteamAPI_ISteamClient_GetISteamParentalSettings", @@ -8095,6 +8130,40 @@ { "paramname":"nAppID", "paramtype":"AppId_t" } ], "returntype": "bool" + }, + { + "methodname": "GetNumBetas", + "methodname_flat": "SteamAPI_ISteamApps_GetNumBetas", + "params": [ + { "paramname":"unAppID", "paramtype":"AppId_t" }, + { "paramname":"pnAvailable", "paramtype":"int *" }, + { "paramname":"pnPrivate", "paramtype":"int *" } + ], + "returntype": "int" + }, + { + "methodname": "GetBetaInfo", + "methodname_flat": "SteamAPI_ISteamApps_GetBetaInfo", + "params": [ + { "paramname":"unAppID", "paramtype":"AppId_t" }, + { "paramname":"iBetaIndex", "paramtype":"int" }, + { "paramname":"punFlags", "paramtype":"uint32 *" }, + { "paramname":"punBuildID", "paramtype":"uint32 *" }, + { "paramname":"pchBetaName", "paramtype":"char *" }, + { "paramname":"cchBetaName", "paramtype":"int" }, + { "paramname":"pchDescription", "paramtype":"char *" }, + { "paramname":"cchDescription", "paramtype":"int" } + ], + "returntype": "bool" + }, + { + "methodname": "SetActiveBeta", + "methodname_flat": "SteamAPI_ISteamApps_SetActiveBeta", + "params": [ + { "paramname":"unAppID", "paramtype":"AppId_t" }, + { "paramname":"pchBetaName", "paramtype":"const char *" } + ], + "returntype": "bool" } ], "version_string": "STEAMAPPS_INTERFACE_VERSION008" @@ -9795,12 +9864,12 @@ { "kind": "user", "name": "SteamUGC", - "name_flat": "SteamAPI_SteamUGC_v018" + "name_flat": "SteamAPI_SteamUGC_v020" }, { "kind": "gameserver", "name": "SteamGameServerUGC", - "name_flat": "SteamAPI_SteamGameServerUGC_v018" + "name_flat": "SteamAPI_SteamGameServerUGC_v020" } ], "classname": "ISteamUGC", @@ -10044,6 +10113,36 @@ ], "returntype": "bool" }, + { + "methodname": "GetNumSupportedGameVersions", + "methodname_flat": "SteamAPI_ISteamUGC_GetNumSupportedGameVersions", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" } + ], + "returntype": "uint32" + }, + { + "methodname": "GetSupportedGameVersionData", + "methodname_flat": "SteamAPI_ISteamUGC_GetSupportedGameVersionData", + "params": [ + { "paramname":"handle", "paramtype":"UGCQueryHandle_t" }, + { "paramname":"index", "paramtype":"uint32" }, + { "paramname":"versionIndex", "paramtype":"uint32" }, + { + "out_string_count": "cchGameBranchSize", + "paramname": "pchGameBranchMin", + "paramtype": "char *" + }, + { + "out_string_count": "cchGameBranchSize", + "paramname": "pchGameBranchMax", + "paramtype": "char *" + }, + { "paramname":"cchGameBranchSize", "paramtype":"uint32" } + ], + "returntype": "bool" + }, { "methodname": "GetQueryUGCContentDescriptors", "methodname_flat": "SteamAPI_ISteamUGC_GetQueryUGCContentDescriptors", @@ -10180,6 +10279,15 @@ ], "returntype": "bool" }, + { + "methodname": "SetAdminQuery", + "methodname_flat": "SteamAPI_ISteamUGC_SetAdminQuery", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"bAdminQuery", "paramtype":"bool" } + ], + "returntype": "bool" + }, { "methodname": "SetCloudFileNameFilter", "methodname_flat": "SteamAPI_ISteamUGC_SetCloudFileNameFilter", @@ -10450,6 +10558,16 @@ ], "returntype": "bool" }, + { + "methodname": "SetRequiredGameVersions", + "methodname_flat": "SteamAPI_ISteamUGC_SetRequiredGameVersions", + "params": [ + { "paramname":"handle", "paramtype":"UGCUpdateHandle_t" }, + { "paramname":"pszGameBranchMin", "paramtype":"const char *" }, + { "paramname":"pszGameBranchMax", "paramtype":"const char *" } + ], + "returntype": "bool" + }, { "callresult": "SubmitItemUpdateResult_t", "methodname": "SubmitItemUpdate", @@ -10710,7 +10828,7 @@ "returntype": "uint32" } ], - "version_string": "STEAMUGC_INTERFACE_VERSION018" + "version_string": "STEAMUGC_INTERFACE_VERSION020" }, { "accessors": [ @@ -11628,6 +11746,108 @@ ], "version_string": "STEAMINVENTORY_INTERFACE_V003" }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamTimeline", + "name_flat": "SteamAPI_SteamTimeline_v001" + } + ], + "classname": "ISteamTimeline", + "fields": [], + "methods": [ + { + "methodname": "SetTimelineStateDescription", + "methodname_flat": "SteamAPI_ISteamTimeline_SetTimelineStateDescription", + "params": [ + { "paramname":"pchDescription", "paramtype":"const char *" }, + { "paramname":"flTimeDelta", "paramtype":"float" } + ], + "returntype": "void" + }, + { + "methodname": "ClearTimelineStateDescription", + "methodname_flat": "SteamAPI_ISteamTimeline_ClearTimelineStateDescription", + "params": [ + { "paramname":"flTimeDelta", "paramtype":"float" } + ], + "returntype": "void" + }, + { + "methodname": "AddTimelineEvent", + "methodname_flat": "SteamAPI_ISteamTimeline_AddTimelineEvent", + "params": [ + { "paramname":"pchIcon", "paramtype":"const char *" }, + { "paramname":"pchTitle", "paramtype":"const char *" }, + { "paramname":"pchDescription", "paramtype":"const char *" }, + { "paramname":"unPriority", "paramtype":"uint32" }, + { "paramname":"flStartOffsetSeconds", "paramtype":"float" }, + { "paramname":"flDurationSeconds", "paramtype":"float" }, + { "paramname":"ePossibleClip", "paramtype":"ETimelineEventClipPriority" } + ], + "returntype": "void" + }, + { + "methodname": "SetTimelineGameMode", + "methodname_flat": "SteamAPI_ISteamTimeline_SetTimelineGameMode", + "params": [ + { "paramname":"eMode", "paramtype":"ETimelineGameMode" } + ], + "returntype": "void" + } + ], + "version_string": "STEAMTIMELINE_INTERFACE_V001" + }, + { + "accessors": [ + { + "kind": "user", + "name": "SteamVideo", + "name_flat": "SteamAPI_SteamVideo_v007" + } + ], + "classname": "ISteamVideo", + "fields": [], + "methods": [ + { + "methodname": "GetVideoURL", + "methodname_flat": "SteamAPI_ISteamVideo_GetVideoURL", + "params": [ + { "paramname":"unVideoAppID", "paramtype":"AppId_t" } + ], + "returntype": "void" + }, + { + "methodname": "IsBroadcasting", + "methodname_flat": "SteamAPI_ISteamVideo_IsBroadcasting", + "params": [ + { "paramname":"pnNumViewers", "paramtype":"int *" } + ], + "returntype": "bool" + }, + { + "callback": "GetOPFSettingsResult_t", + "methodname": "GetOPFSettings", + "methodname_flat": "SteamAPI_ISteamVideo_GetOPFSettings", + "params": [ + { "paramname":"unVideoAppID", "paramtype":"AppId_t" } + ], + "returntype": "void" + }, + { + "methodname": "GetOPFStringForApp", + "methodname_flat": "SteamAPI_ISteamVideo_GetOPFStringForApp", + "params": [ + { "paramname":"unVideoAppID", "paramtype":"AppId_t" }, + { "paramname":"pchBuffer", "paramtype":"char *" }, + { "paramname":"pnBufferSize", "paramtype":"int32 *" } + ], + "returntype": "bool" + } + ], + "version_string": "STEAMVIDEO_INTERFACE_V007" + }, { "accessors": [ { @@ -13464,7 +13684,8 @@ { "fieldname":"m_unVotesUp", "fieldtype":"uint32" }, { "fieldname":"m_unVotesDown", "fieldtype":"uint32" }, { "fieldname":"m_flScore", "fieldtype":"float" }, - { "fieldname":"m_unNumChildren", "fieldtype":"uint32" } + { "fieldname":"m_unNumChildren", "fieldtype":"uint32" }, + { "fieldname":"m_ulTotalFilesSize", "fieldtype":"uint64" } ], "struct": "SteamUGCDetails_t" }, diff --git a/CodeGen/steam/steam_api_flat.h b/CodeGen/steam/steam_api_flat.h index a0e7ce43..b948b94a 100644 --- a/CodeGen/steam/steam_api_flat.h +++ b/CodeGen/steam/steam_api_flat.h @@ -512,6 +512,9 @@ S_API int SteamAPI_ISteamApps_GetLaunchCommandLine( ISteamApps* self, char * psz S_API bool SteamAPI_ISteamApps_BIsSubscribedFromFamilySharing( ISteamApps* self ); S_API bool SteamAPI_ISteamApps_BIsTimedTrial( ISteamApps* self, uint32 * punSecondsAllowed, uint32 * punSecondsPlayed ); S_API bool SteamAPI_ISteamApps_SetDlcContext( ISteamApps* self, AppId_t nAppID ); +S_API int SteamAPI_ISteamApps_GetNumBetas( ISteamApps* self, AppId_t unAppID, int * pnAvailable, int * pnPrivate ); +S_API bool SteamAPI_ISteamApps_GetBetaInfo( ISteamApps* self, AppId_t unAppID, int iBetaIndex, uint32 * punFlags, uint32 * punBuildID, char * pchBetaName, int cchBetaName, char * pchDescription, int cchDescription ); +S_API bool SteamAPI_ISteamApps_SetActiveBeta( ISteamApps* self, AppId_t unAppID, const char * pchBetaName ); // ISteamNetworking @@ -754,14 +757,14 @@ S_API bool SteamAPI_ISteamController_GetControllerBindingRevision( ISteamControl // ISteamUGC // A versioned accessor is exported by the library -S_API ISteamUGC *SteamAPI_SteamUGC_v018(); +S_API ISteamUGC *SteamAPI_SteamUGC_v020(); // Inline, unversioned accessor to get the current version. Essentially the same as SteamUGC(), but using this ensures that you are using a matching library. -inline ISteamUGC *SteamAPI_SteamUGC() { return SteamAPI_SteamUGC_v018(); } +inline ISteamUGC *SteamAPI_SteamUGC() { return SteamAPI_SteamUGC_v020(); } // A versioned accessor is exported by the library -S_API ISteamUGC *SteamAPI_SteamGameServerUGC_v018(); +S_API ISteamUGC *SteamAPI_SteamGameServerUGC_v020(); // Inline, unversioned accessor to get the current version. Essentially the same as SteamGameServerUGC(), but using this ensures that you are using a matching library. -inline ISteamUGC *SteamAPI_SteamGameServerUGC() { return SteamAPI_SteamGameServerUGC_v018(); } +inline ISteamUGC *SteamAPI_SteamGameServerUGC() { return SteamAPI_SteamGameServerUGC_v020(); } S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryUserUGCRequest( ISteamUGC* self, AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ); S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestPage( ISteamUGC* self, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint32 unPage ); S_API UGCQueryHandle_t SteamAPI_ISteamUGC_CreateQueryAllUGCRequestCursor( ISteamUGC* self, EUGCQuery eQueryType, EUGCMatchingUGCType eMatchingeMatchingUGCTypeFileType, AppId_t nCreatorAppID, AppId_t nConsumerAppID, const char * pchCursor ); @@ -780,6 +783,8 @@ S_API bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview( ISteamUGC* self, UGC S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index ); S_API bool SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, char * pchKey, uint32 cchKeySize, char * pchValue, uint32 cchValueSize ); S_API bool SteamAPI_ISteamUGC_GetQueryFirstUGCKeyValueTag( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, const char * pchKey, char * pchValue, uint32 cchValueSize ); +S_API uint32 SteamAPI_ISteamUGC_GetNumSupportedGameVersions( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index ); +S_API bool SteamAPI_ISteamUGC_GetSupportedGameVersionData( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, uint32 versionIndex, char * pchGameBranchMin, char * pchGameBranchMax, uint32 cchGameBranchSize ); S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCContentDescriptors( ISteamUGC* self, UGCQueryHandle_t handle, uint32 index, EUGCContentDescriptorID * pvecDescriptors, uint32 cMaxEntries ); S_API bool SteamAPI_ISteamUGC_ReleaseQueryUGCRequest( ISteamUGC* self, UGCQueryHandle_t handle ); S_API bool SteamAPI_ISteamUGC_AddRequiredTag( ISteamUGC* self, UGCQueryHandle_t handle, const char * pTagName ); @@ -795,6 +800,7 @@ S_API bool SteamAPI_ISteamUGC_SetReturnTotalOnly( ISteamUGC* self, UGCQueryHandl S_API bool SteamAPI_ISteamUGC_SetReturnPlaytimeStats( ISteamUGC* self, UGCQueryHandle_t handle, uint32 unDays ); S_API bool SteamAPI_ISteamUGC_SetLanguage( ISteamUGC* self, UGCQueryHandle_t handle, const char * pchLanguage ); S_API bool SteamAPI_ISteamUGC_SetAllowCachedResponse( ISteamUGC* self, UGCQueryHandle_t handle, uint32 unMaxAgeSeconds ); +S_API bool SteamAPI_ISteamUGC_SetAdminQuery( ISteamUGC* self, UGCUpdateHandle_t handle, bool bAdminQuery ); S_API bool SteamAPI_ISteamUGC_SetCloudFileNameFilter( ISteamUGC* self, UGCQueryHandle_t handle, const char * pMatchCloudFileName ); S_API bool SteamAPI_ISteamUGC_SetMatchAnyTag( ISteamUGC* self, UGCQueryHandle_t handle, bool bMatchAnyTag ); S_API bool SteamAPI_ISteamUGC_SetSearchText( ISteamUGC* self, UGCQueryHandle_t handle, const char * pSearchText ); @@ -824,6 +830,7 @@ S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewVideo( ISteamUGC* self, UGCUpdate S_API bool SteamAPI_ISteamUGC_RemoveItemPreview( ISteamUGC* self, UGCUpdateHandle_t handle, uint32 index ); S_API bool SteamAPI_ISteamUGC_AddContentDescriptor( ISteamUGC* self, UGCUpdateHandle_t handle, EUGCContentDescriptorID descid ); S_API bool SteamAPI_ISteamUGC_RemoveContentDescriptor( ISteamUGC* self, UGCUpdateHandle_t handle, EUGCContentDescriptorID descid ); +S_API bool SteamAPI_ISteamUGC_SetRequiredGameVersions( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pszGameBranchMin, const char * pszGameBranchMax ); S_API SteamAPICall_t SteamAPI_ISteamUGC_SubmitItemUpdate( ISteamUGC* self, UGCUpdateHandle_t handle, const char * pchChangeNote ); S_API EItemUpdateStatus SteamAPI_ISteamUGC_GetItemUpdateProgress( ISteamUGC* self, UGCUpdateHandle_t handle, uint64 * punBytesProcessed, uint64 * punBytesTotal ); S_API SteamAPICall_t SteamAPI_ISteamUGC_SetUserItemVote( ISteamUGC* self, PublishedFileId_t nPublishedFileID, bool bVoteUp ); @@ -947,12 +954,23 @@ S_API bool SteamAPI_ISteamInventory_SetPropertyFloat( ISteamInventory* self, Ste S_API bool SteamAPI_ISteamInventory_SubmitUpdateProperties( ISteamInventory* self, SteamInventoryUpdateHandle_t handle, SteamInventoryResult_t * pResultHandle ); S_API bool SteamAPI_ISteamInventory_InspectItem( ISteamInventory* self, SteamInventoryResult_t * pResultHandle, const char * pchItemToken ); +// ISteamTimeline + +// A versioned accessor is exported by the library +S_API ISteamTimeline *SteamAPI_SteamTimeline_v001(); +// Inline, unversioned accessor to get the current version. Essentially the same as SteamTimeline(), but using this ensures that you are using a matching library. +inline ISteamTimeline *SteamAPI_SteamTimeline() { return SteamAPI_SteamTimeline_v001(); } +S_API void SteamAPI_ISteamTimeline_SetTimelineStateDescription( ISteamTimeline* self, const char * pchDescription, float flTimeDelta ); +S_API void SteamAPI_ISteamTimeline_ClearTimelineStateDescription( ISteamTimeline* self, float flTimeDelta ); +S_API void SteamAPI_ISteamTimeline_AddTimelineEvent( ISteamTimeline* self, const char * pchIcon, const char * pchTitle, const char * pchDescription, uint32 unPriority, float flStartOffsetSeconds, float flDurationSeconds, ETimelineEventClipPriority ePossibleClip ); +S_API void SteamAPI_ISteamTimeline_SetTimelineGameMode( ISteamTimeline* self, ETimelineGameMode eMode ); + // ISteamVideo // A versioned accessor is exported by the library -S_API ISteamVideo *SteamAPI_SteamVideo_v002(); +S_API ISteamVideo *SteamAPI_SteamVideo_v007(); // Inline, unversioned accessor to get the current version. Essentially the same as SteamVideo(), but using this ensures that you are using a matching library. -inline ISteamVideo *SteamAPI_SteamVideo() { return SteamAPI_SteamVideo_v002(); } +inline ISteamVideo *SteamAPI_SteamVideo() { return SteamAPI_SteamVideo_v007(); } S_API void SteamAPI_ISteamVideo_GetVideoURL( ISteamVideo* self, AppId_t unVideoAppID ); S_API bool SteamAPI_ISteamVideo_IsBroadcasting( ISteamVideo* self, int * pnNumViewers ); S_API void SteamAPI_ISteamVideo_GetOPFSettings( ISteamVideo* self, AppId_t unVideoAppID ); diff --git a/CodeGen/steam/steam_api_internal.h b/CodeGen/steam/steam_api_internal.h index e3aa18f5..a1a9bed0 100644 --- a/CodeGen/steam/steam_api_internal.h +++ b/CodeGen/steam/steam_api_internal.h @@ -283,6 +283,7 @@ enum { k_iSteamPartiesCallbacks = 5300 }; enum { k_iSteamSTARCallbacks = 5500 }; enum { k_iSteamRemotePlayCallbacks = 5700 }; enum { k_iSteamChatCallbacks = 5900 }; +enum { k_iSteamTimelineCallbacks = 6000 }; // NOTE: Internal "IClientXxx" callback IDs go in clientenums.h // Macros used to annotate various Steamworks interfaces to generate the @@ -307,65 +308,6 @@ enum { k_iSteamChatCallbacks = 5900 }; #define STEAM_CALL_BACK(RESULT_TYPE) STEAM_CLANG_ATTR("callback:" #RESULT_TYPE ";") #define STEAM_FLAT_NAME(NAME) STEAM_CLANG_ATTR("flat_name:" #NAME ";") -// CSteamAPIContext encapsulates the Steamworks API global accessors into -// a single object. -// -// DEPRECATED: Used the global interface accessors instead! -// -// This will be removed in a future iteration of the SDK -class CSteamAPIContext -{ -public: - CSteamAPIContext() { Clear(); } - inline void Clear() { memset( this, 0, sizeof(*this) ); } - inline bool Init(); // NOTE: This is defined in steam_api.h, to avoid this file having to include everything - ISteamClient* SteamClient() const { return m_pSteamClient; } - ISteamUser* SteamUser() const { return m_pSteamUser; } - ISteamFriends* SteamFriends() const { return m_pSteamFriends; } - ISteamUtils* SteamUtils() const { return m_pSteamUtils; } - ISteamMatchmaking* SteamMatchmaking() const { return m_pSteamMatchmaking; } - ISteamGameSearch* SteamGameSearch() const { return m_pSteamGameSearch; } - ISteamUserStats* SteamUserStats() const { return m_pSteamUserStats; } - ISteamApps* SteamApps() const { return m_pSteamApps; } - ISteamMatchmakingServers* SteamMatchmakingServers() const { return m_pSteamMatchmakingServers; } - ISteamNetworking* SteamNetworking() const { return m_pSteamNetworking; } - ISteamRemoteStorage* SteamRemoteStorage() const { return m_pSteamRemoteStorage; } - ISteamScreenshots* SteamScreenshots() const { return m_pSteamScreenshots; } - ISteamHTTP* SteamHTTP() const { return m_pSteamHTTP; } - ISteamController* SteamController() const { return m_pController; } - ISteamUGC* SteamUGC() const { return m_pSteamUGC; } - ISteamMusic* SteamMusic() const { return m_pSteamMusic; } - ISteamMusicRemote* SteamMusicRemote() const { return m_pSteamMusicRemote; } - ISteamHTMLSurface* SteamHTMLSurface() const { return m_pSteamHTMLSurface; } - ISteamInventory* SteamInventory() const { return m_pSteamInventory; } - ISteamVideo* SteamVideo() const { return m_pSteamVideo; } - ISteamParentalSettings* SteamParentalSettings() const { return m_pSteamParentalSettings; } - ISteamInput* SteamInput() const { return m_pSteamInput; } -private: - ISteamClient *m_pSteamClient; - ISteamUser *m_pSteamUser; - ISteamFriends *m_pSteamFriends; - ISteamUtils *m_pSteamUtils; - ISteamMatchmaking *m_pSteamMatchmaking; - ISteamGameSearch *m_pSteamGameSearch; - ISteamUserStats *m_pSteamUserStats; - ISteamApps *m_pSteamApps; - ISteamMatchmakingServers *m_pSteamMatchmakingServers; - ISteamNetworking *m_pSteamNetworking; - ISteamRemoteStorage *m_pSteamRemoteStorage; - ISteamScreenshots *m_pSteamScreenshots; - ISteamHTTP *m_pSteamHTTP; - ISteamController *m_pController; - ISteamUGC *m_pSteamUGC; - ISteamMusic *m_pSteamMusic; - ISteamMusicRemote *m_pSteamMusicRemote; - ISteamHTMLSurface *m_pSteamHTMLSurface; - ISteamInventory *m_pSteamInventory; - ISteamVideo *m_pSteamVideo; - ISteamParentalSettings *m_pSteamParentalSettings; - ISteamInput *m_pSteamInput; -}; - class CSteamGameServerAPIContext { public: diff --git a/CodeGen/steam/steamclientpublic.h b/CodeGen/steam/steamclientpublic.h index 5cf5d4de..2bd66253 100644 --- a/CodeGen/steam/steamclientpublic.h +++ b/CodeGen/steam/steamclientpublic.h @@ -461,6 +461,16 @@ enum EDurationControlOnlineState }; +enum EBetaBranchFlags +{ + k_EBetaBranch_None = 0, + k_EBetaBranch_Default = 1, // this is the default branch ("public") + k_EBetaBranch_Available = 2, // this branch can be selected (available) + k_EBetaBranch_Private = 4, // this is a private branch (password protected) + k_EBetaBranch_Selected = 8, // this is the currently selected branch (active) + k_EBetaBranch_Installed = 16, // this is the currently installed branch (mounted) +}; + #pragma pack( push, 1 ) #define CSTEAMID_DEFINED diff --git a/CodeGen/steam/steamnetworkingtypes.h b/CodeGen/steam/steamnetworkingtypes.h index e8c38dfb..3bd92026 100644 --- a/CodeGen/steam/steamnetworkingtypes.h +++ b/CodeGen/steam/steamnetworkingtypes.h @@ -1247,10 +1247,19 @@ enum ESteamNetworkingConfigValue /// we won't automatically reject a connection due to a failure to authenticate. /// (You can examine the incoming connection and decide whether to accept it.) /// + /// 0: Don't attempt or accept unauthorized connections + /// 1: Attempt authorization when connecting, and allow unauthorized peers, but emit warnings + /// 2: don't attempt authentication, or complain if peer is unauthenticated + /// /// This is a dev configuration value, and you should not let users modify it in /// production. k_ESteamNetworkingConfig_IP_AllowWithoutAuth = 23, + /// [connection int32] The same as IP_AllowWithoutAuth, but will only apply + /// for connections to/from localhost addresses. Whichever value is larger + /// (more permissive) will be used. + k_ESteamNetworkingConfig_IPLocalHost_AllowWithoutAuth = 52, + /// [connection int32] Do not send UDP packets with a payload of /// larger than N bytes. If you set this, k_ESteamNetworkingConfig_MTU_DataSize /// is automatically adjusted diff --git a/README.md b/README.md index 44be79d1..8d4818f7 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ _Steamworks.NET_ is a C# Wrapper for Valve's Steamworks API, it can be used eith _Steamworks.NET_ was designed to be as close as possible to the original C++ API, as such the documentation provided from Valve largely covers usage of _Steamworks.NET_. Niceties and C# Idioms can be easily implemented on top of _Steamworks.NET_. -_Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.59. +_Steamworks.NET_ fully supports Windows (32 and 64 bit), OSX, and Linux. Currently building against Steamworks SDK 1.60. * Author: [Riley Labrecque](https://github.com/rlabrecque) * License: [MIT](https://www.opensource.org/licenses/mit-license.php) diff --git a/com.rlabrecque.steamworks.net/Plugins/libsteam_api.so b/com.rlabrecque.steamworks.net/Plugins/libsteam_api.so index 4a1260ce813d5c4502168de6c58257336170fbd5..99c916479195f540f5e24e42e6b98becbb675383 100644 GIT binary patch literal 384800 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
p(GwW|JKjOPC&{o;R5`YM{) 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 HKQsRi1x=*G literal 383104 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%0AWXVvzid} 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�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 z`eEW9K!q7tCFBundleSignature ???? CFBundleVersion - 1.59 + 1.60 CSResourcesFileMapped yes DTCompiler diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/MacOS/libsteam_api.dylib b/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/MacOS/libsteam_api.dylib index 1897bef428fceb356ae1e9a9a2da83f07b91dc0b..0bbdeeb9c278cd02bd06fe437421a496f3516b7a 100644 GIT binary patch literal 610384 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
e|=ET@LE&YOT< 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 z M7)LZi9684&Y+_zK`fzrg0KyIEfil?&XRh<)KdRY?8bSjE-=hz-wMajcL)7-L= zy}MC()P8s|9^FsBg7C`oDqMSLJS@Pq%Q)66V$@S(xX&)Ei114^l-}`)2^n%JCq1Cr zuZTEQ#hL)!=^~d9u(;}x(j4$`^&wX_(y8P1=4$qJrQb3G#q{yMgjP#l&mvl>=XQ;< zbf$X{oI(8o9*#j+LgM3T{Krl1BYB}HGitawB{81HXLxu*^Mz)+CvMk3L&DqgXGJU{ zofdq$cIDx$chR#H*SFqTkrhjwqZ5-;lPq%SvZ(FcBomU-{i@|$R_$UT*)#_pr!mGw z>q+FhWjw+~eUN0U=5ktXF|F!EF&8x45<8MwwlwP~7H?@j$aY~GbfR^!Uc3&b6}
L&Jr`cxW=FCAF{Vm4Yk7wp}dSV<;KdWjva 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 literal 627088 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≦j+_DjfDkO%v$|7*xq)Za&L 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 delta 88764 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

xrcBd#Q;sR$RAeeK zEi^4Nt>Vp`^`H#5<=M6*hxDTzi@--`qE;63U}77S7K zF?E%?nuWM{!b#MmYHS*p#?4fkr5UgBX!10E%|cCCtTT$|o`|MOb5T>HspSzDMPDt}mS|UL*K5mJ28Fc;d1Ii8h0q1N|&rl(e=^Ex^!KZ zZoDpE=hYSQ5V}gYURSQ$qpRc*^q}sD?gFc$I-M9=67{Kio8Hwhuy`0u7E-c1EtQsI zmQ$7smKw@5$(n5SrCKwrnM?wH-XaNDS6NG~A>Nm)Wa_M99=~dpY{|AhHrb}L*=%lG zmd#_!W1{fdifzkm>uu${wRn-fBYI4#UADV<8^fVxx>$m?Sf< z$g!$&vp@~7YK}T;?{TPj9?NjLonGE&495l;@ncA-x_%5+G55L|LIR8uQAPq4J>E@) z1bBlis;=cZNT%4mngF9-G*-YZv?{Hr+u*)a%8ZU;$PM#ICaNu>KBzuSMNc+s}BZr%;{&l3Q zILTI7voiS2pC5miJ#Wa}8-sTp>X2Ho{EV`scXDCQgkPR)m)&A%s}s+D_TjdcH5)$e znsolv(AkyCxBXh6wFXBvjc@0ho__JY+U@J7*LJ$;vTD%_PfF_#?|Ab|>yy>vU;nGE zuXns*LzlYqbBE7$j9mQHtJV+JgcrR&ZhOJ2b>T&`$D0-{Y})(aXIJhkJ$~(-!55~@ zKia=+)o0Z$59NRU=}6q1ILyW%<8)E)kWLNC)Gat z*t0`F&z;@kkK>m&)>ig;u{2tH^|O|D7r5I`YF_s0s0p8{zJB(mR;%0gT-RUq{G-Dj zzw@T~YdU}3@5k12etmt;#b-{wwqTwk>9<}}zdWhGbN6kpMebX^=F;zyZ-mAA<+r__ zAGu*<*3_T6e?Q};n|B94KlkG&1)W|izx~=bs_CmP-u%=$*Og@*S4P(qJhke$t*pD| zbhRZkxU{vmB>VBRfBdj0VeNtFc*~c|Jx7lk{(L*Hm#yi-GY7gRO>1>Dx9IcXb$yLp zJDhp@^0P^geK;z0%!UzHREM`Wdw6@o$=~lP^SyQWmUf?%*UtFZbg19=4?RAs`{Q;` z*L>v{E6sa9p4PkHfFXaqbtTu5bWiP-{vWA+f9j>-zo@63h`#f1FXg2723>aRPP}kd zw=EQWP5;BIO_u(-uE?xf*nG*K5B3^4%bDnVxZOK}J64bW`tr%_g69-xR*$M2KH_R+ zYN=h-c6+qzP1pRZ}T9-Fpnk59;3OHuSCT!Ntw%RC!w$`NxE_yQKf=HN98T@v9RDr$71Ww-t+b+qYb3 zwBl-N=CqaPI{vt|>Ft~1cDnCB@r`DocICz4u6xd(nbY?hPfp5*su3k}uY|QnQXYTn z*1h=?pAWu0f8Xgl<`vC7(S7e;-`2rbwoi{6I9IiB+nbp~M~&U~$H9^b6V8A9*Ke22 zKYQ;_u#dA~sJi#@ic3Np+>wZ(?eK$#67oQlC+N|f3cP!rA zTKaXv?Q@@xG&%gtUq2@vDHzFdv5 zoAu-6)*t&?j+ee2w&dN)foYb)O0bac+{AD{VULFZ{-&gk@Vxa3ja@oo=}T6<~4 zpHG@jcRO}q=^vL~FWxia^NmM8-Pk1i+SO0nZ}{%vUyqMFv}#1C*RCCXqP|8q{nFy{ z?>{!%)$^GvImw?r)iXKsbj7Ys&5RFp(~n5_`j@#q-BkzmZ}uweP;>8;6Pazpg*7|t zKAW?nXwf^<>b`3-sdeA0`}S|o$Q(KQ{`*Rgj=p2d@pb)1?MVFko0~h_{Y#|dPpQty se?}JQ<7?iV-mmzh^FOIee!uIR!gh_~f2qzMGWV8*dEX8BfbmZHKaHU9QUCw| diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api64.dll b/com.rlabrecque.steamworks.net/Plugins/steam_api64.dll index 6594c50edfbfce685170ca4bdb6e56c058778c7f..9ad453cf6eae264db1b0f2aeded287ebc96afc19 100644 GIT binary patch delta 112599 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 Qb7vXOZXCr=P!;9>0O0+^UjP6A delta 114183 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 z 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 diff --git a/com.rlabrecque.steamworks.net/Runtime/Steam.cs b/com.rlabrecque.steamworks.net/Runtime/Steam.cs index e7cfad57..24af0f43 100644 --- a/com.rlabrecque.steamworks.net/Runtime/Steam.cs +++ b/com.rlabrecque.steamworks.net/Runtime/Steam.cs @@ -347,6 +347,7 @@ internal static void Clear() { m_pSteamNetworkingUtils = IntPtr.Zero; m_pSteamNetworkingSockets = IntPtr.Zero; m_pSteamNetworkingMessages = IntPtr.Zero; + m_pSteamTimeline = IntPtr.Zero; } internal static bool Init() { @@ -437,18 +438,22 @@ internal static bool Init() { using (var pchVersionString = new InteropHelp.UTF8StringHandle(Constants.STEAMNETWORKINGSOCKETS_INTERFACE_VERSION)) { - m_pSteamNetworkingSockets = - NativeMethods.SteamInternal_FindOrCreateUserInterface(hSteamUser, pchVersionString); + m_pSteamNetworkingSockets = NativeMethods.SteamInternal_FindOrCreateUserInterface(hSteamUser, pchVersionString); } if (m_pSteamNetworkingSockets == IntPtr.Zero) { return false; } using (var pchVersionString = new InteropHelp.UTF8StringHandle(Constants.STEAMNETWORKINGMESSAGES_INTERFACE_VERSION)) { - m_pSteamNetworkingMessages = - NativeMethods.SteamInternal_FindOrCreateUserInterface(hSteamUser, pchVersionString); + m_pSteamNetworkingMessages = NativeMethods.SteamInternal_FindOrCreateUserInterface(hSteamUser, pchVersionString); } if (m_pSteamNetworkingMessages == IntPtr.Zero) { return false; } + using (var pchVersionString = new InteropHelp.UTF8StringHandle(Constants.STEAMTIMELINE_INTERFACE_VERSION)) + { + m_pSteamTimeline = NativeMethods.SteamInternal_FindOrCreateUserInterface(hSteamUser, pchVersionString); + } + if (m_pSteamTimeline == IntPtr.Zero) { return false; } + return true; } @@ -479,6 +484,7 @@ internal static bool Init() { internal static IntPtr GetSteamNetworkingUtils() { return m_pSteamNetworkingUtils; } internal static IntPtr GetSteamNetworkingSockets() { return m_pSteamNetworkingSockets; } internal static IntPtr GetSteamNetworkingMessages() { return m_pSteamNetworkingMessages; } + internal static IntPtr GetSteamTimeline() { return m_pSteamTimeline; } private static IntPtr m_pSteamClient; private static IntPtr m_pSteamUser; @@ -507,6 +513,7 @@ internal static bool Init() { private static IntPtr m_pSteamNetworkingUtils; private static IntPtr m_pSteamNetworkingSockets; private static IntPtr m_pSteamNetworkingMessages; + private static IntPtr m_pSteamTimeline; } internal static class CSteamGameServerAPIContext { diff --git a/com.rlabrecque.steamworks.net/Runtime/Version.cs b/com.rlabrecque.steamworks.net/Runtime/Version.cs index 310382f2..07b4ccad 100644 --- a/com.rlabrecque.steamworks.net/Runtime/Version.cs +++ b/com.rlabrecque.steamworks.net/Runtime/Version.cs @@ -14,10 +14,10 @@ namespace Steamworks { public static class Version { public const string SteamworksNETVersion = "20.2.0"; - public const string SteamworksSDKVersion = "1.59"; - public const string SteamAPIDLLVersion = "08.63.11.84"; - public const int SteamAPIDLLSize = 268648; - public const int SteamAPI64DLLSize = 301928; + public const string SteamworksSDKVersion = "1.60"; + public const string SteamAPIDLLVersion = "08.97.99.70"; + public const int SteamAPIDLLSize = 265064; + public const int SteamAPI64DLLSize = 300392; } } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs index e62e9c3a..ca427af7 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs @@ -467,6 +467,17 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamApps_SetDlcContext", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] public static extern bool ISteamApps_SetDlcContext(IntPtr instancePtr, AppId_t nAppID); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamApps_GetNumBetas", CallingConvention = CallingConvention.Cdecl)] + public static extern int ISteamApps_GetNumBetas(IntPtr instancePtr, out int pnAvailable, out int pnPrivate); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamApps_GetBetaInfo", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamApps_GetBetaInfo(IntPtr instancePtr, int iBetaIndex, out uint punFlags, out uint punBuildID, IntPtr pchBetaName, int cchBetaName, IntPtr pchDescription, int cchDescription); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamApps_SetActiveBeta", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamApps_SetActiveBeta(IntPtr instancePtr, InteropHelp.UTF8StringHandle pchBetaName); #endregion #region SteamClient [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamClient_CreateSteamPipe", CallingConvention = CallingConvention.Cdecl)] @@ -2583,6 +2594,19 @@ internal static class NativeMethods { [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamScreenshots_AddVRScreenshotToLibrary", CallingConvention = CallingConvention.Cdecl)] public static extern uint ISteamScreenshots_AddVRScreenshotToLibrary(IntPtr instancePtr, EVRScreenshotType eType, InteropHelp.UTF8StringHandle pchFilename, InteropHelp.UTF8StringHandle pchVRFilename); #endregion +#region SteamTimeline + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamTimeline_SetTimelineStateDescription", CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamTimeline_SetTimelineStateDescription(IntPtr instancePtr, InteropHelp.UTF8StringHandle pchDescription, float flTimeDelta); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamTimeline_ClearTimelineStateDescription", CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamTimeline_ClearTimelineStateDescription(IntPtr instancePtr, float flTimeDelta); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamTimeline_AddTimelineEvent", CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamTimeline_AddTimelineEvent(IntPtr instancePtr, InteropHelp.UTF8StringHandle pchIcon, InteropHelp.UTF8StringHandle pchTitle, InteropHelp.UTF8StringHandle pchDescription, uint unPriority, float flStartOffsetSeconds, float flDurationSeconds, ETimelineEventClipPriority ePossibleClip); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamTimeline_SetTimelineGameMode", CallingConvention = CallingConvention.Cdecl)] + public static extern void ISteamTimeline_SetTimelineGameMode(IntPtr instancePtr, ETimelineGameMode eMode); +#endregion #region SteamUGC [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_CreateQueryUserUGCRequest", CallingConvention = CallingConvention.Cdecl)] public static extern ulong ISteamUGC_CreateQueryUserUGCRequest(IntPtr instancePtr, AccountID_t unAccountID, EUserUGCList eListType, EUGCMatchingUGCType eMatchingUGCType, EUserUGCListSortOrder eSortOrder, AppId_t nCreatorAppID, AppId_t nConsumerAppID, uint unPage); @@ -2648,6 +2672,13 @@ internal static class NativeMethods { [return: MarshalAs(UnmanagedType.I1)] public static extern bool ISteamUGC_GetQueryFirstUGCKeyValueTag(IntPtr instancePtr, UGCQueryHandle_t handle, uint index, InteropHelp.UTF8StringHandle pchKey, IntPtr pchValue, uint cchValueSize); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetNumSupportedGameVersions", CallingConvention = CallingConvention.Cdecl)] + public static extern uint ISteamUGC_GetNumSupportedGameVersions(IntPtr instancePtr, UGCQueryHandle_t handle, uint index); + + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetSupportedGameVersionData", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_GetSupportedGameVersionData(IntPtr instancePtr, UGCQueryHandle_t handle, uint index, uint versionIndex, IntPtr pchGameBranchMin, IntPtr pchGameBranchMax, uint cchGameBranchSize); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCContentDescriptors", CallingConvention = CallingConvention.Cdecl)] public static extern uint ISteamUGC_GetQueryUGCContentDescriptors(IntPtr instancePtr, UGCQueryHandle_t handle, uint index, out EUGCContentDescriptorID pvecDescriptors, uint cMaxEntries); @@ -2707,6 +2738,10 @@ internal static class NativeMethods { [return: MarshalAs(UnmanagedType.I1)] public static extern bool ISteamUGC_SetAllowCachedResponse(IntPtr instancePtr, UGCQueryHandle_t handle, uint unMaxAgeSeconds); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetAdminQuery", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetAdminQuery(IntPtr instancePtr, UGCUpdateHandle_t handle, [MarshalAs(UnmanagedType.I1)] bool bAdminQuery); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetCloudFileNameFilter", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] public static extern bool ISteamUGC_SetCloudFileNameFilter(IntPtr instancePtr, UGCQueryHandle_t handle, InteropHelp.UTF8StringHandle pMatchCloudFileName); @@ -2820,6 +2855,10 @@ internal static class NativeMethods { [return: MarshalAs(UnmanagedType.I1)] public static extern bool ISteamUGC_RemoveContentDescriptor(IntPtr instancePtr, UGCUpdateHandle_t handle, EUGCContentDescriptorID descid); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_SetRequiredGameVersions", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool ISteamUGC_SetRequiredGameVersions(IntPtr instancePtr, UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pszGameBranchMin, InteropHelp.UTF8StringHandle pszGameBranchMax); + [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_SubmitItemUpdate", CallingConvention = CallingConvention.Cdecl)] public static extern ulong ISteamUGC_SubmitItemUpdate(IntPtr instancePtr, UGCUpdateHandle_t handle, InteropHelp.UTF8StringHandle pchChangeNote); diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs index 82793fc7..589a6277 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamCallbacks.cs @@ -2197,6 +2197,8 @@ public struct ItemInstalled_t { public const int k_iCallback = Constants.k_iSteamUGCCallbacks + 5; public AppId_t m_unAppID; public PublishedFileId_t m_nPublishedFileId; + public UGCHandle_t m_hLegacyContent; + public ulong m_unManifestID; } //----------------------------------------------------------------------------- diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs index a0b086d5..81bf4464 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamConstants.cs @@ -43,11 +43,12 @@ public static class Constants { public const string STEAMREMOTEPLAY_INTERFACE_VERSION = "STEAMREMOTEPLAY_INTERFACE_VERSION002"; public const string STEAMREMOTESTORAGE_INTERFACE_VERSION = "STEAMREMOTESTORAGE_INTERFACE_VERSION016"; public const string STEAMSCREENSHOTS_INTERFACE_VERSION = "STEAMSCREENSHOTS_INTERFACE_VERSION003"; - public const string STEAMUGC_INTERFACE_VERSION = "STEAMUGC_INTERFACE_VERSION018"; + public const string STEAMTIMELINE_INTERFACE_VERSION = "STEAMTIMELINE_INTERFACE_V001"; + public const string STEAMUGC_INTERFACE_VERSION = "STEAMUGC_INTERFACE_VERSION020"; public const string STEAMUSER_INTERFACE_VERSION = "SteamUser023"; public const string STEAMUSERSTATS_INTERFACE_VERSION = "STEAMUSERSTATS_INTERFACE_VERSION012"; public const string STEAMUTILS_INTERFACE_VERSION = "SteamUtils010"; - public const string STEAMVIDEO_INTERFACE_VERSION = "STEAMVIDEO_INTERFACE_V002"; + public const string STEAMVIDEO_INTERFACE_VERSION = "STEAMVIDEO_INTERFACE_V007"; public const int k_cubAppProofOfPurchaseKeyMax = 240; // max supported length of a legacy cd key // maximum length of friend group name (not including terminating nul!) public const int k_cchMaxFriendsGroupName = 64; @@ -91,6 +92,8 @@ public static class Constants { // Required with of a thumbnail provided to AddScreenshotToLibrary. If you do not provide a thumbnail // one will be generated. public const int k_ScreenshotThumbWidth = 200; + public const int k_unMaxTimelinePriority = 1000; + public const float k_flMaxTimelineEventDuration = 600.0f; public const int kNumUGCResultsPerPage = 50; public const int k_cchDeveloperMetadataMax = 5000; public const int k_nCubTicketMaxLength = 2560; @@ -156,6 +159,7 @@ public static class Constants { public const int k_iSteamSTARCallbacks = 5500; public const int k_iSteamRemotePlayCallbacks = 5700; public const int k_iSteamChatCallbacks = 5900; + public const int k_iSteamTimelineCallbacks = 6000; /// Pass to SteamGameServer_Init to indicate that the same UDP port will be used for game traffic /// UDP queries for server browser pings and LAN discovery. In this case, Steam will not open up a /// socket to handle server browser queries, and you must use ISteamGameServer::HandleIncomingPacket diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs index d9662864..1ba86f6e 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamEnums.cs @@ -970,6 +970,7 @@ public enum EParentalFeature : int { k_EFeatureTest = 12, k_EFeatureSiteLicense = 13, k_EFeatureKioskMode_Deprecated = 14, + k_EFeatureBlockAlways = 15, k_EFeatureMax } @@ -1104,6 +1105,31 @@ public enum EVRScreenshotType : int { k_EVRScreenshotType_StereoPanorama = 5 } + // callbacks + // Controls the color of the timeline bar segments. The value names listed here map to a multiplayer game, where + // the user starts a game (in menus), then joins a multiplayer session that first has a character selection lobby + // then finally the multiplayer session starts. However, you can also map these values to any type of game. In a single + // player game where you visit towns & dungeons, you could set k_ETimelineGameMode_Menus when the player is in a town + // buying items, k_ETimelineGameMode_Staging for when a dungeon is loading and k_ETimelineGameMode_Playing for when + // inside the dungeon fighting monsters. + public enum ETimelineGameMode : int { + k_ETimelineGameMode_Invalid = 0, + k_ETimelineGameMode_Playing = 1, + k_ETimelineGameMode_Staging = 2, + k_ETimelineGameMode_Menus = 3, + k_ETimelineGameMode_LoadingScreen = 4, + + k_ETimelineGameMode_Max, // one past the last valid value + } + + // Used in AddTimelineEvent, where Featured events will be offered before Standard events + public enum ETimelineEventClipPriority : int { + k_ETimelineEventClipPriority_Invalid = 0, + k_ETimelineEventClipPriority_None = 1, + k_ETimelineEventClipPriority_Standard = 2, + k_ETimelineEventClipPriority_Featured = 3, + } + // Matching UGC types for queries public enum EUGCMatchingUGCType : int { k_EUGCMatchingUGCType_Items = 0, // both mtx items and ready-to-use items @@ -1760,6 +1786,16 @@ public enum EDurationControlOnlineState : int { k_EDurationControlOnlineState_OnlineHighPri = 3, // currently in online play and requests not to be interrupted } + [Flags] + public enum EBetaBranchFlags : int { + k_EBetaBranch_None = 0, + k_EBetaBranch_Default = 1, // this is the default branch ("public") + k_EBetaBranch_Available = 2, // this branch can be selected (available) + k_EBetaBranch_Private = 4, // this is a private branch (password protected) + k_EBetaBranch_Selected = 8, // this is the currently selected branch (active) + k_EBetaBranch_Installed = 16, // this is the currently installed branch (mounted) + } + public enum EGameSearchErrorCode_t : int { k_EGameSearchErrorCode_OK = 1, k_EGameSearchErrorCode_Failed_Search_Already_In_Progress = 2, @@ -2429,10 +2465,19 @@ public enum ESteamNetworkingConfigValue : int { /// we won't automatically reject a connection due to a failure to authenticate. /// (You can examine the incoming connection and decide whether to accept it.) /// + /// 0: Don't attempt or accept unauthorized connections + /// 1: Attempt authorization when connecting, and allow unauthorized peers, but emit warnings + /// 2: don't attempt authentication, or complain if peer is unauthenticated + /// /// This is a dev configuration value, and you should not let users modify it in /// production. k_ESteamNetworkingConfig_IP_AllowWithoutAuth = 23, + /// [connection int32] The same as IP_AllowWithoutAuth, but will only apply + /// for connections to/from localhost addresses. Whichever value is larger + /// (more permissive) will be used. + k_ESteamNetworkingConfig_IPLocalHost_AllowWithoutAuth = 52, + /// [connection int32] Do not send UDP packets with a payload of /// larger than N bytes. If you set this, k_ESteamNetworkingConfig_MTU_DataSize /// is automatically adjusted diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs index ba179e59..651a142d 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/SteamStructs.cs @@ -152,7 +152,7 @@ public string m_pchFileName // The cloud filename of the primary file get { return InteropHelp.ByteArrayToStringUTF8(m_pchFileName_); } set { InteropHelp.StringToByteArrayUTF8(value, m_pchFileName_, Constants.k_cchFilenameMax); } } - public int m_nFileSize; // Size of the primary file + public int m_nFileSize; // Size of the primary file (for legacy items which only support one file). This may not be accurate for non-legacy items which can be greater than 4gb in size. public int m_nPreviewFileSize; // Size of the preview file [MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.k_cchPublishedFileURLMax)] private byte[] m_rgchURL_; @@ -167,6 +167,7 @@ public string m_pchFileName // The cloud filename of the primary file public float m_flScore; // calculated score // collection details public uint m_unNumChildren; + public ulong m_ulTotalFilesSize; // Total size of all files (non-legacy), excluding the preview file } // a single entry in a leaderboard, as returned by GetDownloadedLeaderboardEntry() diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapps.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapps.cs index 9218b8aa..73f3b966 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapps.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamapps.cs @@ -213,7 +213,7 @@ public static int GetAppBuildId() { } ///

- /// Request all proof of purchase keys for the calling appid and asociated DLC. + /// Request all proof of purchase keys for the calling appid and associated DLC. /// A series of AppProofOfPurchaseKeyResponse_t callbacks will be sent with /// appropriate appid values, ending with a final callback where the m_nAppId /// member is k_uAppIdInvalid (zero). @@ -271,6 +271,40 @@ public static bool SetDlcContext(AppId_t nAppID) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_SetDlcContext(CSteamAPIContext.GetSteamApps(), nAppID); } + + /// + /// returns total number of known app beta branches (including default "public" branch ) + /// + public static int GetNumBetas(out int pnAvailable, out int pnPrivate) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamApps_GetNumBetas(CSteamAPIContext.GetSteamApps(), out pnAvailable, out pnPrivate); + } + + /// + /// return beta branch details, name, description, current BuildID and state flags (EBetaBranchFlags) + /// iterate through + /// + public static bool GetBetaInfo(int iBetaIndex, out uint punFlags, out uint punBuildID, out string pchBetaName, int cchBetaName, out string pchDescription, int cchDescription) { + InteropHelp.TestIfAvailableClient(); + IntPtr pchBetaName2 = Marshal.AllocHGlobal(cchBetaName); + IntPtr pchDescription2 = Marshal.AllocHGlobal(cchDescription); + bool ret = NativeMethods.ISteamApps_GetBetaInfo(CSteamAPIContext.GetSteamApps(), iBetaIndex, out punFlags, out punBuildID, pchBetaName2, cchBetaName, pchDescription2, cchDescription); + pchBetaName = ret ? InteropHelp.PtrToStringUTF8(pchBetaName2) : null; + Marshal.FreeHGlobal(pchBetaName2); + pchDescription = ret ? InteropHelp.PtrToStringUTF8(pchDescription2) : null; + Marshal.FreeHGlobal(pchDescription2); + return ret; + } + + /// + /// select this beta branch for this app as active, might need the game to restart so Steam can update to that branch + /// + public static bool SetActiveBeta(string pchBetaName) { + InteropHelp.TestIfAvailableClient(); + using (var pchBetaName2 = new InteropHelp.UTF8StringHandle(pchBetaName)) { + return NativeMethods.ISteamApps_SetActiveBeta(CSteamAPIContext.GetSteamApps(), pchBetaName2); + } + } } } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs index 44dc293d..2acab937 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs @@ -165,6 +165,26 @@ public static bool GetQueryUGCKeyValueTag(UGCQueryHandle_t handle, uint index, s } } + /// + /// Some items can specify that they have a version that is valid for a range of game versions (Steam branch) + /// + public static uint GetNumSupportedGameVersions(UGCQueryHandle_t handle, uint index) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamUGC_GetNumSupportedGameVersions(CSteamGameServerAPIContext.GetSteamUGC(), handle, index); + } + + public static bool GetSupportedGameVersionData(UGCQueryHandle_t handle, uint index, uint versionIndex, out string pchGameBranchMin, out string pchGameBranchMax, uint cchGameBranchSize) { + InteropHelp.TestIfAvailableGameServer(); + IntPtr pchGameBranchMin2 = Marshal.AllocHGlobal((int)cchGameBranchSize); + IntPtr pchGameBranchMax2 = Marshal.AllocHGlobal((int)cchGameBranchSize); + bool ret = NativeMethods.ISteamUGC_GetSupportedGameVersionData(CSteamGameServerAPIContext.GetSteamUGC(), handle, index, versionIndex, pchGameBranchMin2, pchGameBranchMax2, cchGameBranchSize); + pchGameBranchMin = ret ? InteropHelp.PtrToStringUTF8(pchGameBranchMin2) : null; + Marshal.FreeHGlobal(pchGameBranchMin2); + pchGameBranchMax = ret ? InteropHelp.PtrToStringUTF8(pchGameBranchMax2) : null; + Marshal.FreeHGlobal(pchGameBranchMax2); + return ret; + } + public static uint GetQueryUGCContentDescriptors(UGCQueryHandle_t handle, uint index, out EUGCContentDescriptorID pvecDescriptors, uint cMaxEntries) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamUGC_GetQueryUGCContentDescriptors(CSteamGameServerAPIContext.GetSteamUGC(), handle, index, out pvecDescriptors, cMaxEntries); @@ -255,6 +275,14 @@ public static bool SetAllowCachedResponse(UGCQueryHandle_t handle, uint unMaxAge return NativeMethods.ISteamUGC_SetAllowCachedResponse(CSteamGameServerAPIContext.GetSteamUGC(), handle, unMaxAgeSeconds); } + /// + /// admin queries return hidden items + /// + public static bool SetAdminQuery(UGCUpdateHandle_t handle, bool bAdminQuery) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamUGC_SetAdminQuery(CSteamGameServerAPIContext.GetSteamUGC(), handle, bAdminQuery); + } + /// /// Options only for querying user UGC /// @@ -499,6 +527,17 @@ public static bool RemoveContentDescriptor(UGCUpdateHandle_t handle, EUGCContent return NativeMethods.ISteamUGC_RemoveContentDescriptor(CSteamGameServerAPIContext.GetSteamUGC(), handle, descid); } + /// + /// an empty string for either parameter means that it will match any version on that end of the range. This will only be applied if the actual content has been changed. + /// + public static bool SetRequiredGameVersions(UGCUpdateHandle_t handle, string pszGameBranchMin, string pszGameBranchMax) { + InteropHelp.TestIfAvailableGameServer(); + using (var pszGameBranchMin2 = new InteropHelp.UTF8StringHandle(pszGameBranchMin)) + using (var pszGameBranchMax2 = new InteropHelp.UTF8StringHandle(pszGameBranchMax)) { + return NativeMethods.ISteamUGC_SetRequiredGameVersions(CSteamGameServerAPIContext.GetSteamUGC(), handle, pszGameBranchMin2, pszGameBranchMax2); + } + } + /// /// commit update process started with StartItemUpdate() /// diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamtimeline.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamtimeline.cs new file mode 100644 index 00000000..4a69b189 --- /dev/null +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamtimeline.cs @@ -0,0 +1,88 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2022 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +#if !(UNITY_STANDALONE_WIN || UNITY_STANDALONE_LINUX || UNITY_STANDALONE_OSX || STEAMWORKS_WIN || STEAMWORKS_LIN_OSX) + #define DISABLESTEAMWORKS +#endif + +#if !DISABLESTEAMWORKS + +using System.Runtime.InteropServices; +using IntPtr = System.IntPtr; + +namespace Steamworks { + public static class SteamTimeline { + /// + /// Sets a description for the current game state in the timeline. These help the user to find specific + /// moments in the timeline when saving clips. Setting a new state description replaces any previous + /// description. + /// Examples could include: + /// * Where the user is in the world in a single player game + /// * Which round is happening in a multiplayer game + /// * The current score for a sports game + /// Parameters: + /// - pchDescription: provide a localized string in the language returned by SteamUtils()->GetSteamUILanguage() + /// - flTimeDelta: The time offset in seconds to apply to this event. Negative times indicate an + /// event that happened in the past. + /// + public static void SetTimelineStateDescription(string pchDescription, float flTimeDelta) { + InteropHelp.TestIfAvailableClient(); + using (var pchDescription2 = new InteropHelp.UTF8StringHandle(pchDescription)) { + NativeMethods.ISteamTimeline_SetTimelineStateDescription(CSteamAPIContext.GetSteamTimeline(), pchDescription2, flTimeDelta); + } + } + + public static void ClearTimelineStateDescription(float flTimeDelta) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamTimeline_ClearTimelineStateDescription(CSteamAPIContext.GetSteamTimeline(), flTimeDelta); + } + + /// + /// Use this to mark an event on the Timeline. The event can be instantaneous or take some amount of time + /// to complete, depending on the value passed in flDurationSeconds + /// Examples could include: + /// * a boss battle + /// * a cut scene + /// * a large team fight + /// * picking up a new weapon or ammunition + /// * scoring a goal + /// Parameters: + /// - pchIcon: specify the name of the icon uploaded through the Steamworks Partner Site for your title + /// or one of the provided icons that start with steam_ + /// - pchTitle & pchDescription: provide a localized string in the language returned by + /// SteamUtils()->GetSteamUILanguage() + /// - unPriority: specify how important this range is compared to other markers provided by the game. + /// Ranges with larger priority values will be displayed more prominently in the UI. This value + /// may be between 0 and k_unMaxTimelinePriority. + /// - flStartOffsetSeconds: The time that this range started relative to now. Negative times + /// indicate an event that happened in the past. + /// - flDurationSeconds: How long the time range should be in seconds. For instantaneous events, this + /// should be 0 + /// - ePossibleClip: By setting this parameter to Featured or Standard, the game indicates to Steam that it + /// would be appropriate to offer this range as a clip to the user. For instantaneous events, the + /// suggested clip will be for a short time before and after the event itself. + /// + public static void AddTimelineEvent(string pchIcon, string pchTitle, string pchDescription, uint unPriority, float flStartOffsetSeconds, float flDurationSeconds, ETimelineEventClipPriority ePossibleClip) { + InteropHelp.TestIfAvailableClient(); + using (var pchIcon2 = new InteropHelp.UTF8StringHandle(pchIcon)) + using (var pchTitle2 = new InteropHelp.UTF8StringHandle(pchTitle)) + using (var pchDescription2 = new InteropHelp.UTF8StringHandle(pchDescription)) { + NativeMethods.ISteamTimeline_AddTimelineEvent(CSteamAPIContext.GetSteamTimeline(), pchIcon2, pchTitle2, pchDescription2, unPriority, flStartOffsetSeconds, flDurationSeconds, ePossibleClip); + } + } + + /// + /// Changes the color of the timeline bar. See ETimelineGameMode comments for how to use each value + /// + public static void SetTimelineGameMode(ETimelineGameMode eMode) { + InteropHelp.TestIfAvailableClient(); + NativeMethods.ISteamTimeline_SetTimelineGameMode(CSteamAPIContext.GetSteamTimeline(), eMode); + } + } +} + +#endif // !DISABLESTEAMWORKS diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs index 83e7e5a7..309b6792 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs @@ -165,6 +165,26 @@ public static bool GetQueryUGCKeyValueTag(UGCQueryHandle_t handle, uint index, s } } + /// + /// Some items can specify that they have a version that is valid for a range of game versions (Steam branch) + /// + public static uint GetNumSupportedGameVersions(UGCQueryHandle_t handle, uint index) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_GetNumSupportedGameVersions(CSteamAPIContext.GetSteamUGC(), handle, index); + } + + public static bool GetSupportedGameVersionData(UGCQueryHandle_t handle, uint index, uint versionIndex, out string pchGameBranchMin, out string pchGameBranchMax, uint cchGameBranchSize) { + InteropHelp.TestIfAvailableClient(); + IntPtr pchGameBranchMin2 = Marshal.AllocHGlobal((int)cchGameBranchSize); + IntPtr pchGameBranchMax2 = Marshal.AllocHGlobal((int)cchGameBranchSize); + bool ret = NativeMethods.ISteamUGC_GetSupportedGameVersionData(CSteamAPIContext.GetSteamUGC(), handle, index, versionIndex, pchGameBranchMin2, pchGameBranchMax2, cchGameBranchSize); + pchGameBranchMin = ret ? InteropHelp.PtrToStringUTF8(pchGameBranchMin2) : null; + Marshal.FreeHGlobal(pchGameBranchMin2); + pchGameBranchMax = ret ? InteropHelp.PtrToStringUTF8(pchGameBranchMax2) : null; + Marshal.FreeHGlobal(pchGameBranchMax2); + return ret; + } + public static uint GetQueryUGCContentDescriptors(UGCQueryHandle_t handle, uint index, out EUGCContentDescriptorID pvecDescriptors, uint cMaxEntries) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamUGC_GetQueryUGCContentDescriptors(CSteamAPIContext.GetSteamUGC(), handle, index, out pvecDescriptors, cMaxEntries); @@ -255,6 +275,14 @@ public static bool SetAllowCachedResponse(UGCQueryHandle_t handle, uint unMaxAge return NativeMethods.ISteamUGC_SetAllowCachedResponse(CSteamAPIContext.GetSteamUGC(), handle, unMaxAgeSeconds); } + /// + /// admin queries return hidden items + /// + public static bool SetAdminQuery(UGCUpdateHandle_t handle, bool bAdminQuery) { + InteropHelp.TestIfAvailableClient(); + return NativeMethods.ISteamUGC_SetAdminQuery(CSteamAPIContext.GetSteamUGC(), handle, bAdminQuery); + } + /// /// Options only for querying user UGC /// @@ -499,6 +527,17 @@ public static bool RemoveContentDescriptor(UGCUpdateHandle_t handle, EUGCContent return NativeMethods.ISteamUGC_RemoveContentDescriptor(CSteamAPIContext.GetSteamUGC(), handle, descid); } + /// + /// an empty string for either parameter means that it will match any version on that end of the range. This will only be applied if the actual content has been changed. + /// + public static bool SetRequiredGameVersions(UGCUpdateHandle_t handle, string pszGameBranchMin, string pszGameBranchMax) { + InteropHelp.TestIfAvailableClient(); + using (var pszGameBranchMin2 = new InteropHelp.UTF8StringHandle(pszGameBranchMin)) + using (var pszGameBranchMax2 = new InteropHelp.UTF8StringHandle(pszGameBranchMax)) { + return NativeMethods.ISteamUGC_SetRequiredGameVersions(CSteamAPIContext.GetSteamUGC(), handle, pszGameBranchMin2, pszGameBranchMax2); + } + } + /// /// commit update process started with StartItemUpdate() /// From 9d8ea8cf950d6d6a7d57511e4957dc9d16c757e3 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Tue, 2 Jul 2024 13:29:18 -0700 Subject: [PATCH 45/55] Add missing isteamtimeline.cs.meta for Unity --- .../Runtime/autogen/isteamtimeline.cs.meta | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 com.rlabrecque.steamworks.net/Runtime/autogen/isteamtimeline.cs.meta diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamtimeline.cs.meta b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamtimeline.cs.meta new file mode 100644 index 00000000..a1a6d7b5 --- /dev/null +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamtimeline.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 70a54d2f571ae7b4da135870effc5f78 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 2c15a664cd907a5324bfa9dd832ca2ea821895b0 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Fri, 5 Jul 2024 12:51:28 -0700 Subject: [PATCH 46/55] Improve overriding arg attributes --- CodeGen/src/interfaces.py | 57 +++++++++++++++------------------------ 1 file changed, 21 insertions(+), 36 deletions(-) diff --git a/CodeGen/src/interfaces.py b/CodeGen/src/interfaces.py index 9c99efbf..68ac27cb 100644 --- a/CodeGen/src/interfaces.py +++ b/CodeGen/src/interfaces.py @@ -470,36 +470,20 @@ g_FixedAttributeValues = { "ISteamInventory_GetItemsWithPrices": { - "pArrayItemDefs": { - "STEAM_OUT_ARRAY_COUNT": "unArrayLength" - }, - "pCurrentPrices": { - "STEAM_OUT_ARRAY_COUNT": "unArrayLength" - }, - "pBasePrices": { - "STEAM_OUT_ARRAY_COUNT": "unArrayLength" - }, + "pArrayItemDefs": steamworksparser.ArgAttribute("STEAM_OUT_ARRAY_COUNT", "unArrayLength"), + "pCurrentPrices": steamworksparser.ArgAttribute("STEAM_OUT_ARRAY_COUNT", "unArrayLength"), + "pBasePrices": steamworksparser.ArgAttribute("STEAM_OUT_ARRAY_COUNT", "unArrayLength"), }, "ISteamGameServerInventory_GetItemsWithPrices": { - "pArrayItemDefs": { - "STEAM_OUT_ARRAY_COUNT": "unArrayLength" - }, - "pCurrentPrices": { - "STEAM_OUT_ARRAY_COUNT": "unArrayLength" - }, - "pBasePrices": { - "STEAM_OUT_ARRAY_COUNT": "unArrayLength" - }, + "pArrayItemDefs": steamworksparser.ArgAttribute("STEAM_OUT_ARRAY_COUNT", "unArrayLength"), + "pCurrentPrices": steamworksparser.ArgAttribute("STEAM_OUT_ARRAY_COUNT", "unArrayLength"), + "pBasePrices": steamworksparser.ArgAttribute("STEAM_OUT_ARRAY_COUNT", "unArrayLength"), }, "ISteamUGC_GetQueryUGCAdditionalPreview": { - "pchOriginalFileName": { - "STEAM_OUT_STRING_COUNT": "cchOriginalFileNameSize" - }, + "pchOriginalFileName": steamworksparser.ArgAttribute("STEAM_OUT_STRING_COUNT", "cchOriginalFileNameSize"), }, "ISteamGameServerUGC_GetQueryUGCAdditionalPreview": { - "pchOriginalFileName": { - "STEAM_OUT_STRING_COUNT": "cchOriginalFileNameSize" - }, + "pchOriginalFileName": steamworksparser.ArgAttribute("STEAM_OUT_STRING_COUNT", "cchOriginalFileNameSize"), }, } @@ -556,6 +540,8 @@ def main(parser): out.write(bytes("}\n\n", "utf-8")) out.write(bytes("#endif // !DISABLESTEAMWORKS\n", "utf-8")) +def get_arg_attribute(strEntryPoint, arg): + return g_FixedAttributeValues.get(strEntryPoint, dict()).get(arg.name, arg.attribute) def parse(f): if f.name in g_SkippedFiles: @@ -818,18 +804,18 @@ def parse_args(strEntryPoint, args): argtype = "out " + g_TypeDict.get(potentialtype, potentialtype) argtype = g_SpecialArgsDict.get(strEntryPoint, dict()).get(arg.name, argtype) - if arg.attribute: - if arg.attribute.name == "STEAM_OUT_ARRAY" or arg.attribute.name == "STEAM_OUT_ARRAY_CALL" or arg.attribute.name == "STEAM_OUT_ARRAY_COUNT" or arg.attribute.name == "STEAM_ARRAY_COUNT" or arg.attribute.name == "STEAM_ARRAY_COUNT_D": + argattribute = get_arg_attribute(strEntryPoint, arg) + if argattribute: + if argattribute.name == "STEAM_OUT_ARRAY" or argattribute.name == "STEAM_OUT_ARRAY_CALL" or argattribute.name == "STEAM_OUT_ARRAY_COUNT" or argattribute.name == "STEAM_ARRAY_COUNT" or argattribute.name == "STEAM_ARRAY_COUNT_D": potentialtype = arg.type.rstrip("*").rstrip() argtype = g_TypeDict.get(potentialtype, potentialtype) + "[]" - if arg.attribute.name == "STEAM_OUT_ARRAY_COUNT": - fixedattrvalue = g_FixedAttributeValues.get(strEntryPoint, dict()).get(arg.name, dict()).get(arg.attribute.name, arg.attribute.value) - commaindex = fixedattrvalue.find(',') + if argattribute.name == "STEAM_OUT_ARRAY_COUNT": + commaindex = argattribute.value.find(',') if commaindex > 0: - args_with_explicit_count[arg.name] = fixedattrvalue[:commaindex] + args_with_explicit_count[arg.name] = argattribute.value[:commaindex] else: - args_with_explicit_count[arg.name] = fixedattrvalue + args_with_explicit_count[arg.name] = argattribute.value if arg.type == "MatchMakingKeyValuePair_t **": # TODO: Fixme - Small Hack... We do this because MatchMakingKeyValuePair's have ARRAY_COUNT() and two **'s, things get broken :( @@ -893,11 +879,10 @@ def parse_args(strEntryPoint, args): elif wrapperargtype == "out string": outstringargs.append(arg.name) argnames += "2" - if arg.attribute: - if arg.attribute.name == "STEAM_OUT_STRING_COUNT": - fixedattrvalue = g_FixedAttributeValues.get(strEntryPoint, dict()).get(arg.name, dict()).get(arg.attribute.name, arg.attribute.value) - argNamesToAddAsStringSize.append(fixedattrvalue) - if arg.attribute.name == "STEAM_OUT_STRING": + if argattribute: + if argattribute.name == "STEAM_OUT_STRING_COUNT": + argNamesToAddAsStringSize.append(argattribute.value) + if argattribute.name == "STEAM_OUT_STRING": pass else: getNextArgAsStringSize = True From 4c8c590aa246c2283c5c56af884bb0df82f12472 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Fri, 5 Jul 2024 13:29:22 -0700 Subject: [PATCH 47/55] Add STEAM_OUT_ARRAY_COUNT to SteamNetworkingSockets/Messages functions that return ppOutMessages --- CodeGen/src/interfaces.py | 23 ++++++++++++++++--- .../isteamgameservernetworkingsockets.cs | 6 +++++ .../autogen/isteamnetworkingmessages.cs | 3 +++ .../autogen/isteamnetworkingsockets.cs | 6 +++++ 4 files changed, 35 insertions(+), 3 deletions(-) diff --git a/CodeGen/src/interfaces.py b/CodeGen/src/interfaces.py index 68ac27cb..7e52f2c9 100644 --- a/CodeGen/src/interfaces.py +++ b/CodeGen/src/interfaces.py @@ -77,7 +77,7 @@ "const SteamNetworkingIdentity *": "ref SteamNetworkingIdentity", "SteamNetworkingErrMsg &": "out SteamNetworkingErrMsg", "const SteamNetConnectionInfo_t &": "ref SteamNetConnectionInfo_t", - "SteamNetworkingMessage_t **": "IntPtr[]", + "SteamNetworkingMessage_t": "IntPtr", # SteamNetworkingTypes which are stubbed "SteamDatagramGameCoordinatorServerLogin *": "IntPtr", @@ -485,6 +485,24 @@ "ISteamGameServerUGC_GetQueryUGCAdditionalPreview": { "pchOriginalFileName": steamworksparser.ArgAttribute("STEAM_OUT_STRING_COUNT", "cchOriginalFileNameSize"), }, + "ISteamNetworkingMessages_ReceiveMessagesOnChannel": { + "ppOutMessages": steamworksparser.ArgAttribute("STEAM_OUT_ARRAY_COUNT", "nMaxMessages"), + }, + "ISteamNetworkingGameServerMessages_ReceiveMessagesOnChannel": { + "ppOutMessages": steamworksparser.ArgAttribute("STEAM_OUT_ARRAY_COUNT", "nMaxMessages"), + }, + "ISteamNetworkingSockets_ReceiveMessagesOnConnection": { + "ppOutMessages": steamworksparser.ArgAttribute("STEAM_OUT_ARRAY_COUNT", "nMaxMessages"), + }, + "ISteamGameServerNetworkingSockets_ReceiveMessagesOnConnection": { + "ppOutMessages": steamworksparser.ArgAttribute("STEAM_OUT_ARRAY_COUNT", "nMaxMessages"), + }, + "ISteamNetworkingSockets_ReceiveMessagesOnPollGroup": { + "ppOutMessages": steamworksparser.ArgAttribute("STEAM_OUT_ARRAY_COUNT", "nMaxMessages"), + }, + "ISteamGameServerNetworkingSockets_ReceiveMessagesOnPollGroup": { + "ppOutMessages": steamworksparser.ArgAttribute("STEAM_OUT_ARRAY_COUNT", "nMaxMessages"), + }, } g_SpecialOutStringRetCmp = { @@ -798,16 +816,15 @@ def parse_args(strEntryPoint, args): argNamesToAddAsStringSize = [] for arg in args: + potentialtype = arg.type.rstrip("*").lstrip("const ").rstrip() argtype = g_TypeDict.get(arg.type, arg.type) if argtype.endswith("*"): - potentialtype = arg.type.rstrip("*").lstrip("const ").rstrip() argtype = "out " + g_TypeDict.get(potentialtype, potentialtype) argtype = g_SpecialArgsDict.get(strEntryPoint, dict()).get(arg.name, argtype) argattribute = get_arg_attribute(strEntryPoint, arg) if argattribute: if argattribute.name == "STEAM_OUT_ARRAY" or argattribute.name == "STEAM_OUT_ARRAY_CALL" or argattribute.name == "STEAM_OUT_ARRAY_COUNT" or argattribute.name == "STEAM_ARRAY_COUNT" or argattribute.name == "STEAM_ARRAY_COUNT_D": - potentialtype = arg.type.rstrip("*").rstrip() argtype = g_TypeDict.get(potentialtype, potentialtype) + "[]" if argattribute.name == "STEAM_OUT_ARRAY_COUNT": diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs index 50ef387d..224a6358 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs @@ -387,6 +387,9 @@ public static EResult FlushMessagesOnConnection(HSteamNetConnection hConn) { /// public static int ReceiveMessagesOnConnection(HSteamNetConnection hConn, IntPtr[] ppOutMessages, int nMaxMessages) { InteropHelp.TestIfAvailableGameServer(); + if (ppOutMessages != null && ppOutMessages.Length != nMaxMessages) { + throw new System.ArgumentException("ppOutMessages must be the same size as nMaxMessages!"); + } return NativeMethods.ISteamNetworkingSockets_ReceiveMessagesOnConnection(CSteamGameServerAPIContext.GetSteamNetworkingSockets(), hConn, ppOutMessages, nMaxMessages); } @@ -672,6 +675,9 @@ public static bool SetConnectionPollGroup(HSteamNetConnection hConn, HSteamNetPo ///

public static int ReceiveMessagesOnPollGroup(HSteamNetPollGroup hPollGroup, IntPtr[] ppOutMessages, int nMaxMessages) { InteropHelp.TestIfAvailableGameServer(); + if (ppOutMessages != null && ppOutMessages.Length != nMaxMessages) { + throw new System.ArgumentException("ppOutMessages must be the same size as nMaxMessages!"); + } return NativeMethods.ISteamNetworkingSockets_ReceiveMessagesOnPollGroup(CSteamGameServerAPIContext.GetSteamNetworkingSockets(), hPollGroup, ppOutMessages, nMaxMessages); } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingmessages.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingmessages.cs index db8e2c1f..5125d493 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingmessages.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingmessages.cs @@ -75,6 +75,9 @@ public static EResult SendMessageToUser(ref SteamNetworkingIdentity identityRemo ///

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 k`4E({x7C|/ WARNING: Be *very careful* when using the value provided in callbacks structs. /// / Callbacks are queued, and the value that you will receive in your /// / callback is the userdata that was effective at the time the callback - /// / was queued. There are subtle race conditions that can hapen if you + /// / was queued. There are subtle race conditions that can happen if you /// / don't understand this! /// / /// / If any incoming messages for this connection are queued, the userdata @@ -483,10 +483,9 @@ public static bool CreateSocketPair(out HSteamNetConnection pOutConnection1, out /// / lanes may be sent out of order. Each lane has its own message number /// / sequence. The first message sent on each lane will be assigned the number 1. /// / - /// / Each lane has a "priority". Lower priority lanes will only be processed - /// / when all higher-priority lanes are empty. The magnitudes of the priority - /// / values are not relevant, only their sort order. Higher numeric values - /// / take priority over lower numeric values. + /// / Each lane has a "priority". Lanes with higher numeric values will only be processed + /// / when all lanes with lower number values are empty. The magnitudes of the priority + /// / values are not relevant, only their sort order. /// / /// / Each lane also is assigned a weight, which controls the approximate proportion /// / of the bandwidth that will be consumed by the lane, relative to other lanes @@ -997,7 +996,7 @@ public static void RunCallbacks() { /// / different types of traffic. Because these allocations come from a global /// / namespace, there is a relatively strict limit on the maximum number of /// / ports you may request. (At the time of this writing, the limit is 4.) - /// / The Port assignments are *not* guaranteed to have any particular order + /// / The port assignments are *not* guaranteed to have any particular order /// / or relationship! Do *not* assume they are contiguous, even though that /// / may often occur in practice. /// / diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs index 5f6a0986..44dc293d 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs @@ -379,9 +379,9 @@ public static bool SetItemVisibility(UGCUpdateHandle_t handle, ERemoteStoragePub ///

ztZOmY`2DHx9hond%1oU{iS=7 zJYLNnwqrlmrRhKP5YfkY9JDvTVcJK|`_T`i$A`-QoXhpq&H7Yvm-l++qxq#DHxb^W z_1ELs@3}R*#J^AT1IKZ{?9%2pF5`CHr`6-y-B|uXR4+P=4={dDqE~iu{YJv4*nSkBDIE8@xm*fAZW__|4Iw_NU0i)Cbi${#xO&#vgm<%FQt}_g?X*uDr)=9s^f4_STMWYx_S4UP43;F1 zMOir9H|yUu}IhF^}+FT72>r+p|xz=MS!CdTm_!9NR;` zW)E#U5xt?sU0A9izr_4iJ-*ETKgIqZ%|{+1IDYQe#))rod+g=*2)6S0n*D~0<94`H zc|^D#yR~|}?gW-+g0J%@04pacmd+6SxI=T*>337{`H1|I^Tc3Oh_` zarhmauUo6fbK8l&cP!~g+2K5Hj|S^O>F0r6i9W53m%ms*c$em%ui*ZrUyH9?P?V6< z#rCHB+iLEoyqca*T1NCf&A&YY!2}=A2PIN32eN(+T1j~KUQ{mC9`9s7?9%*jCz1<3 zKAvaxGN18m=P|7vy><}M_h|jjg~t)TYYgS9;;#K!evc;qI}l9d8`JvtO}8`ugRS+l z%U*Fk$0nqT@8k_&nI zv~`Wy9G|E3_`HJXdo}<67Wda~?yr?UdG|J=Z)82Fdg5d9Suk7N3-Yo z*ATu(tCy=&gpXGJj2 zgR-m7?jpRG{hQMNu44(`rP+VgWWx7r_J1G8fj%v+IDQY#SBu9EV12qZeYQSH<@NAB z996C(*iQO2zx^}ovs=^WSJzU$9*&h8+pD+(f@QS;SH7(-I+WtV*i=e{O6o`M4!^^D$M;(N|WXve2485Zc`o$ftUX0M5?d%81F$r1m30fzcbli^|7BE!}Nm}61`h1 z*QvKKUK@|>$m64at^XZ)Im^R-KKaN2`}b%Za~N8$Z6)MEG9DEB>c1A$&^P zf3@o*!pGRJs{ZcCa;De%&CnAx&)>-N{4j5MESo~~JzBjSIFs-`UZ+s~!W;Jy-pl3cN#)f{iQHN2bi^`1cb z|B>}JrjhdX?Ll~DSD&&yr`et%hCF7opLA({ax9m(QPaZ(Jbvjrj`)AceD-9&(a+;4 zrJwG7SRQS@=z>{<_iE#U<2lah)B5ZEwst>3(LA>kV}Km0n|vybgr$#VhsJKb9Q zI`?drN9#uhBcZ6@*!$$Kd|Y1F2*USpf1&uFJ(uu(TAVQXV#4=peyoT6Ua#i&zB!fX zU6V=AivM}#gzwVYz~8?}AT=Nw7+UTs`o!s81U z`!U6TRDkK(-V{FBLij$-KRm*E_Gx;4{2}Huhvb~jdR`tTypQK|RC_#>>3vK;l<8|8 zCi>J|;)CMIqosG)voWooZDRiu)BI1RhxjyV^LV3K{w_@qKVDAsDJ`y>)lB$)_Is+o`Jr}tLd|q{i>^toze=71s|fGY;)<6S6W+^lm*Ss_6TU}lUk6-5_(rx9#edQ!!uN4pr|RoZ zhcLZ14)x#3{I&UBcPHU}~x z8KgzwY%Z1NJ`r}e+nk6`|qKkVl5h>zQss^1T(cz&E$0(`w-%?3KZx)#*0U;C564S}Hm-^DIJZ$7=l+xZbC2eqkGq@r_Z>?5QT(T` zCw#wVCxh6Jd6pCX&s;B$Fg_I_yxM2@D*IJKYu6v{LHrHPK3`?K@@eHg;trzsY3<_2 z7Q(wY-c#~Fb3F6c;;y&PBzzb94Mo4=GUlVrhn%y3@V#t5%D)9R571{o|9eXb->t3t{Fo$skH){bi|}sEt|s43_>?x@T-8i? zgY87w^R-;Ry(_4GRsZz?`_Gi-Kkr_{`Le%Ke*5KxgpXi*iw8Pbej{X+e*^nxL$j+k?nk<{@$xZgiYwB043s&J z;e3@EQ)_F8-mT?(1lxI9^OLV}+}Oo&qtf%C*AgFte1lmP~6P_1eV{>{AU*g6Xo(~)CG@>^D^VdUGPtHx9Py=c_2;yS4FS9owzJcB}L=Dnaypn*F?T1>w`$c;rbW z6y@#G<~?@idhc3ot@rI}iQc7+%Z}!Gl9VS~oy_@}WTJz7tSpG&${;$IQ{N&HOu{<1~C^_e_U3prF|Ce09bsQ(hv^e=q*eT0w7cyr<}I z=W%PdHV*QgO7v-tTU34BurJ|bn!Vk83gKNEebt48_p+U+c6SHM->b?0D~}`kb|d)} z{g36ur$-y_e>;cqnm?R(I^nyx-&gT`JL9{xc;E?cM{ccLPji3a)8-R4H!y#WTa=u8 zVWL~s3-_}yCwcs}oAH`Id1@r#dwAR}YDgTL>j>}F{J^gd5I$W^`a$!N$7-&ZMos>S zQ#fA@-^p>Bi|tC;!)?onzHv|DukgME;rq2Xa|qi>w^r|6NGR?6^Aaf^lGCw?@V)GB zReAT}xVKS@dv{_#)6Mpy^m!KRKc&Tu%TN&_-;~zA_PB}g-Lt7&V_2NZN16U`!lN6K z$3J;|?dASL+5hKZrq|~GFGX^h?-JrOn2K$bavasK#dX(?BYKb4PESk`zERU>`cT66 zX!DS(?yMCpH@LsK5dsh&?U+a&~-J0+z-p}yuKq}aK*D(K? zq#sp}x3c}a+5T1g{V)5;M$J!t;U+#k+W6(2n+c!R=21Vsk?=9Lx5=#Mb!ReOo7eh< z^%m3g_Uu_i->=ah#qA}gwU^}xkc1ufY4$&KI^k2=c-+nNU1_Z!JZ3+lcWdM2ceq`+ zxm}Fna_z_UWpI6|cADh+GPL$`-s!}@NAttSa69c~y}^CSqo3o1{sh(ImyAE~Ns7-m zXzvHR3W2@QLs}cZZ}zYrxLiukD-I@nzt#`B&Lg~==c$zaj8Jh)6Up;4%X8@AMBl58 zm#^n|uV0Jzw&(uQqqWm+j`zBbwwCup1SFzdjoSF`zT*hr!|g(~-?b+Y-Zz2xD7^n{ z!h5v%`Q7uGk2XKE=PiWqXFFGV=#Mae%?=NSVF)>WJkNmX8hP9{mGEiSKe`EdJUWf= zZp}VjzbAZ3)Bjm_G9PU`HGC!E4eqCuf19#_@Vz`fReHGYF2Z}X@$B%22=AUldfSWT zd~I*$&*K`HnLM5j626<;g(}yl91j?~5g&!WX&%#Sc5=wBgzwVg#tV)je51za{GrT; z{gtYh`pXIL)8gdkxLx#W?c!?oGkuz$nS3ns*W*w2=RKM~{}2sU`X7!rc3}P793Z@* z#TBn`{MN1c`2*OVy=>12r{&@2cGRo2quCsP_G$Auvmc>+yXKMp;RfY#a+2^V&F{U+ zbiqqgaO%WfT*6+VKmhgRA zoO}lBIj!;8p^oTXTHH94+jUH9*PD4hpUPXHNlI1^h2H_1JS1S1@?MQg{ z0IQu3pG^2()|>JJah?bB?qj8Y_*~|%wf7*$$z9A}5GdFw6h! z0_M;2KdL>h=6dYX{6o`uMDJyJ)Hq@j#}&O=Trs7d==*rQp!&y6O9RCel5;CdmZ7u-2W;*ueUQj_ty%)(;~vh zv~ke5(+Qu_`td$4SHD)SWfM7HP5#3;KIzi@|BEmf;ZNKpWG6~Lv+gE*FZ*pJXB+!} z5BvX}xZXE$f0{bRYR{M5$Nas7FJ=1LLkRB~YR&hVa>93O@#+ZHr%Ti4N8Eq)b3H0K z*B!|GIo?ol$OTVOJY#60!cm*Ajjxm-lG)hy84~ zD&JLS5q+=LpI-1J)$d&GIhxxzu6A+!p!oc7J3RMw zL~ro?q?_rl=63DlcCF%y=~obamlo$-#qGt=>bHaaK-W^zry8gG&LlpKT7B(%0pa_& zU8r_C@DjrNrd#V}$_%IQ~EC09I4%2Lh zAd|;9H6CdudNm$ty_EQ;H93bIN%$1^k1F3gx!!%6AMx9T4oZy zk>dnaztx;?59h1!A1x>Pm=+&ya}MLRamo$cFSxXR;r*pV@6z}WqZo6ZT;Kn%<@{y}|TDxPCvM&Gb7E zAEmcD$1{E#D}HSw;kz|IIVeJSgX1N|=es(>`!s*Mem}x{xLqsz@8j~uwDKO$ejuj# zf%6uzJX-v4C&%GkS{y!+{kfs}rDLvQd9=7|9{asU&F?MY`gOOGe!gUV#vdg(lJ*rNfB7OY7G@ttNc0X18CmopiIEOkn=cT~G8LEw1?K zOu~0-_V9_9@Qqr&%~g!o@_h%6LfAv>1G0xM&bOcawny{ZLpdJq)%@E?1n`1SuQu*m z&+XLB`6@qoU?bA?>Cy-nnQ78 zPF-z9rGMI#X;Wqx;n4D?DT(Nmnc^yu3H)Y82NDT?vNIM$6|_XFbE&3H_4`+~hl-&D?}QEE>UapX1TKk4EFOv^ zTl`IJD>8<$|CH%QB8mEr8!fSpWWrE29E~&u4U{?y zDF)L(4lPnUe*fxtAm*n(sGdNx(b5!-CW6Q{o{WZ#6`^ogCPcN1bpDn=D4bR5oM3XU zG!$PbW~$l@dT}C%IgjI;dZki>Te6Fr8$g}N8_*`GA^NmCe$p67-(t=CK5u@ zFe=*bhh3=B0oU9S6X}{^Br`?X!6_2;!$bqgP&8tQT!sBe=_|vbAPicv%^-#CFAB;A zTONzmwk!yW>;mylkz-SP%xGy1qDI7@Kq4p*=90*3sZb`si83&t*XU~KCDDl{+%8%L zCj?0Z;>r5Kb!>T@>q!=%#bh6u##!Iik!+5xHraV?Lf%}|5s8E%t=Xzt6buI;XJtnm ztufgk9mV`$dlco#a6=;1JQ60XspUW+9pPm5p4B<%cjpHp9f5FFC;@A1YV+3$KbFZ% zyNSGO;=)Tf5x{U31lJ^$fR1!E@G^CQL}5ZOL>&u$y4*`eqnrv#^$`>>b#-x>FesB--W%BEqhP;h?t3auSKAK%^y`2BJyMwGr4~ zIP61Xrkk}9czt+ieVxrB!MGo4(%p~UU76PJ58KOSN+ELeFPTPyYk0GaC|j#P zCZ!?Qk)_Q^Yi*%fLVs>!Gu^DH4>ongxiOgV8N;ZO`cmq$Qq=k?g;iI|UfNm-W{b!s z%GyO!TYI#bS)-IqZNj&N`6Rk|bkDN87cL6~!fwgKW~!zmYJxgeNa9gP>GhehZ(lfn9AG#+R*^;q_m zR^NmkDUxW57F(!5youett)6mPcMcWoYH1)Y`v3VNWN8h~jYd~E*h+8A=0@G z^Xuw6;9;dDg*_Vkjma9mV}yv(Lx#f0wPiigi)JGRAoW)t&Jc&E`n(?6fDS# zRO1T=Owpk%yzqPeRi0`4>lw)#Fb?XF?cAfJsHls!wg#IQnj_XMW2BdV%<)s!-^u_o zgs?|AR_+TB%loUUeT%9q%NwdqQI{!ILonWsQSBBdi(||Kn_DazP_?L7ry`4jRRxlP znrIk9HCrn9sCaToG}IJa6l{vd?R>pd4_r#D2r}rYd=*AwV%#suZ8HUx^UW&A(H@J# zKRDAU1`A^tg~Jd7?Xhrh5j5$PU3o{ctsX2h!FRHUG4HV*Q!$i~)^z|*F+`dCrJBS)qM{5F2;8qvqMys795o0o>vEL*Psvk?WsK4uB4LV<8JpUKpVg%OetAsfO#Cpl36^MlQyj`kvn z>jLrCU@^4Zi3?5FVi_aePBY*RX2sOPZWp$+AQXz{Ys=jH7Ouu9KTp9-+zL4p6KMf+ zM&6=Kn7mD5hC$5gJGMsD@uE;un-Ae`P^_Fdl)VyDy$*0DBhH)Kms|Bv_&bsTJn zox);$_=!gPX7oLxDabG|Pnj2Vw2Rh|5FMOYunRQ%;-M(kxH=0d*QVRc&I~m~TZ73q z(Ww;f2-WJlFCI-so1)>`2nP!l@#yL;3jxg8@gz_^Iso%pr#0?ipID7iVk{O!*`qC? zaIh9@uZ~7lff&_>K97z~TyYu0=)W_+RIo*xG>b##X(rhm*Ye2 z9SP}x?jSF$Cq=PxP#;3~hq(q>u{rM6mKsZ)m{$zO3nbyH2sST{gb)W}3xO0e8%mj& zi^aP|Skt$2`57{-Vu=MT^ZK+_rrLG{g7ucoDs~i$=2VnB3d8H+6@es**y)oC^GHUZ_(LYfHD46y3nAQ!N0X23HBRV~)egUu%Tx?rR=H|Eciz;=o~LoaK2acx~7 z(%NA&L{X}eWV}D4HnL=qeMQ<^6gC9dOsYzq@y3tZNJXgChjLySxO^vVT?5x^NYnAlab}I8K_GTs&YG5 z7q-x}hZ2dx+@)=qR%y|1cxLOmGT(B|DPeJewj=qpHMbQ5lM;F>_GUprN-!TNg&)2{7tDT zQGFQ8$eFdDEfgPSloSggzbSv}Ph_9`o6?Io0&N4+{yaxmmGKJo%AI!$1`*QJFh%@r&W+7Y@;D|I@p`biAxb=Rf~@>376q|0 zIMF8Drf4vEg!duf_zhy)Br9HETGmQrvPEY}sD@~PE?G~>|9^Yd8HUB`Yf(oyn3df0 zFMl*El?^+zvj6h%M#nDb=0+3A zBJ_n7DY+jUD}RMW;I^uI8&Y!~QG^WO-x7+qOVPy!zC7e)HCviVeaCWyWh4{2Qp=+? z6ryF-=4T~lg^=b5J&6sSww;5zhvtjX2TkBs1OrVrE2SnwOhO|>BF^fNw5-@JjGz|KU&_o?cnG{ZJ zF>Z*o22llK2~CdRohYlsVs^AMzm!m!wanIGhBOOWrV$$-FcS&mm^xF>(n^8Bcu+p} zRG19Y&p9e_U{;>!jO6Ua&ZQL`x0F=XPGNcBQd@H;O>?E7foWlW^=;Ugou3STtR5vt z!%m6~7dhR1Zst<=G|4KABtQF1Wl;i|wz91QkLSp`&(7TC%||ZJZdnSsi?(o*>NOZh z6;Wuhl}{}97BDB+yC|{UN{_XGOemI>FwvzRhjUT~sJEb!n73^JWGjW(Y*rp=E=uYn zI-{q?2fUohn42nhOS3f}n692tp(KmvRI2T6`E3I_G|^)D zvo(&*;zgyg51Xx`gLh%y1Q{v=SY>Dib#axMA*Uxd^NTCj?h|cG@f;DJ_=yR-&7Xj} zB~BJ>76}%|nz3QPVQ`@pS&~{(7tWISTM}V4ZdE9_`ZuL*2qg;@(k4grbWQOP9xTXR z$t+mJC831F?(Kp}vA?r`!J%UjF`3wdk${4Lf^}SmPA{SS%!hsNP*lIM-smwKN~9%-be;dMVpJc9>gAxC3sM;sJfus zEqYby^Q%dCHFIsKR7K@#sZbeNG@E@#0X=hN+CENZwKOQwBBU^DF(4?^`ZDra>?Tps zDY*SM23t@*Q*VKJMfL86yg?3XLq1b03P`3?oR`-U<*#!2Sdz#=hF;h_lKa4>Rs9&d zIg!iK2yKd$XfckPnls6ly~~{f?^=;5bV;+sP=%ntMBx5;STdDdTXyCpBHF^dn5qCT zYH8)GTE(Mef~#}35U#wbO-wgfU$?-USu$Ef#zoP|9lk|TT60Dqw^+XSz;?@0Rt$`{ zWQlUxt)*5>0@PwKUTpEji!?CxRi4BI%yMkWa!!Y5bi@`UwD64XoT4p@U~-lqlceZE z*gaQ~<;ymkK{$&Iohz!sMyn_b7#s66X`*2MCfXwFUCbIJ@%VIs25El#0v4I^u&Dj! zn~Xh)1Vs^|lqS0T^zTGLQYkng-m_uiULTEPe{-@8FN)ASu~P~*T)VZxY!Wqu zFy$mZqx?0%6KAtBmos)3$qE}*=Oc#S|Jja^E^iO^z%*RA0Cu=q(7mtcKX9|lDFXQ>G zX-)a4tXW*=EG^|M(9j?r>4W<$^)j05FgaVH7TT&P;{H6fX(8riC%CGj`E!yYvN5Sh zxo){ApD64Z9g}LVl3Fibj3FkEXX%>9Zr6k#&+KLce#-#u&+guzcssp^PC8rMT%^YHi;fKSBR7prB5%V8- zsZ$+R0&V59xCCjr*cTk`6k}JL#bn7_Jo%3~+2)2go>;MEiufJ+kp^Ji+bf+#_O(31 zPnp&+1eQEx-A~O@=f#k@Pd!rg#i;C-fEzzGCoBY-$X7ZA2SK^(9vQn zDEUkO-{!L{?up3>SDXe(fKd1SdsCjp$ znCr*W#|5;`GosV*{D)fJEi%m(B;bX%f{d9?Y@aDYbYWP+17ojvp;Fc+1YyRkib$ar z-bFfk=DUC*wJh?Omzi}QGFS+e%Pu%HRk!epCWRHICa&4)vl}T``Ogomq2_B{Uy&}s z^ujISG4|I>WWG=9ZcXY9UHM3{og zFQ{}#47OsRWPca+xFj0JGX?gyA-aA$t1_BjbXFYSR}Wt532k%aG*y}ROK(XkR20YP zQaQvcUp5tTLyFvLQQtxD@|F2z+meZquz8+Fu!|uzO5cJxVq(odbNZUxp_!SMOiNUL z-g;!kWT_qN)Iy0@>$SAlj2LnysEgv6(VS>6mkwcOhrP8}G8P5G@>T8{yqO~}w}7-j z<6zcAUrd>ZvT&J*PPcIi*UXZ#UCEi5rFbJX&Fkm0EprNl`D%Ajz9b}!IicNiW@fQ+ zQ&fioF}ymFAGY1H+$!+|RJ=TQlbJb3vvgIV=E8cA_EMb6LSZnbP`2qQ&Q;z#mhCd*hS*Aqa7OxYB=%+ z#n9rC2aCEbN-9*2i3H&nUiqAqPpB0^&heOZ;&_#S7~n;7-#=-Sk9eXqNDsmlkqtV* zg>gJcO&db-AVf|)!&yX{O=WRlY@rdGbL3O4uzdN*hi#&&U<=*~SU{2dJ_S6AUWgLK zAri`xbYYEQP1R^i?OZ_`c}29jvsl)GRtzj`b-;W{TZpuj!ty5Kmnj#i5PfRI*OU`8 z2~HvmFmYTISS?IL$YCouHG@jTsv)so8C&md-cuy`vb4pJ3YR81+Gc4Lutr7pqSk!=K1so&K6ob zpGlh5DHmcg0F&$X3IQ>^D_pCvNwX|=gPjcja(oFQ+FF#*X41Sen+XevJSW^4Yr|Me z?nV{%L1K(9=ZltznI*feS@u-bYcMrw^XQ_5x;`Wx zBb^(-hRY`DPwXp6w3O?E7Q!yL*~axyi5q#vVWSef= zMIffzPGN|N#3`;Yk-%c`PkgB)Z%klKK~;+q+xI>uVnJ!?IENv?%>6|% z0-5Ox%VVZ4N*v{T$olO4gS7w|&sJoTVmnD|F3vrriH==Dp57#vxQH$&H<4q9Y$DCm zbDF6NbZjP4Sffqv=G=HiQ_l=Q3iNDQLb126=x2Vmr?~`iB&OP)mQ%(JgL}%yZatX*G3p`ClV0tqyx6T9QFf*qSW1&4uYxm~s zeDv`BiQGs|OM$<}B=BEn`zyC-rqDv;=XTrNeP)gg_T zA9k|)n1xk3>~ak>+eGUcKfJsy+>CGa6p&FYKVnTL_sy;vJFy8HpRE)FfB<&*$Op4> zdKE2APJ#lmAP;QVk~4`#=-)(|k8e#Vo)8cC6-f?C(GD?WQV;h;ZT9P;MtE*6YgjAA zG?bkrP=m1H5MJ}>U^7+<+c)P5)q<>gO;fl7!zu?x@b}m?(Gic}iyxh}RkjtBp)qMB zKVe-o(yFv!6MPHNGEDPXXND-BZDxpatS7&a4R}~JEQ)Pc1sSGdWRS$7fG~R}eoi|% zxtwy75j}pXrkowJl#i^62|+Ph$Ju6?fO*Qdo0La7ovW4Jt6{hJr_>)1uav6jY(SgG zcArkC(uqk`a{FRa5I&rQmjF1(FGy)QF+Zuvd`&iG$CQ0JM0VKqCkjK-i3ir~SfJ+O zNpX`Tvn4^00s`AdKv`Sjeqoc&W>df>1YrTo7bK=fL<7t5z(PLZZ5|0V$<9714+Hkm z4iwUeX&!{09k8PlgK5lGhQmU3Q_b3%77-Ui33JiN>@sI6E{14Dg{f>GITTtWTM@Yy z;Fm+_$TC~rJeo!!a(WZHVi2>UNU<{ zsY%@D-Q9M}WJ2FuF=}1Wi7a#9q4*VI#whc|D$N(x%QvdoDXYFCftPnQE2g$ekX}`F zju@>p*?nF|S`4O_e=8lvf9y=jj^s|Bi@eE#^3#9`c6aBeAwC7kP+4Xg zo6RReD0*7n$qL1sv8t%*#dW!_d?%wYlL!;b-MPosBbs84n}7qtb^!6Di%G9ECa15H ziV4V^os1}(*bggg5)CEu00Yn_E;Lj$krqpbBz9{QCQi6yW>vP&LMY)tm-F0#ES%{Z zsG@)~blW%Ix0_-$-*=j0HPcXB;_z(NWU~crrLIuqu#{@7u^nJRkd5 z5r!5d5&o?RBJn64zK@>2s4~y_2!0AOT-p}QT?sNP1aVU#$v~37d?3KCx}3!?b2hM( zxzTv&c(I=(j1A8CuuDGKL5{r{81@%Q3<+wYO}TE#EW#4JtHu5+Ze}WcED2x6K@G%g zA2T+S`T_}jq6RBUMNx~#lJgcB&7=?wd?6k&T2Y>K`bdUZJm}DA%Z;gVVy8ErcCCk^ z@hW-omC?L1;w5Tmg{}D9Vx-yb&HGyZRlZumSuD{PD0(=OjAsWqn-=~?m z93aT3z+wK)OgyiizBuPJ9yZg8NM3j=rxen)<2B}(fx+i4g=618t1)>qJGJRVrq<{c z6I3fi!;1{<`_?R*458@HbGktXIt19zXzt4dZOFxlIw4;Imgr2N;&R$(HjVt+h>{v# zxv*QvROQ1+R=l8(sI%I#QG-+bmCY9_kcG$dnpMuM5N+bAIczN~lqW z7t%eJkHuGt+M@*s(G_LLoJ(S+%2VSAx)OLMLS*U83$t@=Vm_sSU~)A85t|@8q64L| z`QmT3Lc}Dupsa$Kp=*sNmt(tvvkbicq*CM~#E#bjl8S~ZIR#rn7;<3pFOQ1YaBGTv&G7xF5HaR6VZ2)vCU4|KsLujp)B*H&6`wuLiJR!vrbt;?7X$a;x-LYgxtc% zh({ocAm372$2uE2SxS z?VSR;{%H=S`0`_%BHqX?Dj_SV?2F{|kk(02ZgdA$E-!4Nd?LU{+v8|tO#!UId{Mf!4WAruOUloW=fow%*F>M~ykya{ zn>BJM<)pH-v4TQK((2sEjd-HWN?OtDTO%SV1)gq4q#(BAkalc`x;aF6EKK3>%;E}% zXZaLKhPReXB+Y$3$}W`{!-ltn8XwFO^kNLGtI&>r4Y~w;T5AjP;1ss`NX3dapOoJz z7b=~mOJTYV8|ST5wr}jQrOb^jY{{e~MbcuB086l&bg*SjdTaQG+80~`rH(7aUt`pqtr_F$z%1sOiTnIP87}3T455M4VsHj zNPfeP9%6E?_8-f(NwX-}6vQ_em9PuNw{XQf0CaWOB&Amq6#ZTTm4#ovpWrtpW9bUN zp&*l+$w)G<2(V7@YV}6Xm*X>y*=jStWzVtN3Z&C(O_9^|mGCI)odLBzXXR&7QCTn= z@S!V++q@Y!TVa_r*zJmsDVcJ@I~j`3swi4A2?XV0L!(VQv=J&CO_)9pP=q)lfw>Tc zlc1x>iX^6L?Ka2diU!O1Ey*mo+4;Q!ITe>gxTH*5&x%=$GBOEs1`WBA)r30|ZK^H7 zIc!1A=6aSbNNmx)wYfSqBuf&!UPXQ}7S7&g);_nKNK8xLau+UJ?-nFB8{`%?NNS$G zK<;dNu9(oj+z)MPF<1gOuP@}$PAyh&?8daY*@$WR@(z5j8T9mVg~E0P4O){Ft37gn zKFo~T?y$*~j;B?&Acdt#Zb7;n6W;Q)h#RoCMQEl0liRtEP~{d+OonQS5DsBx2akLg zt_E(Q4N>t;k|0*@=;fYx%)Gets7BkAKAU|Jxw1Q^Ug*mW7mH86g)Pdq0Ol52SdA!% z2+c5&9B;W#6u{2v81^H z7gSwrV&p>u0ZM>|xg}j9Wi65}uJT!1lng7g3gNE=XG2iWbY}}7VzD$J-s8)?bs=)$ zFK$>hp{$WKJ4 zi(?H@u@A72m{6_MkRT3JqQB19M`UUPEBlDgDWPv+o-sfs1*mLi5%jVPc^3MFuPs7y zSs9MgS2}Ars;c1fj#fNMjwi!v@cHjz?5H+DEp=7F_5;!Jz3=Hnp8us{8MTNoQ~5&p z0!mw`|0yIHvi%}r;UcQ>BG2&@ z3`H_F!`7`-rSYK;s20(>Oa`}Q)G(3`^8=&$U@Ft@w;%_&6%%#-p)B#odWKkUmFuo} z0J|A48xWggvd*Gl&!+_wG)Lqww*RtEEqk>hTagG`vSz~BLlMRMR$T^;H-B>(RC?P| z$jq`cv6!cwnzL)obQ{hM%W2IvmSQCm|MF~Rw-RFw#b&>qm8QU8&P0r1%EFvsihjR5 z5{-1W+q{lYBW!8WTak&N0$ITi=FJWB=S^4!$-@PwUcldTgqfalH+8o%oSOFX+;{lXU43PtnkfOaA^yeCW&~|M3lI%f&M4s- z=?>85uNhFwH^(;R4&_bR(FX*qT_ARQe zEN`gJ*}`SwL6ZcFBZ2G$EIvS(Wtv~rN&-CL+C)MWmum%WyAb(Uo1)e^O2e>S&CeEr zXiVl;z?z62^(k@}e{4rXI)4+r?a07^-t@r>=T=D)!QF0=L?-&8B+9Bh&-bnLVsIu~ zPz>qWMM1V84K}aGgR1a3jvyP`iHMHpvhc`7LTq<5p>ze?r?V_&QHWSvLT!4!xJ32h zd!8L)vw1KO=`d}_p#VfJr}~qAyu;c&UoRg9ogWZS;Hb_|EZTq&tsNz|#DmZ_dZLJU zCcHQbF&&pJfR-GlE+1&N_W2qSge^=2PVAfDMhdYjk`g@4emz&LJa;Yf@HD?Z$j}%n zWfVtUo2bLIW&=j+j@m`X5Nb8uZbctRd18AuIzcD^mb!idtx<3>0Cc*^jg3+6d7tL zvI^V4P0wBEIV)1=U*0kgyqsuJsG@1Je9iAvFU+|ZYVa0sg%QqoHA4L&Mc>jS$i-K` zph)ILQcA4^nnQsi*&+-nk{F!He-t(%*)oOmEKDl7u9{vPalsa^Y_7=0p~#DG9uT(( z?~vuY1;k*@^Kp9bl*gvGFhw?xiq52YPe^&7_G5(Wha?zJ!k~)a* zojKYbVh*(?0%~D^)-Td(y09b9<3n=DwK%;Hcgxa8A!1ug5reB%eEEy^C~ypeEs=PF zMAL~qB^r+}8q4t?_QX&h9xdZch`m^`k}pE``&Y*UF@H-uh{vQNhWac1K!N<%`j6h} ztL`N*P*c}o^B-}YWg%~6|Kjl~d~Y_c67t{deUYQ-zTdyb%-Zh{YyainY;r}A#fapq zS`wKI>96&^^>#}ld$*~r9iJ{`Z8YJj@r8Ms;wDW^*`0oB$rqX+?JO{W6!HO?8i7!tl0TuZHTJivbf0yo5lO! z{Ql)=U2sEqv5+6m&DgrsFd7ZRNCCD3;KG$EDVggn-FviQq)P^tj=g86GViH|cf(9y zsnK|9`H;1LoIP*t+LFmPq#DlL_J#Dg<%VlecY4s!v0DWV_cyaIn^R^4=2c7^wAHlg zYOi6Gl#NPlbNGdm{{r4+sp+2O>n<`%)*dl5ZMep#o;RlSc|wDyjvD24dq>5M8`5Jc zOVT5~&kwICF&6D?>@a^j&yfv_YrLg%2X9kf0u}>G_Hr2`x8J79@Xr1Ek58sX?P8z^ zXRRALzRSJAC@DR7ZL0L8vht(H80*W7)Tu+a>pAPd6|=VLANSP<-dXN#sEBT3@b&A4 zx;_~-H&wCgxNWLdehJow*BENlmaS<#b@HkK!_F@;hPn6J`m|A{sk2-Y%N{HpHhxrc z%s!WIf7v&)gBw@vwPENklZ_2y zJtddbm(Lkc;@x>v-CVD?YW-mE+4HQ$b{R(3_<=_C z{DWU=9KC!{qsvH*DjSgQsUE)FbkB&?02Ib$xZG7`rDITMca)VG?sdCeW8CO+Z!9_g z)X@zk1Ik9Zkt*og&Q}&KH@4~??=BfL!YDJ&E_HVsR~TDOe6=LiYz%N6-so~0>n05f zj4@74m5twO#N@Rod)K%pUKl-SfYEDs_8T_LJIcG)z+qdJ7-J^8S`5Qea^~s7{%Cjy zl%L*qe*M}3yNq_9GqfV@9oq2HfYcM0Jzr&PlNz;6N%OSQ%I4MMXQf6~x&D2{U}HdP zKvh|+diwtkZLx+03t`Tj68@Jx-tPRGv?FSj| zz1_yJx)F_KzJb2Jvc<+)pJ9}FCu}J9b&Z2$qerwnQ+Cjzxlcb`Qs(YX{UtqXve#Q$ z_GH7fp`%B;US70(o#8P8Lk4)uV0~pbmAclt_ZoQ1e_a=qH4gUGjTu?x-LO~px{8~} zyNtDlYgnn*a90@T8)c)9qJl_tc?L> z6@$vgyV85_KH?%{=zwD@OU^H=@NC?wES0V{j8SFAcvoqQJLO(`qft?^VL{3q((wsM7jDa?>jced2uQB9_vP#!=C5ESTPTBHBsfxK9N=sAs83Vkop$2Sz zlTk7N1$ixSl~L}k7`pXX(LNdh0YDR=84v`t0n`yv7pC)Ze7yqaFdz;{GESU2_<9x2 zYxueo=Mw-Y0Zs;-0!RVG0h7!er{iipU<2Sxz*&HE0OB|oa2}uwa6UjkE(GFYz$Ji7 z`Q~MOR;SBxafSNB=d1YKjq`PY8vr)~#BmegW_e{8x8QsmU=!dD#);G2e0@L8n*k34 z9%Y<B1=e+^r0TTd|0pgf~ z^L_vi|DVcdac>%~r}O_AIL`ze!2iYlS$usU&IbVw1{}h;!}#pQ8C{c6#s5XR8eG@% z|2mu(nC>mawU7TFfwSnt#IcyqN8x-l;28ejh;sn29MA*^0$KpA0ClXubr=uSAdYi!J`eDFKo{VAfPP%0 z;V#DiO97VyuHbuD@mZw3+H`#luDbznOUCtp8v(Zf#Bn>$cL44L+y%G?a4+CKfH?ku z^Jcyl{~zM(NBI00&X1e!3z{eJ|4GI@h4a&ZX8_MK?vH$afzL1E{4!s^!sl0Uehu(C z;0?yT$>+ClejD&E;C;XcfIfgY{=#Sam;L<=_`mW!5q$g|@D>062cN&@vq<#~U-#qu zE#N!A_kbS&{{#F4_!%IMU&VQVycF(T9s_VL1)zsFwq{%zpSQtzTfW|&&pY7k;_G2J z4+rcB7|A%nbSKj_f*E=2jPovlT>*Ol+yHTm=CimSgKGo=#@>MOfC&I~Ov3eKz`lU} z03N_J!2W>gfEj?90CCLXGyTi{&IbNKz`=mS02P25z+8YhYH_XuECBczM|bG=2*xeK zxdE`$M6=9vEvS#g|DyoMnDD>D^|1iI2^Zk&CKE1*>o!1`aZx_6)3Rnv;AE)F0dcX$2S$ywooX-WE2lzeXRGKdQzYuT{;8MV4fXe|_0n~9d zUtfdswI;l{-);JT9baFM^G$$_fLj5#12zHf1l$cUANQO7Z^rdQfV2ts1YbXm^D}^F z0nah+c|Hq%FW~w`{{J%0ubA%j^7U&tzX5m?@D|`*fI8mC^`8MBFz!Q~KLUKr{{`JA zeEk=kKR4n3j_a>X|G&odH-LTB1=e_uPADl5nF(v>e z0ww__1H`c}&Qti>gY#6tG{F9hn~w7gz)Zkw#vO?BL4ZR5hXKj~6##Y2FY}aV)`kDPN2K%lP_8oR0<^!~cJW^Rav_==`{D|J#BmCrQ+!^F^J#!} zfYTYb9_KRv8vtiB?i`%Y1)K-y0-O)H0AM~Y#Q%!`7XvNzJ3?y_W*wee89Mm_}qu{r+~iz zK4aWp`TRM~e*=60_&eYqfNuc(fPVtM1Bl~$KK~o%9{~Ra{15OGztCr+X0&ZcL44Jh@%JRy8-v{e}UVK>j(J%gE&6~ zcm(h$;BkOB(l|c>cna_|;90;Q0WSi?@iNYT0=xlu8}R+Rdn~*2v8x+Ck51oXYU+Rf z>#lln>s8*sFXuh+{*Rx3|9R`mgZ{T**KhZFbJFIYtKU4j_04}hckn}-BDcOdG35H> znyTw2cK`It=SQ#k==Q%|cV%p!z`lu_PPpOFsXzR%`MqzGFCDRP?rD{GUG?Y5C0|Ur z`Q?cx2U|xU`|z^Y zhg}|e>-q_QJ81QXe?9ld$}dZHOxE1_cIt{}YCipO;e+*~CoNss_1Nj(&RH=qF#E3L zhTd1M-edj#Z|$=A=2yR)6)g4pOI{y#?B$Ct-Td(4{*%60+cRz9#ycBo#@s$;(xbog z40~yti>JRe^q;@1Irhq1Zk@7n(w{@$PAi$d?Q_?r57_)e`uAu4`s_Yiul!=on-#DA zdF>s>Eel?~rTZTn=X`z6zXJV}{&m+*^MAMOnq%+#_2ZL2NS%Gveis|petg6`p1`3m ze?9czvyF+nzw>_mNvBM&UO!~__EVdmckTL0a?POsuG@6dR);^+KH2!s+QUqA z{r%I|ycfQ_-96WRGVZ-YUf*fzxfQ>x`SI-MmOZ)RxsAI&Gk(U*b@Qe@_wl=bzIlfS z&i&{1{r{XWX3vki_Zv_-!c}qc;6L1P#rAdo`FcacLxazsyyHVl1|IqTUq+6f`FMBv zcgdIDzI4&$g9;aHsKSbar0U@Y6?EKmNtzA0K$zo8_+d~3K9e}<(ZE$p!vmlE^}8K@_n_;1&Aro?cfWbh%b_pce4sPBIJxbA&OPALzpnXs==;6HPdUFXv}x?9p&z~a(U1Pi z_n3O$xO*nu|4qfbN2AkUAM@_zqsHIz{#j$M**(_(S#Z&Sl}C-gH@4y9=l2_V%RA|r zzr6Ww>5L1eUH)KJb_56L;_N<2~#4J^73JSK9x*deGf_zBBTQjl2Hz$6Zc8@#)tR>mU5_ z=GvQ9zxeT2uPM#@tD7y=icXr4IeLDT|T&V+ZV?_ zJbdB<-<*+rA~xZrvS~wlhVOsm(Bp17?!&jzM|@jbR}x>hTgU#7pR><_E#aYmi49ya zdg;a=|1)~$yZ*Sb_m`grzc*v;Kkpy2-6KaH`oh(tZasL+Bj>(#-h=mE^4!IHes%T* zgFgLr*w;@ya8mc~=d2n&W^3Qh+EM$}zwg$0=M&OG`{ktTb{(Djh``v{KZ} zt&&{thzsh+J>~y?&OMj89Hl;e>+}75e*f=hd^z_#@AI7JY|nYlbCx@N=H61Y>!{yP zl6ljXfSZps@%+5!O6}>zu1ZgBNxn4vg%_KQyXkJTr1)&OyK(ox8;1*ak4On@)a%rq zcYm^+YkaEHxlMCpyUcqe^T{^f*(>Jv+0<{#l+A`;gZxGYG;g(e*z{!=M)mpW{3kyz zs@~Xl|Lw5zou0e;(3_4X*B{=rWab;|jt-g-CxFS5SYFlw$>L7h;j{&_8K5l)Z@qzeX2OTIrad=Mub0=$@8&K`RoFzA>m@g0A z)?;?vj}jkv>VXfJUhllj6}$FwH^22Q>W|;H{qG9 z;g<$JeArY}Vcq;wOO~EL&^PY6z``e+*ZkpJoAzxNy|61~){VC_6ZV#*e!MqeLvitg zRkx+jU9kGw`cI!fad5!(iTk^cT%54rZtKSDCJ$Wp)f2tjOrLV%jrZKYeN(jQvG4jj zFRuFR%U=h!w*)V4GBPdk?n&32b1MSAJ27d%<ZDuQWz9xY{DDOmau?OC`tlFMZ_hd4zBnT6#czr}F8a}@ z<(g3wI+?!SpX__K%Uhlm2fjKn_tl^p z*V=_ituEJV<8vxuM)mBUT}@k_TJK&yuUFp>#|}>ZZNW?R^|78wwP)^oX3NWKnk`u} zTIwEfuHLY<+b56i)bVJav->aB_+a=qJ3gM^Uoh>fp5N#i-FQ1}@7{;Ao7>+r`YqdH zd0@kZoPZu+^U}p$=$eQ{<1ZO7q@jecsF75*%xi0RrAN^eg5>oyD?oG zNrR3&FfX-Z(dFCwPpxjyJAGZS%W&x9YCCs-Q^zuY%Zj&~zv*+~;N*>ChO`Q3w`Tkc z0}sDBHTTkp#JH#Q%WgKC`{3!%j{ZIy73CKd8cUEk~s}>g|4T zOlSW&4oHoeEpl49~B!_S>riLIc8nIWlk2mPUuSX2m`C z_0}7=#@wp7U}anv{WBj_jY_XmHQw>#x?KHBi7k5gJz|J^HT}YoqN!P1-mEw@?t`IU z?mInp+JHR|R6Wq+@(zEg@tl~79k;gVajnYC(Z@UL&px`v?@G<@4E5Z*uT-g2ukD3{ zJtO4z6Gyjw?EH_bUg#b4__|j;TlZ|SJa*>&kb=0rpZ5Q<(!Mz-Q_dyMex&A!k~-T? zf7gjD3?Io$=)IYWu%v zIQ07|>w_29`EcI~{kxCO4~?EYx5|>{)r?CLo85WvM+dF*|W` z+>)t<51c&M-*0mJGuxlC_*{uAdTHL>y2*jh%;~i@ysCZRE4ux+^q0mQx;?nYfmMq~ zRIS?S_NM7G&-9v*w`$y#$|u{m&!16cpK0>DX^DM9&eh!4wn?QquS|b;mc{V++~(0Y zm+e|_NhsX*OwN^=qo>xduxeDZJs~H0g}nO1fZukk=`dqf^pgXNY{}^@+Si=BI=jBf zx1u3Aux9$e3OAqI)v0fXV_mM!$gFx?%3M^Vo}>2Do5pZeM3yvz#A>U28pQ;~NP9Pi+4D&6oO~ z4V_av?#X83-cEY4>H`f6jx}1gZTgg)&x(iloU~`i;L9KO`5=)*U$ew{`>KC-?DrQ`heFq|J9) z@1J=7%Hx}lSD#U#aY+3auCCE-x!qcK_}Mf4jIZ75m)2zN_KH_<+v~HYb1IK_pZUj< z;A+3@Ji2}Ou?E*WUT$#y;+OTetbY50^{wWOdhdsWgF`aU6u$A^P5-8H^w1^!#-5)Y zo^xn=uL*N14*q6YUjD-LihCYw-MZBq69(;j&anU3{)exxs~y{9eERG=ZMOgTLh6>; zKdpIfb<5&uB@4!lo;vnotLYhMy7xG0d1}35hO@%Mx=p?%J4e1b{&b7Xw)>{79z3f_ zz00S1Caqca+@;@Mt+KQ8x}Qgyn@4v&b>!Kk&)rjcJ^kBTD>l?wkvw_zmyPzkd){(B zBBKAKSNr)q7uaFaSLT2|!^d73Gw65|{rPS3=-72c^v^&D)Qh`svk2fBo=IV8tfS1y}UlaPyt*)e?`y zO5dyv+MQ@IFWhxN>K-{~WQYCzYHowbyDRjUyti# ze`n2a%X+{5{(Do+EqAY2*11QUdg;kMDwxJ~>iomki)O}bxG*d3-Rw%^H`TA46m)pR zi4D$&KdJovz$YGWRkA9%>FOV2dq3Z%;>jp^<&&+Kewyuj{amYPl) zI6qkQ)x*orW;csC|NNniV;(A*eYL{pzg2m#>!CS0KV)}1no+c3<>IwP;nNQfJJ4Cu z4QhJnl}PuVR}XY@R6RaF;H`(M*mqX>vGKUtE%UNl$iHoBKf6}k%uC~1wN7|vaP_Ew zpI80-WKb{ThEDAZ_AZM|+0lF1#L+9(jPUddOG_~AwbnztA74Kc$2-B_aZ-!4LH#^DfV`!hWQ(t7ObuL)w56g zHm~>Vh>nM+xmOkUAMTEf?Al_++HJi?fBX8fI*;70a@^CU=Zx>4c21x8@s1CgrF`&2 zlRdXXt{ix$ZqPnModNqQ$Bz53+wLzWd>z+y@z3wK==eg{kNhl2J*RJsiT+~rh1uQf zge|Dj?Zx(AY;OL;p?L$Vf4Si3FNUOf-R|rQyu112(eBL_9NJ{6a%*=)?27nDmhXDw zv!Ro!9{GMj!iZKYYlbd6+ObvRMYczi4~;w2cHO7jPvt#7_TxeIgP-bfwcgfWMkZ&( zEXf$w+q$mm?X*wkH@a2twM$WBQWl+Az3eC3_QZ!qt?oah?zZ9I%z8I>>N}@>SN3W8 zbK)T5+}sadaM!Sod1FXqcE>dn>n+Opd~L52AFY1<;dYniSMtoe_@uF&V{zoEaW@Ba ze7>mR=(P(yIaMnE(j&CW^WkqLANl6d+|kA>OW(-;-X0zH{ZQw_r)nmySjC%^f}>Im}b#=iInAKsyO*q2F59(m_f zmi(1x%i~9%dRiBI;)_-DpFS}vYgMfpOLYfZ1-{+(?#)yB%iA7*^UB`Lh4~Gum!!vb zXcWKbY}&|`yYdD_e0Ba@=BmMWl1Ci6ZCvxjlIy$Pd#z7Kvj3PPo(p>n2`?6n8o04R z`y97Lvx&VStVmY`? zz#roL3k5ugbN)mD-^Fp8fFIy^nt&hT_(B0c%JB>V|ApgO0$#}RYym&P@q7V4#qk0G zmpNW2;6)sl1^fcXZwUAej$P@TwdS7VzpE4-s%9$0G$i zkmHho*W>s=0e^(!@dCb$UyMr>@P?d!s(@eTm*>(1Jc#qB3wTqGX9#$6j%NyZD~@Li zcpHwp1iUTB3j{ojSC zLJhu=;3k5uizqHU z9NZ<~vp9c2Ie4Lfr*r<|a&UGjTQiOpaegCR*1ivJ67ZFrKcpNyQovVn{x|{8;kZq} zb2*+~4xS<4`J6wi9NZ<~KXU$pa_~X{KgRis%faL6g1e^OE^+?Ea&Vh~U+4Vk<=`#> zueemPR|VzZg#uoc^A`)as^_{LWy@ci^BV2uG9>V1( zmV?^_yd&pNF9**M@F>ooRSxbF@Lrt1pd7qV!25Fk;&O2Ia)d^IhH!o(-*;5~UKKY9 z_(;wlQVt#|;Nv-eTse5WfV(o4eaKM)uH*ZGi2`oqFI-O*@GOqo1biyr&rB2WEMCrZ z0nf}=^mU;}Y;fE+=2W)p8UFxGLw6fSW#2#%ZB|tL2adT$NKS z;PG6}4FOlnqwWW*dZNnl=k2QE8C;H0z}0e?1YDILEZ}kUqAxxn0iAxQp*k#tV2N@2^AwSLLdDq}Df`US`I}Ch%u*JWaq0=w)Sm(#ydY3V0#CD2-2s zfSb7dOaV{l{8<8C!1=QU+{SU2fUE76FW{!td|nXnEPC+@pF#mw<;o&XFLUElEZ~J4 zzaikd7$sjF?;o}O)pGg^cswtsQNY!HGzqvWw^SZ09nKF_JrwxUIUX+HYX3%-gG&Og z_HUektNlArz!SOt#0z)`e<^;HfM@Y?s(P)qo2tiC1^zVNZZ-i|+a*oFGdO>`fUE7C zA>gXqOaU+C^~w@(-5fsd_1YRDmPHTGnOmmF$uVfDAQn}C}*o-W{Oxfcp}Jm=34 z@GOpJ3U~;|)q1G?rH-#`fxm#agG<2GcFPy=Le5_x;A(z{1YFIxP{7p}+GPP(`HKbI zq`m;ZtE}H%T5bU^d{XHbqkx;Z-3}CRBgcaUT&+)}fUEvMoPewK871HOS_6!79(N;%^NJdWpU6Yv7gpCRB`9CrzLI>!qIJcP^F?JHaUM9yy# z@Hmb~3U~;|;|1KPmS4ml|K z9>;N;fQN8AL%@w3cL{hg{ooQlg#uo{arUx2;#E7A#c>n8M6bcqRs9ih&L1z}i5#~H zcpS$U3b>Je@CTm^0axu_rhpf`ukhdaPAR8)4~GfCR{_Uy9SC=Oyq`lFT(JO3oIm|| z06xU8gczwS)bQ&Sh<(c%oYJVDVhtXsf_MgV`E*xZ%O9e_t7!PcHFz}*9;v|tG`OU} zaWSg&6Q{vzmZJDw3k_aZgU4&|dK!F`27g$CCu;Ee8hok-e?)`ZG`LBFr)ltp8a!Qt zH`3q>HF#qUo}s~mG4e^i5KY48U%c(w*_s=-|vyqN~i*Wl`%Hi|CL;H@_rJRZnvV{q=#k|!_!}bM{01R2DfPNKn>nigPSyX zlm-vh;N3NNhz9SW!NWCpPYoWa!3Sz^NrQLO;Bgv!um&Hf!Gkq;yasQr!AEKEwi-N9 zgSXJ&Q#JS?4Q|ump&C3*gVX&(^^>l_+o&L(3pIF{2G7vo?KF6%2JfiBvov_P2G7>u zT{O5$gLl^8`5L@|1~1Uyk8AKl8vHR0UZ}zQXmDAB_tW6T8oaLtzoEhVYjE}hF`!BR z2WW7A`r#OS2$xt$`7&zoCp37V29MU@CJp|i1`pQYF&aEXgFmIg!!>xU29MO>y)?L_ z!Q(V|oCbedgAdf;y)}5e2B)@AKch4_F5;Gc5;eH$Lr~;Y4PLdB8~(5cuc5)yG`Myy zPuJiE4gW$7UQ2^#XmIt8F-2!;@Fp7mEDf%B6iQ^a2CuE*cWLk;8a!WvKdZqDG&tR5 zRzHU{_%kYqXQ2jvNQ287{5cI?tihkx;8OBAe|ZX8QcB+LpX-e%341!Mg07@VUwo(I zQ__U!QN-XWEWxMA6GW5C120lfmfbM3bxJNoRB; zqRHj)*ckl~(WF|QL`K&lnpDRV&*&;dlZtub80||mxkjEyM&D`=npDaY!syFHlZ)gr zG5RdgpeC`zfUx|T%JTm&n22%MNd4VXAw=Vh$oKG zZxBtY;E81PD@2oP<_Tf+M54(h^OzVthG=rdJVr(jBbr<=kB-sL5KSi9Q+$W&|1{Ai zq6-=Q1kvPzc?uZam1uIkJT69eB$`|Ujzn z-IZu^@jNa@cO;rzEKe4r+Y(K#o+pFR&50%#&y&vRMnscq=dm&RA)Xqs9*Iz}HM znx;-q@h#T>M8^?b$mm@})0F5bVDvVkY3lU27@b2jxh9@0Mz0~7Tn|qMqdz5@Tog|_ zqdy{=To8|q(eD#Yu7@X)(Q}C=SJo5H=vhRQ%jk&%Emu8`9~z}!iPp)92*x<3g?ReF ze05K286%+Gme%F7wBsyQ%V#li78ySjUQVUYUso!E*MeaF!wEvkc`d z5#_UV;Vci7&r*-GT*0rTms9B**OW>Za29_lqH~ZkjEu@K`jI#sUk3&I!r_YeI>>~l zwU*>e2?}8d4Yf5~%B*swr2i9A#&Ri9qo)5vMisb}qxc2+a@wWvs?sjm z<+FUlS>E9+_cq-k;`oE6o5H2^DnFyXoTX*?ETNpGa``MZILm4LbbdLNF8YU3>D=;J z@;OUJ`79rEmed4sb&0~R?I_DHtT*EIUNb`;aWj5GK;N1-!6LG2uY*Sf{|SYMJH z^`h;kW9%0~F$r9jrxjw-7=B)IOiGvRM`G;PW9%Ne|1tbZvnwfHa<(dJQb7kObRVK5 z`vtiZi?TkkgBX>+iAD>1{Bt?G(BcsTkL$V8m$=#n4wz`szwwX8H=JuXgm+ zn!cLRR}g(Qps$DMD}cU?^i`Feh#S@bBpc6@RW2zsG_VnKE`NgmWyT*iksi(NO7>!D>xIXqtv4!2 zK6%pKyVg1o5XJ@gmlPsPtWMPQHuKFEC}vWdep0ge0dS!ePg$!;4s#>Olh0p3_l|-> z=IQr>&*xb+o%-}lLu5iiYqcJdV?dzf=!t6wJ&o74`9L$Rs5eG`U+g{{Pe_*>l}bz+ z{%qQ5$o=QjU+d}bgT`4^AC2K+0>D#XlN)jC7*pi9zf7*b+kKqTiE82}|mMah0U+WwDd`-P%9YX8LA z@5VZ&8^LTfM0e_GntTCdAjqUkF%ee{Db*k#+VK>YL-~d`Xi!VezCjHnd*2}cBD8># z%L?Gpj@N@RtXpCa1$`Rhi1d$+C^n>G=EVeex5S9)Q{GdI^!5t~Mq^qC{RdHQx!DhR zCV%Dvr%z18c|!_?q8+iOSo?)&hhLBsvDJ|JIm0N6fWz3PuzX_#fQ+IXJ)xYD@G}bx zDHEW3QTC`HzmfvfAj*M|#lFLkN*iZh1lJ<)b|j3Xw*e&hmV2x?uyF0~L&RR130{6nFv{ zVd8^P-6?-y;qSX2#_Va)-XQX?YH^x8#Gf#6EI920TJ>Tl^Zz!YPMxf5fb7ScWR zT2V_2Yov&trldzvQn}Sd>XU9E(T?fCh7AM!3(h7V_lXKWYi&cV6mchMkL2hUDcN5P zA*>d*RnptirGBYv~CfaQ(IeKn})5j8(4 zVnVRBx!nCchFHXQGRKu1k>IhOM$ZH)Jp&tBIv+$wycS|@9%DZ(zrhBtTYjYgNt4F~ z`)Cqq>@~B6r_a&gge{D=cMmDrs?m3{RZNlX2e=*wUh5f$21rH&Yze`aeE1hiJdX^S zq#c*KH~$ooR_l7RkQI29&dYmWHt8PEN;zK5`c@dme>J(Dav5B9E0B3RI2ej{e|d z?Nzi|Fa(n0P1X=J&M83SBieq~(l6S6mGopq2Ecx?_A?SSD4dF-nrvRu*a3qSG0HUQ zf@%mZ#X>PEN7I}fAy4ik3`q1e*@1W1xNytP-PGBuUC6|T$&HCPVf_v^z!YsiCPnN> zauN6Sv-kr(P%O!woAgW3*MrTQbKUbD7?D&IkGUs0^qButnWsj&&0(Tpchx%P=@nrTXsF z_Xd`ypNntkQ~E+w1uk0*F*>W?sYLUzz6Ybin)(w}J)TkKo6Nrsdxa=_z*^<8jy?2E z@Nny|fP+48?uxy^J3Q#tHvkup5A+5Dyun&L=+-~%1@9A&49Lf)Paez4*R8MNO;Obw zRP)KxM*#Fe!q>eeo5q839<9in0lmnpafSs0hTr%rmVa{RQ_Q^%Ac!1N@+|DPW_tY%O8N7>^| zirEO39DQIS_9YpMx{|-?wHHya7u_Sazj}XrftX0cVz)d71;yVo3HBl5m@CCdSZiq0Z?f6lW@pWfRGVy zL;h7Yj0>kV$XHT<*!uDf>{o+j5NFA=A1f&++QjW&^7asQKBaMkezZWU9CV1rg!N<4 zp`c^zO`cI6gV`hORrYB00UnaQ)sM>KAOo97c)0Zs;F~^Bq1xV{i3jualnvNAdE?r9 zgOn#v+?og7`fx9JpLpccf-~glt04p(Z|+Ue)EiXu$yx@J}A>b{}kf)!35IV={O)<+GRP)KxX9J|pxdSUh9|UiyLA(A0f^rwM4(yOS zkZKr~!OW3)P$l%yxCOph9wlnMFILF0<>G-2H&i7&g#WJtQDJ-B5HpqcG4`fMO(m1#G^lM5w|^H z8BzA?R1PS>RmP&fMi0ync+e+LUx#GEX43;7#8vVJ{k%aR9(3!gdcpg|L%`iq;l~g{ zf6$te3%}(Js`=#UgCUXnW1Kf~j2g7-`yeQd#k;W65|{jRLwd*#yKJgtH-nUi||dDMI4MZixCA&1QTu9p0=6iKLD|I{kuR6 zsr2fkyq5MYhxZLKgT2{vd^* zSmC8^aU`|Judpcc_I;#BhLi`%jdAMF19R(7;F~_sj^!o3)XRrU5mlEeKq!PPMg+9y zSw>Y~P2Bc?0YurW`?H6BC1cTlN)NYw1(%ek&!>=Ezl{Tk`^p>4_6FDUAZ(5oyiYs? ztlQ)P8no*xAt(<+3qhBP>QH^dwm(P@^J^%& zeCQ|WQXyt<*k8HcB@lf`v6x?HGtVG7NtI|T4D&tN=R``&>~l?sc!g0Hp7m_Sesem2 z-T>tGd)c_gyr~}w+N~deZ{8Py_`{nhYiuc^_Qez+5MZQ-Jzy`Rsy8BTd%(90to|x{ z=<6$wN9f_!*TaK8dHT*2a_b-C0OHzsgDt(mW<2QDxATJciHCqkIYXYl5<=*UCf*c{ zyg@aeJbfHM>Wg<^Md^d!Ts3IdPeV}t5o_d5!w!dg^Pr@|ZYi~~jg}v>CG3T|nn*hp-_mtY(ouHwM_-3WV{P!E{m-VHH+Aqg| zpkJoa1M?p%ZuMEjjror#%zrFSpQ=1&(gX7!9`wQdMki-F-u_eTse>+vz5jZO?G!q`$fWYvZ|CW2Q^}>&^VT4&CE41@krYU$IrG^14DS3m zqx>e5cRuNavhZ#7I9n&Zn3xnnM{3v&l9IYgju+u&pSRYRAOH(H*%!kTeiReXLlwY$ zXj&iA@>zbq9<8Mn3D(VkBsm69(OU0*g19lpHVtN+gFZtIX&W*`vd094$6(hlG6o^Z z+QHB)Dk#p-EG8)4(5!DzqM_O1ARE{X&6Wqz!raj8^Pmj&To;tZo?i#K@TAk|LOi3f zVQxQ0$5ci_A=nt>#P(ngh70;|E7}DXA2&oc`}sk~qJpZ0aK1pf^&#wxCszQjlV)r$ zz+=GL^X6ZvEgGqWwE;~TV>-)n++>XLzFAVY4Nq#bE6GW`4(NSlzg~?)a<4d zacR;hDRpPki`_%_5z@qtQQunt)ujN#MK$2yLfK(R_ zqF(;o8b_tiMp(X#4ggzm%g%{)1zb?KsI%KcZpd%i2H@g{{L^-3%de!2oDj|As9fY z%Vz$;fB}u`nskOqza$_zUkwUIo8BN@z%VkQ96I@n0^E#vtUaLYN!F1=#|%WFtel z8`TLb(CTEXY9`+(i8gfil$IbR$OOHkkL1L)HiYFykPzeioJEixN83F#=xZ^3W|~ae zTL&fDOzIi~*9hW6pvr-ix6{1wd$i|od+0Jv%b@#?0umo$q85TAC$awwcCO~QeRPr0 zO#2O~M=%!va@57-;OBgU=DO?q8Wt!sod*I^A;7+k6=v&MWzI81ZIhe>eC=B$L)0zZ zR*bs#v_YeyLK$qYqD%5pf*Me(7*cv5@7UCnxHmBT z3OrUr>K$q+dy%6yE<@d07*zgbb*$yLK~u{VrH@jSBf70hdn6x4=0&)tC9gxKNVW>e z^89EU`W9w(M<`9~&Y7&PKQ=7pb+zYhy`a`FPjbHGYtKdfc9%}*P7B88>#d}Pk`MNU z0tP^) z`?PkMt!E7zAkF0yjh*k5eU`MoK_yAmEKtD`o#!X4!f-x%!6)fR(K&Vg-Q2nj)-zE- zjiA%kAQNAzMJgr_m)NM&Z+wrnLQS@YgE~TGJ$bc`9~iu7+OYZYLSbvgQ{6 zdePkz`=SVy$V1p(b02@&FnIJevC!GtNojLUV=#2zBA|1ctTbSR6z& zG~{76-5FAYu#<*%qGXD4usZ}yFD&-EP-ov=Xq%hgqTs16Iu+@Oi4k)X*%6auKWo?k z1>fcqnQ|>MZDNTb^$RpWUe^+x{O)%pCCN7)nNpWeJERr0fMJI!bt3tP&agE*$$c`f z#zQ`6M>%LR*kMS?W!ClcpkU0%uq*bnk{ia2re}OMHNY2yZKij`uSlQKgiCSMX-`8w zgjjKnK%MHy05n4i`CU|j3>*$*rXiSm)R0;P{VZw-{oab9w9Swbg<^SH&}7Ey4{kXQ ztg3~zUxd<|(7oQm$gW*f6Z7qSH~`mRH$yPu*u-i`3qUQ@=^j&T9wbF6`G1RGa*@xB z+jlW_7~VXGiiG06!tn(Ax}ZnU5soToQa|SmW;6CS%vWv3)~z1ZW}y9_P;ACt*bL_o z^hNTK3bt2#uthn>Cn?CY07CivM)mMVma)#UdLN7JHL`|N5sil3Og|z(E90qGSj#2t zXH}#|Lj+`D?m!^Qewjv0SW{G!q|Lfat%6R-p%GW6LB80@8sv31`ZSlq41k@kQXuIVsDW;Ra(uTtk@&$P@a6W+yMVq3b{%ixmv7qLWnib$kUYfDZfbtkp zPofRB=pv!7DM4+}>^gZ(KIzEu%>=>;gSx}4%0p0F)>aI?D93;%ZLULoZ@&nInuT=s zL)Qzo$_+dVVXe4*MeC6Ys~YNAtL!ftHb9M7pQ-JPgKJu@IiZghN8RZAOpdbJ74~iF zY=n-$+!#%BV_ppA#z@#?JEnuM^gJINkRPjnCjGUzq$Il8F&JgX15$F{z0;gm9GhqR zE0f!0%(KbARETMI0e6OCol#-Xm`~9_lKoJ$&oSIva0Wa{nQXdEgAr?XHeL)H{O!Av zj~`1uYq8yWaPmNB@BOx0Z6`;@IG?W&J>#|x-D-IAZSaHZSA!+bFT9ECtY7kR1Fq}T zsfCFr+=oI{DC8SsKUUOSX~$^8vb~dXy!$V32YjR%w@BWUZkDua;gbCz+0dAX8-~;= z7{1XyH!SEl&mg6}(Iju}@X@JSD33*Nc`C5E$wtMOhF{A|X-|5NixEhYL+T2}Ba0H^ z2JbAIx+Wu}ln37IO*pj7HSL4xw;zN(i1WR+rOQ zQ8Sp+*8a7mq!6U{|eL2Z-PRxmM=;t8lFi*jE$^IBeleq}MS2U!~fgsKP zp!rMR3NY1jM|uIpVg3vhP3%9TAlI>qlRw(d@OgyW_1`JchLqY$Ri@>FWxB$WNO9O7 z$AdoLeplhP;`ktJJaP6TPCCz-29>5lsP|&gd-0Sm#{R3)U5?jK5B=_KObv7C!88pO z_M!FAY*gN6?x!SavH?#+N>j*$oO~P@f?_8|$>u7=Vo0eEVG zm?l3XEgSc!2ZdQZ-1=SK;6`t7IS+bPYsQ^h|ACidmdY_39JBx}U4PP`a)b@5#agV7 zn!;hWDoBKi;GBX7;ohe_hDLV;1cN7apCR=IH8Sq?#=%cCcLM0vSI0Mf9APJr40nR+ zmNGoV7+B*_I{0&H9_Venuve)hJ)0sN<^tL#$31F1=!4)sH3-&8a#k+2{b3!V5x0S! z3fnRsv^Ip4t{@Z-(FT4nw&Jlx4e0)a!)z&KcwS*>$r<1anyCni3)xmFO$W6IFbuim zFQVQiN0n|9Ua(aFQ2>XHyO>W$>hB7X3k+mti zp9SA9=|xAtRwRnJl{6H?=?H?c@WXIno350bKccflv_~u}N+J~RO(0OUFR3vc=7~Ih z9O6T-mBitCwmE@gy@9bSKFF7@aeD7@MdQx4vwB|_xn41LcS&44GXi*py1XjtWHKM zkNsj4Hl=>VZ3c%~Ml{w2EvZfDE)hEiap*Vw1M|UfNK)qm={uUj{5>`o*$u|)S$1%Vm=B0mrvp$=OMG#E$zfhvgSG2Y2yp}?f^dW- z5JVd6?T>CuW&=uH3ttd9T1nTRr3+{2T6@#k^$#KiQ)XVjo2&>fYs*m7=A3^?fy4X@ zAhZNrZ|JvT*AVh-IZ}Fl=rHFfJQbCA&oUN=lICFn4l9#_i(cqo+^u>L3(9_dLXQ>& zL(lT`U2#t6Q!FL7ill%c^?mT+5V<8N^809&o~N%5N?D~BONOob2S7rfleRka^GLjF z`s0pP&mt6h?JJlzjO3{xQ2i3PqA$bg#6}+8hdM^RT8ov_>Xdy@!lIe#`KLqw>t$`f z!jdyl=vaBhX0+xYNJ~h^UR*VrZ#?@k`cZy90qQ)t3hmJQDg}DLt^Y?gr3{|yIA-$Z z^D^Z#45d`{ClRYi(w|7m<};|C#=blBYaj&`guLadycIZ*_sVNV@Jx6ggb=kH8y%9vW(0vb7533wQ{hjd+ZW$lLSA&>sg^y3 z=aquIxc(r5#~%#)+%2AEcBXZ=Pjo6d_TdVk0yEJ zHS!9%JR{^mLjxW9w-lLeG1C{_glfR}!93Jvck|erI)Tti8$@6!1sx9b=7&0YiXlHq zBfnUYFK2xX#S!=&`bJ7#k07rp-n=T2`HjM9hPPklh;kS5au0-Db$yp+Xu0$%3o1kdpFZ$~2 zH@Pka6w{W6BOJ?sYhPjH*7pNv>QPwdWb!>lS^L|} zcE)-DtVT%BX{G7djVuFy`Cty#ESIsWFIsIG5Nmf^`p4RL(-rLlIrYI#cPM_NbC4*U z&)L7nUfdO>h{@-sLhPmsR6~Dx4y3?JM5eV0M3&z?j+A-&stEeX8xXaLRF+ONoaUR? zks|rVmeS|2PoPwb}Lw3&!h8mT(7GBHBVCzV-Gt;IXd<0RWXSEn1>G`;WkQR0>fer!)zYL z8)jp3i6I0G$r^@9JS>A@J26CpVT^|1844T5?x2zv6GI%U10Yt&c)2wyj=4Sst^u0R z8WgBjU#`PrvUrTCH0IVOB@JGpWNCs+V+wi9Tpklr8k5Ikl6g#cY0T$5#>!(NOJnBp zn2|h2Dvg=SWBT)$xYC&Ccnn)eqCNvlW1@IWI8PH_8q=J|G~+R&)EHcymaDT!i{YK^ zmgMc#aKpln?bTsfb!8*z%(P0JruTFU8HB42*zLd>i61lxo!&Rd4~xA}7Z6&tWA%*# z6%cePi0H6yHej)`J{zVOn8hwf*?$GPa~)Lu2y}JcRbO2kqKt7-c*&{`2IET1AlL;> zLvot!_?uLguTg$%BVbmvd<_lNd7ffH(q~UM7Ni1s!dVa-sX9+97OY6YMl6VnqdHGr z7GxU?)mX4Hp*}1~M{=HPm{~1f@x#lmf1LW;>wU!i-e~*xmcFs}?bwaLJ2|+< zjiakN*jvF{a52txK_--}%(i+kB2m*XkSX8L%+vdzA<$kpEdsaXW==m=9~ZAsWeL&$ zx+gxw{$@v}h5u}DDvCAMz$7WkzluzLX#@nPSYNebu) z%8)Xjq&a2>QBASKU5)Q>e?>6PK!9rc7Jf|{-s5xXPoMKuW_o&U4s%1e9CHFYwT2Cd zrD9gF_5zm+TroKCGe)IF1>x6N!lq;60q>be4kH@%7Cd2CO&rfC7%l+$1<50*rjAY! zMM=;OsW;HgMMiKAB2E%VjLME|Md(_0@&?Tau(B|NOz$XuMHjqTSqv#ZB34Q84mGe- z|0qgUTAs_SNd73&3#>?fK@13y53R$Ae)rNINu_Jd*dIvvl4@~=R`_A-X)C3eC8J)$ z@x~P-;#z@SQAlEZFRcZie_8P_gEQ3Sc^y&{(!q#dF<`u*B=e^u)DERZi3Klz)hLCu z41K1LmNo6cnpmEBiS+`S4vms}oXQIsInN`3>X@~_HVMsAMQc@7PY&^Acbkwjc7$pC z1UkiP+d3L;EM;3wBSuVpGXB8^h^IMeX4qeqUn5*a9En?{eH zWF0zoERiOVBSudgIovvd$l&aWFJrQ@AQ(dO+vz;VkSSYF>SvtM)Wfrga=9vjtzO#nBTaCX={viAXEA2^0_Dj+B0<0x2 z!V$oG*my<55W0_aR6cMUGRYCdjD-tqC*eFO?M*KU=w_mc~EnT$Z)WH*#~I=}-Gqh4fC{GVw1DX1gUuimuT zg=J5~VH6$flG8K*albD_K7-2Oc0|!i=HEw9`JG|4QB6myK&3J`Z#CCMP(GKX)EiF4 zX}W>!nFt#x&x8OaKTF>}v`EAYkN6+38+!>c&KK}@@3y1>v@d3+!ogTMYxb*PjGg8L zbck$0-=SRZ)BZz5H-9TGjh`v04J3^aI<<6~&BPc?j2dCu{^s{xond|9IVk%E=n}p^ zLbZ4j!sJJJEov%aP!rmvLm$FUs%!fc>P~d}HT4B;>(g||=P*CWigOj-AzG;lvVmfd z3jYOlM1Emy&)}W=;Nv6wRci>jfGB z7g@ihd;xt+IY^CT{(yEUoMBS{@m!}-uKkryoFr@Y}5u2EEs;ZPS|a{iiGPIGn2Et7V|$;9d(0cl8)Xl!9$4=nUaIm%ut zLqrJ%6H5C7R@lr?2?V zPdrZ?j!M`EgO)o2rXwM$^2RDQ9kLA%T#hlM97QZrr6|#JR@3H4FA$EfSb}JCBp8Kf zXQw@pL$rg8?HTO0&`~4=j3EI|bBE8->aADvn&MW;aa2Y=4*+*b3@P~SA>!%+`Le%; z>vM>d-743IR0XFwh`5fg^2%yWTuW6h6R0SdvEs|Dk5^(dLk_|jr2PCDS|D!)jRik; zT+OR#pM#DTi4hyCv?`BwbfX{EE zQ0-?4W^nU$9P!xm?D}u%sE2yM=rC^~OuruAi$q` znxe*!$CT1nvUk@hBSy-e&~xmBVME9EbA%<4RC{;KQOyfg?wx&2Dk&W4m_iud#cgix;3%9zD}LP2F0cr5*L zZUBQfz;`{A+eb6b1;Q+9=7p3X?!dq?$1el<1yNb$Uow$PvbiF1)LCDp*9l@Jy1#j) zoQq?0W9*`OM$Zn_y*I`rc3BLUACJfbpd@)w*owK=?P&?Ohl+;#o9Y-=_M^!MKaC4f zRd1qF_8p!HCQ&mMJB50q*@Q#Z-0?qzl`7M!b zu0ctd2Wf3Uiz{lP(#2I$BVJTY@sU`*THo9`<6RyOkjmiD)zJ=D0$ zhp%1>K&80;CGSsQ^XU)nL*otu#v`14+C`v)a7-%4J|U&VdO$w=2|7!B2cfh+4*gxM zqrL6v(4Q?s^Zhpqei8vocK&9fGc1S13~ur2I`Z8$EW`%o(rH8wjD3y*emQ8r}o z4l*U9>5F+WZ9!S9ILxi_#97FAm|t${*&JYj7-rus-%u|r>nhd!)7r=%%OYz~9a8NBGP-1*0 z#Wl!~g5R7#(a8ANn8?TMG@hu}fg`VGn#R^Jbtv)tGC!h7P z-KsF9UT32rr5j4!Inj{vG(AI-g2@atX6vEetUTnkkaRlB#>og=gRN)6rOIykp`Y2} zNnV4er@cB~DZTCqQfVnWdi-c>&!OW+Qisk^vyo6@?RrH|64rjTzj#{|oN-l(cJ&|@Jv%$=8Ltp6psShbk4W=-Wv_-O>l+Rhe2TRR%a0WTT zMu1Aamedz(nV|^Mhf*ll7x;#sv;ISr#;Jdj9&UX|DPt%41vyH>wuAi0O;FMdhQY^x z^aUqM*`F1{gtK!T-9W%~JXkVECtRyw_a*4wMJKm@uNnh^Hnz@Y`zGd{l#o}BRgxYrv3Q&} z-7{Y%n?qTeNl4R~rlkZ=gVK02vkfmAsk{yCd6LwCX! zg}REe6VgLV7{NNcD3guXrPw2&YT$RpP>rcdJxkBc(8!(8eKEwO91FI01dIWNzG;Nr z9+dkkmifu&@WWS7CAUR6Ot<1n;CAD)rSEg8>vY(El0+A|VbbN-E~49E3t{_+J0YFs zYx(;3G~B}cGT?K$WzTs~_6npHkx)#;A5`KSEAcza#yi74{E+6>+i+4=t5K!nlcisv zq`$I+$+xRarShjJ@n@9y(f7m;P~wj(@zM9hcTnPwDDlniiLa}~7tofATdsUh{B^o& z>J7pPy9wDevFd;%6sA$DDf^Oz5Sl}DN2045fWslO8c0s0y3xAUI(jY@o?QvQ|q#4k|d zr}FyW6F)_XAFRk9eNX%VC4P_+AAL`J2PHmIk>Bi|__|7boDyI8p7`tR;&)hWMZV|k zJ@r@OYw-G)jfeg(QuV(JmMLuLX!PG1R*ZI6#>ZQf)ERaR04}RwS!tA~snQfXAm7Fu zqKb&3H>@!J*zYf6FHh;e!zxGV_#yuaVhga1gZ|lcPkaX@{%56s-@7Nit`dJ#iGTT? z`0M{*@~f->AeFpq)^@2k(hrpu`s{>2KcREkN}n8>#*MPG&Rx zHR~g?p+3%unN0y1l)FaSw0zFWm;{|$@Kqm_H)UtGj z4HJ;2JQ;Mfsio5edZ9pP3Uro0lh3G?=Mv}wfj%VAg#s-LG`X}|`8NbQkUVnre4UZ^v9TqU>8Z&=xI`pr* zVdGAm1F{3g$iOIC;A!uhRATyLQtLzKJGk_Sr4-Hw@I~9ZbdaOQlm3>~KPX?>{{I90 zi^LCPb~kL;iHntSxH7{&rR!NXUjDQ65zU7STN!Bll0s_Fl8oQiPs4_NB^io}D)u15 zg|wRX%g7h#f3?2q%IMcloD?wq$~g5u(62wTU#k9@$n#|SR}%mG_Uq5;Pf7e=vtNcS z*Gl3Oz5T)Hsby(y!g&9s3H_C>p?Q6kpK75h->c6V85;gS)*n@QY)HlClQR0F=0`fj zn)p8XmDMNcBlMSSpsK%x2z%>Wk|7K9AK5>xK2d%AHTp%gQJ{a{UMl4yo2iyhYcJLM zlFclyzFPaK@=L$NA19P=pg_k9^eBN&6zHh}Z4>A;flk-ZYIzp|E3bYT8h)lf0-Yt$ z*#hm-&}x49z{<<7K*LY@9TMn5ftCfjSfFo|p~?Q2WazL=XX|g$9~QPj3l)7g3Ur`A z)1OPx>MySLm7zlfI$WS51zHm5IDsB0(D4F2N}v-3da8zYnwx#k?XL-I_j~4dr`hwJ zI{)7<9{usV^FQMMX8-bE?@#{S{$mCdNvj{30-Yt$%4BT=dau1D{U=+il~>ljVtfek zg=J_(-xV9H$p6>cS0z6a8*@s2!J6^sG>^v3H)a0E4(mPo_s9ALe+Vw6i{6VVDTF`d zrE!m$`EP%2{qpzD|J=Ue0)yB8_&e7xs{KqyAD3r87nbS&lD~ES|Lgjw__L&s>U{gx z^ii3=jnFZYr?yWZ=`qQ)@q4B3n%IpW=@3-tw=RbCF?*I4g zRT8hYKTfk9ce9xNHQ@%#|G@tKXX%TwUl4;mdQ%L}L+Ri$m<}?raWD|$AFl$@$Gg7A z{DYs^Q0mX_;Qb%#e;QB!>ix3}7*_B2{GXFH17C{twze zBShm55gjhjkpe9VbeupB6zF(?9wpF;WoWivG?hV-O8eW&#Fu2G33R$ZFBIqufzA}@ zEP>7zXqQ0e3v_{o#^2Z4qRxN&|9@c5Xng)>?LUhCqcUDI*%(#yB}*8u|JwD;|LyUN z`Ri-0@9_oy)pxeuE4zMI^wXx%&on_lY3-z)pS0^Gb^VY5p7PcYitgLM@$c7vr#S*Y zEy?_uxZU^B2dob^@%WJY#lznGsr3fgr@yv7VEuzL8|7Xn{z@LL;WzAr8&6(b2zhZ7 zV80>lPySpa`E$mSxJdLzu;|ax`O*d#HUlL7zK0@jBmT-j4E-2&wIB-MXOeJ%4S`5J zAu5iEQuhC7{)->z)dxn$duc9zlp>$%|L^ploaV~e>iDN?3V-%|j>>P;_`{A$N`D0M z{-F53bG--s+{nwDMb`@cdU^k<{{8-b5A5p(US8ebQ{F$@z6yUxX@8U*FKT~93h|Oa z#|iYnQd(S3EAmH`#w&DUDNT2-yz3|EN163BFAqOsSM1^M*;h)R0mJDXUw^bd`2F)J zlJ~#4KEVF@I<6mu`S;Oh?4PgY@vi&DqrCsi_V)Mn9p(8q-_KzB_BZMeThAyiDPPb0 zo_|3m#D zY1Y?7#|iX6fsPmGQ39PP&{H)u*6*wN_)E{d@A&(#y|h8$H1_Au-DgwvJp)3@(|2_W zzK_1q*ksCHdjCrq56Y~}#)np)T?)HapZ|B~XVO<1c-r=&L8j7}pFiXJX4-lmeZ%>H z8n3%wJmmj({zfOO?MdzZXV%xmpCP3G{q;1P&y^`$(NDVH=3*kewBiDK=>j4CkU$p- zG|dL;{aI%Dwe=%|ucd!azi2){`HW2ESb0h^$YyKPn*=&ophE;YT%aQb`hU}2v-u87 z09FKEzcisd>1Alv9t*Yn8D-*Od;~g6ptA+qCD8c-T_Dhh1iDb5Wq~dh=o@8dRv+d1 z5U>A#_WdDNUgZiAFK^lVLyG^c+#yodZ@+hch{mr?bDxNfe}PUH=!F8EA<&ruoh8uN z@F+8WTmqf1q4D=IKj!v5@~ivUca-;Uwcps^Q1dIm>rMArKZyG+|JwZv)bHQCp8KQu zfP20RVN{j-I)8FL5cdO^e!H~xTbT@OfE0aJCIc_6Oa>~=e0S!I7b1b;u$T2;l*vKm zS5^kxp0kVXMywLZ={G9Z+?6Zt88mAs_qBER+7EvQ@$qOZ6EDsetbQghKcj=ablLMn zobP|6>VNiq^bz;_)p*nW;{WdPLHhXD*1LTFmGAG8yuWt;`v2H^7xwyh^q0<0n5Js| zld}3+W~Ivbe_vmJ|9uqr*Gss5W~{%De*UNFpVNH!LtftEb^nI)Vt!HcPyC@Kbd6%zr4q8lQE)_XfQ0v##Pl0g4w*+a~yB^flkm#(KW7-7S=G9PCOH0?2H z?N7Eqy9D~r&F>`{g+ltjW)J`B`zHU{_knP}@g5&9I{Iz9d-uad|M`l+sP8@*uk1P^ z!})fnpr60LU;h7=Kdjo*MErJ&_b)<}@fUyhd|0`!sQhKu(4BA^tI;1c{QsDH6ZojA zv++L@5*QS`K@g*Y#u_yU72=ve&cXq#!R&{*U_&3O&Fe(U3ay1_ONUh5@Q zCNH?Bp}xqhug4UPgkHu&Y+utXqdyD%I`brKG&}4>j|W*)O+TJ;(T8*T3WW_4hpfX4W%g2EE<&3~!ZACMlkO zp;S$lbMWfPbnabGrgQHj^73cm!Kz48EbbCdF7&U>%P;R{-aGc^&pmm*kHg@;!Fby7 zE#>?Bjn@%*>|$T;jK9pDQo_xpz3pC{BXvtN`?2H4dnf7@tMhWq_&mRy%9q*S-#T9= zpWL}FN4|@GXp=+abLYQXvx;U|QwnEThW>6m)KJI*Zg%{gVa@9FZambh)B5fV>)1~3 zc0*C8ck1u-&PBEp$>W`%XFRkgr%ai5b0}*qP?^(558|2Q@_u@%uizwO(MtZk$U$N~ zPvUMtr_}VV;V{I2)l%7v5#OZ~a-M;)$|Ulh15f+cUndhv{2=y0zES zq<1<`xpVs`6#_sTc`^X}nr8s`;FNC+K(z+oN8JE$f&w68e;5y)T)0>`V$Uq9o>gQ# zG`{e%-8nLDM)mW?O-m14Da7J0OMl~`o--^|)L2;5P{`n8DFSD|bI#MM)`k<|>--C) zTK-xa4wu)v^jkse{J+T)DWcZok4G7P2_w zwaH;(s@{y8DW;|d&k^6PzE0VAXm99v*A(u9uBDdn^u22Nm|<$DWt}iJc|EI>qFl0)J(XSV%*A^Jh=F^T_ zSZ4K+&wNWrlXB9c)Mw0)`l5b*cI%L8yL{h6fA6Kf=il#RH}o+$*DK3!eZC$Q`!aY~ z4SqT)IC$rgsrE+b`i2+}P1$V*3Zo)6uTMdA-`Kpq1=gFolB%fXYJ!!9Skb7SS`6Mn{_tuLs6*#kJP&UyuF=1I<8bNd$n*M#Y4RC(fyv~RFky_czUBVg;rKt1xZ7wb$gP(trrR12CDAwo^7Mnqk1roSrFS-< z4oV85EMDAO7F<0|t8?nFUHt1HOp*E_}!b+@Oey8~nM1{6eJ zjm_JuAo^l#-oS$Bv$1)5D}CnK?Mlx*e9gQ889nEvckLg8nson&Z#rOR|D2p> z=O*%ntZ>1m%htr#ZK`axTH?*px%a4E8M12pm&t`(+z`^{l`|Igl>Xh|kKAXiqK6OM zDz}}KY)$`Ok5_h2YZYC@rguyFS81#BcrN_zfxX*MWc3upy7qT_kILq1BO-g1iw^W*g$2zvHp-3obO%a?5)Vqk6 zDG4(cs&`=-o*<~9-^CY`|2^;hVHs}Jc;p%WUF;=eQA1J7+7gZeEHf5ODNd}4l(ww% z_vRLuDLr}F-B>ifSIe8Fy`Sp65^!n@tmSB--CCTIwqAXxc>#P`-r|PZuW|xm%mVgPDou zZg`h>PON{PEOK|#d)#!+8L6D>d}AXD3eZoBRdImy6Wnjg@qRxEa|mwi>Y|R}a))!N znYx7gzu$8%Cog$gi%N&L21~`enkbj%vnNVNN6Y!+s%d=(i)Tl4%{CB(J`7WV&dqf# z?xED}`~mP_SeHNa$vc55T#;hEBv;*FH%&xDOw*ckpJ_GTxnS}wc?79nUfCQQeaf%l zcjR~uVO>BoiB%zM69@TTBTdQ?@W^$OX%|nQC-am($1V|J;rn^=U0nv~0>~++nRfks zjT}Btr=5IX*qXB#YMhV?mKBD5U$U$|)Eu(9KJj6++5%VFtDI#04c$}2FQ(KBo`%`qwmM&+*-ihNOt|5VQZ_gX!0#W zKQm?eoYy%NS}t=rjdOeRg@`b0gWLkgmVYOr5(L>DBkssVm==-CW#zPN9&X(R#Dd+Q1d)cOqSf zp1?GYa-N7?7vhBK|IpCF;DYFF2!#)!C~)5e1WykOP9wlc;58D5@PyDEDV>)~lG;qs zkKFXgTs_{*{ZnfPC zmw^cxJU%eF~&=(Q`)dl-5m3QkY8ML_J zfPH?>eUuOJY_sQ&)B44zmP=?7jtG!9zYQ2mjt^T~Y7-riL83cqV;#dImpOl;4fzyU z(9prR=-YCi!y0FQl0}mLOii)T7tWDo9Fb+Zd zJ0jE7Wjc?jtky@)`E>wZ?QnE^^uPc*3cg_4tucN7l}iwv_d!$1MNd?l_?PV8lnZod z+(8Fdz|81iOa(zeWIAi7a;FB9!u9E2sQNXN$gFPF^^D5Y(ZlLtr?my)hXx~%j67o@ zQC>j;cG0QAnB<41x}}4DT1quY&_DQJU+%bor^;2T=d3qbn=CVKSqdd6Ep#b$X3K%d z_J!r8R-(L2QW4}IsT&5-7wetgit$&MmzvdFG8x%Nu1qa6t6#st(m2Vj|)1oqS75b4i{108G1CLvAU&) zRK5dx+<&}$|6b{FxR4lnoP&sJ+dD9cZa&%ioc_`c5zrEH0e6XL4zH^yc{rXvGgrh? zdPwD}+KsI}RQJes7N<#6oFJI(CmoT~PzLCTy+lfLxbL0qBYo*2eVj$d>Fa~H?IAUJ zlCVwxPmTWabGVQc{O2Qz{|ESg(JlT5D;<#S3)|p7dKcjjT?PNYB6=Es z&H8Rs<#t&A8&L(v7er=xY|qz=XKmaLzA*a~CCJ?(yP~E$WRK6N!<@f3uYZgDpbvM% z@8h7O;QL?1&BK@LIJzGjwuA7mJ%nd&2jPq59R4l>ek#U~v#3hUif%D}8EcG=&4nUd znA~XqkU6y)05ap=_VNAocI7+ioCqle-;!N}?>ss8e|z}8bnFiCeQ)G0!uL!FDfrgW zopu3#Z~U|yd^aAmLwvue-bMIc1R(|AndtFdfbSjZ!cfFEPhl&09=KzCd+jQG=TfoY z`xi8b##ih;wVw7Oo}zEplYj5^{xlZJ)`~KXksylwyX8N;d z&~>)wvij?m?e%B(>JIF=tEgK@umaT$0=o+T4LijDR*}0M;D78c#Gkqa{|`{*;6M3W zDeoIRmS4IZmj6Rtt<+iACppguxpSCqW4sSKM!s*?D67oy8r|IupYQBspWfvBPHF?W zBS6lRZyXxjDvn9EWk)6%)3rz^lk6_R^tgh^yvkL$bTXqdmYJTiJoyo>4Lh9e*^S8+ z5#*aYEuUq^($*R2uGUD!(cQ6E<}2OW<_Yt0JHr19 zk-;7C|A<|QKa~sq|6-^E|8G62?Z`fTPVTA_ytWz7cZ~3{mE9q{llJNVP_ZEUF$!lF z*e`3`Zty)uI$8G&Zou=tOYHF_R4n+G?;3p9JKf-WvUIBM@trb!7vcLX6$`#oP^i0r zza8&&gYQh~MBU^25-P4#|-Y&hUdu*@xVRzW> z^nCgwsup}7Lw{uKmG9s`x(!7qPJ}DBW0vj5?YauNJe@UFJB{v>-qbzb*9_|p?_=}K z6mPw4`}6ACI@xEIvz00Z-wo)GU4-w@ce=%QrSzum@%{PG?;YPgJbVuVUwFiy=Py;( zs9YW0$)WCDjV+4@4`@#~WEF>o{22)ebH^q%5?}C&PhMN4Y86426vWSArXElQobtD2 zfWAw;!1)n0CF|V@S-4gn*kQRfH6!s7soGcnx_rk2S)wb)Z7-L$i5q^^TS7fn4XCa} znv%6U2_Es>(br1fg}VNL^@LenQ!XL89P?>bw?&GbqYsmhk1BA?>PHoF5n``_OsZ0O z`l&pL@=o_`M}Lg0={vU9inkhq2repU2=rvRAZ%$g-E!u4dEeau`dxsP{O-ig@1_k6 zWEsT8RO)bkB+Vn64|oQ|P5kDslu`qK|5yAwXWjSBzdfmONBmnQvf3U0q7`4yzX>YO z|8M;JgESBSMtU|;DZgEUjXeH+YyW&_{o1M9$@7;rjGG42mk9pd@>X|}~+la1gl~b$JALo_|_g5;U z8y$52!BWePbx=y>=_vh+x{C4%^X}mKeb|57bk)AwL2?THw0Os8&OE3)G-drvqq&`R)GVIA-JU;^ z_0*53SMWU!JJ9Q|5~8PqfUo&rSK0?fuW!GTes}xeAFql0bZ;O0gCMMK$Ctf+ARl+! zH$Og5@^tN+|7Z5W7y%JpJ%^bnzkla8MO)qbY zD&vdl_*u?wvp(?EU@7%|tq;tFZi3&PsQd3@e5qWeIjR>0?t5ul48_0T{~8=iyT|bx z_Sf#>Gj5QY!S@C1!pwY|^$>9}5Uca87DWCib{Y#JbGN@B^1y#&Jn6h3awcvD7DQz7 zxR=u1-LrYGLEW->WS%8FBj4W5TMxN)yW?xjxk0K0|BZ}28GZGA$@9_|x8?REr$#hJ z_Z|0#`*qiGzmvW6KU639RfC_lKlIimf(zO3pms%;nf9J4PENLv5Xsp_95a6seI&UG zI+{jE_hJuToZYRPdPe)2c2T*vug>a0IBc10$IIBe?3SorNt9zM81u=x9C7o{hlo9m zHxoM2%N@+_H5nAM@%$oZ4m}?**DsLql= zky_Kflzo&RMfPNla9CuJ$kM|wm7w?%30JMR&h-b{>g8+z+1^rG$;Lr%X*eO+6@5)&Vmz(Hx`^XTu>_nOt``=bx0|Cos{rhz`4D(*7m6CY|?|Cwmo z^Kg6*3*&R&I53sF#U@7mpx{UA{-wt2z`yv>Gd4jQvt-ey{z6#VDKM<4y`{fo^W{ljvy zP`htt-$s~IWm^8Qh>d;KYUQA^UK+ABHN{7Stof2PadrGWzb{n1Jkl#{)vc7gcHO4a zDX`2Ly1PhFwtb<2Gao|9PNrl>q$0n~DIC(#?wd8#o>GxqHG2R%#3IMCe>gJMnxaU+ zekC?RL_ap|@ntlUb~ryq3|x_wHg&*<`vJZ*iF-5cDP=0rDiM;nFOu%uv746WF7Ob) z{nIc3#%GCkA+ss_oigVe2+vZZ8|8cLcD{@M=quCu0;z$)s)v@CcA?ipdv-LHB$^|1 z!JtSb0hRoQ=#LW5hk$*=tXsvZcQloek1Q%#HU^fc=-&LUCqOYnUO`BFQ)CL8cmOTF z)~M-Y%pWErQmXGShWXe=(rivIy2kV^SLc_7fh9G@4-X>)tj+N^FNtj~F^%9SA>Rh# z=x0|nT5OqM4_iiF$=r+m6Ptwlsakk0S|NzD(PjfjCM)kj;~}ZIF#RX3r-G`TqV%nv z|2RBdJ{P60%e)(ptNiX|$e-vLYb7eGas|6M*ssy-YqVYs#MjLWy|6Cc(yOue%KF4> zv)^*-MOd}Gf0O+2&Bq(_`%xwkf2-C=^x`Shwv_)nsFzCJc4q8ZRi)@D+aiFWp&}65 z)DgJ?)fivftEMnAZRXKtYQTe%$Nb{enjX>POnX*|xHJ4_k16aZXmc*5GR;^N6;z5z zW_IUPQSftlreJ!7mtIp8aop<}OuTpU93$WV;=Qxk=XdT;_}*0?O*X%HKBGU_N-HY0 z$9U8afUswx0&EBnvRkPnFiam0$ z>=O{e=*S(}6;!=N?HYItIVknCi9F_M5v|Gur2>SnBXU_r_%5j#5t%%ze@$8RQ2Kxf zk~@?$9^h|HZFE>BX*E8fjC>jMuRnnJ`1j5-lGpH%-aSK~rsx53wt*5w@y${5wfw$v^L~XtF1P%arQf=?`6}vicK?x;nWzP5O_h|5Naw3A+Ot# z_nok>6^&UtTn^&b5^$aa$!Qpds zIwoAr{i(fwjInAL!#$)E=hDZt`Y7*zljOq?2+ME0!)GK@JYYh2T0P8W3g1eTEz_ci zN{m~B<-5nX_B0lqQ7&hOl&xM6EH8^(9k#F7(1>PFyf5Pd+A3(D_d3InBc)2~StnS~ zi0?=DOM5`M?8RB{jB(LU)BmG4fbf0<@3Nna$A@@a+zU|B#p={CEICIju0=e10pk9D4L+sX5g$|J#ZI?tix5pkpjWMM#g zDE>qj0c%tJmr>*tvxktPdbM%g&jD*AQL;WGA^V@$X;xpU&Rzi565nF6MvVDCS4v9u zu8FbE@X{2tE_j_$dM&aILnm$uTUTvxf1YLCkEWsj755<-n$5PPVcfKBSw?XMWmZH*jaTO+)IV`_>+XS;Z(4y zL&@-2w9DvcBupM4V4wI}KhiV8NdAuqmV(2$?nxzN#V50OO?pF_2t`$+^&}h#6G1JP z18F4~wuH)}YxTRRTeFM04fPgwy~AiUtABi5ZDbE+sG*9@FIMx-wBE1R>KZ+_9sLvP z-KzADF8^-V@~y&w^XB~&UXDnvqT43u#gX1>_v;ct-D(#A%`aA&J#H?Sy*fhQ?X+X| z_Vk?E=ET5N-JhKTRvn>mIVjxXMo)Mlk zv1I6cvQZ5q|B@Y&hzHc$B7#(=MKn1B?m+$#7?T*_!hPeq`(dA`6KfF%KpIkYWgC0=B1NWMcb}+= zCY0Ag_aKpRwoLA^j~->SHYpfp|JYfrwW}IyM>wy4CPG!W!L+Yx4%-(v_64s?jU{1w z`f}%Dib;*F%Er#KDznug8z1;PUUnzbrsOocwhcfZCX$c&cn zsmn}z?sA8C2Hl>_7up(Pf*=RZEaa4c+nw2bqzB&VupTcD_b}oN9a>j6`NRg^)&k;n z`U6{M>tdXmlt-z~OIc0|a%Y!+;0tkn@ ziP5k5Z(3U)h6D4|q_47BHRDd9k*pnC+;3#gU$BJ{RU|gsw>tR?WSE%hUhy$3%hr#- zp*mZhX7gw*j}zgc(m@=~vqo&!dwU~e$ZO&0%belpJD%AOJ`fmJrq`(RME#HKN5RKI zlHPIj=sxVsU9<;`{XK)qLg{b0_T0YfyXb;W@QMXC)m^b64_lN!T0IVq2xoz8xEMnNOXzd#eFrI73g78l4_Qsa3c8lB5l^IqbEh;2G7!iIS| z=p?Uwi9PlQ7ZjB{#{dJCs$A?!5?i7L6se*#a-3QHbmWSVJqQ2HY7bFrI4@{@B1oJi zyNNkiSR=}TkcSHI%9o2)T1HLu9bGn5^;(2Q@{8g<&n zC=XD2%|h|_2pY!-{6-=IpFJEPAFzfkHkQxYO~wOk;0*L!^0jp4uhaer z(PpAio#KyV@QNNN+{|uk&^#RhkXh#o@MT_fKkj;d4E?o}{3CDoADfkL_qQMHNZu-x zyqyXxS@{V}30W@(PHwbXy`2qt0$3WZUTP$MMWLWQeSnO{XW~!bc*7#o_hqJk+I1!O z6h=mg(cIFGzrcr$-v^IGe9M-|!67-OYyh0T%Fo#hVIN!iUCm=|^9?W;-qd5>!Dc+o zl;;Cq^q-y=k;$Pt(JRAk>9z6YzSz~}eees^b1GV{|7(BOrT&1DW$6XY^nxILppTJ| z>AmxaU$%+!PN%-hB}k`}J`d>g3_{k%j3-UpXs5`gXfgYd#4=9~@KtZD8&DGIX*ZNu zbpt~7PyOLhk7`3d!4VXUu|eq^mx%w-NN@?L#3>vWL5|itM+1Z?5{|+r-_5GjV(Kqw z4VE8_=cAq9L;3w8JmeFsB;F43nMO!WL`nkoPX|c!RI-%=h2$mzM;fvT?)pGHSq{$ZlX!Xe6)XU8(5$#NR9g-73@SuP|T^9JHpF)F)RM$$3T6(%abX zQJ(B^ed3#ojKnJ1GvgnUdX3a*x%O29&?XF(7;Qocv*pbqo@?bfWC#0}U>A!LAgxNJ zSf0V2E$rIG^-Dd@Dr8J}L-oY~`f0z{dI#nDsv-1g#DA)@PWiiY*dUBTR6U zl%ju#@G<}Lgs&CMMfi-wb&A;Qod=4w0RBzhbAtN0k(4QIPM-Kw7PdygPchaPOeK3| zbE9u-xcUJlw2Ipq1zT6b$uZ@0;3rPWn`?XXc4#3JBuntiaX?IOlA)`&Ok+ewsn1>TmMI+5>J?%6S^M&uqrK_z$jvkTOi<7|%Vr4|c1#7oS zwOvb}rC)!hBxWK>S^Xch2H_4+{R8ra?K3>?aPBRABgYS8}Rtu=~2gEIVS<#1c~ zIMuiwk2^z)-Al`#xhF$VEp?;L^Bc)_{1L94|1)EulBZC7>sBLq9|<1++`BUPh&-x1 zbUyb6l^Ubc0?z5+(+E*I3&Mz?)k8Ri*t+MFNtJM?@f3Ji{1kyD^1te32Qn25JSwm5 zqYy&UZnzgpO32ba&@}I z{=-N$oP`!d(LIg^7cx9uF8~xq;)>+S6y?y*0wLAhveZ3~Y&m@!5NiT9yMxG=IVdU9 zj$0#n^Q=q6LOiqa4@zRA*C`)qay9U@7XODApELe`;XJ^KBh9qWW2H_;x;`=#z~VmC zCMV8t$k|5I$GJD_ouA&zu`)9Jn)cw9%FOXPsnLH&cJNJ^_U_L0TefzfjM*%IBpU8m zDK(!YK0P9|@J{j>eK7%P&Y6-|nOeBtnMk=2{!{uE!_jHtYr0MAZ%)>kKzon;Ft3VB zXw;4UMWT4P#(RMn0sUWxi*f>^IxSmH+{3;A2bW zw@o^C0n1xP;z=G%>oTI&pEnYBLJzZgLWz;!Mq_ko0P%0eB#G9z;xp9aqS$K>@fNfV zWi7#gg0@2XCH1tn^^ym@W%I@K4w&!fM!L3=&C^ISlJV5teEMly(y2<)bHDc!c& z9VIfDoo}1fmx13RsZ|4QH zAj;9OOwg<*)^Y=WmkBh2QVabqE7ki8GWAc%)NeJx##K_c5TS{>r+9TsytO%M3B%~o zV$3tGmlzpc6oY4nnAQZpnp9-wLmZ~~EBvmgyUe>im-?<0Dj5j{w_wo; z09g(&M{#6#LO{j~RvO}5JL_boQE*-ZfnIfA1FeN{$?u+?S3h;TTNT1FN~_|Eg_-uH zD%=Gyw+sI-EpbDPSJ`}W25_5@B(gg&l(@45XWia~x%R^LcwpMZG)&9lATi!1V4@-%p1l73-US}+{tEsp& z*%1wUeS_lS(>?)lSP>}-!A{K$Mukx))7mnM!41S=g*;iHs|0-l69sAY1hCjFWp@k2 zs~L9AqQbB}f$COC(nym2MN%7uDbD>XA!}vWrd0J)M&g&GhOMUrY4TQ)SD-ZQ6H3C+ zDLEcG^HLhLdoxVQ?5Z=^o*+q=n1ZOEfWCpK3T#&D3qqqr7mbl8D+IVF0Pcj65H$(d zVQYnS)!y;rX;x?|gi-pWiDnftiLpEdi3hT;WJcak_ef8v5F;VgAjptSdI5k!3YetY zf0han9@<|gPr^ichNuHsEJ^+rVlb_*1=l7hG67aE*W7(tk;#NU0SfKjUA*r@Lw zsa}DD??NH>75$xBwSai~5enj<+U!1(mmjh8t4RhBmbj-vE9oEOOWaFx{U~gW^()JO zg~trOYI684Y{7zZds0m1Z}His8kMp5|BLFQ9EJ0FfWUeEN(;@4|c-FZy0HKhXme++PbGLadn(K(ufAwTu8J z#pNWut4$Aw3Nuj@UKb6)DgG&06U;2Khem~HZh<_h=Cnc(!4=HLm*y~Iz^sKo?os?F za_Pzno@pa-A}-6s;MXrD?n1I4M1FS_zzU4+v83p(aR#N_wOPAfkaYJ^Rg&#$J_1Ln zd%1eptiI^+KUF+wqmq3+9^t<`yFBN=8+`ZI`?r7jsv3NB`S{kRS?7jReLuhXLRI9VUG8!CdM8ivgo6`I~0Ai98qcx$nQ%9yP!Z>ueWYPc5~Dy$JQ9-Ee# zyAMJ}++vZwf2l*)>8}k$ER@9BPm1)3wU3YVBC%z z)3iQewUF^RXtlbH&_mIIT!n$f;*C$goM*l*#EoMl{!a2_&X7EPHw;3#wLu^LA0O2; zYna`G@S|%9Gw|*+v+Mlvs^Vy`c=8P7#Ahev*oKdS4Esy~bzhu{3% z0&_IxbwQM|^cSV%X^qQk!4mnOMT?GK$W+ga$7=;D<<%qJ=U%-YvyDGFYs+bUWEe|) zH5VC)YpE;Mv@+J-+n6tg35T1o8{67@=2MGhsxf3G1DW`7aq=z; zET(QI-?+8C{xN~jguRU=0bj~o8Qa`@)*hG;+T-Dh-2pu5)*Sr;laOr@?Xl+cm5PvU zEc5p{iTFGY{49Sez`RGvHwW_vh-DoE04hGoygkIc3oWu%&NR%@gg{K4+)YKrFi zk|>>;X^|l{7opiw^Gcm3&gVVFV23THf3ERQ->$~dr9R*lM1UNyjT>YYAU)sXr+qnx><=8$YF!TAb61$t zmnu|59oCgWS}467o&5L)29gXCwS)}Umh1)Q-ts|KT4r!wyzIY1N@TwArD<=< zt;+FRWKzy2t}AseQA6IkB@#ZR(psF+xQ*02yAG)s6M5dWE`U;M*C1RCk`M8Vjhq<0 zfM`c566HI_$4b(V8LeSwd>yf8w=_rh6OYV5$!sjzGyZ;Etlg(pRD;IYr6|&YMq$Cj z5otE{j|J!m35!eciqW)ax2ok@<08P=R-Z&akTs^vcbdiNL$gc9__TJIbp{>bEIMc9 zD(Rj_>wcT+vnmx{u(JB8Svcl^Vo4$KrtIkUfLr_9G=oA;S@i!Qc8 zu3ymb)J(&31B8_;s>fFu*If$lpzR3LE?Tbo6$&T)4t&N|tFXsc*t3R-Q7|%SpERQS zV)8n!BeT?g_M|#|z{FgUe&R8h@ zJGn7BK;eP4; zv+|$ZICl_}+miT4D%ztse*EwVtIPnK5OfNnp8_!#U1Z+XT=?-a01`#mPd=J*-RA6) z3(s#DSM(|DGC8y{^maQ%jCGr&p&kz3x%UZ0R_^9x#qs7t*CQ-{y{(3+6+lVji zX6YEnRdKv(c%%?KMG?g6~7A4~GFu#veH;sRT3zivxcmT)UtoeY3#%7!x`ynoWhX{+)h-%+5g$ zIkhLA*i~eU&#V^6FQKeL(Db$7@5Qgm$@CIxA->WIktuO#E9ae=I-|U_wrYftXu*xQ zFlaNSt`AFjW!8pSzvCs=KFLVPNgA>C%Z-HWUx>BOFp{^D4Jo|DNMN(W!Szn~5Sej2 z0S>q#$YvMBHyy#sC!gb+jxrKID=H|MH7364$mr+*o>9Eig^?rYRpO2u3@IyDEIEcM zrJ^GVE21Ko$pJH23gfOngTfx&f>tz)Z32BOyzxQbgOKT0sT0IlGUlsI^Hg`&&>UQ! zN)vWH9Y16w?gcWbta1hIFFD+6{Xt@#V1YtIrc-9>6f|3XX|SroNUlcdh(-vrA_|M@ zOWi2arTJ?tYVyU}FT+owh;@mPd{^gY)F6hnzSQ|EWCqW1x+UTS9FxXCHNA((E3hu$ zEPUPtDivjTHnnH^6F9pPPM&#>wOr!6h1>IgU2E}#v*@gb3I5?M{F~FW|De1-$)Lpux7)-JW*0dD#iG& zBb8WGtOWv*4`n}TNs8?*L-)ERWD_cKR==}_*ePK|GxezPBS6d>jF!++9*MS1vhXcU zI7cYRTHMu?&e{9a-$Mj|!S-4xPW(-CR&vEwP-s2jOs)_rw+UKdYcm}wdPqKG@9rj$ zwdX@N9ms%C;DyqP>rEc8{S~kYQn}-S>EfsO9Nhh&q3ADR0JM6MZ#6$P63_6*s!F0*n)G(~5Zh7m!n0JCNJ0w4*3inE&WW3Ns)ghT04!3tc90~pDsU_7O9H#+?8;7=< zKO-A(H?lpNu|qTx=H3DF0-Ghy5Z&Uj&KEV3y=c;F@GCK1fb9$owussU{V0oXekUj| ziW+j^1|Gqub%7-{fZ@DE$dmAAl!B?nX;ts*mT-H9Anz>VU1)WM;HcnaT~C5}L?28y z5{JS7x`t0NZ1wMM2_33DZc3(y#OPOLI@ur%>!R%Qh*;;u=*J@Bnl7b zoRTP|m&MhES0CxhQm)K{vdV+9#Dnq$P|N5;MYt7}t2|B4K*tD?Tkv#W|4@<8cVTq6 z0wr3J(Q6tOiMP(cqTE*TO-SD;-Dh+bm*%rsPW70TsYO`k%%>8_=!%vw7U4y>f%(VG z-Q&)5?7aEQM3cd~`v)kJxy!xxeh27xb;SwaeZ0G6@-eT^|E!mgrBl!94N6&fR*)Ya zp;TTKAn3h0$W-3|Jm(9(cs)f$N@$`fX?q2b^DMxHUcjv~9n@^9um+PrLiuaZ-!I88 z>U0q#shJTOqo*^*{NIr-C>~y}dyZHG=SZ58aYo&95l`mlawL_E+c|qNcBNPoVpmA{ zt%Gyr%PH?!6BqNStcjCRea3v5A7N4GJ6bYU1!{y!j2l1XfAO%tMT>fj7YoDfpp4j6 zGJULJxGv&z%_Y(6v4zohQ%ap4Fg80(FLj^u@@M9Mu`6Z#Is|3mxQL;(6dvV|Uy<2* z;F@#Ew;QzHgMT&WGp5jA+J%=_%ILg7Nx{-WH9Ai&t%*bpA2~2ma@sSTGr~cw#7(HGXaiWh71ho5a{vqRl3f7-L{H zl43RpJ~twK{Bp^cBY{ckvDLXkJ#sq?LUaH*!`3HCi%E&T@5}r9Sw*(RmG`V7OYfK8 zcbbrv+<4h?Iu&^G=RQd}g?EM$PXB&N1R8ayglpjFEG6z^WR?(vNub&Ga(I z#%`5Hv~|=%Fs!Nw2@g~k!>J}4`dvBhRnI~P`GqSnVzuEdBr16H7T-;c8G=4yJk7i$n!AimZ8GBdA{%1al zS$H_jiCGu}HDgg-)+)S&_pDWTsVbzTd(j>uQLWO5nq^@X9v~36qx;sw(pWnR{74FG zt8fTUf`jaTlV;oHixMMQS(h(Q?w>EBMshDn&l@%-Q+pQ?TJ^4w?n##!CzXkokqhB; zwK7Y{AnZKM{sGA-`zf~_&3;O%K=4*yg_5gw>GCeyDM8Uao9}82m5lCXQit+ukfn?) zZXb;$_|}QIbQ-W2t7>RmQ0^rp03lgA!6@29UR_USP>P&8uYcSL)%a#ja%Fz%^~;)5 zqCqCTc$Nqf67jRAh1(j`{8p~&@H_kA6j4E#;<&P=g<~V@qd!mu$c*t&qWvgt5AZ{d z-SmO#7l+h3=~voSp+b<m##eeyu0vDMAR-Kg`HGLkhDyc=4Vyf%rB(#}p^d zDJ(=YC686rNA{Di2Pw`jMe9YmOYRA7(N!)Dp+Shva7N+bCs zBSXA{=-%lRAzH4yM9&nmg>77GQp%VwTi0?W6GzA^+c9i5UQkTun)!yiFX^5f*o|gt z!T@WssjvWefh*SDU?e{QFzqCiS*gr+*Xk5CPu25z^1mjg#*KYdseqCA8?UVDd2xCO z^F)>&=m#=h%%*3FQW+@qSebFgJ^L-0PpK|nKvZMmYChK>Dsa0iqJ|0)kD+MUzfF_z z&4p1y9_Hb>>WIFn_y7K5A5}YKj~szNi^b`h^1`SQuNo5F&1|bx!Z%}~z(F+ydRf^w zxzwWvR)Xg@!DGU>kxzlhy38!ySXAqaJAs;`XFZ44d=iTQ`nZGKdSk5pWK4HlMog2~$b!f(!l{#dVVU&fZM-g+Iz<*dtv5E=ABS0J9o(J2dElgs#hsx1JA zkk9&xHeWy7Ub|la}o%BZhLVkB3;hfuS-i zbzdg8{xH(ZdRjJXg_mMxQ)cMGm?*%%)cut-HPdUVoncs-690*=u}bF_-=O3cSA}3* ziHHcpL}ZJRO$se|N4_aLhl%KFdC40@WDz-DZx+klf4Cl0We0ebMHreuXM~sR_mW4` zr%9HzB57JC&hZwpU9CpbxsSOFADJ$zk1wi^yLlgfp+DkCP#~hC^G(WPR7kPPy*~8lkvw$ z;Mgh^^)b2B-5pLaZfQw4TyqJ3hQjbiY7~u0$;yp*E{dG%v@<|L ztdLjca8*WfI%i3_6-)YiUk31HVaQtUJ_fv*@lMUdUBSSkkBm$1(Y#Au8(`KU(G5xk?Nou&U(S=}PCx?C++enHpP&9ZC{EhAQR2)xYlch4tjn(5g?f20*7+X{!Fm* z7LR3(u)fTiEQ`k*SUkRa6)*~M1XR6vOm3xtX;~^zfIIfd>;82p^1G7$C-+XpnXE zsm%u)*S)~E`1@z8Ma$8Y;IIKBc@z)AFe7moY~qP|CI4e+T%zA$;7L%2v_>O2gWSUI z#8e)%O2!D5%4CE_s^V+c;Ez!UMmVQZ0c=s4h(gh$L_j&a#(fi2plaDWTMLqpk$o)g zcdsijS&RX%Ocq2~|Ng3A{iORFiYobdSXB8VvJ@a&#a{S`b$0gvMaqN}lXBXaq3|VM zVcB<*(Fe|c;K0g(vuRjPvCyqUa0>f9>N`=p4GUV@Ef zBu|y^o}J}}dC~nR&tG24dWMX||I5b=yf)Buh8GKkJ`#D3bj+5FBDVtmwm^vtMeaKg z0pZp3%@X(1H-to53CK>l43jGqBohDP{#qau<;K2U=bzX(-hN#pF_-UfU%qq1kQ0``Sd>}8$9X_vg`}OZFS!CYmM`}G#tNxwYMd8LKoIa*l}LHS^$xW4QxL^#}l!C-b|f< zq>sahq-)58Tfw8^1Jv|KdAnF2k8ndXp7S-%1crSM_mf&)k#&C3VpU@!KXs}QJ>*`s zM>yZ363ObV)JqnD!(uOynrTth4fe#UQ4`Tb*Get+xctC{i4wSw z14i_SG5cq(P9|7`fE*tI8)m8o zJzB>=U$iL`Ye5kL677@xZ3TxyFd_js{;1U542!&eD~K;=fKq^qeiH$dE15H3%hbLz z*a|hPE9{HL`r^)rn&HO$>Rw>*NQXqJ&gaSa<5DAjFljOzu5m69u~AFaP%1Vu#MvOy zf{Nvk1?)A>D|+Qed7M2hv&Nb9k_V%En$QuH$tuV=V$32C2PuIdX{l3@&3ky4ycg-b zKgi|%>OYx!3%leUqw|*M@~+J0eMy0wgF$R}U|?MW-YFRF%I5uRm%M*{Mdhu?<(-|) zJ6G~Tg6othLLm1-NlA?bTLMq!%4~BaZIQyLT8GsjR3BS2!kB-MO5W@3w=?}m&$;p` zCEg{VJUG|#))zC_7j=QM2q=|IsDV*}Uhu--sOGF|oI|NdjQRs}H9e56=@9`098QvM zX?iC1eKpb`gUoa>!DCe+BLG%sAhw$3Y=lRceaFY0i9~NgPpbp&`qO8Z=UC zMYBzBM-++gokz4r*@>z0=W+|i6Dx?8F>ZL6Y#~;TK_0UKU0Dx??BqQeKw4t$OoVPz z+Ak&3wcUQxp z?rZ4nUYb|K2hVo{!DWEf%}EAENwYa|`J@w<$YtjpHIoNS-pK z|1CpW}6Z)j2MM=~8Fea~Vum6{7Pe*LIv1ViV+4@&r@3U{kEWuKAhsc*$$8;n4HU>d$Y|Bgn19-A0hAW%x3z}$=(fj6RtFFm8kd;gO z@+MhfS<1XT8Xg zTXFZ^+*0d*HhNLb;ka`o^3YETp0DH6r+fW{PIJ zy;s-aHHSwIt2rrBR5L!>6W>q0KID4Rr&3rgpZra6mZMhTOwNvfUu~9)z9Sp%;v)}@ z5)gZmKYrz)-qBS&44G_Z=630&c_=RQ&MU|qTK8$ldYyStDS>31S6f=Y&qfJF3dG;t z!mJ2C!5)El>;8PK-{(V)Z`=}yKRKAUeLmzl{^TI%SyZzaO&dYkvum&oLoC|_Vw;Id z_%rD|;bI@agomeb_;q;_%P|rWt5NbQTWPjF-+({_9Yvg!e1Uj_*}G=Ek(BknfITG~ z@YcRK(+NQPID_AS=dzidL(i-!VH8wka7cw5*AqjHE?P1k5TudxA*x?!#}LzH6_YP> zE>07LuBs*LBUyT)ZYTPbj5(aUOoh*cpiDS*7UqT`iL-i@o>@v{6Q>pWebK*x+So`* z`mTlXP5XG4ti_jc5Y_9EpPTl6Hmke)8i_jrCBA9D=xc2~Sne!Hzn*C~C=I8RYCR5& zdj>5Ik5wlhFBG`?AykbNP&?Z^IjfmvBxTWDzV{S}>%{oZJX)9)soeIQ1GN7PrSBd6$WcqMu$*Lu4?xWarBXk*V~xYMFrl zo_Uhi+mRZ1zh5j!?I;{3eUG7;kJUbR&lRYZg`~g|Cz;I~eNpnNQ|*+ztMLT( z$rU=lBkFWx!=6RaL+tUBuGuUu{aH8$r}!piB+H)Umrs(^OG3k? z|EL`d%pb1wohrwQiZ^g#sppkg;|vB*R0h%h&bsA1s?9+4k$ozgH`dYUU+v2$rB3Wf z-;vXY-b9hJ&xIJhM*TZi4Zz>wW?;_JIEq(uIE9};9k|! zW%XB|>@^Pi1eKOlr#fXrkr15(h@!c!keDMKZLF!NwjAfdJF8aq0PJoL#5GeHZ!e7u ztEn>*!Y^adslL=iW_rcOd|8C%oOtUcNnT}6A8;GnwK~=7WhI4#i zVhFb(gVKaTH>K)kidvBVLqMInoc>i{F_Kh}zA3P{NPe%kmI@Tp$(h5qt9-#4@l<4G z>|U%y@kVQYs}pa2!1q`?E=qA>YJ*Yxai`Jcp#1`TiOM%`M@yA+em{ks-lSHeR*%4L za}GNqr$MH~lgP1@4q1%NN-Wp#wvEHxSTxZ64JwE8yxEvogDW9Mwp7z|vGyWkzCK>6 zr7(5MN?d0ijpvNc&{wa~cHWGr=o{HrXp3iwox3!zXzLzMGiuzfm(?QrwR?~>oRKG? zy%2Q|QGn1=mpf7M(KsAUJ6fybtms^_;0ZQT#nafwR43iteO#Wk z{u3=7Hj>K#OKeVMkFpG8EHZtu%}lfY!H3x9(;`u4?fb$iu{k1V$EyzIKzyM)v#r3x zqse3}8o|E4i=um(Dbp8t_&BK$f2OhM5};nrC;Xc2sud1y+%G$S7>CE@Ib%_!^f<{B zIfDg+=zE?%2876wnZ+se?!;0j^oHOlCgyI$o9DLoDE+Or>WE&?+M#BlK>sKKEzd*e zA#M02@kY+M$ejK$EwY3&lRY$ePKsKyJ1)mnBs=Cd<}c}3vvIJu1m&`tHO}m%SpeKC z)xcK^8PG%KAhA{@;E1;&b*8(9M_36w_^Z>8Rd%GW$uqXpcs?aR0`-~?90+udX%`(_ zp~#mgU(GKDp2Ur>gxo>BCrb3!du zf|isQT`T5ftZI66FA3p_8lqsMz2hTU-+O?ZUR85X>D(Y&1mc^|Hxln5FY(ROqq|9A zBe8}E1h2%;rszgJU_`MyRjL*ZNc18Bf^#5zQOHya2**WFH?L90<90x*=^AR+1o-T)owO zsK+pmecR`oTEL_?SXo9Lt{HW>#H4WYWlcE&T>k_-hIfxBuR<&LXf>?U4;4I>uQ4Ms z5~a+gGgvDl|+L&NQ0NG@!5~Bz3rlbqb*QE29&N>DlIR{pD{2GbZ6|ZxhL5;GE2NH+pw{NMUnB9xbi+wna zKfbA$JG761V0KD6M|{&k#MzcZkm@3K$v?$Yd=n3M?k6HYnX+kEek+VQ)|> zbviD>p!Had@I9}yyj=qUtFJB}H1|K59+>L;prV8bb(#%QF@BL14}V$q*bXnAiQEDo zDm~r6e*G|R&dx)NC*GYqlv;|eT&4Jt{yj3WJ8gUCfdrOZM9YZAKIx&E_P5tIa!|7G zPRao-U&&k|+j2y=yjQwX)A4KCzw~=(|ET-&+V?OY@D1Cqpo{HPKLG#fdH6qemBRn> zzTLHdq4dMQ>wfqK$LSJ;O8Y~7UA{%_cR zeDF@vU+Ez=IA;f|5E>xcCwFH2N7-thkqo+5=|T4@=l!bhsd}k(j;?i%``PE{uhig= z9^00egVRUn?4R!YQ@Hv|Be8!*mws2h-l*0!0p#y_fOt&pRd1hLk{+SwbvqtkPS{zw z%8W10YpgN3FX38;IzQSDQ2sPW0n}#o?6!JN(dAD&3r{0vuU{L1HrG@#VQKw=4AVyu zw#Z2C>AyUCv%<7*lLU5JA^ovT&lYT(GL{5u-68A~u{ zyp9&?&c@f@D0Yfz-y!yh*`}-=da~S}ggMTFrrb3(g5xnNo0YFJY~Lo9P?(b}v)c>W z8VLMj>S!Aw>q|Km%(QxOEEjR|^YFb+Debyn;Z}67X+0(_a`ZO)-G&ZTPeq)4Bg>a_zZWf$kyK1y>Ct7nN0&K20=N)(tZl4*H@d*Iek+K&eb~h0O_)a+ z$unh3lUOBHHMmgKC#Ex*$+B|?@w_shds%i6fgD?0@au%-RCWr5IW914pT%Ukj`xCC z6}tl;XVSx*m)(I6sweSE-pdnvwzPmb;|N4HtyjIbIi`GT_uhu9Z|fgno`zX|bjM$q zS6=l`<;(PP^d*OD0#3$W&tUJoz_cQdLC!MX-Th_dHZ^!96=f}ipHMlrN#C#Qx5`fa zaIc*lA6PXiQnsFvycFFSo_-#*ViyCepx3Zo;6WAg{Wm?VlU~cWSI?0#`%ikz{;!b; zQI0YDAkSv|cJ?aN_~4#AYW!GJW6;-+mr9Quv`wIVKzK8ZN z_|vxSe^Yz?_kDLB|CjH|Yu}UqJ-;FTeZGhG8}i%tw9y{lu>DyCBJS*b;ctJ;!+*Nw z|32Ta{dK$VeEa+6w?9+2U-AvxZ`|4TX9RE~?a8RL3~j6i4>MKV#!<*-^%#6o=aqt= zb`xKV)xk_y+!v-SnsTlUutvX;>EpR6ycu_EaIfsJtlGzomAtUO)I0dIKVU*UI!#gG zf}Xkg@{aUB%M{;P|0_F6`&_kWR9_aR9ZO;BAu$p{oY5<8pRh#~5U!@MwJGD0!XAsB z>h6P~+{XM@4=gD7)VR37dR5>jG};&v958|uvxFK4j0mOr48)x% zjTl4118RvK)X#Ty%ce;*F=nfa&u(fo5-3}QFchPA<_j+(C}=*e1bwyZ4< z`C8*&`Xc*bvO1c5Tn`b7e^ln2fj5Lt5+|aX4ar5)9*4{D6uDor-L78lBU652B0uiH zeOqQE&tYb$il@;z9uv!bgbGwfYIPcc)4hiju{!P)%+v{~ z0kx43tK*x>d4aL>{p_gx_AgTscGWlVOQ>;X!OpgCKVAiA#d>eYDu)_>_?=KgO(X)3 zovom`ym*&WXc5vL{z^W3@+ji(gsN z(?}GHmse|o*+VdDmH)Q}bePF~FLt}GTuk;FZL-%Wfp>PxwuZBOWPEGS5Go?mor# zXykccNRz32iRbm|my_ph{Q$~-8ojgQ7cJlP>up=^^Y!DW>es7w+j+h6*{|~2_w0wg zzhV17{vO)DAiw>Sl_vSd_WO0;L;GufnTNk;zwGw)_$&T@+a>yQO_}d(KdJfrbW8x{3Ss9h9a;r1 z{Bvy<5)Ml5pZ;Oz^@knUb5~IEJHw;a&}EamTByU|RGM9{qi?gAXbPms|D`?mPyCl% zXZ6Opg?JR*^qQPGBR0-elK4`W#2J#<(j{?%B>t^SVvQu;)+O;!NxZg8;+~TD(=Lfy z4kYmuFEO)F?2!1q48bxePSu@Ys{09HHyP0v#IODCtuTNxQqUK&%lO$=e&)53u|Wq3 zg0oa2BX4FH&Wyij+>#rAgQ;2{7Zwk_?K_Ubdf@d21tX<<%wd1CT^J4@v|2SB#kE{Q88aVUxLq!^z*;igAt zlvUNOD67XXuJHa{Ug-Rh%<;dge4Z?ItG{ye2vwuM?x2c1ntVI|TOLeK86bRba-8w4 zyNA6_kfbi*1DI4Gxd{P9|MvVVa@LxkK~ULGtxoKK)+*e?y*%U+XMSw=mmt zH@w<8F(!$xsl=&%0zOhxR0Q*hd2&7cn{e#?&FD_R5K)|~EXyx~{lCo%&|+0Ss+Q)n$bFJ3}Q zu`wHNnKd~>7fUY>e;&UO7u5aW2i`Bh3@^pvvR^4iN^p+9-#JOdFY9=R77 znCyy;&<=7G1EKZ~mNP7CN-cw#5v-lHL1hMWa8nym#xEy*_iXb~#*$?kgC(uhC{?&N$+6!Nyd_}00 z;h0*r#|+YeUfZQ`~QVJ8)6HcHU7looM9@~ z=GH8%KTFQ`80uFx1q`{0C0MHwmMYQ=Z*{i!5eE6y`i9bRc2`5nOhgRRm$KTcOG6b| z1}%SW(yFbBj4xrktS2%)#~m5OHa7M=uvM@I(`DAVg8NG`6qT2Kt!(3C7*R*Fa-dhg zKES2UPyJZL`S5$O&|TmVS_`8T~vnmDXP?)-ckg) zYq=)KXTt{*VzB!x{CeAm|IOYGbMIC&7-L`OCeC5snru0b<8NJO9hu;i0`pFid}+q0 z*gjWj1_p{4kry0Qlkfn}-;1;yJ1c zV{;ED3L*aWT#lye$m^<)$LjIBcJ zWjA~Dq;LKl)YWGFL|tR2u2IH(!@EN8xhwYgzcV=BMnpTH*b2B;0&b8TzV`hMje1t! z7$5vE$v&X755(8AE#5X)saEvE{*qNx>plWRt_*(G*BM#}!lfPaBE@W62+iSBc6eZa zBX6IMVSg_#&?>VGgTrIm|4v^kD{+P{!uxkw&^YM)EQlO6Zxwl)D(`l@CE&DQFT=6d znX2()ohkcB<4Z~&R65~39611a+A`r6o6jD}_T9F5-&~p8Z=&`9SeE!u9qXVUNCTw} z@+qCkFpcD4@jnwKMZ&j$oA~jNCRP6qNN}rL52$knbEIDN8L9dz9qeyG-l+sy&(Se}2*|qAeK93uud1*t;LyW=c$=kH zeSzIPUxO+PF?7VKUA>B-OT>&%EhD2wRAT7pFI6M(IAN*qy&E+GGgAmmpG9=zda5{^ z!+$XZO7F>uuY>~9I^NTrYL=ddu`RZ<>`A+Y4pbT5DE77*u}QOBZ+Kg!SZVCY_B!^e zvzPCbX-M+i@b)mDZe>1lVul=}(OkXTj853@p)#25?(3Yen|g}>72C-OYu=dX2b@JG zQ#dBRmI<#?6HvOdsCqZ0Ecj`>M2e9uhMJEkla^iMI3YVr~sBit4&D`0kebj%=p`z()AVI(l-OyX6a^j zi6hQ2PB`12B7zy=0{Bk@Z<=}sEsQqy^IN4Cs1392FB2ug#Y^lNo5L9Zk=3%@3&>Us zijv_GAPdH>i2HU~Ql{0mGJ{)B^sj+h)D$yC7Rf>5 ziH+&No(r(lD7GRhu2OY{zKLIaFVXD%Xgw5I*IzH&zinO|t6K6Uxv;Ig8cI>txTqH; zj$wYbkNxh@=$A7v!rFb2GxSZe&}VQAlFjp9eLiFNPr3Xwxr&$)8FhEei@m|*;A<$Y zNBbsME9*B1Hd}HYhm7D2V_sN>fc;8H(PHOeB-2JH-?q;zIYuEjZHN3}a=q`L-MPuXV;gGE_3l`#YxlzwDI=*s-yni< z#2K&ICs1&Q;>aR@{}ew>Q#(C^_#H1Mtv%liSq-@VX3!A43F&uEikF6n{qBRFeBtAWO{w`v|aZykZZw9!!j0EvLlXxX`TKj7~PJxw|m($ZEBI<#@&nbFyy- z?3iN%#7L#c6EbFoVVg zT>P!_Sx1*}mp;4n4=HrU|NDtlhhS;|UtUsBj=7<-${;?AVt&-l@nytQTIJI)VYLP8 z<#~L_ebG6}GkN4g_=T_G(1(-(n>YMXe6Lujb_zg7yy4S-1x?zMcco8?KglSdj%Rp( zJ+*(6f4^hUf}@;&4hB@QJC@?xg0Cj9*lhHU@mG*I>sQ&A-sa2p%9hC3EHnH9_ckn@ z9l1k}e!6+T0nb@_C9^zr5Y^y<@HpCixs1?Z6$6=GBs?Z{+u21g{;@f~m(HO4LgEpe zo8<^TB-yd=f0GFHLe|$3KRWK+Wov7RANJ$!)+5WbaGV-Pewa7h;=8lWA>#h zZGv`aSx~fde-R*=rPo>Kk~Gn|huznj(%GvutKT9?Go+pIrT6vP z^Jm}~@)h7H`l@hH{(rM((i0DTj-=m8;Xq^Ya0 z1jy(bn$%}`f}8C9`zvOgWSOE?mA&egA(jih^L7!jO_M{-Q(El|R zm0p>YX;2jFcsf_6d)+AT5?k?^@CP;09&(;V`cx-HXR6PQq3eEWI!pF9t39l?cu3?s zS>H*u2RcVV$(e^>s}0zReA<6rhhyu5UHG9JJz{_9rYUf?Kdbw!tu6Rs`e4e>@1^|1 z@~s|aSJ`C?p1(|grTk6v53T<(>@QTh;d{Pv`5N)@;V8V6T}kw`!D;ZU)ArJH54+zm zMN^7*#mVL?@p15Re{%{S>lze2%snhVQspa}ZulC?-@}<0Ha*(o*kSj@Bj7(XVY+R<%RfZ(5l&gAZ);xqBMIA_mFY6WTQ>*QXl+M& zR1zzOt0JizhiPUa7kVR)6iR4#n@&?`b_T^melfpft_!uZ>UT(aMLJ`D@~-?rGtsJ43KuP#wcfl5RXDuFI5vq({_Ra)#-fb@nH@b>VU zJkQgNoFKg;bQcni@GGm5kxb<#=*JovJaf%6wj3c&bQA9eJH5V|Q!M@N>a8543$+=nQ=ucr8SSyz+ho z2u!O?o9^UJZoB_{k#s*I-DX`yD_PH)+C5I!G5&}Wmf8d-M=ED+Q6XqjbXZu=f!Q>@ zI(XEE+rky(q;Vz3pvE&)CG7df)M;{ssmYOnS=Pyl*le=!D90)`NTY=hxMk1c3-0ir zJWpbG%$`HgW#>3)CR+Y}mx`%uO@jN2^aWPI{b%dDzuA-NpRB9^)ZWL;k7T;0 zlSICu&NY=@6}i2b|3Xn8l4oRG9xG_uyqpl>j<8Sk{lKl!vF~td$--qG=Px>2+qyP- zBM(U@@}MxW^z^COa_ry-QizIR31sd)o5d24yuUiDwa?a*11!9eIhZ|EacU!r8FH6z z>Rb_}oYeP5E*y|tw+J+GRhG3vd4&Sg!Uc#=KTJ`WKyZ_3cRY2H;s8%{5@wzXkDsBT zvGCaSlo^pA3lXt4(%M14s*215hgH~#(%-z%VZ}bw4^N7`>WNmV1MJ#(r=it(UmkTQ zixOcuzbI-)Kcpb-!{S3L{e|WK5rV4eNPx zywS1~yG}n;i@d_iG%PA(2ZE!Y8Q1^|oiDEN7I3R%x6?VT<!_BxW$jW&-ONJ-sx}aPM83Q^vs;;m8My*-c$HPi4 zvPl2=BaL!)?NgokEFr=BbvbF(FA{}hHzC7+dUsN=<*4{?pjw^&$m4R6Y9JeeczbGG zRu@57caw6D#JSv4m()VUmvY*)y>5lni7hRQpwlr;f8XD1&1l4q_DpGa&36@Nv&|T~ z&1IAsgKfimOnp_sjFRTpY95({s>l7_(>N1ZI_8VhBAkeRAh@q&!CZ?gr$$I;`+Y*| zT8Ur_it4y1d+i|hBRTv!%??X36@Ph};=!Joa7Mjb?&4@8ONPmD;uzdL%f)i7p_w$K zgvZB`pXv|CJRj)#(HDy!S7-gwE@mXJZB#w?K|qqCkL9pe)vQTQg#|R%K+fXCsyW>4 zQC7e<{yN6iNKj@Eo$5bbF(GPVb%S*y_sM-8tb{b>r) z6fw!n_L!NRg&LWYXj~MD;ytWzPEX5MM4l!bm9+%^-V2s})V~)j+vwe+fY#_Wqr+aL zhVJ!(*4SVPi3V5`P|WL4ecsbHo-0-ig|Gcu^R-W)04Rdtb)GFIp$9v9t?fShD|>z+ z=l11k6B@Z;U={qf1n4Yq+)pC;3%||!|AODHo0-mUEn?L2=UedsdOSFmO4{R>x+wA( zkYdMwiMC*l|E^v$u>^|Grv#`y51Q8<#pKx?A|2sqZ{Ff5Kp`q%# z(E4VvuQ>HOGWA++z3NL_oXaOkookbRbw3` zP&?btz#qNJt-p|B!>hMaBQjD~#D~{!=PUNx%aNEPDnwV0KF9HYW<&)e(MsgbtWPv% zLEo)csJzNPk#_M$6#@z8L;b>8pJ1xXHKRbu_O2ari+ahk!Oa!1ldlDx5rs}qxRapR z`IPN(Y_f1nb7d8Xfx$0??a3iBKau_)2?>F4Z!u*}5)5>PCecZyF!I5a#vaIotAsAi&9r-2@;2{O z)<@FZzK3I(Zv%Z~wN%jLj;hG*QXQ#g`}tCLBXPS_Gg8?G$%Z=I+@|FXf6Of-&!kO0 zzbow%^}SjVe&%W!l;yG~>wdGgrH-rg0shX=ee}!tNBm>_6{;D?7K`V=G>cBhmF%(F z#A;t@tOsron4XG@4u;O@p9=`_n}9~f@928zN3q+MlOF4)NJx?28Y3>Rf_1( zGWX4t$Y+_y?YzB{O&S^TW(7l=pi6FmQv?-XM|LTFkR*0o6^H^`hMMsm3SK|Jqv$=V z17m^l?_`$-$9>)MYy0#ZGyH+G{XvNojta05)wj)}=SGL5t2?7xC9GC%_2EumZqryT z-H(ek4kjD9)fQrI*NDj|JI5Ky116C? zlu6eq3%*xY?XTAtf3D$Lf)7CpHVP8)N`>VL$cej-qVu11Y!_V|{%Px_B2pj@VO)>joSKS3tNP{Q9&DWNtgzqeTNzY0P&xhDn>Iv_mT zei3G2;E^wG>;+~4VmSY21^1NGH*wk-sivajt9UcA^E?P8tQGdioF zb+H%uMNKYu#eN641bV{n$9_Z4K~v@L(+T${ZE%yz8;;r12O@1bS}+-}QB?g>A`bQh z4>|%@c4ks4{PHa7PJh1sw*q*d0 zC%FCK#ZyV30L_V_;KW=^{ccI06@8@~}m)br!$7RAIQ{po4p zGkXbtt<7PGp@Wr2tduxddOaZxIWzvp3+S%h@_VjF{C?fy-$i`*hW$g2Y2Oz)EWaH< znQIMV%zx)+4kPv?c!MTF!)D4zmAwx?uDQhyv%|m88@Y7%CD9R1vvl{u?}_=9vt4*K z^6qmIjU(#5(RB{^j9ilAjf!O^YYa!)V1YVy2B6Yb_PvrG$8+9r zPS*=be2bN6vYf!3U4Pf}0Bo4)?mo4X-Z|0p`>f8yVjXV34V zEzEb{@t^LAWEC*CQ=+U{x?$maW)Ug(ITsG|hR^gyug$Xy9wh}2u?oKLYF&M~!_7TI z`bV^^zc)OaI{%xp-R^IOFY4+@Rcx9W{Y{%{mR+&kDE6goN0`w?IhMJSH`=CxgFE(d z!Q&!g8fMYH=nC;H>DUm@{K)(@7FshmitV9XPecZRCu1*NEL2uOk)j`9b#ojuPglmnLUR<~C z|NM5XnTZg$&#}N6yNaSy_2U-nXJRKSXxbz_v-zI=@A#VpKHWdxpm+BSUp%dQ|6Y{- zEgduV7^zY{vJ}8l{733|#R$UnnTseiCQaf!_?E-ZB&mFru6v3fM6&rEH+m;Y5ZzzU!>oCUcjT9dczKaXt%0}k&4Q9h4V4VIK$Q-ad;n} zSzZ5O(XF>ue=oDYolmOxN`0>S?N)|B*0`K&@@U5ku7v2hP=v&oqYi0ZE zi{6e`3i>TQ*fGQpetNNU`SGN22j4E|`Y_%+olo&ULB3=f-w#2iQ4nx|%!L1YHZtdz z75jY)Pb_l<&N3s*ME10hW0aK#M&KnZtsB0a%Ws)}FcI7_3weqc*|#dRn{2WxYNLtnznhud)=2agWdH#CLCHL47-+r zztHAqp2+PTk~R`CMP%RbkBdE-x8JF9d(Ihrg%{_VzTW6;hg@{p(Y7BnJ(n#DwQXDm zf?ZVGe#ZQ5_>>KIE`OAXnWr{unOCm)lGb8kFrq-)LVZYUnX0wSep|UwZPD8$+z7qu zFfm?HF-+%gem`Bn3hq08;UFb#@7-oPUhOQGSwFmdWL4>o1?MBC#pxj+^C%^H!lA9C zBhkV?ikzJ$WFIxHg5h`tg93mmBg42#xcOA%5b80=s_E9?c51pEx-|Q3ZhwB!J08c! z@hQgwpJ2pl_aov3x?PwXe6QRYa?u2u-qTR!T>h>wQn9F2pk`@Y#s7luQR}H;koxr2 za=Kl*{{5)g2#6;DqW?Hk_bA$)hNne?szt+UDL!6yEFhs+6IG$0TIl7lc-CdUrOL#n z8x*{-ohG2nN2JV7y~?YQp%&NUPcU{IwI+g)RR268UQ+F{0G#*IE>$vECELZK;rNBe z0!B~zLn!+q^!EaDlA~4?L>B^7{FlcVSz0B9RW%(vmNM+dJX*gowGBjC3CA4^U_vL! z@ssu{v-;)!G!FE#3}$Z&PMyow%3@ctQJ8|mSc>C6$M@)!kqnl7K$3XNF~?s%!78w` zA~T2nYs4=&=CsQ~62H%}#8-5CWd0hz2FlapWpMk&(l=+(qNdp22W2>j-^0q54u}13 zzc~2T#clh+*fLr00%KAE;4$KXRJ=}<3qr6|XYkohU;mU`@H?E6az_cuK z<2vMHGg?J$H^*MwLot!chvjx-lrlB~?v~__O>o$_VI<5CkJ~a;-a8 zc*}%oBr^q1ry9VCfYv5-uekh>VU)xo3)%(nMNcHufwvj{#1mbugt85>i_Pegj701W z3@|+5%}g?!?VswXBBE7A$FosEZ7%TCj?eNGbyP)X^{djlPLKN_I|%UMRK5AAi0AtOI|o^W>W4P;%yFH$A3;eLRCu_ExTUpq0!p5=K#LR zxmSf+Qu7z&ca5;+Lsrt-g%z-Czg-G1o8k<;uCfz@KZnXrlC^jEzg6Z9Y~^SZl?xSH zp-Lo1MS*Di-&A*cGB+{Y5jFwGS;6v#|H64&eY0X0d?JLcPO>XQAvJ-~Gq}BP8F%~) zm4S5GMUrZr%!A7^ouPcbxSpqNeG4zhr|YF=&h{GqYjLbXHPB(@gsN!S2$AERp(jY< zj`Xpi;cx?gpRCve*zPI8e59>v!V1Wi%i5OqpW_UDE(3Wavno1!0By+BKeULf)a}N) z9|<0!SF*wz66D8kLe5e00RGbGD^y+M>+!bZk5>GNtA@g8bYr)DBn5a2^0{Yepc$RQ zs@LY&aBlqZ%56lZTu@z6P)PRDk>i16K4n?X(78;3-RttfP5dRhT-s-6{1gJLdNA!6 zxmIM@ZdEK7x|DVbF$0ll^+z^mlmQgU`(A;4Q7FQrMXZw0^kFGNA z!Ch7ET(b=juywo^2vqTK^|0{Hm;nF^O?K(WtJ2#5M0kYojJA=cGqhXk`n%2!S z8F&&(=)d7doK<+4kyZDK6Ma~|Iz#0GmU!sBMohS1HP4wvFLzevDE}fB2?7#-g$h#l z7?@GBkSJ)W2}4cwu;N(ZXq!Zdn#IX57h%dX994x!&5_BlVlz5_K3ea4b)xcQKsf<( z2zXcrn8|=i1S}$;LkCRK0iBi7g@9VC%A@9V;OeX_6wl7ek=l`7&)0PA2o;kcFsm~p zwNjo6gZfRltbP-As^6YTzP*}!i&<|Jy`5KTKFiFO#AeY}fg!Xn89^Dt$wW4~8^2Dq zi9#|4?E*|5ubV@P3B|vQSZMdpbpr{Azrnbt`kQ-Qj(q>g{%+f!;|!ev<*+N=&^Nj} z*G$QvPiDkR5jCLy_zV@foph8I+?nqQf9eVE-m^^B3CjKb+Md`ZA%Ov&;G&W6osak^ z>F`ERniN41cb4wYC@}rG?zXZFiu;v`wk3S7s4bMlsZOMIx24*Nu=@0`mf}iHJ7VOzTXa8@qz^?1(SoM^z z7`10ZhW`%dWB%NO^*2( zyzeS;j=PdIea~9F-JRUEc8PU4sNpZ)A#t zyOV<(`)PU$CN6gVU>q@{%?`5`Ry_4{mz;jQ{5zB_Yc6LI7JQ$u_hE@F{M@`ru$9Ky zt$hA5NddU8@(=)>NdTQ8F={oV+1IQPAoBq78R7$^f-v4psD-DB=;W>1^C~>+R|O9^ zoVVUZvcSn#Jf~whDr|p zI#sH+{bx9r_n|VufA%5qY0l;4sl<f%D06tQ*eA z%#5$&Q_9;}p-~r|l4;gHZ3dTYa?$Po07Vh`YKQ4~A^z_~RaNUCZgg5AT6vHRX<-(L zBiD>AkfU?PkX-`K+)>IXixVggT$Jf-~c1O0e^>TtSt0{v)W(Yxs^L@A{$6Ov|@p4a-( zUhv@Q_mtovyo-uDmyaev@U3!Z`??_+zxpyl~>F%o`Nu*k3W>=b&vM?Nt)NswAXU+DpGkY z;T7t@3LXsKs|24hudift5Olno*RqU&tJ3+H`ra@YfQ7U8 zw{$*tg%uR@w!Dpj4fh91LMWPAQ0^?6Q7{RgJMPsXKYJM0SyWdr%URS|K*C20+LX__ z0-dJ4;9m8;QeAiCEV`|rLw(;}ATj_(z4A$hzp~ulh&SJlZO1j8zuSJ1v*^A8`EV9J zSg>2Uj~0l8+STiHc93%(tHWQ@!_neWMg+0paQB*=8cRH$?Le-JosbNd+KT#ie_ z6$cEDR4uqM&l60Xz+4o`A-PT^_d=myasF=i#cjVA@!#-U94C zCXK@M^c9<2$>i@dpm#l)Y7a$cK9)_=6Nu;(dQ?$4m-2(gyzePGYS zBwZvUUQMQLV}6A{;=7vTIzz`x7~*?=l5lf2x9k2P;yc1YMZxs=HU_tN*Jx=>JwI|! zW4rA)!G{<&d@QTktT4WSEPf{~AZz;^jDWfV!Igu!+6&g=i_+pw60r8Jf8}^|@ES9A zDifm6D)KjjW1bO(4ky(SL@jEOR?jd4i9l=Hn78?)V%LyDZqLcF`)=RO zR@ar8hm;-O)!AMkx)T0?pmLUzO;>w2oW2L@3AsqW6~y1u=~LNa084l?D#;F(z9KA);Ah%~_edh>g%k zkOY$j^h@t{jg$3!h(YO~F*I<6|H&k{z$1qRz8U;;#*>mZu{F4_uYXQ(UrxY-c~_lk z#BH*#B_=4)pC#|d{wRm<FKb}c&}GdyUo{!H;kjrZk3nW^%$gdie& zaJwVi2Y9-Nhacs0AyofS{J@S!zC`?LW#_nqKBJM!I}6}M$SihtXF zhd;Y*e@5UXGXjE%5T5$9%hFYy5O`T=HJ_Z}nb;n+7r1z@4~L|Z@;P09{*U#!RorkT z8+h6a=IB&8kebxb6wA$x)<;PP@6ulByQAbAex~*tc%$oQ$=oV@(2NH1+|#^a%4}^*`Pbv()Us<7Q;$tKNujyEif~=8Xh) zdm}gQdzOYVl-|E<`zlbQ8iHX(pz(B$&!dT<(0>T71&7>+BEYl3!yDe~ELuN_4@ouO z!ki#h_%VLB3vzMq5v+pydx>fmZ6whwD^Z({aKE6Nhz}Xse{~+NCwxslQRiDxSLrCB zV!oY4(TA0@zRe1~SCw#khxT1%`MT8SJzJG?|90g(v|Bl=HO|*-oQDMG01z!#fl1MT6p*9Nk%tedb~^H|M5!XB+-w}WaH$#=d&qG}Jg zltFFrRn3CiTYGqz_;R~>(bv@~fmyNr%$8Iyd26@`05Myz+*wREIvx%FKssvE7HCZ&H-T1%5aktZfFy*(&wexPRT ztUy#KfucY==mYl;h-3I z;uQvzLU-`3P?Df~e zny^Nln6ohBl#cELJo2=H)jh2;{IuQ%JtaD$ACd`TmFSczN;fW<7w76nlsL+cI65^e zhs*5;d&7T52JqMl6GZO3#8%N%=dmC@IMlIdT2&-B{D!EZl}06uR*d!h!JL+HUSeyg zV{s*;q|D93Cq`!s<8GKf?$S4IDh|iZ+Kth<4$PTY%^#6PCKaXcFIf?Oqw7(TN2((I ztHLjLJz&$Dh+(|oRrOYRq)uIm+k zjcaY#x2xFH4gz9t(PY8T5`lLsP|CCId6&aeyNyFQZz|Dp?bJ7rzbfL{Z5qf>;3joQfnD!2`^cGm9?3b?!?!ah!XAU13{xJ(qT$=^H`N#|) z_$lLV0}XWGg0-@Cs(b)i_cvl?`FF(ghFbcZwNQZ3m9n?PUOE2JcT)NRRo*2jduf;d z`~_!}6$dzRW4y@Bwme@pDR7o$46WKdC>GMcA)~Ii`X+i#*I(*aN&a_!UHMP#J^wLj z`S)%=?;-~C;=N;0Q2ampd6>g7+s|w5@+Yvgq-p?i-I?cntl3q+;r+~V=bHB!FrHRi z>rGE|T8^xSZN_FRcAfAv=VMFIZbqk|)PdW1Q9^InC5aL-wvEAkQ4d<|XK;bAA4n|E z?g}E;!Y|QKMXUS4;-r(t=6(ZWT~o#Uy&}`m_9@m}uR+mmH}<>Uf1=pY)0Ha1GF#F8 zRwhPmixS2n#&M<3)aOVjuaCF_KXJ6I9^i&yw@MR;IA%muXJT_960 zem)i4;fxK$uOc$AfQYfJ$R}PIOe_mZq?&~%Mh89(T!z{sFAH+Pe>h~oVLKJqyOn`I zsgf+9TJ;JRD&%frcze|*L}gB<`6&%nD3jsdn6>czH2VhBs==MpBa;iY-iaG7{Qb?~ zLH1o-EOUY2!Bd>e1mDR`nw2H*I3K$rzh3Mj^*MP1UlQ2azsQjrB}~1Zt1NlFQb?mn%BTf)w>ks>eI!3aC%wHDC3+{IW-tcm#ju|FE8=l8Qk9n_xr+cr zujL|v2ycM6$I;e)xxtvLU}8(uWNjSl8*qfvg~dk~Wtp|*uz}9la5aJWyK_y9A>%_i z)l+)18ZgMl1-HzJjRqj;pb*cv{P;HEm%_Kb%y)C*Z%A(^xvJ2v*l+ACFd?i^*~C5< zFJLD5258jTeh)cdi%oUh!R;8Mo+aJ8R#vmj(yh+rHxXI=eiMIL0$(X=ZDdH{43!ximli zH|k7F#lHvORbou)i8L1ESCzi#Z2uKOaw&oI!AI&Gs3ga+;g3EUj}j6e&H)0}Jj(&KSeZ@S7GsAC$F0m^%A_Rf0yHKsVuERP-r~ z#gMGV{}PGc+o)~{xaq=e4}QrQ75O*m68(iML?Ho|wONUP_ocH)R#wAk?QhcKZ~cZ? zCL&!$>2`m%yRFK_9!qek<&BDPBDNC{#eI}X{V@y+kWHMC!GEF|WE|ll+e%|WmM2^Z zt;f>_JAbP+&~=&7xmonF&&{Hz&C);lZ)V{tX40fgzw`-D*MM6l4jA1gVm|{2BqM~P zN>}))`kUX{*SG%W{i2~dpT@;d@WuKeefM!bNx!Z2?r^0mK3s^^<~Twj*a3E*&!|vh zCA#!HQ^ud<`2R6tn}`6?0#t8C&zxu;Fa~xnyyep?`mB=pPPoB!~VVDvN1uB^7D$6^8zmh=m8N zpNB>DUY3%>J}M%yzjq z>>N-LejBul*uqs=k5O{)tqe2LobPNuTY5_*z{jb+ zuu10^2{2zESSD)7Dmdr$xXJN3{7-%Uyi`FDfjzK{QhWI{jO~2>m7&djv(F`m&xoA~ z>bB5$h2yLO;Rnv;nEgs;o#ygH=H&~WgyiHN8pPRtK8dZyaJIW7qNWpa%8?23kx{m4`>W#eow`&=Tnj<8w2WpX2Bia@W!tDWW7!B9v%9$ zEK3NpoXZNSKv}LNhC2jhY!@a_g;rUirr-v-UWZggeEIG@l`aszQ*}bPh;XuT%ncO= z((o;smtAae$%!euGUggY4X}8^%`skx%*FXfezY5aptiUPt z?!D4S@cc6t5A>TIQblJa*qBiOWJt;(1%{~p7>!j;Ud2a_oRX@zpOD&O$8&Ioh@~>J zMJFIN!Oy+neO2MTw20Ln6T=0gFN+pjxIP21ge+*V5gE(AbZ{j8NZhzuDl`6Jc!FGe4IbFBv z{+{#%%IT!-dQ1Cb6k32xv6uPB^DI%G;0b$Qq2D~E=DM8f;QuClWMdwT(A$~E{cB)2Jg<$EvJa;`46UQtk`tHG7VxXR3-0u z`>o)R%M!~?mPW_{fl$u7Fd-iiXelV4bG|lsBUsBzn~ac78*R*F$o;#lt+okjE{#-t zoX0$6Cs4lcpx^k}j{Z?qbb%_7=GYIyK87{z5+&r)t(pT=g_rEizW`HEjTXNMwUFafG^q0)ro{t|gv=O-hf&}ys{ z>Jl#S4$>p@3z&X9m@8cy-Wo7OI9$K2O3*lw0z5>WFZyrA^r-SC&Ule?j?CzsgWkv}L3>`jiyq3R z3!#U25%1m953C0xZhVBe0Sbn#9Rsy@_8|wF=yKY9A~b(fzS%imjW}}j3|pnfgs;X# zsG`4MD0?;UX85%KR?fJ>NcL^K(e>$5?~72ji6LOjbo{QK89$vQtHetydvyIfv#%kP zmN&Y#D7@0U2SoakMRr_PlX}XZa=gfiD*QP1={+AWBaWoA^)V6@=r777oxkX#o-8K& z*#GneV$>0&LWG$a&mblDDW%uH?6CFUFN2F+|Er|_ibAqi^DgyQj;cRzhtwZGsXs}2 zt3RQs`m0LKR+VZ4YNb!p@PF8+JN#o6{K||}4w-s^$g=P6GnvS3=7R>^F&gMBs9(4e zsBgujomNZmE)1G8_Ky3AcXhd=#+RIkBMi}h0TLtvJ-c6~)6;*jiL_KUw6X(ckjddXPs7<;0vq2_NBsS1~RyYB>Vi%+k*S z+w@#HoY!@`-G0bhS96Byb`HzYdM*ouECJy!G-+%>Oe*WMg}Kso*FT2psW0 zcJBi{=|#Fi>{l|X3GIeE;}P;n%fi+di7_6e^BM6+MzVi8U0U54S|)gx;|s^!C&w^{ zxrHb>8{kDVdtUO1r{?7@dBLMlC?K|!s*uf!X1;_6tFi7hVMOfiL9pjVc%kN3G!CDD zIg&9cO&GQL`1$ctX@@kbWBc4eO;-%6^c6+mh=t|&Aegp4!HN4JtWu_CUEY!f6;p_{gR{v1* zl9SHh9Z(q;kr(_}HdPs2P8n~;7ILc}b$i~=*2Dg-ti4Sm2PiP%|9M=r3yQ9oO~oIU zW{-~fFJ$tVU&!YK71~C{3{UNZEKhW)5_|KpNst+M{2QroCDA!_26H5X^CSZ?6p+-Z zpDF7}2h~breEy%LN2k7L{ki-1Bn}iw4=-oI6nbOSRI()V6qT5}Q!kf(9c0rO5-_YB z(%onk+1PMxO`xu!`JC2fV|L9vU-JTAOJmLA7GG1Huf^9Q-b4}KmWDc?e75?1HS=nl zn_8P2)pu=UgRjXSXh??XS5m2%NpBrbKBq_y)nh04{NrjG8?UXYoojiGZ}IuOHLX3p ziRhl>k+_q6t${|rF{F4z-H_sQ4|$9sjg0|=``66Nsw#~kt;5ezAPgVUs-Zq-enXwn zV)S3w;Gg57M$Ijw`s<<HP#QWombb`(B#umMhzd{5@;F@Gzy61=kVdiaOHDO>l~w{x!G?Nmz;av zi1RPFaAc`_?6```@y23btI^bKjBWAN%$;9TSFHe;;`1xlQ*mg30N2yIs-dZ&A~0{h zr>ViOt8hh2gWqR+lij%HdGlyG9ccTfqEGWTG`1F(6zlMD%}xH6=Eg=}OL6f??d55j zAMh6!UtmmYZD^Y9y4C{MRohb2I>$Aqrm2qD{f$d%nvC(jYmKU!7Q;Qi1$VJ=NuY_R z(QpT58&iDqjmv8N#>D0YMuo4I);+gwRPvv3j&b#rYTAFMOI4q@YJst^Xq0P6Yky;W zO+%xv&gE}*H8$7Ox#l(31sZ*>vxc;uWsCzLzt7X;_qEj5)cUM?C~_?>xsdY6KzmkC zZ1y+QFRp56m74TOQSE8Hw5fSvQxETPI-_$f{7h>FGv}VC^P50Vf?5>7m+2mr?j`S2 zd@TeNmz=L-jc=hB)q(B{^>dPx9Pw`wfvABdbmQc^c z%PS{Ny=?N8>2ZpSsi%Zq?y0D}?2r)Y-l>ABe66iDvwMYMN^|X8pPx!wwMZq>v{yVr z*CK_lDgGMbQ@bI7bL_uSLmJZhdaIOf3^)8O0iRJ{)7a{B8HGcx4-~m7e66+MSjc9m zt8hqb(NIM|{d8z;^St>rEkegbT3w1k2z6DAolrf=J=LsoPaS6(-sXic#X3b@u3;A` zx4-UQwzALj;Xb z>u+doa;3)@*3dM}kg^(@>REJ_M9D9Kw1-!HllGuC!)!G9=LDMON}o3l^{H)MKs(kn z`9YRH(9+~eMgCsRf*RMj#+uevo#pI6O-r3iMNh&%)jNeYZ1B7415Fxs1)+E^Y=P_h zT6%=E`062wrdprN@0&NjxuvFMvFi*&7ci%xuFluws%dPfv5NG!)HJo$=!|O{o13iK zO63j{R6V7}?=q^#w~)%HcGuPh<{3j>Ml+Dq_?ugjFD~PvLc=x6WiPF}tz(S|~Bue9bMbuDQO&n#bCq zbw1s;-2-oEteJOhT}`1;bcS(5ph+4N&P+>#kE?ZU4O&HLkh-`QG&j~T#`p|fnBhvp zKy_yb0NoJk*@mmSdV#MNjDUqg zqfn~FQ)E<6@Lo37?XA}RL-h@Xx73@}aatQ{t9ADS}1#MxWnz^-LPL)~H)d15hWG1hM99qps14L3pci z4jz7^Zh_&u%(!NZ;cGUoF?`n4>>}g3fN`xD*IuQFO|p$#a}LKO(s!LZcp8As?ALVAAw0CM)qV|>$|ebcf>U`h4$!X}&pTIGguGoa!hVzT=F~LSt7?uUBgwDi0_)|x zb9qUQB293f`TiCeZy1zxA7&iTpE5?Jyi#)?c`G?@oINQRThr=G|Mt-DJ>G_r3o0v9 zX-bpPJtgNR->YV~oO_-vE=qogx-bpDuddqfy|y?lgOc-8iE5e{g1=xkU#9$$ucv&K zO~~%3a|K#`b)#ML z6mh1)=O9qjG%^g;EhZ8azyy@h&sTSjhO0+83|BI7n(Uj+aOG>UyVzGQ#+sWY>(fg) zdd~h;OX|HoRSGK=7SgPFAq1U{JJ({Lf2eC-pw+MCIusL1MyqdVY4uy!VmG3iWA?1a zvE)A#I<=ZH*?LE7ontI-a-a#ZZ=SEPs7IZw`Uu(RZYz!33$U(aC6B3oC|V}^7A4g$ zUqi7>?llugDhHU)DE{M8It$kr*N}iv?D*!ETIp|x#!KT07GIP2x<0+=1iWYgU|7t6 z5MtGg?6ON~<-^8T9at$9TGcB!ZvqhNUe{2E{OMO&F$1e{q0W&Y$VgfoF&g1ar8!dm z7Cbg2E?41rAv|Q=hHhXMrT5#z*UQdF$439(q^4d9Gqo~NOrnc1L8Rfu_%PSB30=Vp zA87P3x=x)V48$v_s`AYvu8mi#A52v+l6OsQEwgxQgh-XZO!-l~Yal0@MAFwbw=g|srmD)J){B|!Sh+SgqRx~Hu9Vtha%I(JQ!A&S)^Ja# zOjlpn$`4yLG6j#R?BnPy&bewtQTe$iP3kQQdNN(!lyQ?QD<@7dFY7fYlqpucs%cX^ zy(wcvn>O>$30N#yoUshm31GjT$%xUe!-`RXc6^18cel`Q0=(&DF;GD4np4a~TcO1}Dr zCQJX4RJ2I+Lp3Ee^^9}S1roauNKI3>ZhMwW)LS}H{WL>$B#>$P0-q}>s!E@eIX<&i zpNknY^eSaEU;8~FJEbPD1>Ds1u}q|786%K`wE*5y)8KDa-WOT^uyOhzomKm~F5+|) zt;~^ptO@23Gm<3gmzK_&V1D6r4PPW-b@l9~Ky~e+MWaSlSJNR;PbpYC%cKg}jUUrdpH=%z^5gWh$`bg@cJfoNV_Z z?mIm4{liZVbbBfY&*J&m3b)IcSek_F+~TBmjjS8|8v3-khMgwe?FQeuz}ni-8;Hgf ze`ylt!>2DnhcU0$3`n0+?U6yto`Z=wJs$B(e+v1QN8;J<$LdNx!;bPCE?-G2Fm2dlzcs(Bpv;FM%-qPBB;z~UGk+f2_?aKR`pFlHd&j`y;{6Dvz z^zbkG-ZTFrrQbw(^4M{DOS>~I+>R%%4R5;NvA#=MyDZ5+{jvRzl-IHY7%lX8=JPH7 z|7krv!@tOPZ}}f<`rgv^<|p~t@E&X4>G33O&wOpabbs5ggDX$`&P1Zsa^=09wPbPU z;a<*jvGpx}hkFW%Gr)@XPx5*tEx*I1N%zm`CH`OY4qsk++Me%~lGmxn_SBt{NF44N zaheXBIyjNY=aG1QaQ~aN^xo1qzNyRnKH-;Jan8nF2P}UeU7M9hdRl=q{X6}A5Mjsi zNSdDUddugpz|u3Ge1D62j?Dk!PweC`o~92tlCnA}^Zsu^Gd#;Jze?O6xDL&82XQ3L z+_bP~i7Vw7;a5fY{Y6~(d3GYvkLPrrQ+OOa11BaDgNyZ3H=4GXkVuT+aa1J|yS$0S zN}hq@VtzA_XXPb{#0fluFXXuZw@L^>}$d z+_Uan;_=wwWfvt9-zJYYxvFRjR^>AY+d_Hb`b+c^8wngdjaZ)C4NL>6OP^7R#K(NM zKq)+cApO&1@@&k$%)Zl?8rbTs? zM)z=pVVTaezL8SUR~n5!f(~y>BsSr`$RpoZynmqEGlKAs@qfn(-*G#%es?1A8qcLX z-{X1nCyB&wc>+9@Jb(RhBC!Jh)jW%Mck>M5`O{sA#KU*OXLx>nMl$Ms8YtlfD)J^8=V?`Qv4B5^8Df1dph&@XxZ#v^g%$@?`p`ag-p zX#5I!2JpO1+DCZq=3VlWyj~@4&qw^z!_wdFxGN5mR>Bt(_6+X-=Cg?M|2Lm|?@uKD zH=k$=v6t|P-uRJDkujVIZ*`C9#nbmSdtOeSf$UGZ7u2h#hnUsb&mS7o-&^vp;Q6npX0Q01M2+V5 z#Ak1wd9#W6xFh?gnZ|35>|bUo0&wF80URl;-xT6B^(Y}vC~=b``-x2BeMk1@ZkhG# z70DAxP~S6`BY@QJ*fH2!*1ZGKD+aFsvO@^^kUG#OPjMXoV@HUsX@BjP{bYZ~?tUcH zJvMPyKZo_I`|i-}61y`?y1dhCZ*dquagg9=j%;47j;{K7R>pu--1K}-a%4{w8}$ss zAv@amjXWO8z3Vi`z;jP)F>10MnR8E04>s~uc(%h>s^d%kIYrs$InMcpk@8CqKi)CW z0IG9{b1|BCNe4Z2d+-{hvojpmPc|Hj@*Lk7*f(btkct0bp1gMtB;0*?;S`yA~+kHoA-l^vAOxTW{%BuMYG1{7Ou>8 z=N2#P|2pLE3@9wKX)Wv?%YD65S1ijb92THsL35!afmlr%1_FFhiA@?0|~W@ zQat%d`JeO5g6HoLj~?Y$O8MlvtWTwsKOwg~V>!i}hm=z}U`DTCxd%wD#ta@#A~0f< z^R9SI%*~5tn7R2YGb?jl%d#qR3xkwXo-sGK(4FgY+qJ6LxOvN;%-r%|_Oh&%nbC~u z{@ueb)!AbxCcV`#7R3)FPPgzF6+EuYtVrfB&@b(gfvGc?O8P8DsX6SieO%z1oNNc+ zi)JZ2Q0rxVCg^tHK=|HT!99RVp4BmwQUG6Qri z%LHw~tc>yfbMq?{L6`%sOul;tP^9*jM4EO#CZ84LbBB1Se2BD6@I^i?qy;tz%ROL< z{mRZ8q7G$8@NUvQWa0VN3{P%;G}DvoTA5|$7A_Nd4fYwIJ1gV6{S}=6S&~dEG`oJKg@o zH$OO#xP*F1eXRDU^krG&guVo%S9-L6WeT3GEa3U*Kw`0!_g#VK%Kn>kbH>~76cE1l z;{%C*mvHE#2RxerXp0Szz(1Avg?o;z-KBrF6F)|L$=?1I@Nzf)+wqsfc?D0wj7xI2 zJ2LK9lw(Ddc$kbEeESPmk?!&H(YrqdILw9f8 zA*EfjK+GKDU_wr}FkluLSJN9U{w?(`Ap9A^?Y5R^GkD7I@4)|if+*^Jgz;-aZrgPW zdu5#C2V{COa#vh8Gk4W>vvDhkNp^zQyUBkm+uRhNQhdTI{Bv@yE5oPJ3J0Aa9F9O< zNuv1Fi=-RLUc`;U4?NxZWM(DEvoKIOAmhg5hdDro2#Z%fIU`LcS zk~U|YVjO~(GQwSKsXUQ)37-fE(hsKMUx@!;NmmU%FU`$i*jqwkiwlyLpe2%iz`?{y zi8o2$tQ0;+%VtEAFmB#53wqCl=Lo3qnz8U2kAhFG#+%Q92vsB(zBGvf#)A&LRsMhD z+rv`m-tKYUxk00ojI=Le;fY$@K0aJ7rZ`*e{t@?#B7OAFR7!x<^Tr1oJ$7OTbxMJ zzev1A#4{zH^%MV{_&<#Q6!B}!&66~W{t*xN+3~05y5^Ci+rp!S7Z6_PJeU|I=?F&_ zNrnqt6@;6FuaaHj!`siQW6B@Rz^gpNIcP$?_PDE%`Df-&II?m*nm) z%sdV99(kyMsc2U4FqEov{M*6Ag}e*?=PEqNhn8PtOx{j-xp=7lT2BnmfXl%12)r5v z6(=7|{6oTfjMMP*9O>1rB>&cklXUlyZY}9rt#nH635vWjJ*~$su{*ECQswv14k@WYGe$h7%Cf?#* zr@thbe!QfgklT@yaaWJ@8h=9f?~uOmTL%+oNqYFywHDofj(<7+wcDNd&?QO{?|CMCMcuV0HXV{*&l3$(VhyPE-U&dF+FK31jr^Zh^;nRm4OfZv8{)X~)H~zEmZxUa|k!2Y` zIz?gEy?GL&LdJ|Fs->JQ#J`vL@~+$Cs$_$S-_E0i599(}Nq=%O{j_fBhg#u>%invH z@W!KruRKclgGUM9a+L6$M+qOu`3XnD-_WCkdyf*{c$Dy!M+txMDB)X<629{&;RBC9 zO8t)#?mbF)<59v_9wq$2ql9lcO8CyBgbzI7DD-cID>*>%yE$~^2?Lmps($VzyyFP{ zukk41D~}TX;8DW293_0`QNjlz$Q}v)p+^W;{Lc#SDHqn^zZSg6@Mr%d{u2Bj?#2H$ z{2%DW|3UnvfA-906aIJh;{P}NSM}omG5#y?m+`><2|NS&_kY=Y|LC^P`hZ)p)ikZu z)PN{~3NS^K6htvpw1x_BshYT{N?lM(3hL?>(WW54PyvPsFvNrm)Yec@QV=wBUJ083 zGc?GUHarj|fBnkKd;0`@rM+jz{~mH&L@qR>jm5A@Ux09;14Ligx`;MzTJoGu>|uDyU-96Jk$B|BK53wiC;AFcK&VrxRQU64&J5s2!2fQar{oa-9IV(sN%Eu z5yj{6!-}8558<8tWm+ult>6ch_&R>8;+yyZJeU2;i{#^H2X0Z~L->BhNAa5!pOAr| z_%!|~*VA_YvsMP{5+m!JNGZ%@zOH!_VE(nf?ne7aT3NK zQhW?Qr}!lPAl^Q{GWb~~ehM%5BX+q({C>rk@%t2C!%r)I5x-aQZTzI-gWQNrC_aK8 zS9~153vc&-3O}a!EPf~69*24Ss1iSeA5nY-KaA(H#+k=1H}g-uOMKJB+x7HwLo=l0 zAHokRK8oL}_ym4HsZY8~e9pw%$8`a}MajQ}?^k>kze({8yif5h{87FO-0p|K<2fD` zAI2Y1dN_`^u zS;fck2Na*e?^k>lzfbXb{Iud{@Ou?s!B67t{;79~Z<=_!z5XY1yes*K@Z*Y);&&-N zfge-qlkO6qGx2tP3izE${w4gV;;Z-(#W(Q7if`eE@H_@uUgSI&7~ptU;=}l@ijUz3 z6raRzQG5p9ulOnaCdC)=KE;>uM|qcm-ETGglHwQfM-<=2FDO3vB#vLjNAUBCkK+$1 zK82rCd=`HYZ=aX*Cf@clCV%^UT`}?Yd9!Zvw|x^oOS!i9pT+U3_z-@-;-mO|icjFD z6`#iMReTOVsrUkZLh&X1xZwxfZ`ZSlpH<@hPhtGy?c*+lmw5ZQi<)@*I7;C66VGGD zIpEOv=+n|M3_ARiQMQSy)A`xPI@Z&G|p zK5$Ze7Jrn_jqGys_$9^9;EyQ2f?rU49e)^aUuQP)^GdvbE611OL-;wxNAU+0pTN)J z?Q+xj19*GC@#E0<{ zN_-4IuEZztyA+?nk16>~;dd(WMf|AZ%lHwzJzv#Kyxl*GCf@F!Hhx&iKln6`N5x0* zgNl#iw<4 z<3|*q!VfDxiyu;a9zUq~8T?koSMURhuj98UzKQS0bNTB$ufEniFY=%3=5O~~2ru=q z`z>nX?S4z(wfdy-T77bOsgIpc0l!J{CA?4ZRs7M%ug|A}Us8Mve?;+tXL7tNK8!!C z_!xd(@k#t4#b@wyil4$CRD2OXi?`>cGX8+#Yxw<&U&QZId>cQl_~0PNui_*4NyW$U z6Zq4t`7?zdSK_nyU5d}+#}q$<->LWtepK;w{D|V4_+iESpT+U0_z-?j@lpI%#V7Cs zicjOWC_abpS9}4#N%1ATPw`d!(a`#F(!eh%zJ))c_`tIn|B4Ue4=X-~pI3Yme@O8e z{G8&a@CWe$Yy1@Pvr2p!e?ajy{C>qR;`b@Ojh|M0@I1!9;v@J;#mDgzicjIk6`#fL zQhXjiruZ5BPP{!oS4_M;Ki5sXJ+C(LqvT_If0W}z@ge-M;-mN>#V7ECicjOWDn5rF zP<#QuMe!wkzv8R-O^R>eeTr}4kMe3XyB`A2;doJe7=J|ZG5iAFo}ZKW!-~(~=M_JN zKcx5~eopaa{6V}u-`4Q6O8g@Jfa2Tu{fZBs&+(%82!2}ear|Dzr|^@C&*CQ(pU00Y zeg?lw@fG}-;_LXGif`ga74N@*@vrz0epvBQ{E*@k_(8>|@mm$2!w)FFfZw9{624#Y zRs1H!H}F2ix9~@KtDile1cuyrdp-%{CEh+>V)!M+C-FxVpTRFEehPnB@kRW+;>-9$ zim&146u*c+sQ5O1R`J2-a=a)$g5R(BIDVhvQ}}7cXYqR#pT|$)?c;g|KY_RBnF@Yf z@pb$z#W(R|_(#flmfyqmJ}>q^Pmd4bCEhMKir=aD1b$TUY5a)dbNFG!7w|)hFX0Cj zU&U`#d;>p#-y-c@_4`6C6L0&#g>L@q#y?*2UpM~olE3Yf_$`Xh;QJLnh2Nz3BHpL? zGX5xUh&)x=WtJeU;g|4S*2w-He66{^Tf|F!>~Yn`OMRYU;&++&U`+4N2wvK2kB2y3 z%RhzJ+MC5|?akw*y>|XHcxkWgD|l(I?d$j>if`f<6z_jN^N->~_<6iNPNF8>9w!MC zZ;yvG{t)@tp7%8P=J57@EZ`3+@g@AM;;Z-rif`ceE53!_r})4Nn6L15d&78%x7!;t z@pikC_`OR08T_Q;r|=VsFXG1)U&ilJd<{RQ_(l9q#kcXJc)Pv97rOCwdn0&>x7!=X zk0?HcAI97JH;W%q;`8`H#n0fkD*06K1B$QXwOPHqWBzsLCL3pKa97J>k@t*Z_i^@{2?X2fuB=+3x81Yfr~i46d%SPP<#x( zU-3!2{JoQ1{|tUw@l*J{iZ9|P6<@|rD87atSNtM=m*U&_F~tX8#Q4YC$3+A$@wSiS zC4c*PNtt+ioMcV@w$I~7$;b9H_z}fd@WYC)r+sA#;#M{Sl*~HuJtC@J)FX9hd z?U1^+@$-rgCOBRdAHmNlK8`=A_!NFt@mc%<#pm(+@%HgFW8!UJG5OoaS>43j$5Yef zZ+rjc%mLzeVvye81w$_)Uth;eCo<#2*c=Kkv2iONtL( z!SSv52!28Far|M$r||QN&*Bd$K98Tn+xNS{9eT;@RN#9<0llK!;dSzfZwI~5`IkaRs2rHH}Ip1Z{bH2AGnh7ulO*2 zNbxcJAl~lJBz~(BpTQ3(ehR-u$)||#SK`a~O^UDKeTrYiALV;+>~Yn`FDX9w62`yc zBlrcy$MJ_1pTf^8K8ru3_&k12@iX{?im%{j@pk{$@duRnCVs!-{V!$wD?WsuR(uq{ zSMdq_q~g=~3B~8|eK!y!Jfh6N!i4Wt4 z6d%J6Dn5zds`w0kK=D)fEs8JV`xRftZ&G{>?^FCD{^%o>@sD3peDEs9zv3hK1-yM7 z5;yVobx6v@+t(FY{9*F3eI7rr_!;~m#aHliN`2~G;+rPkF4uoG$Cr|S2tTX%DE@%r z6Zrj#=k?mYeTvWFrxjno?^S#WKdJaCenRmL{J7#<_+5$*yo}>Z@nQTbPAKcvJL@q>ylFq^@iF|g;*Da4!A~mjQ}_wR7xCkYFXMM9zJ?!D{33p*;@kL9ygg2Wui*Gq zd;~wN_&9z@@hSYE;eL72m+mD!zq3p!mSGjDNg+oQCldZy%>I z6K@}PN&G(IZJ)tUD}D;USMf#sq~go?3B}j&ki z2tT0sD1M9L6Zn4osgl20l4QxP<#r%U-4P|KE>zp(~6(L?^S#SKdJaSenRn0{5ak|-}!Ig zcvpM~Kc@I7ekb0(UP|CcmH0G%MDaQNu;L5&A;p*QgNm=>w<^AYA5eS?zeVwZS8_Ni zK8)X__!!=&_#|GwPucG041P)RQ}`o_FX9&zU&bF+d<{RZ_(l97#kcWuiVvn4|B8>` z<@=-UcE#}r6raNHS9}(~Pw{#DwBl#*dlg^7Pb$8SpTOJmPt(NP^N;^kZu}$Io!%nz zb_g%|+sAv<#M?fBA6Mej_+5(6;l~tT!0%Li2|ud%Dt<)q4g9d;TlgWx2X5r}QhXS{ zRq-+WfZ~(*E%--EXL6n$HNRJy=@LI>;x~Go52gQ$_*jyF)aQ{_{%I3$&l@=tZ~FpX=I1^upAuf1pR0K3ANzQ3nD~uWJ}nb(`@qcvl8^1f z_@nF>`?@ZMm;GhOC-FxVpTRFEehM$+!Oo|MpI3Yte+X}1$JX#N-t2r9@dp*(#?LA~ z_-c1N+xbNB`<3`OejnbxzDnVz@%A{$;`icDvGz+IKdJZ`{Dk5w_;JP8@w*h?#E&W7 z{~C9`wd)_kk1Fv|{D|Tc_+iDT@k5Hw;Rh98z;9K22|u9tDt?RQWe#lM`|)y&Yrk*Q zHrws{>|loD$;waih~RySkK^Ti754s2;g=Mj#UH^t^TevZL&->dk*>p1=tAI4AM&+$4FN`J=il7FA&lX%I0ljSoee>;B4>p8yhZ}qDNWo_;+`aNW)Yvm%kk-4C#~`Yyd2M5t}ZW9UI{;r|A5$Q z*3|1|UcKbFuM>BKxF<-Q^F8e;u3+3n%59nLXBa0C9~gJfXZCe)7=M)f0#2I z*(UiUO}y=Y1Vb(oK@?IVPQXkJ*bi52U=;4LSV~e1m&`J}7Z!k$#QfXG#BLanAc)Ub@_` zvOU4}IkrD_dHZ$C+ofMJY@cWQy77-cg!lH5B$xQ2$FUePzw|2(&PgrqZz_yk^_KicJ| z@$$TKb@>vX!%r&l1^iwmzJ#B~KgBB)Np=jTJq+sC}kPCXKAm*@9SlkH}a`la#m`2ZigEH6?<4nK)s z-~TUJ?(-c=|CdQ8pU>Itt>NYKynB{QarJU%kT#fQyx`B1 zd{*8Y#07bI@55SoKb7rpJ2Pae`5G?{G+5ivq*kP6aN@-&b)Hv@^K>V&YJC?lkF6<`hBI&d;fS} zsl2ZA;#IHsyHwsUy2eOi_6a{#@;gF3MntT%+ZnHK_qtrRv84EE5x*&Zyz_PuPWjIH z!+Ecwc^~WG+bAEg{5GnQKHfjK=B0!3YSHx-lKx6^L9mtl?dz5de!%i_UZ28m!M{rC zLx1g-7di5VwG97yFU)h!|HO?E_b!R!y5y~Fzqn7{#>P9w_*Y(CCFR$NJ4D=>CeC~Q z(!|eOUi!~J!Fb1CC-F}IaUL-5LzR)>zG~4Oxl)fP@mnrA-g(gmR<7WEPQ3Z`dOl8} z3eG!2B^wzBDdL8=nd=qyhP=Yhyq3~=S8$H)b8O!&3AFtn@2%zSx@&fXyqIo%w>#sY zMt;8S=6!kz_x-UWeV0+_<$X6emD|p1N;mgQaWQ_{#E%mHI}uL#ybNpgb%Zp&u&#WG zcKSK?R_2?_*PqXm_``T-USU6Z@tM`}tNfISx33F|_<1WI>Ho5czfdxEjxTB5<<9H& z%xf#1{%;VsMEbai|D}?@S;Uv{ zgIBDdZ>snq{9`26>5rB9M$#>s?W@lhPW$o0q&wH7+ug(4O3jNuo%a7F?PvQFW&5iA z6~*sV>XE>Yb*V>`EHY+0)3m84<4w*J!!L8s3|wzr*2j#+tNG09Je~Jc&yel_`94RE zH};cxd>MCU!(&U>nz_ZV*HO~3C}-(t8!4uK(hd)@1^r8ds-7|3xwGHUj>H6EOK zk>i1L*qX!fVmTaFPn1q>?tV;}{G{66BK?}hPf(7W_Pj-W9zTw^&nGh`UfaKNKB=1R zEy>L3pOyDYuDmbL^v`GyQ@irIJTuXz$RfyzVe6H=*Htc5y5?uzOFq4!_ct3h@7uup z12^0V(0vs{Lm|pyYKPcA@BXW%-ol}Y56$e-L=jOVVxu8MSWblx^EJXkyoAc z2TA`4$(QSyTRDRF+F`p*CL_X~_P>+;pEmDxlss5M{6z5c_-jNkF7iD+ z7c*g8*2nozwkO!$|ElAi?XsPDXt%sfoU^j`Ufc}ZhuO|!c%Qrnp7~f_-Wul+;zj5p z-Es=V?IrG|a^N`m^yGoVI9-FUq73Q6G9!+EbK?c@FBqiZjCq+W}}A0_@# zGTwR*ZrI!}_1f0AjjJ*_pZF))zRSE{)G3ccgnG;SWxeYU>6Zv`qc@xRfpu9V|M(>J z#dBNb^YM6OcaOaH^pd_ekiVo$PjY?6_6zvGw}{V8(qFGO^RL+ug$4Xp{4L^mpRBo0 zACdOGdHEVT-pAdS`?6lbV*J!5nLkJ;`%(JkR(ZdyIiH*B%E6vtYXaNuo^{hC3A~Gc zUc>#6+=x5JJ?E;`?~8TbyXnj$apu|Ys`JQ5U+-xf*|PpUvT}Lmo8l)+IfvhPyz@~r zzpOida{TY!C@+y;^M2JGeZAY531qgVUDS`0IWI1D&GK1wL~b)AW|irwuggmIdz*SJ zO&ss!_`mN}vft?9H#tYtC12(Jn!6bwXV(66&Xa5QU+-(lQ8^JfyUCX!i_mV4*Y_OnyyjFlzjgbG{C01Y zi`4g?>YP_s_xg+adUmh3Ok1B_Z@FlTQ$$|MyPbK<9QS*A=tj9d80fiadE(pFH?ivf zJwI4paj*PjeyEerf$8I&I{$aChn#$5S8+8fx1d~Im;+n-&Cj6R`GMn|3wu~``pr3i zI`5lZ={M(mw1fN5CAHg3escUK$#3Ki_9Opy#|!1}k#@X+;<*5K?uO->=VIsol2pcH zo^;cs`-r4-<{_RvF;68{%|mfEm5JL_U_bj=amJ&QzjMFW!%M);O*X^ihpaGxP~MCC zdfw%3xkPT4obuY_GrI41=MB=|yg!`z_KQZ@3v~y37a~&xA=hbchd9w$mwT7?^&ag}tH+DzpP*NqDec?6YMM*?38$wQ26-5qJN;m+`!Gyz_bTmVP(SD>&NsNc(n6`!03c z#y}*1@s{Z8nOb{=A&K4dRF?b>lAlk;os-|nd8$Vqx4K!3^l=8*!uJF?^SqOqb15v7 ze&V;sJG0W?jN5hh1I|2W+Be$!xDC#E^4s6}?#SlR-6!wam_O-O|82du_w+E63~gIC zM4Wz){`#DZ@g^x$-TRJPYs+bcl}9162y-^ zWUgCiL$~>IwC8iof$n|7@>%MVzSp~w!+2R<+!rF>8S>rrC-WSa>!y`&O>oaARklyC zeG{?X668M({J7#r_%m-54S$^R*mIn%;$o*vxuX8uIpU!ntk?sA*k9VFc37q-RZEqPrgqPvt zEmBSmKZsvlfANbZ-tM2aiC^udUcvWq{Y5_AuIHm>``J=B^}gO*=OysNq+6X|n2ig%O7s+_b6F1g5-kFkoIZa4+#GNNwm-b!7|1ay~Nf!No8Rf}wULk&t_#ILp*PVNM zww<=|MYs1}a-09sTTj}S-^c(xV}lIPi~4#GZG_Gfhwok#*x1i;(39VI>q)oyZF>b%$?xP&M;;@2OOF49@mn`_I(s*=!nnS@=hEftLLN%yPjZeobH6s;dy785j`a1^ z)Z^`vKF(R)jzifWGn7BHxzo8@b~uMe@1vOj%|MZUsIvXw>7CBDlfC+J0GaDn>-@ca z^Mb$kTz&p@u7oAOV4nQW=ybL!^YP04wA0@0o9BCazo<9(vOe;P@slRMeUIyO-n2a5 z(SNI-v+dYC*W2@TYX)^M?4qQfA^qVqJMOqxIbU);A(JJ7(2} z{nFd>Rr2H1V4Z>8{N%XIk>A+kJDp+4kK^bs&2dz~@5Qe^j$|B^@RRr}P5j##1>5E3 zlXd6#XZxI$&N=?^2k~1Zoms@UyTk`?bK_T+FYyultdf5me*pgk$(sgWW7?7G5}!5k ztMiYNG>_j;J^>jg&VF|8`(M0y`lOx(_B36@p1!D$r_)?G@?XNFURBafJfX8@K9q6S zz>njP%5{K~ALp;QoWEXr>q(d9H(t5>FisskC&e5h4kBZpPXld)I6q;m#_q$`l_ z$dfy(uHPxwNq6f>`Hh#msjheDwVn^TMM^)^q`Yva^H~1xEfM~+h~I~w7U}iF@;tdi z=E3mn*%JJk}r>%^C=Xe_7{`gbs(L~ZL`Rpa1 zndN+(@a?>7NSa51!j`e;5bYp%=X>i(9sSK%^`w@9~-beBoL z{`q?IoTv9}{d6h64dI?=;&+hWGdrE9ug!0zzqt+Dv(cO{$9gwz&<3<*#v=7Akl(~$ zr*n~VKDW-l^0c{!XJX3!bI&uYaM@Txe1Ys0^7{7X+3E>m?1^l@Z%jZH|C*S8x(vpUs4BMCfU({oUbR$EZ zHNRgd}T^liTgI5lfJ`kE%#QJ_4Op(6&?+k$4PGc zKg9TYZfD)+xKaF8ymLR0+}wXDjg2;#>F~mY255vbG=PS(odjKcuhs(r)Ltb+xm<${Xcu)9}2O?JnHl>aI#oj6&n^4EM;EZe0%vj0CueV#7DEM3wMul}rA zLcR1uwEv)&7h$lvbZxu4q@UhkW#E4_ zcxM(#KgG``jx%Tbqt$p%{enw|qD_`Q?D>@$_42`V2RlKB+ z-+obUNqIsSC2!|G>AGW`d!?K&y5+1n$K{sKaqfp2#7Vk1*C{)Hb*vNglWsTZyn6!Y z-e|krWQ_3Wt-W{KbT$77xUmi#vm@ATKDo9FyJA3fE%c-qk?aYf?B9x`#i{tFYw z!wtV&$jU|5h!a;OZtI^++>g7*HHlmD;tq9>3-Sc(VB6&P4|<&JzZh|o$BuQ5NjvT# zj-9l6|Lu^@x@YzNi}y*oEa^s$n{@B|zonD@D3PwebFA|tDKF*Ki{C_C?zgzJzw5*u zBF?GTrEdOteg~1yjGX;9v%LS@@!@CO?(-dYDe3bZI8%+G8P8^>meyGR9AHCM; zr*8F;b{2@=)O*|=A3q`986WHSdxf}pFYcS&;}(hA=QsI%v3p#A>$9}O}HSs$(FKp^PhZ`-qt!3hHK7$~MGhekxck~pKF7kg%C+&&wymqqB)USU{I;TCK zSZR*m+2liMcgia588>l#*159Un#dloP0l=bNp}f z;?^Gj5?3eg2ysq+=Xr5XejoGZP1&Dq;%51NLuZ~JAkG<|&OG5vU7uXupBFp*8sUl7 zB;N<>lz)90zu=Tl{yp1y+_ro?%k@*0xFf_pN8-kb z8(XVCfF|K-)44(rNw;^iy(xc7ll=T}_l zUZ47}d%2TNoGh!#fAp$!Ywla5u1DzaOQHYuUDJR6#^w6+ThaY4<^r&)v^G)+tGQo_tNW{y1q>K68He zHg5TT;R5!y5Xst$5k*K5zft>W)vPAHR0PntpWe+NHlD{EQ5m_FVXq<#tLx-sbhoA6C5d z<6WL_xnA;+W!3z3)vEFqwC4{|;y=bXJ{9^;?^^HER_C+HJ*_P7|HJH`ZIXU!Wxq+i zH`0HO-@D?a-aq&JFI=zG`(xLy^wZKNYr>NLl6s%+<#Uaj56ZXU%-##P(u^|a^T0XB zIogzgbiObAW2fVP=CMxsc&GDJm^s$z?0{47wXg`MWjp*l%>Jp@#OPs@$eDsuQrTAE@e6|gZ_4>^EMcQAA?ai z2NUq;Fby}-zY*fkfpM6CnNFwkK{y4a|5Nxs!9~_DqF-{POTz+uFD&A}4NI&q!76+d zTFwFW_V5r&Yd>y8K)#=n=l=Xju5%T@9tkd52GLFLZ^9Nv) zxC)HG|Awujolb`1Bl7D`N9MKsPdl9?OcVccI0JtH6Xe?z4}S}r?7s(LhID^|S@QD@ zQUBj`I;X-Z7=(WKSXg5F6JVV6C&L{1Y=s5*3?cbF8|NnumY2?1~V|TlYW4WSJ3aUn4*3u^1qh)!3a#l;tk{r zW3QxNVcXMDlHE%X-*K|hZOLvNwI@~9DJVG$N!euDV{ z2Hr~C^=yYR7q(!3vy#HCPeuVH~`Ya^FjS!o9Q? z#$Xm^U>*kkiv0{DunLQ?1uHO^rk`LGwqX*6-bZ>Eg9Vs^Wtf9?ScENDfx%ai9!6ms zCSmCPq=zwBfGJppIar59*n$-pypi-U3fnLVLwVA}7%adPEW;eE!y;_K3Jl&vdKiUm zn1r!gNe@%70CTVmi?9wWumu}1xQlc!3PZP%9>!o6CSV?>;0(;b3e3Se%)=%uLjTR| zCm4bi7=<;MfDM?2O_+miSb%}s*)K2zt1to^Fa}#N0Ryk5d>Doq7=t;Ogn5{OMK}dZ zum~%#3~R6k8*mXeVH>t#@HLb_&G?2P7>5ym8qB~3oPteQ zgl$-cfe+Gt7=nv10^2YKgRi4p7=bAmhZ&fHIhcicn1@9;152<1E3gi0un8N`|9Z-W zAsD!W_QMcNzz9sk7|g*0EWi{j!3?az9BjZmY{4Q7j8iTQ!wQVS8cf0l%)lm`f^ArY zfdcJ^Ay|VExCj%l4O1}q2FisIn1gYchbdTuSy+L2Sc5aL0V}Wx>#z-*Fz_MT|3=D# zAsB&C7=sCzfN7Y5IhcV3n1dylhgDdD4OoFK*nojsC=Z5V8^&PZPTCJcFaslS3dUd& zCSVz+U=3#ABFw`!EW%)x@?Zp3U>w$93N~OCwqYIyK1};z2v%SO)?o}bVFLQ!M0qd- zGcXEsFah&04T~@bORxYdumo$c3LCHio3I7jFz{x|-$(ml2*zLpCSeR_U;<9T6fD9V zEW;wK!4h1A71)L~7<>!m!3b=^IBdfd4BSQgVF>171kS)1tiS}U!xU`74D?S>E)2mu zjKU&Jz!FTu3e3S8EWidV!6vN2Hf+GaM`%9`!N6N7ABJHJ#$W;_VG3qo22Q~oEW$i2 z!y>G~5?q88*oHM2d>iG%2yDYR41ARK!w}5E2+YG6oPh~gfhkyr8Q6q5=>JQ~g&|mk zQCNZrSb=F+gE`oM1=xfo*oIXY;HIPjL$C#7Fp#5M7=|ergBh5FIhcWYI0cKa2urXG zE3gJ@a1l0O8#ZC^?UV~6Fz_+j4?{2oBQOhNFb`9324-Ld=3pJ>VG|ai{~eSIL$Cs) zum%&b0n@MvbFd8yFz|8O4@0mDBd`Gzumw{v@J`BwVVHw4n1@MNgc(?ZQ?LSyum;Pp z0c)@c7hxN=Vc>4sKS{YT0wXXEV=x61Fbh*K4|8w^=3xaEVI7uW6IP)AU6cz$umPj6 z2@|jl(=f1~_QMb?zz8hC7_7nsY`_$3!5j>{n{r_o7GVsQU=mhf2G-ydY``LH!ZK{b z8Vr1b_QMct!w3xSrW_c7IT(j|n1V%^g(aAW6*vQHumT&f4x6wE+t5EnIrq?h7=lq4 zfe9FcX_$aHn1ThEfhCxORhWkjScENDf`Ru?J`BSejKKy>!Y0hXHk^Wizoz{#1j{f2 zYcK{EVFI>c3I_L3K8(N|jKe%k!6MAU63oL2oPjl1fel!PP1uBO=zlNe&(MAtf>9WO z2^fQEn1DH$f(4j?C76R%n1>Bmge_QtfxVOu!>|TpumO{>2{W(_r(oc3Xg>_WGK|0) zOu$8$f^C?A!M~zh7=d{hheeozC76X3n1?ku0~@dco3IYsun7bA(*E~RE)2m4jKUa9 zzywUg6wJX4EWjKr!91+OB5c4CY{3c)yr1%67&c%GHenLBVFm_1N&8_47GVUIVGPz_ z0xrT7Y{Lu;<|!XWU>?R{5vE`XW?=>9VGYi}2CTp)tiv{J!oUIAe=Fs~5RAbnOuz(8 z!8FXk9L&K2%)=5a!YVAm2CTpqtiix-lncYK31hGglQ8fp+7Cl;3PxZN#$XvHU=60= zBFw-x%)#L8lnW!U1mmy*Q?LfJumSV131?s%R$$<7X+I3XCX7J;H08k%%)ltj!3501 zG%Ug#EWrY-z!I#%Dr~?8Y{C|d{2lH80PTTcn1L~vgGrc&8CZl+0?V)lYp?+q zVH37t8wNi}J4&=4hF~1VU9H8=$uun3#54BM~<1D~P& zFa+B$0)ro-To{1~7>6mCf*F{FIhcoeI0K8Y0!y$CE3gS`(0?c8!w_u3C~U(741AXM z!w}5D2rR%DEWre2re9%kSS%)tuG!#XU&CM-e! z$7v4?!5WOh228*vOvAuGP)`_w1sH)P7=u-qfDM>}Etr9UyD1ljVIIa{5hh^?W?%(Q z!5S>W1}wuStid*1gn=*6ei(wm{ge+QFb3l=0aGvob1(-Bun0@A1go$H8?XUeun7a7 zpd1*6fiF@|7=lR{ff*QsQ!oLGFa^sn2Wzkh7hwsuVFd>7p*$FY4H$<_n1XGXg@J?Y zCm4b=Faj$u2J0{Zn=l3ae@**f2zo46Q-d5Udo3dn1fN6hY47OX;^|eSb+stgC*F2RoH|L*oG|__$S)` zNy>*|7=bYugGrcx8JL1oFawJ)2g@)IYp@6xVF|Wj1qKgLK8(NyjKd~O!8XjoK!x_h z5S)P#Sb;HEhY8q(Dd_(c<--un!6?kb1T4ZdEWsSCzyhqn5^TUKY{CX?!xjwuGwuId z%7q|{hy^g7=jHLg-w`%ZJ36Ef2I8}1Pd?%OE3njFaaAd1zRu!1GAJ5 z!!QqHun3c|1T(M#r(g{hVFQ+76V_lGF2cZ9Xg>_W;O8hGMqmuaVFIRL3T9yj=3x%b zz&xzLBCNv_Y{Clk|2^fy5NyCGY{LW$e3kaY5X`{{EWj8n!33b=ZbY82B3P{|DL!LofoPFa{Ga0n;!8b1)AJun0@A1go$D8?XjjumJ;Kpgb6c zZ5V@r`)EH5!3>PRDHwxAn1E%Nf;E_di!cY+7=5td*HR$&D;U=6ll0|x$)@?jXZ zVGITi(S8_$85n_6Fb0b-0n0E2YcK;BVGg!o5eC0RxiA82Fb*3q1)DGn+b|CU-=O_4 z1S>EC>o5kJFaiDlM0qd-GcXEsFah&04T~@bE3g1-uml^h3IpGy{V)bwFa-k@(!(&U zz!+@8Bn*9v_QM36f;m`(C0K?HSc8EY?T0bgh6xz_XX*(fFbCr>4^yxRv#0Uz0p?%{=3y0!kky?SeI!f=!qef0%Z`2%LclSb-T>hegld9tiZrGXcr8_P=oft6wJUPEWi>h!3wOx8f?G@Y{4cBe3ShR!!Yy{@_`AM zggKZI{*?OumVAFkeORyj7wKW?0pjqrUr=AzI6}K&^Ov+&_}`@a9sD2mA8a&fAFTa~ zaStoMre3i08{%PciT(Az@VCSZf5&kGbN@>_ge~eX{5|z$HR?kC&cc6``tf%Zk#7+X6R-i( zunluC#NSU8#lt3y@OKfR8vO%vumTIP21_u;-$T@89kyW;2ER?a`1^+l%)u0_@%IZ; zFvBnP&A>Kn$#(w!Ap9M82JzIdaVF)!Na%Q{3==TT_7u!X94x>*EWskI!U}A_HuQg& zbdM)rScGxdhACKi0^iFF15c#hFanz}0R!{Y4~Ah8#$g4fU;}1h8x~-0;5c&?+n+@L z{~P(8Mf+d~7GVUIVFK1*1~!HK{X*>D$?qKEV2EE@tkKTcGw2W2^Dyu|`g@Riz{Yck zhfSD-f%A`dGB5)3un1>h8&+WD0`>#U43Vx*+;d3>^Dqk=umBU!BOaD6q~Bm5M!DZ7 z{srs@Sb|B|h8dW9A?3jeoPkYPftg|I4PzJ45BC#yDeZ!xQR@E#>IV}raU~w+U>UYw zMmm_kmVQ3W`b~IPx|#aJJl|6q`61&b!+wW}*RmZpVFTv)e$eobNOueQ!`MOchYeVV zp|4QyA2V*g#yEkMZ;&r6)`)N5zfHXGJLCrg|4u!ALi!)jPcZgF_6y9wCd@(qPpKCS z!4izZ8ce`8%)rQx82^7H-yf47j5Np(=3x;wV3oMgPbgR7VGAZ;;6F$Q!!QG5Fb`9( z0<*9N^Dy)u^am`#McDoY^;w{vN2m`B{D%6&(h~KD?LUy;e^OqX^ssb{?J#zncKwX_ z4*Of^<9lad0#;xO)?o#{1^G1$`4GzB#iWtFKoa?mb zHegkJKXr!rNASD9zo6VRNDnJ8bcF3&s3VL$76mENz@a@U<#&S7Up3=wx31c zzzAG~3F!ZC+V^DA!8}aC3e3XxQ>YINoK4+e2)1AZ2L6X~U>M5pYd^d^+yf8yz{5T8 za1T7(0}uDW!#(hD4?Nrh5BI>sJ@9Z3{NHxa)*olK^OX_K z!rve}OW1htyD9DU^Ud~viND40V&k1J@5GJEmlUzc-zdvsr@PtJzALQ!4w`h>T#T z`)OwV^@gvu(k)r(-eRRon{@B7{MJvq^?bJ3euvra^_$V_aF2=m8^azV&R?*7(n_ikCG1pm<4h(D;8c8+z^CZq}b~<_Ymq*B!=RZs^tj3bUSC6)$OC zV*FKxQg`v!c=3i_x!0NX8w};Rmoi>w*56>oXU+Os488ii)vV{N_;;H1cU%5FW__=r zm(Tmm`s(o`b-mU2X+v?6<_@!dry*Zy;OwuWS-*Q#yrj9utgkLt^7$L%4;YG*pT9Nh zpEmTy!{^L;+0g6HFPil)S^l5R`kbNUEor`D*1u-OA2RFTvf{sO*5?hq{aZKdKQQ$A z=SOCJbv{z|PmEt!6)$OiZq^?#lvpX_h*|$1EB@DJ{kMi*eSUA&j~en-<4$`|*)I`% z?}VY(51Y;UBMiO%44U=F7<%*1le+k@@lQ3B@ho|rXV%X*^yZ%zbnzD%A2*b7CCd)8 ze!1aBoV20ak~DGN`P5z?Guz#(48G^ptV{jm=e5@MH(Kj&G3!zfSyr#hIprN@yI20| zb=m$tv)yao>UG&ZZMMt#MwZpbH7b(%iqQJSodw{|~d>yN69q=f|7vk94-KU6(Pt`aCNk z_WGcezrFrEYrDN3H`~4OYp-8nwtMYgy)I)gX|{Xqx7SlEWxCIk8ZMJ)U;2w8e z9JKtH@pk-vBmfZuYO*AeWw27 zrv1}~UOhe9^&L0u8NA)J)1>qE_g+(;SN{GkTX#?KlK8hZUV zZ_4q?U9iga;(Y(;mglVxn02qbIaA)kWp3Pn85jMAUff}8TzTF*F1+<4Cx~-P;d>{) z?T%Bom*sn7-5i{ElJVc6+ueCWz6VSeZ~pQ)^cr`&H*a}g=)_>`SFJD`|)mlHx ztb6A@@B7ib>xcs%c60L1`~4qsd+u>2-I$rDLT26T2k)I7yUg}8&33PSavi&Rao(+g z@Y?w&(_daYmdtv7%r$MZ9(%RBe$0wLZq|32?H#kec2-(lga3d1fBc(zP474R;{n45 z4L3S3kMjA>Fg)Ave8X*qR~z1F_-4aBhIbm?Yxo7j`wZ_le8BKQ!;N>j`{4}3vklKT z+-7*S;f;oGHr!))r{TSZUogDS@P5Mw3?DSy_z_dS;n{}g8*Vea+VDohHyiFTywmVr z!!H=#XL!Hi1BMS8Zv3bz-|%e1^9{EdUTt`z;hPQj7~W}kui+OA?=!sL@BzaI4L24| z`G#j3o^QC#@M^;w4c~0I$M8NkIa^s^_}K7E4igC{6|`~>MoPq2OP1l#*hP=5aj(l7n-&-d^A3AWFk zVEfVu_V4rw(vP2D`{)U_51wFq{|UA)9X&z+oM8Lx3ARt4sDDn7e*6U6N4sqAf4@8b zc=t2&A92^Yo^Tf5_KPom-oVzEW?yyvYhRKac<#C9ojdr9XI=30TSUAu`>b=H^YmN5 zInI`64Lp1B+0Pn0Z}7QmlRYzW^XsmE#}bmp_j+AC68yH z<8J4>Z<+bz`ck<4#aH=mdVMB6@T_y6bw2Bvn{RNEU3dNX&F9|o`g7Aa+~k|Q!uQbC ziL0G!z}Zta`p((vMx+&%FD~6USPAcgK#2 z?-wq3s1teU)v-H%_ttRae?M{em%e=E>o;sYbiuQIhrf90+de%1gU`NUWA&;}?mus? ze%06d@2r3C)8G63)S35AoF6{*eZPFy%$~R3IeF#PPyJQxsc;K{AS;PIe)J8r~9^i*}LOe+0yIl_bq%?^N;YAU$_4Hv)A`X-~NBp{G+<~pwGKM zSSeNN|7f3gU$EAnvF`bbZ143w#;08m_xiT@=4)Dg9=m*Bw>E$7TFiCETF>2y>O;P{ zx|aXrS0`Wof3MHGi&<9Ae|mk+oA1_2)_Q#d>zvG@>#fiCu7B~-`|B6Ek9s6`P4>7t z!}06KiQK0R@MAASh_h_T`sMr#DE=m#7B9D}kMsq6(?61y_2YiF_W%exIeQU+>j#~523%cZgO&5Pz7yp$m`QO+j{u^E5Z|M?$ z*ohDLMos?@vo6c;_|e9X{9^o*d}sJ}ndfsmC79(Ybc^_X<~fw-uP}a#s|bhyZE}}1HQ?tX*i3#b4-^1 z>=OTrF8Bf&+e%SF& z)@%NGu8AN1Oa8<1kl8xYCH{&o{$*YKbzS_cy7(#wu+~4X?Gi8VT+`y;)y41a;^pzK zme1CI*8N{Q@d4lbx7_{Z%|D;*lFvaCzhL5DZFblXy2Ssqi(l;GAME0Pc%Ice?P& z<7zpMhVOTUyi-Y*R~p~{L)XiBRF?M|KW6-|Td%b*q;^y-_ z6aN+C$BmyhzG1xYr*8b;Q*T+0Io|#M>VHpRyldm6-|@6dCSDfrIC_Th{SUZ)*xAZ^ zdb;HE5)(ga;{V&kzs>kznZQ}R-|s7Q$>)<@yu6c6tN&NK_^Z3j8{c%|c{=|aw?02J z^?bniCF7rJ{9C)^bJWBSEV=o-(!@WC4<=-sjQ!U2-g)F%#*bV6rY`wkVd5uE{O`>E z9rwJP;8?uzxwlI`e?|Nwc+1wrFBljs-u}JEAyX5o9F235u|63RT>n{F3 zy7(`2nfD&kCH`y%fQ*MF^Zblq<17i|eaGB>qxsH~HNM~So4VxxaT7ma#b3}RzG~tJ zt@sCwAGZ9d3>c~ZsO6)^j~Oq|Q)EdQKW@cu>r$WHCVtY2KVbZ{<-ceAe#@Uk1*D#{ zmVb`%bC&-L2|jmwIpkqnPy1@ z4mLOh3rql$0KzY90b@CAHpCzxBo0dui2*~%i!g)`hnEQWAnbmps{W;0_uRTmPv-k< zwSGEv>eQ)yxpf)89X!MM2t3R9iFDva#G7aQBJeundGHS7UGOfrEcNg4db+XTUq)y8Qe<@Gg@-oenYydwPt|gZCMKCHR2xJHUsG-v>To{6wly zBHl6Mmx3pb^ZL02o@BfWo&wkD{WN%*$^QsE1Frp)=VoA4U@v5pN1y`{!)%43l31 z&ocf8;CaU13tngZtKc2Re+%9P*Y=$AL}h26$uENs82;1>A2EJE_?Yo6Pg3zF zPVoBka_}TL4P)fLDtL;?za2cy_~*bgj6VpTW&GqPD|_;cUk+YpJO|!k{0-n;#=ivK zWBgIHWhKf*G1A2I$D@G;|0Pr?7c=k@;!!IR)r&E>!Az|)Ms89WQF z`|;0#=fQP9`!n!5<4<|2vZurNcJMCaYv4V`ZvyW#{vq%Ii1BmJP&8GkEyhw*#C zyNv$=yvKOzOl41>@txoU#y7x+jK3Fr#Q2xN$Bh3LJhA1Ng!rf1jq}e^_9VfzKd%N) zG5$*MG~@38&oKTa@GRrM0?#vk-qV#mb#QIxUhoc+zX`kxuIu9m!296G%Ty;4-vS?i zp8$T`GgQ1oaGE~If9Hdb7{3;L%=EktJn;zSXRZHlz>|z0bGC{%#droh&G_};8O8_T zS;iCRDE)cHw}aQg^?2qw@D7uI8+e!Td%$~)e-FG5z6JhFo~!H`Fn$I25M1}aHSjT$ ze=B%GY&g78&zSMO;E6{nKWqOS22X-(Kfeh)4X*us4|s;@`8V(^<0oIL?8!5} z6}--P3B1GjTfw`Ge+s#pRe@i8J`EQGyX^59mekl?=n6H?=gN>M#bA_d>{CL z@teVijDH?{#Q1N)$BbV%rQ%KezSsXpz>|#M37!H!DWU#72%cv0&zM&FGmJanS;lV$ z&olma;C03yKBM$^7@q_0GJXWS$N25wea8Ow}Yn`|0nP?{wnYx;~xhfG5!GfnDJ9~sCW~PR{q!R%w^z7#t(p}7=Jx@n(@29GmQTj zJPWSd+tYU{d-6|!xgQpn(OYk(~4}fPFfAUo--YnyL!Sjs23cSwv?cg28zYX4H{Nx1{ zZ;$aQ@IK?O03R^^3GgAfZcn}nJ_bKtHN%M?gC`!V{CooVqjo8Kl8j#ro??6-c$)E7 zfoB-M13b(4ec*YOgLfI<0Piv01Mf5b8Snw)Bk&>Pr|wbqj2OQR zd<=dv{G0<%obD~>H-IM@{~&mZ@vnlX!B2z!{|3)8`Nw9Joq5Km!Rw5dz&nh;1-#4n z-QYdO9{}$&{^%Dddj^bO3O;1~YVZ-bF6W2A6OU8=)cjrGDR5o>{|-D2uFL<=!843M zc~RM!W&8!;dB(2?uQUEJ@DAe-fOo+kfqYCZsd#(f7l1zxd<3q`)pg)w@Ml5(Ht^Kr zz2)tT;AzHx0iFTZ`k%H8KY(k$?FG*>egk-&>FWr_#1p*j4;cRh_>l3hfsYvf5%`$#Q(ma-Pdw4<=kvgm zj9&$wV*I7xY4Fog{$B^41=s1l2RzU8{1m*-_?cHLJ3HVye;2{KO#T(%J;vV;-e-Eg z0X|?nagB<1$oRS7BgPlO$Bb`)C!VDItnL2`@Fcjd*Y|;^nEda+(~Lj;Mas?$)3X~q z3%&*U(gDwd>vrZN;B_YdZ{QuqpZa1IZ@Whk7?eH7HlZ<~BJjM9`15Y!adI|i`_%84)xULrtc%AVZ!MotPzT6Jp1J~u` zJK%lBADvV73>cpQA2NOfe8l*lgO3^i8hGL<-ge{X;7P_)d1X(E@!jBQ#$O4ZVf+K& zS;oH(o@e|K1r=|d@onH8#`EA^a9v;C0Nw-F_2n+`K9m0*_<-?;9Z>cR8NU#G#CQ>W z41Q8V{d+ffB6W-e+Rm?oCmBDs2>*lYa`;5>43obEJPWSN+cJ2b@z;Xa!FBugUhod% z_kwqsp8p2#G5*AovcJ#x4)6ivhrx%8zYBcC_}_w$8UJs|;dJBUmyl09Rrz20=PXCr znPhwkJjM8Hz|)L>1Uv(-^Y>rDvy5+9QSs&(zXZI_cp1FI_?yAIjNb#^WBfnB`;0$s zRoOFOd|qGQ?z#j|wIq(s<&i8}hW5(YiIRYCW?}B{dXRRJk9tu;2FmM1U$?5UEq1fe*j)*{IrA0o(|&+;9bUF4&DRT?c1&3 z1MuVFqr1R|;3t6pGx&({-+_-APgj(ki8H#$N}XV*C@}X~usDo?-k6>nh$X z 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%0DaZy|@-y~4DIVmWW; zm5G?l8NxJ8+2fn0@ZYDZwd%&Y8XK*j7ik+LL<^M-nF;<$ zq7l{pf_M?Lc+LPViof|aq$!ugy`MBz6-P7MRo{TbD?44ot2JZDs;QuDozAOsSHXJN z(kqlLG@FNMmPtjbC7%KhaTBF!@(yC}^g*>$UdP=Vqps=X^)F3>|8bU~jeHF2K?Y2wkP&uGSXN6Rt&NM7&t1)v*f^ zkGCqa&QTT&>u$cA1SMk>zlhSLBpJ!VfHg^iuws9Os4M6mEYOa-|JFLz1digNuu7Y?1M|XZ=(}o18 zwo}SI<3aK^^+Z+iOn5vAu^i_nfCZ`Q4T&CH2pm(WbD6bknuTmeV;-upp>-PNh$&gjv0ijQV z^2aM73!GaeFin!R)wR_wG~cA9s!M3a_Zp{BGpeUunqn5>QA(AVu})^!CgYBjl7+%t zbh9giX_jSKyF6v5SV{J-;Mzs~(_On<@RZP(H*~%Hb#%wnvhlJjyG}~IZLVt<)=QMZ z`J-pA5oJS*Q4UoP(J^r2xeFe%7A617pUjC@kSrxCwydkyyi+||a~x^XEpCMojqhO^ z>c=#Fvq319?9%R-%414OuM|qB{QjPUE-aCbq=}m@kWl)$Fmxo6o*-d9u}f0r$=2$=_QNhr?xRP`5Q$PRcC6$@$hq9%MxmZtX*l$lR5hW$ ziZA3qeD!`)clzqznlw?(a^xg)0PT&}{t z%dc*5E#MLn{Lo5s5~2F){oVWXO4I$dxVBEOE`>LW^wjvoQx(s*=Egc5?>ML>&A-5(NZI{yD6R~$W1Q`mxT5Su{E=bb`HQh%>t9N8lxs`JojaoyB?b{to zY$>jo>5L1=G0k!ee}o8n-Fv~dT<*|%ER`XWo-|)X8CI*3cjVOqxe7gx5agaqyrNXz zyu$OQlfw0SM5FY2oFA^&BO0yO%&l$KV&wJzw!k8}&s)H)x|obzSE-Vtd7{{{%hlIt zR7Fh|s=QMY_rc|I2dH*YGej2)<*0E>B(_p(L3?`i*=nfIHT_qWHUYL$CD?jEywmYn zG=$$;+NhGe`lOwA`76CLbWQz5s|@nyU5W7}N1=oc{gnbW=oF&Rgum*QR${BDSc$FT zH6Dqr;@Lp@ttKtrx>_uv0_Wu3V`8hbMm>dSkS2fSL|V7DC~agKrBg&f3bs-aqxUvS zg}FkbL2t^E5$V4TQJExqA7qiNt&t7%zpc`+);d+eTGi2!E2Csgv^FeX?!I;6sMQ+z z$@D_5Buw_z*hGe^=0#pFi|aO^5G1M@i_< zlb)`m_3t`-1~?zY^i6m004kn-LzLbp#OMA4mW3 z@HY|@Ax@zG#J~5yRfX4|rzkx6KezwY^otpOfbjaWfBYn<{3D64`twg%`1(6k{QC1< z|D(QZEjpb3ehUkq{8N!riG=<{_Dd%I$L+tBn2169H-+%}^B3ocQ0~8!`=|Wt-SmGm z{OO-j@$1houn5`L#79*4x{iPJc@u=O&=P_DReWtu$6PF|YG~+tF zXkX2LBrgBy&sq9I^q>6Sd8oL${nx*<<`gkh+r^}DFOSF&L_exUzKm9z_aG&@&lltR7H6Z-u52^4i JW-$Aj`2S0(DwF^K literal 391056 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 ???? CFBundleVersion - 1.57 + 1.58a CSResourcesFileMapped yes DTCompiler diff --git a/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/MacOS/libsteam_api.dylib b/com.rlabrecque.steamworks.net/Plugins/steam_api.bundle/Contents/MacOS/libsteam_api.dylib index 5237be0b29f03ea83a72332d19cbc9030556b680..2d8957fed8872d5f22c20a070d1c8b9a7e3c8f9a 100644 GIT binary patch delta 179571 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

public static int ReceiveMessagesOnChannel(int nLocalChannel, IntPtr[] ppOutMessages, int nMaxMessages) { InteropHelp.TestIfAvailableClient(); + if (ppOutMessages != null && ppOutMessages.Length != nMaxMessages) { + throw new System.ArgumentException("ppOutMessages must be the same size as nMaxMessages!"); + } return NativeMethods.ISteamNetworkingMessages_ReceiveMessagesOnChannel(CSteamAPIContext.GetSteamNetworkingMessages(), nLocalChannel, ppOutMessages, nMaxMessages); } diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs index f4da2a06..54611b38 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs @@ -387,6 +387,9 @@ public static EResult FlushMessagesOnConnection(HSteamNetConnection hConn) { ///
public static int ReceiveMessagesOnConnection(HSteamNetConnection hConn, IntPtr[] ppOutMessages, int nMaxMessages) { InteropHelp.TestIfAvailableClient(); + if (ppOutMessages != null && ppOutMessages.Length != nMaxMessages) { + throw new System.ArgumentException("ppOutMessages must be the same size as nMaxMessages!"); + } return NativeMethods.ISteamNetworkingSockets_ReceiveMessagesOnConnection(CSteamAPIContext.GetSteamNetworkingSockets(), hConn, ppOutMessages, nMaxMessages); } @@ -672,6 +675,9 @@ public static bool SetConnectionPollGroup(HSteamNetConnection hConn, HSteamNetPo ///
public static int ReceiveMessagesOnPollGroup(HSteamNetPollGroup hPollGroup, IntPtr[] ppOutMessages, int nMaxMessages) { InteropHelp.TestIfAvailableClient(); + if (ppOutMessages != null && ppOutMessages.Length != nMaxMessages) { + throw new System.ArgumentException("ppOutMessages must be the same size as nMaxMessages!"); + } return NativeMethods.ISteamNetworkingSockets_ReceiveMessagesOnPollGroup(CSteamAPIContext.GetSteamNetworkingSockets(), hPollGroup, ppOutMessages, nMaxMessages); } From f4bb99a7cc731b8dbde80a208eba5a6cc9fec4d1 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Fri, 5 Jul 2024 13:30:11 -0700 Subject: [PATCH 48/55] Add STEAM_OUT_ARRAY_COUNT to ISteamUGC_GetQueryUGCContentDescriptors to fix mis-generated argument pvecDescriptors --- CodeGen/src/interfaces.py | 6 ++++++ .../Runtime/autogen/NativeMethods.cs | 2 +- .../Runtime/autogen/isteamgameserverugc.cs | 7 +++++-- com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs | 7 +++++-- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/CodeGen/src/interfaces.py b/CodeGen/src/interfaces.py index 7e52f2c9..5f20a952 100644 --- a/CodeGen/src/interfaces.py +++ b/CodeGen/src/interfaces.py @@ -485,6 +485,12 @@ "ISteamGameServerUGC_GetQueryUGCAdditionalPreview": { "pchOriginalFileName": steamworksparser.ArgAttribute("STEAM_OUT_STRING_COUNT", "cchOriginalFileNameSize"), }, + "ISteamUGC_GetQueryUGCContentDescriptors": { + "pvecDescriptors": steamworksparser.ArgAttribute("STEAM_OUT_ARRAY_COUNT", "cMaxEntries"), + }, + "ISteamGameServerUGC_GetQueryUGCContentDescriptors": { + "pvecDescriptors": steamworksparser.ArgAttribute("STEAM_OUT_ARRAY_COUNT", "cMaxEntries"), + }, "ISteamNetworkingMessages_ReceiveMessagesOnChannel": { "ppOutMessages": steamworksparser.ArgAttribute("STEAM_OUT_ARRAY_COUNT", "nMaxMessages"), }, diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs index ca427af7..68e3794b 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs @@ -2680,7 +2680,7 @@ internal static class NativeMethods { public static extern bool ISteamUGC_GetSupportedGameVersionData(IntPtr instancePtr, UGCQueryHandle_t handle, uint index, uint versionIndex, IntPtr pchGameBranchMin, IntPtr pchGameBranchMax, uint cchGameBranchSize); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCContentDescriptors", CallingConvention = CallingConvention.Cdecl)] - public static extern uint ISteamUGC_GetQueryUGCContentDescriptors(IntPtr instancePtr, UGCQueryHandle_t handle, uint index, out EUGCContentDescriptorID pvecDescriptors, uint cMaxEntries); + public static extern uint ISteamUGC_GetQueryUGCContentDescriptors(IntPtr instancePtr, UGCQueryHandle_t handle, uint index, [In, Out] EUGCContentDescriptorID[] pvecDescriptors, uint cMaxEntries); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_ISteamUGC_ReleaseQueryUGCRequest", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs index 2acab937..f23dc93d 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameserverugc.cs @@ -185,9 +185,12 @@ public static bool GetSupportedGameVersionData(UGCQueryHandle_t handle, uint ind return ret; } - public static uint GetQueryUGCContentDescriptors(UGCQueryHandle_t handle, uint index, out EUGCContentDescriptorID pvecDescriptors, uint cMaxEntries) { + public static uint GetQueryUGCContentDescriptors(UGCQueryHandle_t handle, uint index, EUGCContentDescriptorID[] pvecDescriptors, uint cMaxEntries) { InteropHelp.TestIfAvailableGameServer(); - return NativeMethods.ISteamUGC_GetQueryUGCContentDescriptors(CSteamGameServerAPIContext.GetSteamUGC(), handle, index, out pvecDescriptors, cMaxEntries); + if (pvecDescriptors != null && pvecDescriptors.Length != cMaxEntries) { + throw new System.ArgumentException("pvecDescriptors must be the same size as cMaxEntries!"); + } + return NativeMethods.ISteamUGC_GetQueryUGCContentDescriptors(CSteamGameServerAPIContext.GetSteamUGC(), handle, index, pvecDescriptors, cMaxEntries); } /// diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs index 309b6792..1e03ea35 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamugc.cs @@ -185,9 +185,12 @@ public static bool GetSupportedGameVersionData(UGCQueryHandle_t handle, uint ind return ret; } - public static uint GetQueryUGCContentDescriptors(UGCQueryHandle_t handle, uint index, out EUGCContentDescriptorID pvecDescriptors, uint cMaxEntries) { + public static uint GetQueryUGCContentDescriptors(UGCQueryHandle_t handle, uint index, EUGCContentDescriptorID[] pvecDescriptors, uint cMaxEntries) { InteropHelp.TestIfAvailableClient(); - return NativeMethods.ISteamUGC_GetQueryUGCContentDescriptors(CSteamAPIContext.GetSteamUGC(), handle, index, out pvecDescriptors, cMaxEntries); + if (pvecDescriptors != null && pvecDescriptors.Length != cMaxEntries) { + throw new System.ArgumentException("pvecDescriptors must be the same size as cMaxEntries!"); + } + return NativeMethods.ISteamUGC_GetQueryUGCContentDescriptors(CSteamAPIContext.GetSteamUGC(), handle, index, pvecDescriptors, cMaxEntries); } /// From 22139ad804f3cff359852a15ad238c31d07c3ad3 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Fri, 5 Jul 2024 13:53:59 -0700 Subject: [PATCH 49/55] Remove STEAMNETWORKINGSOCKETS_ENABLE_SDR define since it seems to no longer be a thing --- CodeGen/src/interfaces.py | 2 -- CodeGen/templates/nativemethods.txt | 2 -- com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs | 2 -- .../Runtime/autogen/isteamgameservernetworkingsockets.cs | 1 - .../Runtime/autogen/isteamgameservernetworkingutils.cs | 1 - .../Runtime/autogen/isteamnetworkingsockets.cs | 1 - .../Runtime/autogen/isteamnetworkingutils.cs | 1 - 7 files changed, 10 deletions(-) diff --git a/CodeGen/src/interfaces.py b/CodeGen/src/interfaces.py index 5f20a952..e6db047e 100644 --- a/CodeGen/src/interfaces.py +++ b/CodeGen/src/interfaces.py @@ -579,8 +579,6 @@ def parse(f): if g_Output: with open('../com.rlabrecque.steamworks.net/Runtime/autogen/' + os.path.splitext(f.name)[0] + '.cs', 'wb') as out: - if f.name in ["isteamnetworkingutils.h", "isteamnetworkingsockets.h", "isteamgameservernetworkingutils.h", "isteamgameservernetworkingsockets.h"]: - out.write(bytes("#define STEAMNETWORKINGSOCKETS_ENABLE_SDR\n", "utf-8")) out.write(bytes(HEADER, "utf-8")) out.write(bytes("namespace Steamworks {\n", "utf-8")) for line in g_Output: diff --git a/CodeGen/templates/nativemethods.txt b/CodeGen/templates/nativemethods.txt index 89d9cd19..5f170556 100644 --- a/CodeGen/templates/nativemethods.txt +++ b/CodeGen/templates/nativemethods.txt @@ -31,8 +31,6 @@ #error You must define STEAMWORKS_WIN or STEAMWORKS_LIN_OSX if you're not using Unity. #endif -#define STEAMNETWORKINGSOCKETS_ENABLE_SDR - using System.Runtime.InteropServices; using IntPtr = System.IntPtr; diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs index 68e3794b..c91db23e 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs @@ -31,8 +31,6 @@ #error You must define STEAMWORKS_WIN or STEAMWORKS_LIN_OSX if you're not using Unity. #endif -#define STEAMNETWORKINGSOCKETS_ENABLE_SDR - using System.Runtime.InteropServices; using IntPtr = System.IntPtr; diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs index 224a6358..c51b9f88 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingsockets.cs @@ -1,4 +1,3 @@ -#define STEAMNETWORKINGSOCKETS_ENABLE_SDR // This file is provided under The MIT License as part of Steamworks.NET. // Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs index 0ec90d00..305ed939 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingutils.cs @@ -1,4 +1,3 @@ -#define STEAMNETWORKINGSOCKETS_ENABLE_SDR // This file is provided under The MIT License as part of Steamworks.NET. // Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs index 54611b38..a94dd7a4 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingsockets.cs @@ -1,4 +1,3 @@ -#define STEAMNETWORKINGSOCKETS_ENABLE_SDR // This file is provided under The MIT License as part of Steamworks.NET. // Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs index cb069d79..bdbbab3e 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamnetworkingutils.cs @@ -1,4 +1,3 @@ -#define STEAMNETWORKINGSOCKETS_ENABLE_SDR // This file is provided under The MIT License as part of Steamworks.NET. // Copyright (c) 2013-2022 Riley Labrecque // Please see the included LICENSE.txt for additional information. From 226a7fd6a1b27cdc388bab92c5d4e530845a149b Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Fri, 5 Jul 2024 14:03:16 -0700 Subject: [PATCH 50/55] Update SteamworksParser expose generate a GameServer version of ISteamNetworkingMessages (Fixes #587) --- CodeGen/SteamworksParser | 2 +- CodeGen/src/interfaces.py | 2 +- .../isteamgameservernetworkingmessages.cs | 142 ++++++++++++++++++ 3 files changed, 144 insertions(+), 2 deletions(-) create mode 100644 com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingmessages.cs diff --git a/CodeGen/SteamworksParser b/CodeGen/SteamworksParser index a7d2cc85..6f70e9cb 160000 --- a/CodeGen/SteamworksParser +++ b/CodeGen/SteamworksParser @@ -1 +1 @@ -Subproject commit a7d2cc853d6baffcfe251f685e3f1987b87d4375 +Subproject commit 6f70e9cb638b240f39a77063f6160673014e094b diff --git a/CodeGen/src/interfaces.py b/CodeGen/src/interfaces.py index e6db047e..6bf6b6c4 100644 --- a/CodeGen/src/interfaces.py +++ b/CodeGen/src/interfaces.py @@ -494,7 +494,7 @@ "ISteamNetworkingMessages_ReceiveMessagesOnChannel": { "ppOutMessages": steamworksparser.ArgAttribute("STEAM_OUT_ARRAY_COUNT", "nMaxMessages"), }, - "ISteamNetworkingGameServerMessages_ReceiveMessagesOnChannel": { + "ISteamGameServerNetworkingMessages_ReceiveMessagesOnChannel": { "ppOutMessages": steamworksparser.ArgAttribute("STEAM_OUT_ARRAY_COUNT", "nMaxMessages"), }, "ISteamNetworkingSockets_ReceiveMessagesOnConnection": { diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingmessages.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingmessages.cs new file mode 100644 index 00000000..589d4996 --- /dev/null +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingmessages.cs @@ -0,0 +1,142 @@ +// This file is provided under The MIT License as part of Steamworks.NET. +// Copyright (c) 2013-2022 Riley Labrecque +// Please see the included LICENSE.txt for additional information. + +// This file is automatically generated. +// Changes to this file will be reverted when you update Steamworks.NET + +#if !(UNITY_STANDALONE_WIN || UNITY_STANDALONE_LINUX || UNITY_STANDALONE_OSX || STEAMWORKS_WIN || STEAMWORKS_LIN_OSX) + #define DISABLESTEAMWORKS +#endif + +#if !DISABLESTEAMWORKS + +using System.Runtime.InteropServices; +using IntPtr = System.IntPtr; + +namespace Steamworks { + public static class SteamGameServerNetworkingMessages { + /// + /// / Sends a message to the specified host. If we don't already have a session with that user, + /// / a session is implicitly created. There might be some handshaking that needs to happen + /// / before we can actually begin sending message data. If this handshaking fails and we can't + /// / get through, an error will be posted via the callback SteamNetworkingMessagesSessionFailed_t. + /// / There is no notification when the operation succeeds. (You should have the peer send a reply + /// / for this purpose.) + /// / + /// / Sending a message to a host will also implicitly accept any incoming connection from that host. + /// / + /// / nSendFlags is a bitmask of k_nSteamNetworkingSend_xxx options + /// / + /// / nRemoteChannel is a routing number you can use to help route message to different systems. + /// / You'll have to call ReceiveMessagesOnChannel() with the same channel number in order to retrieve + /// / the data on the other end. + /// / + /// / Using different channels to talk to the same user will still use the same underlying + /// / connection, saving on resources. If you don't need this feature, use 0. + /// / Otherwise, small integers are the most efficient. + /// / + /// / It is guaranteed that reliable messages to the same host on the same channel + /// / will be be received by the remote host (if they are received at all) exactly once, + /// / and in the same order that they were sent. + /// / + /// / NO other order guarantees exist! In particular, unreliable messages may be dropped, + /// / received out of order with respect to each other and with respect to reliable data, + /// / or may be received multiple times. Messages on different channels are *not* guaranteed + /// / to be received in the order they were sent. + /// / + /// / A note for those familiar with TCP/IP ports, or converting an existing codebase that + /// / opened multiple sockets: You might notice that there is only one channel, and with + /// / TCP/IP each endpoint has a port number. You can think of the channel number as the + /// / *destination* port. If you need each message to also include a "source port" (so the + /// / recipient can route the reply), then just put that in your message. That is essentially + /// / how UDP works! + /// / + /// / Returns: + /// / - k_EREsultOK on success. + /// / - k_EResultNoConnection, if the session has failed or was closed by the peer and + /// / k_nSteamNetworkingSend_AutoRestartBrokenSession was not specified. (You can + /// / use GetSessionConnectionInfo to get the details.) In order to acknowledge the + /// / broken session and start a new one, you must call CloseSessionWithUser, or you may + /// / repeat the call with k_nSteamNetworkingSend_AutoRestartBrokenSession. See + /// / k_nSteamNetworkingSend_AutoRestartBrokenSession for more details. + /// / - See ISteamNetworkingSockets::SendMessageToConnection for more possible return values + /// + public static EResult SendMessageToUser(ref SteamNetworkingIdentity identityRemote, IntPtr pubData, uint cubData, int nSendFlags, int nRemoteChannel) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamNetworkingMessages_SendMessageToUser(CSteamGameServerAPIContext.GetSteamNetworkingMessages(), ref identityRemote, pubData, cubData, nSendFlags, nRemoteChannel); + } + + /// + /// / Reads the next message that has been sent from another user via SendMessageToUser() on the given channel. + /// / Returns number of messages returned into your list. (0 if no message are available on that channel.) + /// / + /// / When you're done with the message object(s), make sure and call SteamNetworkingMessage_t::Release()! + /// + public static int ReceiveMessagesOnChannel(int nLocalChannel, IntPtr[] ppOutMessages, int nMaxMessages) { + InteropHelp.TestIfAvailableGameServer(); + if (ppOutMessages != null && ppOutMessages.Length != nMaxMessages) { + throw new System.ArgumentException("ppOutMessages must be the same size as nMaxMessages!"); + } + return NativeMethods.ISteamNetworkingMessages_ReceiveMessagesOnChannel(CSteamGameServerAPIContext.GetSteamNetworkingMessages(), nLocalChannel, ppOutMessages, nMaxMessages); + } + + /// + /// / Call this in response to a SteamNetworkingMessagesSessionRequest_t callback. + /// / SteamNetworkingMessagesSessionRequest_t are posted when a user tries to send you a message, + /// / and you haven't tried to talk to them first. If you don't want to talk to them, just ignore + /// / the request. If the user continues to send you messages, SteamNetworkingMessagesSessionRequest_t + /// / callbacks will continue to be posted periodically. + /// / + /// / Returns false if there is no session with the user pending or otherwise. If there is an + /// / existing active session, this function will return true, even if it is not pending. + /// / + /// / Calling SendMessageToUser() will implicitly accepts any pending session request to that user. + /// + public static bool AcceptSessionWithUser(ref SteamNetworkingIdentity identityRemote) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamNetworkingMessages_AcceptSessionWithUser(CSteamGameServerAPIContext.GetSteamNetworkingMessages(), ref identityRemote); + } + + /// + /// / Call this when you're done talking to a user to immediately free up resources under-the-hood. + /// / If the remote user tries to send data to you again, another SteamNetworkingMessagesSessionRequest_t + /// / callback will be posted. + /// / + /// / Note that sessions that go unused for a few minutes are automatically timed out. + /// + public static bool CloseSessionWithUser(ref SteamNetworkingIdentity identityRemote) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamNetworkingMessages_CloseSessionWithUser(CSteamGameServerAPIContext.GetSteamNetworkingMessages(), ref identityRemote); + } + + /// + /// / Call this when you're done talking to a user on a specific channel. Once all + /// / open channels to a user have been closed, the open session to the user will be + /// / closed, and any new data from this user will trigger a + /// / SteamSteamNetworkingMessagesSessionRequest_t callback + /// + public static bool CloseChannelWithUser(ref SteamNetworkingIdentity identityRemote, int nLocalChannel) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamNetworkingMessages_CloseChannelWithUser(CSteamGameServerAPIContext.GetSteamNetworkingMessages(), ref identityRemote, nLocalChannel); + } + + /// + /// / Returns information about the latest state of a connection, if any, with the given peer. + /// / Primarily intended for debugging purposes, but can also be used to get more detailed + /// / failure information. (See SendMessageToUser and k_nSteamNetworkingSend_AutoRestartBrokenSession.) + /// / + /// / Returns the value of SteamNetConnectionInfo_t::m_eState, or k_ESteamNetworkingConnectionState_None + /// / if no connection exists with specified peer. You may pass nullptr for either parameter if + /// / you do not need the corresponding details. Note that sessions time out after a while, + /// / so if a connection fails, or SendMessageToUser returns k_EResultNoConnection, you cannot wait + /// / indefinitely to obtain the reason for failure. + /// + public static ESteamNetworkingConnectionState GetSessionConnectionInfo(ref SteamNetworkingIdentity identityRemote, out SteamNetConnectionInfo_t pConnectionInfo, out SteamNetConnectionRealTimeStatus_t pQuickStatus) { + InteropHelp.TestIfAvailableGameServer(); + return NativeMethods.ISteamNetworkingMessages_GetSessionConnectionInfo(CSteamGameServerAPIContext.GetSteamNetworkingMessages(), ref identityRemote, out pConnectionInfo, out pQuickStatus); + } + } +} + +#endif // !DISABLESTEAMWORKS From f03f230f6be88ca6cd74f74d0d829e750854e43e Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Fri, 5 Jul 2024 14:20:03 -0700 Subject: [PATCH 51/55] Add missing isteamgameservernetworkingmessages.cs.meta --- .../isteamgameservernetworkingmessages.cs.meta | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingmessages.cs.meta diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingmessages.cs.meta b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingmessages.cs.meta new file mode 100644 index 00000000..0e6ad651 --- /dev/null +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/isteamgameservernetworkingmessages.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 52f59aadf93dd5a47b52ba2e4b178aee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 3db2bfaedee6cfd421c77b108b1d792c0461fc8d Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sun, 28 Jul 2024 19:02:28 -0700 Subject: [PATCH 52/55] Fix initializing on GameServers and added InitEx for them (Fixes #632, thanks to @zackman0010) - Started using pszInternalCheckInterfaceVersions - No longer initializing CallbackDispatcher if CSteamAPIContext.Init failed - Send a custom error message via OutSteamErrMsg if CSteamAPIContext.Init failed --- CodeGen/templates/nativemethods.txt | 4 +- .../Runtime/Steam.cs | 119 +++++++++++++----- .../Runtime/autogen/NativeMethods.cs | 4 +- 3 files changed, 90 insertions(+), 37 deletions(-) diff --git a/CodeGen/templates/nativemethods.txt b/CodeGen/templates/nativemethods.txt index 5f170556..4cba12e9 100644 --- a/CodeGen/templates/nativemethods.txt +++ b/CodeGen/templates/nativemethods.txt @@ -47,7 +47,7 @@ namespace Steamworks { #region steam_api.h [DllImport(NativeLibraryName, EntryPoint = "SteamInternal_SteamAPI_Init", CallingConvention = CallingConvention.Cdecl)] - public static extern ESteamAPIInitResult SteamInternal_SteamAPI_Init(IntPtr pszInternalCheckInterfaceVersions, IntPtr pOutErrMsg); + public static extern ESteamAPIInitResult SteamInternal_SteamAPI_Init(InteropHelp.UTF8StringHandle pszInternalCheckInterfaceVersions, IntPtr pOutErrMsg); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_Shutdown", CallingConvention = CallingConvention.Cdecl)] public static extern void SteamAPI_Shutdown(); @@ -155,7 +155,7 @@ namespace Steamworks { public static extern int SteamGameServer_GetHSteamUser(); [DllImport(NativeLibraryName, EntryPoint = "SteamInternal_GameServer_Init_V2", CallingConvention = CallingConvention.Cdecl)] - public static extern ESteamAPIInitResult SteamInternal_GameServer_Init_V2(uint unIP, ushort usPort, ushort usGamePort, ushort usQueryPort, EServerMode eServerMode, InteropHelp.UTF8StringHandle pchVersionString, IntPtr pszInternalCheckInterfaceVersions, IntPtr pOutErrMsg); + public static extern ESteamAPIInitResult SteamInternal_GameServer_Init_V2(uint unIP, ushort usGamePort, ushort usQueryPort, EServerMode eServerMode, InteropHelp.UTF8StringHandle pchVersionString, InteropHelp.UTF8StringHandle pszInternalCheckInterfaceVersions, IntPtr pOutErrMsg); #endregion #region SteamAPI Accessors [DllImport(NativeLibraryName, EntryPoint = "SteamClient", CallingConvention = CallingConvention.Cdecl)] diff --git a/com.rlabrecque.steamworks.net/Runtime/Steam.cs b/com.rlabrecque.steamworks.net/Runtime/Steam.cs index 24af0f43..4cb90518 100644 --- a/com.rlabrecque.steamworks.net/Runtime/Steam.cs +++ b/com.rlabrecque.steamworks.net/Runtime/Steam.cs @@ -58,33 +58,64 @@ public static ESteamAPIInitResult InitEx(out string OutSteamErrMsg) { InteropHelp.TestIfPlatformSupported(); - IntPtr SteamErrorMsgPtr = Marshal.AllocHGlobal(Constants.k_cchMaxSteamErrMsg); - ESteamAPIInitResult initResult = NativeMethods.SteamInternal_SteamAPI_Init(IntPtr.Zero, SteamErrorMsgPtr); - OutSteamErrMsg = InteropHelp.PtrToStringUTF8(SteamErrorMsgPtr); - Marshal.FreeHGlobal(SteamErrorMsgPtr); - - // Steamworks.NET specific: We initialize the SteamAPI Context like this for now, but we need to do it - // every time that Unity reloads binaries, so we also check if the pointers are available and initialized - // before each call to any interface functions. That is in InteropHelp.cs - if (initResult == ESteamAPIInitResult.k_ESteamAPIInitResult_OK) - { - bool ret = CSteamAPIContext.Init(); - if (!ret) { - initResult = ESteamAPIInitResult.k_ESteamAPIInitResult_FailedGeneric; + var pszInternalCheckInterfaceVersions = new System.Text.StringBuilder(); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMUTILS_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMNETWORKINGUTILS_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMAPPS_INTERFACE_VERSION).Append("\0"); + //pszInternalCheckInterfaceVersions.Append(Constants.STEAMCONTROLLER_INTERFACE_VERSION).Append("\0"); // ISteamController is deprecated in favor of ISteamInput. + pszInternalCheckInterfaceVersions.Append(Constants.STEAMFRIENDS_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMGAMESEARCH_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMHTMLSURFACE_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMHTTP_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMINPUT_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMINVENTORY_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMMATCHMAKING_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMMUSICREMOTE_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMMUSIC_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMNETWORKINGMESSAGES_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMNETWORKINGSOCKETS_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMNETWORKING_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMPARENTALSETTINGS_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMPARTIES_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMREMOTEPLAY_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMREMOTESTORAGE_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMSCREENSHOTS_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMUGC_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMUSERSTATS_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMUSER_INTERFACE_VERSION).Append("\0"); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMVIDEO_INTERFACE_VERSION).Append("\0"); + + using (var pszInternalCheckInterfaceVersions2 = new InteropHelp.UTF8StringHandle(pszInternalCheckInterfaceVersions.ToString())) { + IntPtr SteamErrorMsgPtr = Marshal.AllocHGlobal(Constants.k_cchMaxSteamErrMsg); + ESteamAPIInitResult initResult = NativeMethods.SteamInternal_SteamAPI_Init(pszInternalCheckInterfaceVersions2, SteamErrorMsgPtr); + OutSteamErrMsg = InteropHelp.PtrToStringUTF8(SteamErrorMsgPtr); + Marshal.FreeHGlobal(SteamErrorMsgPtr); + + // Steamworks.NET specific: We initialize the SteamAPI Context like this for now, but we need to do it + // every time that Unity reloads binaries, so we also check if the pointers are available and initialized + // before each call to any interface functions. That is in InteropHelp.cs + if (initResult == ESteamAPIInitResult.k_ESteamAPIInitResult_OK) + { + bool ret = CSteamAPIContext.Init(); + if (ret) { + CallbackDispatcher.Initialize(); + } + else { + initResult = ESteamAPIInitResult.k_ESteamAPIInitResult_FailedGeneric; + OutSteamErrMsg = "[Steamworks.NET] Failed to initialize CSteamAPIContext"; + } } - CallbackDispatcher.Initialize(); + return initResult; } - - return initResult; } public static bool Init() { InteropHelp.TestIfPlatformSupported(); string SteamErrorMsg; - ESteamAPIInitResult initResult = InitEx(out SteamErrorMsg); - return initResult == ESteamAPIInitResult.k_ESteamAPIInitResult_OK; + return InitEx(out SteamErrorMsg) == ESteamAPIInitResult.k_ESteamAPIInitResult_OK; } // SteamAPI_Shutdown should be called during process shutdown if possible. @@ -196,32 +227,54 @@ public static class GameServer { // ISteamGameServer::GetNextOutgoingPacket.) // - The version string should be in the form x.x.x.x, and is used by the master server to detect when the // server is out of date. (Only servers with the latest version will be listed.) - public static bool Init(uint unIP, ushort usGamePort, ushort usQueryPort, EServerMode eServerMode, string pchVersionString) { + public static ESteamAPIInitResult InitEx(uint unIP, ushort usGamePort, ushort usQueryPort, EServerMode eServerMode, string pchVersionString, out string OutSteamErrMsg) { InteropHelp.TestIfPlatformSupported(); - using (var pchVersionString2 = new InteropHelp.UTF8StringHandle(pchVersionString)) { + var pszInternalCheckInterfaceVersions = new System.Text.StringBuilder(); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMUTILS_INTERFACE_VERSION).Append('\0'); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMNETWORKINGUTILS_INTERFACE_VERSION).Append('\0'); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMGAMESERVER_INTERFACE_VERSION).Append('\0'); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMGAMESERVERSTATS_INTERFACE_VERSION).Append('\0'); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMHTTP_INTERFACE_VERSION).Append('\0'); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMINVENTORY_INTERFACE_VERSION).Append('\0'); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMNETWORKING_INTERFACE_VERSION).Append('\0'); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMNETWORKINGMESSAGES_INTERFACE_VERSION).Append('\0'); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMNETWORKINGSOCKETS_INTERFACE_VERSION).Append('\0'); + pszInternalCheckInterfaceVersions.Append(Constants.STEAMUGC_INTERFACE_VERSION).Append('\0'); + + using (var pchVersionString2 = new InteropHelp.UTF8StringHandle(pchVersionString)) + using (var pszInternalCheckInterfaceVersions2 = new InteropHelp.UTF8StringHandle(pszInternalCheckInterfaceVersions.ToString())) { IntPtr SteamErrorMsgPtr = Marshal.AllocHGlobal(Constants.k_cchMaxSteamErrMsg); - ESteamAPIInitResult initResult = NativeMethods.SteamInternal_GameServer_Init_V2(unIP, 0, usGamePort, usQueryPort, eServerMode, pchVersionString2, IntPtr.Zero, SteamErrorMsgPtr); - string SteamErrorMsg = InteropHelp.PtrToStringUTF8(SteamErrorMsgPtr); + ESteamAPIInitResult initResult = NativeMethods.SteamInternal_GameServer_Init_V2(unIP, usGamePort, usQueryPort, eServerMode, pchVersionString2, pszInternalCheckInterfaceVersions2, SteamErrorMsgPtr); + OutSteamErrMsg = InteropHelp.PtrToStringUTF8(SteamErrorMsgPtr); Marshal.FreeHGlobal(SteamErrorMsgPtr); - if (initResult != ESteamAPIInitResult.k_ESteamAPIInitResult_OK) + // Steamworks.NET specific: We initialize the SteamAPI Context like this for now, but we need to do it + // every time that Unity reloads binaries, so we also check if the pointers are available and initialized + // before each call to any interface functions. That is in InteropHelp.cs + if (initResult == ESteamAPIInitResult.k_ESteamAPIInitResult_OK) { - return false; + bool ret = CSteamGameServerAPIContext.Init(); + if (ret) { + CallbackDispatcher.Initialize(); + } + else { + initResult = ESteamAPIInitResult.k_ESteamAPIInitResult_FailedGeneric; + OutSteamErrMsg = "[Steamworks.NET] Failed to initialize CSteamAPIContext"; + } } - } - // Steamworks.NET specific: We initialize the SteamAPI Context like this for now, but we need to do it - // every time that Unity reloads binaries, so we also check if the pointers are available and initialized - // before each call to any interface functions. That is in InteropHelp.cs - bool ret = CSteamGameServerAPIContext.Init(); - if (!ret) { - return false; + return initResult; } + } - CallbackDispatcher.Initialize(); + // This function is included for compatibility with older SDK. + // You can use it if you don't care about decent error handling + public static bool Init(uint unIP, ushort usGamePort, ushort usQueryPort, EServerMode eServerMode, string pchVersionString) { + InteropHelp.TestIfPlatformSupported(); - return true; + string SteamErrorMsg; + return InitEx(unIP, usGamePort, usQueryPort, eServerMode, pchVersionString, out SteamErrorMsg) == ESteamAPIInitResult.k_ESteamAPIInitResult_OK; } // Shutdown SteamGameSeverXxx interfaces, log out, and free resources. diff --git a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs index c91db23e..1aa54797 100644 --- a/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs +++ b/com.rlabrecque.steamworks.net/Runtime/autogen/NativeMethods.cs @@ -47,7 +47,7 @@ internal static class NativeMethods { #region steam_api.h [DllImport(NativeLibraryName, EntryPoint = "SteamInternal_SteamAPI_Init", CallingConvention = CallingConvention.Cdecl)] - public static extern ESteamAPIInitResult SteamInternal_SteamAPI_Init(IntPtr pszInternalCheckInterfaceVersions, IntPtr pOutErrMsg); + public static extern ESteamAPIInitResult SteamInternal_SteamAPI_Init(InteropHelp.UTF8StringHandle pszInternalCheckInterfaceVersions, IntPtr pOutErrMsg); [DllImport(NativeLibraryName, EntryPoint = "SteamAPI_Shutdown", CallingConvention = CallingConvention.Cdecl)] public static extern void SteamAPI_Shutdown(); @@ -155,7 +155,7 @@ internal static class NativeMethods { public static extern int SteamGameServer_GetHSteamUser(); [DllImport(NativeLibraryName, EntryPoint = "SteamInternal_GameServer_Init_V2", CallingConvention = CallingConvention.Cdecl)] - public static extern ESteamAPIInitResult SteamInternal_GameServer_Init_V2(uint unIP, ushort usPort, ushort usGamePort, ushort usQueryPort, EServerMode eServerMode, InteropHelp.UTF8StringHandle pchVersionString, IntPtr pszInternalCheckInterfaceVersions, IntPtr pOutErrMsg); + public static extern ESteamAPIInitResult SteamInternal_GameServer_Init_V2(uint unIP, ushort usGamePort, ushort usQueryPort, EServerMode eServerMode, InteropHelp.UTF8StringHandle pchVersionString, InteropHelp.UTF8StringHandle pszInternalCheckInterfaceVersions, IntPtr pOutErrMsg); #endregion #region SteamAPI Accessors [DllImport(NativeLibraryName, EntryPoint = "SteamClient", CallingConvention = CallingConvention.Cdecl)] From a2fc889ab2672981ec3e6225d551d86ce6923121 Mon Sep 17 00:00:00 2001 From: Riley Labrecque Date: Sat, 17 Aug 2024 09:10:37 -0700 Subject: [PATCH 53/55] Bump Version to 2024.8.0 --- com.rlabrecque.steamworks.net/Runtime/Version.cs | 2 +- com.rlabrecque.steamworks.net/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/com.rlabrecque.steamworks.net/Runtime/Version.cs b/com.rlabrecque.steamworks.net/Runtime/Version.cs index 07b4ccad..d824bec4 100644 --- a/com.rlabrecque.steamworks.net/Runtime/Version.cs +++ b/com.rlabrecque.steamworks.net/Runtime/Version.cs @@ -13,7 +13,7 @@ namespace Steamworks { public static class Version { - public const string SteamworksNETVersion = "20.2.0"; + public const string SteamworksNETVersion = "2024.8.0"; public const string SteamworksSDKVersion = "1.60"; public const string SteamAPIDLLVersion = "08.97.99.70"; public const int SteamAPIDLLSize = 265064; diff --git a/com.rlabrecque.steamworks.net/package.json b/com.rlabrecque.steamworks.net/package.json index 85c70eca..0e4a0618 100644 --- a/com.rlabrecque.steamworks.net/package.json +++ b/com.rlabrecque.steamworks.net/package.json @@ -1,7 +1,7 @@ { "name": "com.rlabrecque.steamworks.net", "displayName": "Steamworks.NET", - "version": "20.2.0", + "version": "2024.8.0", "unity": "2019.4", "author": { "name": "Riley Labrecque", From 1bde629f52fa5a91284952c562872f98536152c8 Mon Sep 17 00:00:00 2001 From: James McGhee <31243736+JamesMcGhee@users.noreply.github.com> Date: Mon, 25 Nov 2024 21:16:10 +0000 Subject: [PATCH 54/55] Update RedistInstall.cs --- com.rlabrecque.steamworks.net/Editor/RedistInstall.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs b/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs index b7583898..44e0b3ed 100644 --- a/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs +++ b/com.rlabrecque.steamworks.net/Editor/RedistInstall.cs @@ -4,6 +4,7 @@ using UnityEngine; using UnityEditor; +using UnityEditor.Build; using System.IO; using System.Collections.Generic; From fe940be2c93b367c32a7e2bd13d2e5e68fddf1a6 Mon Sep 17 00:00:00 2001 From: Equinox Date: Thu, 12 Dec 2024 16:57:22 -0800 Subject: [PATCH 55/55] Fix unsafe threaded access to callback registry --- .../Runtime/CallbackDispatcher.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/com.rlabrecque.steamworks.net/Runtime/CallbackDispatcher.cs b/com.rlabrecque.steamworks.net/Runtime/CallbackDispatcher.cs index f27be5ea..47bcaecf 100644 --- a/com.rlabrecque.steamworks.net/Runtime/CallbackDispatcher.cs +++ b/com.rlabrecque.steamworks.net/Runtime/CallbackDispatcher.cs @@ -181,12 +181,14 @@ internal static void RunFrame(bool isGameServer) { } Marshal.FreeHGlobal(pTmpCallResult); } else { - List callbacks; - if (callbacksRegistry.TryGetValue(callbackMsg.m_iCallback, out callbacks)) { - List callbacksCopy; - lock (m_sync) { + List callbacksCopy = null; + lock (m_sync) { + List callbacks = null; + if (callbacksRegistry.TryGetValue(callbackMsg.m_iCallback, out callbacks)) { callbacksCopy = new List(callbacks); } + } + if (callbacksCopy != null) { foreach (var callback in callbacksCopy) { callback.OnRunCallback(callbackMsg.m_pubParam); }