diff --git a/README.md b/README.md index b25f6a3..6b92ed8 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ steamworks = "0.11.0" | Crate | SDK | MSRV | |--------|-------|--------| -| git | 1.59 | 1.71.1 | +| git | 1.60 | 1.71.1 | | 0.11.0 | 1.58a | 1.71.1 | | 0.10.0 | 1.54 | 1.56.1 | | 0.9.0 | 1.53a | 1.56.1 | diff --git a/src/lib.rs b/src/lib.rs index 613c101..2465a4d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -424,7 +424,7 @@ impl Client { /// Returns an accessor to the steam UGC interface (steam workshop) pub fn ugc(&self) -> UGC { unsafe { - let ugc = sys::SteamAPI_SteamUGC_v018(); + let ugc = sys::SteamAPI_SteamUGC_v020(); debug_assert!(!ugc.is_null()); UGC { ugc, diff --git a/src/server.rs b/src/server.rs index 5bc5596..571a16a 100644 --- a/src/server.rs +++ b/src/server.rs @@ -403,7 +403,7 @@ impl Server { /// **For this to work properly, you need to call `UGC::init_for_game_server()`!** pub fn ugc(&self) -> UGC { unsafe { - let ugc = sys::SteamAPI_SteamGameServerUGC_v018(); + let ugc = sys::SteamAPI_SteamGameServerUGC_v020(); debug_assert!(!ugc.is_null()); UGC { ugc, diff --git a/src/ugc.rs b/src/ugc.rs index 7ce92a5..653ab11 100644 --- a/src/ugc.rs +++ b/src/ugc.rs @@ -1439,7 +1439,7 @@ impl QueryHandle { api_call, CALLBACK_BASE_ID + 1, move |v, io_error| { - let ugc = sys::SteamAPI_SteamUGC_v018(); + let ugc = sys::SteamAPI_SteamUGC_v020(); if io_error { sys::SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(ugc, handle); cb(Err(SteamError::IOFailure)); diff --git a/steamworks-sys/lib/steam/public/steam/isteamapplist.h b/steamworks-sys/lib/steam/public/steam/isteamapplist.h deleted file mode 100644 index eb57435..0000000 --- a/steamworks-sys/lib/steam/public/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/steamworks-sys/lib/steam/public/steam/isteamapps.h b/steamworks-sys/lib/steam/public/steam/isteamapps.h index 908a762..64c1c00 100644 --- a/steamworks-sys/lib/steam/public/steam/isteamapps.h +++ b/steamworks-sys/lib/steam/public/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/steamworks-sys/lib/steam/public/steam/isteamparentalsettings.h b/steamworks-sys/lib/steam/public/steam/isteamparentalsettings.h index 3cef051..63a1e9b 100644 --- a/steamworks-sys/lib/steam/public/steam/isteamparentalsettings.h +++ b/steamworks-sys/lib/steam/public/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/steamworks-sys/lib/steam/public/steam/isteamtimeline.h b/steamworks-sys/lib/steam/public/steam/isteamtimeline.h new file mode 100644 index 0000000..37422a1 --- /dev/null +++ b/steamworks-sys/lib/steam/public/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/steamworks-sys/lib/steam/public/steam/isteamugc.h b/steamworks-sys/lib/steam/public/steam/isteamugc.h index 713feb4..483d97a 100644 --- a/steamworks-sys/lib/steam/public/steam/isteamugc.h +++ b/steamworks-sys/lib/steam/public/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/steamworks-sys/lib/steam/public/steam/isteamvideo.h b/steamworks-sys/lib/steam/public/steam/isteamvideo.h index f061e85..e48d548 100644 --- a/steamworks-sys/lib/steam/public/steam/isteamvideo.h +++ b/steamworks-sys/lib/steam/public/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/steamworks-sys/lib/steam/public/steam/lib/linux32/libsdkencryptedappticket.so b/steamworks-sys/lib/steam/public/steam/lib/linux32/libsdkencryptedappticket.so index c9f8677..cdd7905 100644 Binary files a/steamworks-sys/lib/steam/public/steam/lib/linux32/libsdkencryptedappticket.so and b/steamworks-sys/lib/steam/public/steam/lib/linux32/libsdkencryptedappticket.so differ diff --git a/steamworks-sys/lib/steam/public/steam/lib/linux64/libsdkencryptedappticket.so b/steamworks-sys/lib/steam/public/steam/lib/linux64/libsdkencryptedappticket.so index 1a5eb7f..5228c96 100644 Binary files a/steamworks-sys/lib/steam/public/steam/lib/linux64/libsdkencryptedappticket.so and b/steamworks-sys/lib/steam/public/steam/lib/linux64/libsdkencryptedappticket.so differ diff --git a/steamworks-sys/lib/steam/public/steam/lib/osx/libsdkencryptedappticket.dylib b/steamworks-sys/lib/steam/public/steam/lib/osx/libsdkencryptedappticket.dylib index 2b5a8fd..4c356e7 100644 Binary files a/steamworks-sys/lib/steam/public/steam/lib/osx/libsdkencryptedappticket.dylib and b/steamworks-sys/lib/steam/public/steam/lib/osx/libsdkencryptedappticket.dylib differ diff --git a/steamworks-sys/lib/steam/public/steam/lib/win32/sdkencryptedappticket.dll b/steamworks-sys/lib/steam/public/steam/lib/win32/sdkencryptedappticket.dll index e1b5958..ff63996 100644 Binary files a/steamworks-sys/lib/steam/public/steam/lib/win32/sdkencryptedappticket.dll and b/steamworks-sys/lib/steam/public/steam/lib/win32/sdkencryptedappticket.dll differ diff --git a/steamworks-sys/lib/steam/public/steam/lib/win32/sdkencryptedappticket.lib b/steamworks-sys/lib/steam/public/steam/lib/win32/sdkencryptedappticket.lib index 9bd4fc5..0c3b4c4 100644 Binary files a/steamworks-sys/lib/steam/public/steam/lib/win32/sdkencryptedappticket.lib and b/steamworks-sys/lib/steam/public/steam/lib/win32/sdkencryptedappticket.lib differ diff --git a/steamworks-sys/lib/steam/public/steam/lib/win64/sdkencryptedappticket64.dll b/steamworks-sys/lib/steam/public/steam/lib/win64/sdkencryptedappticket64.dll index 483840e..7e8ecbb 100644 Binary files a/steamworks-sys/lib/steam/public/steam/lib/win64/sdkencryptedappticket64.dll and b/steamworks-sys/lib/steam/public/steam/lib/win64/sdkencryptedappticket64.dll differ diff --git a/steamworks-sys/lib/steam/public/steam/lib/win64/sdkencryptedappticket64.lib b/steamworks-sys/lib/steam/public/steam/lib/win64/sdkencryptedappticket64.lib index 15945f1..146f4cf 100644 Binary files a/steamworks-sys/lib/steam/public/steam/lib/win64/sdkencryptedappticket64.lib and b/steamworks-sys/lib/steam/public/steam/lib/win64/sdkencryptedappticket64.lib differ diff --git a/steamworks-sys/lib/steam/public/steam/steam_api.h b/steamworks-sys/lib/steam/public/steam/steam_api.h index 607f44b..9d65351 100644 --- a/steamworks-sys/lib/steam/public/steam/steam_api.h +++ b/steamworks-sys/lib/steam/public/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/steamworks-sys/lib/steam/public/steam/steam_api.json b/steamworks-sys/lib/steam/public/steam/steam_api.json index 5af49b4..18ae199 100644 --- a/steamworks-sys/lib/steam/public/steam/steam_api.json +++ b/steamworks-sys/lib/steam/public/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/steamworks-sys/lib/steam/public/steam/steam_api_flat.h b/steamworks-sys/lib/steam/public/steam/steam_api_flat.h index 95c62ad..78fd0ea 100644 --- a/steamworks-sys/lib/steam/public/steam/steam_api_flat.h +++ b/steamworks-sys/lib/steam/public/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/steamworks-sys/lib/steam/public/steam/steam_api_internal.h b/steamworks-sys/lib/steam/public/steam/steam_api_internal.h index d7090bf..cd50033 100644 --- a/steamworks-sys/lib/steam/public/steam/steam_api_internal.h +++ b/steamworks-sys/lib/steam/public/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/steamworks-sys/lib/steam/public/steam/steamclientpublic.h b/steamworks-sys/lib/steam/public/steam/steamclientpublic.h index 1be1960..dfa50c8 100644 --- a/steamworks-sys/lib/steam/public/steam/steamclientpublic.h +++ b/steamworks-sys/lib/steam/public/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/steamworks-sys/lib/steam/public/steam/steamnetworkingtypes.h b/steamworks-sys/lib/steam/public/steam/steamnetworkingtypes.h index fa5b510..1dabb3f 100644 --- a/steamworks-sys/lib/steam/public/steam/steamnetworkingtypes.h +++ b/steamworks-sys/lib/steam/public/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/steamworks-sys/lib/steam/redistributable_bin/linux32/libsteam_api.so b/steamworks-sys/lib/steam/redistributable_bin/linux32/libsteam_api.so index 05a277b..d0e9958 100644 Binary files a/steamworks-sys/lib/steam/redistributable_bin/linux32/libsteam_api.so and b/steamworks-sys/lib/steam/redistributable_bin/linux32/libsteam_api.so differ diff --git a/steamworks-sys/lib/steam/redistributable_bin/linux64/libsteam_api.so b/steamworks-sys/lib/steam/redistributable_bin/linux64/libsteam_api.so index 4a1260c..99c9164 100644 Binary files a/steamworks-sys/lib/steam/redistributable_bin/linux64/libsteam_api.so and b/steamworks-sys/lib/steam/redistributable_bin/linux64/libsteam_api.so differ diff --git a/steamworks-sys/lib/steam/redistributable_bin/osx/libsteam_api.dylib b/steamworks-sys/lib/steam/redistributable_bin/osx/libsteam_api.dylib index 1897bef..0bbdeeb 100644 Binary files a/steamworks-sys/lib/steam/redistributable_bin/osx/libsteam_api.dylib and b/steamworks-sys/lib/steam/redistributable_bin/osx/libsteam_api.dylib differ diff --git a/steamworks-sys/lib/steam/redistributable_bin/steam_api.dll b/steamworks-sys/lib/steam/redistributable_bin/steam_api.dll index 0bcfde3..7fde3a3 100644 Binary files a/steamworks-sys/lib/steam/redistributable_bin/steam_api.dll and b/steamworks-sys/lib/steam/redistributable_bin/steam_api.dll differ diff --git a/steamworks-sys/lib/steam/redistributable_bin/steam_api.lib b/steamworks-sys/lib/steam/redistributable_bin/steam_api.lib index c92b896..f163d0c 100644 Binary files a/steamworks-sys/lib/steam/redistributable_bin/steam_api.lib and b/steamworks-sys/lib/steam/redistributable_bin/steam_api.lib differ diff --git a/steamworks-sys/lib/steam/redistributable_bin/win64/steam_api64.dll b/steamworks-sys/lib/steam/redistributable_bin/win64/steam_api64.dll index 6594c50..9ad453c 100644 Binary files a/steamworks-sys/lib/steam/redistributable_bin/win64/steam_api64.dll and b/steamworks-sys/lib/steam/redistributable_bin/win64/steam_api64.dll differ diff --git a/steamworks-sys/lib/steam/redistributable_bin/win64/steam_api64.lib b/steamworks-sys/lib/steam/redistributable_bin/win64/steam_api64.lib index b8aaa87..4a9b011 100644 Binary files a/steamworks-sys/lib/steam/redistributable_bin/win64/steam_api64.lib and b/steamworks-sys/lib/steam/redistributable_bin/win64/steam_api64.lib differ diff --git a/steamworks-sys/src/linux_bindings.rs b/steamworks-sys/src/linux_bindings.rs index 343387b..0b1c61a 100644 --- a/steamworks-sys/src/linux_bindings.rs +++ b/steamworks-sys/src/linux_bindings.rs @@ -247,11 +247,12 @@ pub const STEAM_CONTROLLER_MAX_ACTIVE_LAYERS: u32 = 16; pub const STEAM_CONTROLLER_MIN_ANALOG_ACTION_DATA: f64 = -1.0; pub const STEAM_CONTROLLER_MAX_ANALOG_ACTION_DATA: f64 = 1.0; pub const STEAMCONTROLLER_INTERFACE_VERSION: &[u8; 19] = b"SteamController008\0"; -pub const STEAMUGC_INTERFACE_VERSION: &[u8; 30] = b"STEAMUGC_INTERFACE_VERSION018\0"; +pub const STEAMUGC_INTERFACE_VERSION: &[u8; 30] = b"STEAMUGC_INTERFACE_VERSION020\0"; pub const STEAMHTMLSURFACE_INTERFACE_VERSION: &[u8; 39] = b"STEAMHTMLSURFACE_INTERFACE_VERSION_005\0"; pub const STEAMINVENTORY_INTERFACE_VERSION: &[u8; 30] = b"STEAMINVENTORY_INTERFACE_V003\0"; -pub const STEAMVIDEO_INTERFACE_VERSION: &[u8; 26] = b"STEAMVIDEO_INTERFACE_V002\0"; +pub const STEAMTIMELINE_INTERFACE_VERSION: &[u8; 29] = b"STEAMTIMELINE_INTERFACE_V001\0"; +pub const STEAMVIDEO_INTERFACE_VERSION: &[u8; 26] = b"STEAMVIDEO_INTERFACE_V007\0"; pub const STEAMPARENTALSETTINGS_INTERFACE_VERSION: &[u8; 43] = b"STEAMPARENTALSETTINGS_INTERFACE_VERSION001\0"; pub const STEAMREMOTEPLAY_INTERFACE_VERSION: &[u8; 37] = b"STEAMREMOTEPLAY_INTERFACE_VERSION002\0"; @@ -823,6 +824,17 @@ pub enum EDurationControlOnlineState { k_EDurationControlOnlineState_Online = 2, k_EDurationControlOnlineState_OnlineHighPri = 3, } +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum EBetaBranchFlags { + k_EBetaBranch_None = 0, + k_EBetaBranch_Default = 1, + k_EBetaBranch_Available = 2, + k_EBetaBranch_Private = 4, + k_EBetaBranch_Selected = 8, + k_EBetaBranch_Installed = 16, +} #[repr(C)] #[derive(Copy, Clone)] pub struct CSteamID { @@ -2284,266 +2296,12 @@ pub const k_iSteamChatCallbacks: _bindgen_ty_37 = _bindgen_ty_37::k_iSteamChatCa pub enum _bindgen_ty_37 { k_iSteamChatCallbacks = 5900, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct CSteamAPIContext { - pub m_pSteamClient: *mut ISteamClient, - pub m_pSteamUser: *mut ISteamUser, - pub m_pSteamFriends: *mut ISteamFriends, - pub m_pSteamUtils: *mut ISteamUtils, - pub m_pSteamMatchmaking: *mut ISteamMatchmaking, - pub m_pSteamGameSearch: *mut ISteamGameSearch, - pub m_pSteamUserStats: *mut ISteamUserStats, - pub m_pSteamApps: *mut ISteamApps, - pub m_pSteamMatchmakingServers: *mut ISteamMatchmakingServers, - pub m_pSteamNetworking: *mut ISteamNetworking, - pub m_pSteamRemoteStorage: *mut ISteamRemoteStorage, - pub m_pSteamScreenshots: *mut ISteamScreenshots, - pub m_pSteamHTTP: *mut ISteamHTTP, - pub m_pController: *mut ISteamController, - pub m_pSteamUGC: *mut ISteamUGC, - pub m_pSteamMusic: *mut ISteamMusic, - pub m_pSteamMusicRemote: *mut ISteamMusicRemote, - pub m_pSteamHTMLSurface: *mut ISteamHTMLSurface, - pub m_pSteamInventory: *mut ISteamInventory, - pub m_pSteamVideo: *mut ISteamVideo, - pub m_pSteamParentalSettings: *mut ISteamParentalSettings, - pub m_pSteamInput: *mut ISteamInput, -} -#[test] -fn bindgen_test_layout_CSteamAPIContext() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 176usize, - concat!("Size of: ", stringify!(CSteamAPIContext)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(CSteamAPIContext)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamClient) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamClient) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamUser) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamUser) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamFriends) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamFriends) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamUtils) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamUtils) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamMatchmaking) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamMatchmaking) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamGameSearch) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamGameSearch) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamUserStats) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamUserStats) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamApps) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamApps) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamMatchmakingServers) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamMatchmakingServers) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamNetworking) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamNetworking) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamRemoteStorage) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamRemoteStorage) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamScreenshots) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamScreenshots) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamHTTP) as usize - ptr as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamHTTP) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pController) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pController) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamUGC) as usize - ptr as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamUGC) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamMusic) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamMusic) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamMusicRemote) as usize - ptr as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamMusicRemote) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamHTMLSurface) as usize - ptr as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamHTMLSurface) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamInventory) as usize - ptr as usize }, - 144usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamInventory) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamVideo) as usize - ptr as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamVideo) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamParentalSettings) as usize - ptr as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamParentalSettings) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamInput) as usize - ptr as usize }, - 168usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamInput) - ) - ); +pub const k_iSteamTimelineCallbacks: _bindgen_ty_38 = _bindgen_ty_38::k_iSteamTimelineCallbacks; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_38 { + k_iSteamTimelineCallbacks = 6000, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -3652,12 +3410,12 @@ fn bindgen_test_layout_FriendGameInfo_t() { } pub const k_usFriendGameInfoQueryPort_NotInitialized: uint16 = 65535; pub const k_usFriendGameInfoQueryPort_Error: uint16 = 65534; -pub const k_cchPersonaNameMax: _bindgen_ty_38 = _bindgen_ty_38::k_cchPersonaNameMax; -pub const k_cwchPersonaNameMax: _bindgen_ty_38 = _bindgen_ty_38::k_cwchPersonaNameMax; +pub const k_cchPersonaNameMax: _bindgen_ty_39 = _bindgen_ty_39::k_cchPersonaNameMax; +pub const k_cwchPersonaNameMax: _bindgen_ty_39 = _bindgen_ty_39::k_cwchPersonaNameMax; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_38 { +pub enum _bindgen_ty_39 { k_cchPersonaNameMax = 128, k_cwchPersonaNameMax = 32, } @@ -3675,27 +3433,27 @@ pub enum EUserRestriction { k_nUserRestrictionTrading = 64, } pub const k_cubChatMetadataMax: uint32 = 8192; -pub const k_cchMaxRichPresenceKeys: _bindgen_ty_39 = _bindgen_ty_39::k_cchMaxRichPresenceKeys; +pub const k_cchMaxRichPresenceKeys: _bindgen_ty_40 = _bindgen_ty_40::k_cchMaxRichPresenceKeys; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_39 { +pub enum _bindgen_ty_40 { k_cchMaxRichPresenceKeys = 30, } -pub const k_cchMaxRichPresenceKeyLength: _bindgen_ty_40 = - _bindgen_ty_40::k_cchMaxRichPresenceKeyLength; +pub const k_cchMaxRichPresenceKeyLength: _bindgen_ty_41 = + _bindgen_ty_41::k_cchMaxRichPresenceKeyLength; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_40 { +pub enum _bindgen_ty_41 { k_cchMaxRichPresenceKeyLength = 64, } -pub const k_cchMaxRichPresenceValueLength: _bindgen_ty_41 = - _bindgen_ty_41::k_cchMaxRichPresenceValueLength; +pub const k_cchMaxRichPresenceValueLength: _bindgen_ty_42 = + _bindgen_ty_42::k_cchMaxRichPresenceValueLength; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_41 { +pub enum _bindgen_ty_42 { k_cchMaxRichPresenceValueLength = 256, } #[repr(u32)] @@ -11036,25 +10794,25 @@ fn bindgen_test_layout_RemoteStorageLocalFileChange_t() { concat!("Alignment of ", stringify!(RemoteStorageLocalFileChange_t)) ); } -pub const k_cchStatNameMax: _bindgen_ty_42 = _bindgen_ty_42::k_cchStatNameMax; +pub const k_cchStatNameMax: _bindgen_ty_43 = _bindgen_ty_43::k_cchStatNameMax; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_42 { +pub enum _bindgen_ty_43 { k_cchStatNameMax = 128, } -pub const k_cchLeaderboardNameMax: _bindgen_ty_43 = _bindgen_ty_43::k_cchLeaderboardNameMax; +pub const k_cchLeaderboardNameMax: _bindgen_ty_44 = _bindgen_ty_44::k_cchLeaderboardNameMax; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_43 { +pub enum _bindgen_ty_44 { k_cchLeaderboardNameMax = 128, } -pub const k_cLeaderboardDetailsMax: _bindgen_ty_44 = _bindgen_ty_44::k_cLeaderboardDetailsMax; +pub const k_cLeaderboardDetailsMax: _bindgen_ty_45 = _bindgen_ty_45::k_cLeaderboardDetailsMax; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_44 { +pub enum _bindgen_ty_45 { k_cLeaderboardDetailsMax = 64, } pub type SteamLeaderboard_t = uint64; @@ -15438,6 +15196,7 @@ pub struct SteamUGCDetails_t { pub m_unVotesDown: uint32, pub m_flScore: f32, pub m_unNumChildren: uint32, + pub m_ulTotalFilesSize: uint64, } #[test] fn bindgen_test_layout_SteamUGCDetails_t() { @@ -15445,7 +15204,7 @@ fn bindgen_test_layout_SteamUGCDetails_t() { let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), - 9764usize, + 9772usize, concat!("Size of: ", stringify!(SteamUGCDetails_t)) ); assert_eq!( @@ -15713,6 +15472,16 @@ fn bindgen_test_layout_SteamUGCDetails_t() { stringify!(m_unNumChildren) ) ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).m_ulTotalFilesSize) as usize - ptr as usize }, + 9764usize, + concat!( + "Offset of field: ", + stringify!(SteamUGCDetails_t), + "::", + stringify!(m_ulTotalFilesSize) + ) + ); } #[repr(C)] pub struct ISteamUGC__bindgen_vtable(::std::os::raw::c_void); @@ -15850,7 +15619,7 @@ fn bindgen_test_layout_SteamUGCRequestUGCDetailsResult_t() { let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), - 9768usize, + 9776usize, concat!("Size of: ", stringify!(SteamUGCRequestUGCDetailsResult_t)) ); assert_eq!( @@ -15873,7 +15642,7 @@ fn bindgen_test_layout_SteamUGCRequestUGCDetailsResult_t() { ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).m_bCachedData) as usize - ptr as usize }, - 9764usize, + 9772usize, concat!( "Offset of field: ", stringify!(SteamUGCRequestUGCDetailsResult_t), @@ -16014,6 +15783,8 @@ fn bindgen_test_layout_SubmitItemUpdateResult_t() { pub struct ItemInstalled_t { pub m_unAppID: AppId_t, pub m_nPublishedFileId: PublishedFileId_t, + pub m_hLegacyContent: UGCHandle_t, + pub m_unManifestID: uint64, } pub const ItemInstalled_t_k_iCallback: ItemInstalled_t__bindgen_ty_1 = ItemInstalled_t__bindgen_ty_1::k_iCallback; @@ -16029,7 +15800,7 @@ fn bindgen_test_layout_ItemInstalled_t() { let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), - 12usize, + 28usize, concat!("Size of: ", stringify!(ItemInstalled_t)) ); assert_eq!( @@ -16057,6 +15828,26 @@ fn bindgen_test_layout_ItemInstalled_t() { stringify!(m_nPublishedFileId) ) ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).m_hLegacyContent) as usize - ptr as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(ItemInstalled_t), + "::", + stringify!(m_hLegacyContent) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).m_unManifestID) as usize - ptr as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(ItemInstalled_t), + "::", + stringify!(m_unManifestID) + ) + ); } #[repr(C, packed(4))] #[derive(Debug, Copy, Clone)] @@ -18939,6 +18730,48 @@ fn bindgen_test_layout_SteamInventoryRequestPricesResult_t() { ) ); } +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub 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 = 5, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum ETimelineEventClipPriority { + k_ETimelineEventClipPriority_Invalid = 0, + k_ETimelineEventClipPriority_None = 1, + k_ETimelineEventClipPriority_Standard = 2, + k_ETimelineEventClipPriority_Featured = 3, +} +pub const k_unMaxTimelinePriority: uint32 = 1000; +pub const k_flMaxTimelineEventDuration: f32 = 600.0; +#[repr(C)] +pub struct ISteamTimeline__bindgen_vtable(::std::os::raw::c_void); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ISteamTimeline { + pub vtable_: *const ISteamTimeline__bindgen_vtable, +} +#[test] +fn bindgen_test_layout_ISteamTimeline() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(ISteamTimeline)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(ISteamTimeline)) + ); +} #[repr(C)] pub struct ISteamVideo__bindgen_vtable(::std::os::raw::c_void); #[repr(C)] @@ -19088,7 +18921,8 @@ pub enum EParentalFeature { k_EFeatureTest = 12, k_EFeatureSiteLicense = 13, k_EFeatureKioskMode_Deprecated = 14, - k_EFeatureMax = 15, + k_EFeatureBlockAlways = 15, + k_EFeatureMax = 16, } #[repr(C)] pub struct ISteamParentalSettings__bindgen_vtable(::std::os::raw::c_void); @@ -20589,8 +20423,10 @@ pub enum ESteamNetworkingConfigValue { k_ESteamNetworkingConfig_SendRateMax = 11, #[doc = " [connection int32] Nagle time, in microseconds. When SendMessage is called, if\n the outgoing message is less than the size of the MTU, it will be\n queued for a delay equal to the Nagle timer value. This is to ensure\n that if the application sends several small messages rapidly, they are\n coalesced into a single packet.\n See historical RFC 896. Value is in microseconds.\n Default is 5000us (5ms)."] k_ESteamNetworkingConfig_NagleTime = 12, - #[doc = " [connection int32] Don't automatically fail IP connections that don't have\n strong auth. On clients, this means we will attempt the connection even if\n we don't know our identity or can't get a cert. On the server, it means that\n we won't automatically reject a connection due to a failure to authenticate.\n (You can examine the incoming connection and decide whether to accept it.)\n\n This is a dev configuration value, and you should not let users modify it in\n production."] + #[doc = " [connection int32] Don't automatically fail IP connections that don't have\n strong auth. On clients, this means we will attempt the connection even if\n we don't know our identity or can't get a cert. On the server, it means that\n we won't automatically reject a connection due to a failure to authenticate.\n (You can examine the incoming connection and decide whether to accept it.)\n\n 0: Don't attempt or accept unauthorized connections\n 1: Attempt authorization when connecting, and allow unauthorized peers, but emit warnings\n 2: don't attempt authentication, or complain if peer is unauthenticated\n\n This is a dev configuration value, and you should not let users modify it in\n production."] k_ESteamNetworkingConfig_IP_AllowWithoutAuth = 23, + #[doc = " [connection int32] The same as IP_AllowWithoutAuth, but will only apply\n for connections to/from localhost addresses. Whichever value is larger\n (more permissive) will be used."] + k_ESteamNetworkingConfig_IPLocalHost_AllowWithoutAuth = 52, #[doc = " [connection int32] Do not send UDP packets with a payload of\n larger than N bytes. If you set this, k_ESteamNetworkingConfig_MTU_DataSize\n is automatically adjusted"] k_ESteamNetworkingConfig_MTU_PacketSize = 32, #[doc = " [connection int32] (read only) Maximum message size you can send that\n will not fragment, based on k_ESteamNetworkingConfig_MTU_PacketSize"] @@ -24959,6 +24795,34 @@ extern "C" { extern "C" { pub fn SteamAPI_ISteamApps_SetDlcContext(self_: *mut ISteamApps, nAppID: AppId_t) -> bool; } +extern "C" { + pub fn SteamAPI_ISteamApps_GetNumBetas( + self_: *mut ISteamApps, + unAppID: AppId_t, + pnAvailable: *mut ::std::os::raw::c_int, + pnPrivate: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SteamAPI_ISteamApps_GetBetaInfo( + self_: *mut ISteamApps, + unAppID: AppId_t, + iBetaIndex: ::std::os::raw::c_int, + punFlags: *mut uint32, + punBuildID: *mut uint32, + pchBetaName: *mut ::std::os::raw::c_char, + cchBetaName: ::std::os::raw::c_int, + pchDescription: *mut ::std::os::raw::c_char, + cchDescription: ::std::os::raw::c_int, + ) -> bool; +} +extern "C" { + pub fn SteamAPI_ISteamApps_SetActiveBeta( + self_: *mut ISteamApps, + unAppID: AppId_t, + pchBetaName: *const ::std::os::raw::c_char, + ) -> bool; +} extern "C" { pub fn SteamAPI_SteamNetworking_v006() -> *mut ISteamNetworking; } @@ -26139,10 +26003,10 @@ extern "C" { ) -> bool; } extern "C" { - pub fn SteamAPI_SteamUGC_v018() -> *mut ISteamUGC; + pub fn SteamAPI_SteamUGC_v020() -> *mut ISteamUGC; } extern "C" { - pub fn SteamAPI_SteamGameServerUGC_v018() -> *mut ISteamUGC; + pub fn SteamAPI_SteamGameServerUGC_v020() -> *mut ISteamUGC; } extern "C" { pub fn SteamAPI_ISteamUGC_CreateQueryUserUGCRequest( @@ -26309,6 +26173,24 @@ extern "C" { cchValueSize: uint32, ) -> bool; } +extern "C" { + pub fn SteamAPI_ISteamUGC_GetNumSupportedGameVersions( + self_: *mut ISteamUGC, + handle: UGCQueryHandle_t, + index: uint32, + ) -> uint32; +} +extern "C" { + pub fn SteamAPI_ISteamUGC_GetSupportedGameVersionData( + self_: *mut ISteamUGC, + handle: UGCQueryHandle_t, + index: uint32, + versionIndex: uint32, + pchGameBranchMin: *mut ::std::os::raw::c_char, + pchGameBranchMax: *mut ::std::os::raw::c_char, + cchGameBranchSize: uint32, + ) -> bool; +} extern "C" { pub fn SteamAPI_ISteamUGC_GetQueryUGCContentDescriptors( self_: *mut ISteamUGC, @@ -26415,6 +26297,13 @@ extern "C" { unMaxAgeSeconds: uint32, ) -> bool; } +extern "C" { + pub fn SteamAPI_ISteamUGC_SetAdminQuery( + self_: *mut ISteamUGC, + handle: UGCUpdateHandle_t, + bAdminQuery: bool, + ) -> bool; +} extern "C" { pub fn SteamAPI_ISteamUGC_SetCloudFileNameFilter( self_: *mut ISteamUGC, @@ -26625,6 +26514,14 @@ extern "C" { descid: EUGCContentDescriptorID, ) -> bool; } +extern "C" { + pub fn SteamAPI_ISteamUGC_SetRequiredGameVersions( + self_: *mut ISteamUGC, + handle: UGCUpdateHandle_t, + pszGameBranchMin: *const ::std::os::raw::c_char, + pszGameBranchMax: *const ::std::os::raw::c_char, + ) -> bool; +} extern "C" { pub fn SteamAPI_ISteamUGC_SubmitItemUpdate( self_: *mut ISteamUGC, @@ -27354,7 +27251,41 @@ extern "C" { ) -> bool; } extern "C" { - pub fn SteamAPI_SteamVideo_v002() -> *mut ISteamVideo; + pub fn SteamAPI_SteamTimeline_v001() -> *mut ISteamTimeline; +} +extern "C" { + pub fn SteamAPI_ISteamTimeline_SetTimelineStateDescription( + self_: *mut ISteamTimeline, + pchDescription: *const ::std::os::raw::c_char, + flTimeDelta: f32, + ); +} +extern "C" { + pub fn SteamAPI_ISteamTimeline_ClearTimelineStateDescription( + self_: *mut ISteamTimeline, + flTimeDelta: f32, + ); +} +extern "C" { + pub fn SteamAPI_ISteamTimeline_AddTimelineEvent( + self_: *mut ISteamTimeline, + pchIcon: *const ::std::os::raw::c_char, + pchTitle: *const ::std::os::raw::c_char, + pchDescription: *const ::std::os::raw::c_char, + unPriority: uint32, + flStartOffsetSeconds: f32, + flDurationSeconds: f32, + ePossibleClip: ETimelineEventClipPriority, + ); +} +extern "C" { + pub fn SteamAPI_ISteamTimeline_SetTimelineGameMode( + self_: *mut ISteamTimeline, + eMode: ETimelineGameMode, + ); +} +extern "C" { + pub fn SteamAPI_SteamVideo_v007() -> *mut ISteamVideo; } extern "C" { pub fn SteamAPI_ISteamVideo_GetVideoURL(self_: *mut ISteamVideo, unVideoAppID: AppId_t); diff --git a/steamworks-sys/src/macos_bindings.rs b/steamworks-sys/src/macos_bindings.rs index 77d4370..115e7b5 100644 --- a/steamworks-sys/src/macos_bindings.rs +++ b/steamworks-sys/src/macos_bindings.rs @@ -487,11 +487,12 @@ pub const STEAM_CONTROLLER_MAX_ACTIVE_LAYERS: u32 = 16; pub const STEAM_CONTROLLER_MIN_ANALOG_ACTION_DATA: f64 = -1.0; pub const STEAM_CONTROLLER_MAX_ANALOG_ACTION_DATA: f64 = 1.0; pub const STEAMCONTROLLER_INTERFACE_VERSION: &[u8; 19] = b"SteamController008\0"; -pub const STEAMUGC_INTERFACE_VERSION: &[u8; 30] = b"STEAMUGC_INTERFACE_VERSION018\0"; +pub const STEAMUGC_INTERFACE_VERSION: &[u8; 30] = b"STEAMUGC_INTERFACE_VERSION020\0"; pub const STEAMHTMLSURFACE_INTERFACE_VERSION: &[u8; 39] = b"STEAMHTMLSURFACE_INTERFACE_VERSION_005\0"; pub const STEAMINVENTORY_INTERFACE_VERSION: &[u8; 30] = b"STEAMINVENTORY_INTERFACE_V003\0"; -pub const STEAMVIDEO_INTERFACE_VERSION: &[u8; 26] = b"STEAMVIDEO_INTERFACE_V002\0"; +pub const STEAMTIMELINE_INTERFACE_VERSION: &[u8; 29] = b"STEAMTIMELINE_INTERFACE_V001\0"; +pub const STEAMVIDEO_INTERFACE_VERSION: &[u8; 26] = b"STEAMVIDEO_INTERFACE_V007\0"; pub const STEAMPARENTALSETTINGS_INTERFACE_VERSION: &[u8; 43] = b"STEAMPARENTALSETTINGS_INTERFACE_VERSION001\0"; pub const STEAMREMOTEPLAY_INTERFACE_VERSION: &[u8; 37] = b"STEAMREMOTEPLAY_INTERFACE_VERSION002\0"; @@ -1034,6 +1035,17 @@ pub enum EDurationControlOnlineState { k_EDurationControlOnlineState_Online = 2, k_EDurationControlOnlineState_OnlineHighPri = 3, } +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum EBetaBranchFlags { + k_EBetaBranch_None = 0, + k_EBetaBranch_Default = 1, + k_EBetaBranch_Available = 2, + k_EBetaBranch_Private = 4, + k_EBetaBranch_Selected = 8, + k_EBetaBranch_Installed = 16, +} #[repr(C)] #[derive(Copy, Clone)] pub struct CSteamID { @@ -2915,266 +2927,12 @@ pub const k_iSteamChatCallbacks: _bindgen_ty_37 = _bindgen_ty_37::k_iSteamChatCa pub enum _bindgen_ty_37 { k_iSteamChatCallbacks = 5900, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct CSteamAPIContext { - pub m_pSteamClient: *mut ISteamClient, - pub m_pSteamUser: *mut ISteamUser, - pub m_pSteamFriends: *mut ISteamFriends, - pub m_pSteamUtils: *mut ISteamUtils, - pub m_pSteamMatchmaking: *mut ISteamMatchmaking, - pub m_pSteamGameSearch: *mut ISteamGameSearch, - pub m_pSteamUserStats: *mut ISteamUserStats, - pub m_pSteamApps: *mut ISteamApps, - pub m_pSteamMatchmakingServers: *mut ISteamMatchmakingServers, - pub m_pSteamNetworking: *mut ISteamNetworking, - pub m_pSteamRemoteStorage: *mut ISteamRemoteStorage, - pub m_pSteamScreenshots: *mut ISteamScreenshots, - pub m_pSteamHTTP: *mut ISteamHTTP, - pub m_pController: *mut ISteamController, - pub m_pSteamUGC: *mut ISteamUGC, - pub m_pSteamMusic: *mut ISteamMusic, - pub m_pSteamMusicRemote: *mut ISteamMusicRemote, - pub m_pSteamHTMLSurface: *mut ISteamHTMLSurface, - pub m_pSteamInventory: *mut ISteamInventory, - pub m_pSteamVideo: *mut ISteamVideo, - pub m_pSteamParentalSettings: *mut ISteamParentalSettings, - pub m_pSteamInput: *mut ISteamInput, -} -#[test] -fn bindgen_test_layout_CSteamAPIContext() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 176usize, - concat!("Size of: ", stringify!(CSteamAPIContext)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(CSteamAPIContext)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamClient) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamClient) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamUser) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamUser) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamFriends) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamFriends) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamUtils) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamUtils) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamMatchmaking) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamMatchmaking) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamGameSearch) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamGameSearch) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamUserStats) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamUserStats) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamApps) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamApps) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamMatchmakingServers) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamMatchmakingServers) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamNetworking) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamNetworking) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamRemoteStorage) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamRemoteStorage) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamScreenshots) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamScreenshots) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamHTTP) as usize - ptr as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamHTTP) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pController) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pController) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamUGC) as usize - ptr as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamUGC) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamMusic) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamMusic) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamMusicRemote) as usize - ptr as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamMusicRemote) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamHTMLSurface) as usize - ptr as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamHTMLSurface) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamInventory) as usize - ptr as usize }, - 144usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamInventory) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamVideo) as usize - ptr as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamVideo) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamParentalSettings) as usize - ptr as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamParentalSettings) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamInput) as usize - ptr as usize }, - 168usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamInput) - ) - ); +pub const k_iSteamTimelineCallbacks: _bindgen_ty_38 = _bindgen_ty_38::k_iSteamTimelineCallbacks; +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_38 { + k_iSteamTimelineCallbacks = 6000, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -4283,12 +4041,12 @@ fn bindgen_test_layout_FriendGameInfo_t() { } pub const k_usFriendGameInfoQueryPort_NotInitialized: uint16 = 65535; pub const k_usFriendGameInfoQueryPort_Error: uint16 = 65534; -pub const k_cchPersonaNameMax: _bindgen_ty_38 = _bindgen_ty_38::k_cchPersonaNameMax; -pub const k_cwchPersonaNameMax: _bindgen_ty_38 = _bindgen_ty_38::k_cwchPersonaNameMax; +pub const k_cchPersonaNameMax: _bindgen_ty_39 = _bindgen_ty_39::k_cchPersonaNameMax; +pub const k_cwchPersonaNameMax: _bindgen_ty_39 = _bindgen_ty_39::k_cwchPersonaNameMax; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_38 { +pub enum _bindgen_ty_39 { k_cchPersonaNameMax = 128, k_cwchPersonaNameMax = 32, } @@ -4306,27 +4064,27 @@ pub enum EUserRestriction { k_nUserRestrictionTrading = 64, } pub const k_cubChatMetadataMax: uint32 = 8192; -pub const k_cchMaxRichPresenceKeys: _bindgen_ty_39 = _bindgen_ty_39::k_cchMaxRichPresenceKeys; +pub const k_cchMaxRichPresenceKeys: _bindgen_ty_40 = _bindgen_ty_40::k_cchMaxRichPresenceKeys; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_39 { +pub enum _bindgen_ty_40 { k_cchMaxRichPresenceKeys = 30, } -pub const k_cchMaxRichPresenceKeyLength: _bindgen_ty_40 = - _bindgen_ty_40::k_cchMaxRichPresenceKeyLength; +pub const k_cchMaxRichPresenceKeyLength: _bindgen_ty_41 = + _bindgen_ty_41::k_cchMaxRichPresenceKeyLength; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_40 { +pub enum _bindgen_ty_41 { k_cchMaxRichPresenceKeyLength = 64, } -pub const k_cchMaxRichPresenceValueLength: _bindgen_ty_41 = - _bindgen_ty_41::k_cchMaxRichPresenceValueLength; +pub const k_cchMaxRichPresenceValueLength: _bindgen_ty_42 = + _bindgen_ty_42::k_cchMaxRichPresenceValueLength; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_41 { +pub enum _bindgen_ty_42 { k_cchMaxRichPresenceValueLength = 256, } #[repr(u32)] @@ -11147,25 +10905,25 @@ fn bindgen_test_layout_RemoteStorageLocalFileChange_t() { concat!("Alignment of ", stringify!(RemoteStorageLocalFileChange_t)) ); } -pub const k_cchStatNameMax: _bindgen_ty_42 = _bindgen_ty_42::k_cchStatNameMax; +pub const k_cchStatNameMax: _bindgen_ty_43 = _bindgen_ty_43::k_cchStatNameMax; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_42 { +pub enum _bindgen_ty_43 { k_cchStatNameMax = 128, } -pub const k_cchLeaderboardNameMax: _bindgen_ty_43 = _bindgen_ty_43::k_cchLeaderboardNameMax; +pub const k_cchLeaderboardNameMax: _bindgen_ty_44 = _bindgen_ty_44::k_cchLeaderboardNameMax; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_43 { +pub enum _bindgen_ty_44 { k_cchLeaderboardNameMax = 128, } -pub const k_cLeaderboardDetailsMax: _bindgen_ty_44 = _bindgen_ty_44::k_cLeaderboardDetailsMax; +pub const k_cLeaderboardDetailsMax: _bindgen_ty_45 = _bindgen_ty_45::k_cLeaderboardDetailsMax; #[repr(u32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_44 { +pub enum _bindgen_ty_45 { k_cLeaderboardDetailsMax = 64, } pub type SteamLeaderboard_t = uint64; @@ -15549,6 +15307,7 @@ pub struct SteamUGCDetails_t { pub m_unVotesDown: uint32, pub m_flScore: f32, pub m_unNumChildren: uint32, + pub m_ulTotalFilesSize: uint64, } #[test] fn bindgen_test_layout_SteamUGCDetails_t() { @@ -15556,7 +15315,7 @@ fn bindgen_test_layout_SteamUGCDetails_t() { let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), - 9764usize, + 9772usize, concat!("Size of: ", stringify!(SteamUGCDetails_t)) ); assert_eq!( @@ -15824,6 +15583,16 @@ fn bindgen_test_layout_SteamUGCDetails_t() { stringify!(m_unNumChildren) ) ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).m_ulTotalFilesSize) as usize - ptr as usize }, + 9764usize, + concat!( + "Offset of field: ", + stringify!(SteamUGCDetails_t), + "::", + stringify!(m_ulTotalFilesSize) + ) + ); } #[repr(C)] pub struct ISteamUGC__bindgen_vtable(::std::os::raw::c_void); @@ -15961,7 +15730,7 @@ fn bindgen_test_layout_SteamUGCRequestUGCDetailsResult_t() { let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), - 9768usize, + 9776usize, concat!("Size of: ", stringify!(SteamUGCRequestUGCDetailsResult_t)) ); assert_eq!( @@ -15984,7 +15753,7 @@ fn bindgen_test_layout_SteamUGCRequestUGCDetailsResult_t() { ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).m_bCachedData) as usize - ptr as usize }, - 9764usize, + 9772usize, concat!( "Offset of field: ", stringify!(SteamUGCRequestUGCDetailsResult_t), @@ -16125,6 +15894,8 @@ fn bindgen_test_layout_SubmitItemUpdateResult_t() { pub struct ItemInstalled_t { pub m_unAppID: AppId_t, pub m_nPublishedFileId: PublishedFileId_t, + pub m_hLegacyContent: UGCHandle_t, + pub m_unManifestID: uint64, } pub const ItemInstalled_t_k_iCallback: ItemInstalled_t__bindgen_ty_1 = ItemInstalled_t__bindgen_ty_1::k_iCallback; @@ -16140,7 +15911,7 @@ fn bindgen_test_layout_ItemInstalled_t() { let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), - 12usize, + 28usize, concat!("Size of: ", stringify!(ItemInstalled_t)) ); assert_eq!( @@ -16168,6 +15939,26 @@ fn bindgen_test_layout_ItemInstalled_t() { stringify!(m_nPublishedFileId) ) ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).m_hLegacyContent) as usize - ptr as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(ItemInstalled_t), + "::", + stringify!(m_hLegacyContent) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).m_unManifestID) as usize - ptr as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(ItemInstalled_t), + "::", + stringify!(m_unManifestID) + ) + ); } #[repr(C, packed(4))] #[derive(Debug, Copy, Clone)] @@ -19050,6 +18841,48 @@ fn bindgen_test_layout_SteamInventoryRequestPricesResult_t() { ) ); } +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub 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 = 5, +} +#[repr(u32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum ETimelineEventClipPriority { + k_ETimelineEventClipPriority_Invalid = 0, + k_ETimelineEventClipPriority_None = 1, + k_ETimelineEventClipPriority_Standard = 2, + k_ETimelineEventClipPriority_Featured = 3, +} +pub const k_unMaxTimelinePriority: uint32 = 1000; +pub const k_flMaxTimelineEventDuration: f32 = 600.0; +#[repr(C)] +pub struct ISteamTimeline__bindgen_vtable(::std::os::raw::c_void); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ISteamTimeline { + pub vtable_: *const ISteamTimeline__bindgen_vtable, +} +#[test] +fn bindgen_test_layout_ISteamTimeline() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(ISteamTimeline)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(ISteamTimeline)) + ); +} #[repr(C)] pub struct ISteamVideo__bindgen_vtable(::std::os::raw::c_void); #[repr(C)] @@ -19199,7 +19032,8 @@ pub enum EParentalFeature { k_EFeatureTest = 12, k_EFeatureSiteLicense = 13, k_EFeatureKioskMode_Deprecated = 14, - k_EFeatureMax = 15, + k_EFeatureBlockAlways = 15, + k_EFeatureMax = 16, } #[repr(C)] pub struct ISteamParentalSettings__bindgen_vtable(::std::os::raw::c_void); @@ -20700,8 +20534,10 @@ pub enum ESteamNetworkingConfigValue { k_ESteamNetworkingConfig_SendRateMax = 11, #[doc = " [connection int32] Nagle time, in microseconds. When SendMessage is called, if\n the outgoing message is less than the size of the MTU, it will be\n queued for a delay equal to the Nagle timer value. This is to ensure\n that if the application sends several small messages rapidly, they are\n coalesced into a single packet.\n See historical RFC 896. Value is in microseconds.\n Default is 5000us (5ms)."] k_ESteamNetworkingConfig_NagleTime = 12, - #[doc = " [connection int32] Don't automatically fail IP connections that don't have\n strong auth. On clients, this means we will attempt the connection even if\n we don't know our identity or can't get a cert. On the server, it means that\n we won't automatically reject a connection due to a failure to authenticate.\n (You can examine the incoming connection and decide whether to accept it.)\n\n This is a dev configuration value, and you should not let users modify it in\n production."] + #[doc = " [connection int32] Don't automatically fail IP connections that don't have\n strong auth. On clients, this means we will attempt the connection even if\n we don't know our identity or can't get a cert. On the server, it means that\n we won't automatically reject a connection due to a failure to authenticate.\n (You can examine the incoming connection and decide whether to accept it.)\n\n 0: Don't attempt or accept unauthorized connections\n 1: Attempt authorization when connecting, and allow unauthorized peers, but emit warnings\n 2: don't attempt authentication, or complain if peer is unauthenticated\n\n This is a dev configuration value, and you should not let users modify it in\n production."] k_ESteamNetworkingConfig_IP_AllowWithoutAuth = 23, + #[doc = " [connection int32] The same as IP_AllowWithoutAuth, but will only apply\n for connections to/from localhost addresses. Whichever value is larger\n (more permissive) will be used."] + k_ESteamNetworkingConfig_IPLocalHost_AllowWithoutAuth = 52, #[doc = " [connection int32] Do not send UDP packets with a payload of\n larger than N bytes. If you set this, k_ESteamNetworkingConfig_MTU_DataSize\n is automatically adjusted"] k_ESteamNetworkingConfig_MTU_PacketSize = 32, #[doc = " [connection int32] (read only) Maximum message size you can send that\n will not fragment, based on k_ESteamNetworkingConfig_MTU_PacketSize"] @@ -25070,6 +24906,34 @@ extern "C" { extern "C" { pub fn SteamAPI_ISteamApps_SetDlcContext(self_: *mut ISteamApps, nAppID: AppId_t) -> bool; } +extern "C" { + pub fn SteamAPI_ISteamApps_GetNumBetas( + self_: *mut ISteamApps, + unAppID: AppId_t, + pnAvailable: *mut ::std::os::raw::c_int, + pnPrivate: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SteamAPI_ISteamApps_GetBetaInfo( + self_: *mut ISteamApps, + unAppID: AppId_t, + iBetaIndex: ::std::os::raw::c_int, + punFlags: *mut uint32, + punBuildID: *mut uint32, + pchBetaName: *mut ::std::os::raw::c_char, + cchBetaName: ::std::os::raw::c_int, + pchDescription: *mut ::std::os::raw::c_char, + cchDescription: ::std::os::raw::c_int, + ) -> bool; +} +extern "C" { + pub fn SteamAPI_ISteamApps_SetActiveBeta( + self_: *mut ISteamApps, + unAppID: AppId_t, + pchBetaName: *const ::std::os::raw::c_char, + ) -> bool; +} extern "C" { pub fn SteamAPI_SteamNetworking_v006() -> *mut ISteamNetworking; } @@ -26250,10 +26114,10 @@ extern "C" { ) -> bool; } extern "C" { - pub fn SteamAPI_SteamUGC_v018() -> *mut ISteamUGC; + pub fn SteamAPI_SteamUGC_v020() -> *mut ISteamUGC; } extern "C" { - pub fn SteamAPI_SteamGameServerUGC_v018() -> *mut ISteamUGC; + pub fn SteamAPI_SteamGameServerUGC_v020() -> *mut ISteamUGC; } extern "C" { pub fn SteamAPI_ISteamUGC_CreateQueryUserUGCRequest( @@ -26420,6 +26284,24 @@ extern "C" { cchValueSize: uint32, ) -> bool; } +extern "C" { + pub fn SteamAPI_ISteamUGC_GetNumSupportedGameVersions( + self_: *mut ISteamUGC, + handle: UGCQueryHandle_t, + index: uint32, + ) -> uint32; +} +extern "C" { + pub fn SteamAPI_ISteamUGC_GetSupportedGameVersionData( + self_: *mut ISteamUGC, + handle: UGCQueryHandle_t, + index: uint32, + versionIndex: uint32, + pchGameBranchMin: *mut ::std::os::raw::c_char, + pchGameBranchMax: *mut ::std::os::raw::c_char, + cchGameBranchSize: uint32, + ) -> bool; +} extern "C" { pub fn SteamAPI_ISteamUGC_GetQueryUGCContentDescriptors( self_: *mut ISteamUGC, @@ -26526,6 +26408,13 @@ extern "C" { unMaxAgeSeconds: uint32, ) -> bool; } +extern "C" { + pub fn SteamAPI_ISteamUGC_SetAdminQuery( + self_: *mut ISteamUGC, + handle: UGCUpdateHandle_t, + bAdminQuery: bool, + ) -> bool; +} extern "C" { pub fn SteamAPI_ISteamUGC_SetCloudFileNameFilter( self_: *mut ISteamUGC, @@ -26736,6 +26625,14 @@ extern "C" { descid: EUGCContentDescriptorID, ) -> bool; } +extern "C" { + pub fn SteamAPI_ISteamUGC_SetRequiredGameVersions( + self_: *mut ISteamUGC, + handle: UGCUpdateHandle_t, + pszGameBranchMin: *const ::std::os::raw::c_char, + pszGameBranchMax: *const ::std::os::raw::c_char, + ) -> bool; +} extern "C" { pub fn SteamAPI_ISteamUGC_SubmitItemUpdate( self_: *mut ISteamUGC, @@ -27465,7 +27362,41 @@ extern "C" { ) -> bool; } extern "C" { - pub fn SteamAPI_SteamVideo_v002() -> *mut ISteamVideo; + pub fn SteamAPI_SteamTimeline_v001() -> *mut ISteamTimeline; +} +extern "C" { + pub fn SteamAPI_ISteamTimeline_SetTimelineStateDescription( + self_: *mut ISteamTimeline, + pchDescription: *const ::std::os::raw::c_char, + flTimeDelta: f32, + ); +} +extern "C" { + pub fn SteamAPI_ISteamTimeline_ClearTimelineStateDescription( + self_: *mut ISteamTimeline, + flTimeDelta: f32, + ); +} +extern "C" { + pub fn SteamAPI_ISteamTimeline_AddTimelineEvent( + self_: *mut ISteamTimeline, + pchIcon: *const ::std::os::raw::c_char, + pchTitle: *const ::std::os::raw::c_char, + pchDescription: *const ::std::os::raw::c_char, + unPriority: uint32, + flStartOffsetSeconds: f32, + flDurationSeconds: f32, + ePossibleClip: ETimelineEventClipPriority, + ); +} +extern "C" { + pub fn SteamAPI_ISteamTimeline_SetTimelineGameMode( + self_: *mut ISteamTimeline, + eMode: ETimelineGameMode, + ); +} +extern "C" { + pub fn SteamAPI_SteamVideo_v007() -> *mut ISteamVideo; } extern "C" { pub fn SteamAPI_ISteamVideo_GetVideoURL(self_: *mut ISteamVideo, unVideoAppID: AppId_t); diff --git a/steamworks-sys/src/windows_bindings.rs b/steamworks-sys/src/windows_bindings.rs index 28fb8e0..187fe8b 100644 --- a/steamworks-sys/src/windows_bindings.rs +++ b/steamworks-sys/src/windows_bindings.rs @@ -261,11 +261,12 @@ pub const STEAM_CONTROLLER_MAX_ACTIVE_LAYERS: u32 = 16; pub const STEAM_CONTROLLER_MIN_ANALOG_ACTION_DATA: f64 = -1.0; pub const STEAM_CONTROLLER_MAX_ANALOG_ACTION_DATA: f64 = 1.0; pub const STEAMCONTROLLER_INTERFACE_VERSION: &[u8; 19] = b"SteamController008\0"; -pub const STEAMUGC_INTERFACE_VERSION: &[u8; 30] = b"STEAMUGC_INTERFACE_VERSION018\0"; +pub const STEAMUGC_INTERFACE_VERSION: &[u8; 30] = b"STEAMUGC_INTERFACE_VERSION020\0"; pub const STEAMHTMLSURFACE_INTERFACE_VERSION: &[u8; 39] = b"STEAMHTMLSURFACE_INTERFACE_VERSION_005\0"; pub const STEAMINVENTORY_INTERFACE_VERSION: &[u8; 30] = b"STEAMINVENTORY_INTERFACE_V003\0"; -pub const STEAMVIDEO_INTERFACE_VERSION: &[u8; 26] = b"STEAMVIDEO_INTERFACE_V002\0"; +pub const STEAMTIMELINE_INTERFACE_VERSION: &[u8; 29] = b"STEAMTIMELINE_INTERFACE_V001\0"; +pub const STEAMVIDEO_INTERFACE_VERSION: &[u8; 26] = b"STEAMVIDEO_INTERFACE_V007\0"; pub const STEAMPARENTALSETTINGS_INTERFACE_VERSION: &[u8; 43] = b"STEAMPARENTALSETTINGS_INTERFACE_VERSION001\0"; pub const STEAMREMOTEPLAY_INTERFACE_VERSION: &[u8; 37] = b"STEAMREMOTEPLAY_INTERFACE_VERSION002\0"; @@ -767,6 +768,17 @@ pub enum EDurationControlOnlineState { k_EDurationControlOnlineState_Online = 2, k_EDurationControlOnlineState_OnlineHighPri = 3, } +#[repr(i32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum EBetaBranchFlags { + k_EBetaBranch_None = 0, + k_EBetaBranch_Default = 1, + k_EBetaBranch_Available = 2, + k_EBetaBranch_Private = 4, + k_EBetaBranch_Selected = 8, + k_EBetaBranch_Installed = 16, +} #[repr(C)] #[derive(Copy, Clone)] pub struct CSteamID { @@ -2695,266 +2707,12 @@ pub const k_iSteamChatCallbacks: _bindgen_ty_37 = _bindgen_ty_37::k_iSteamChatCa pub enum _bindgen_ty_37 { k_iSteamChatCallbacks = 5900, } -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct CSteamAPIContext { - pub m_pSteamClient: *mut ISteamClient, - pub m_pSteamUser: *mut ISteamUser, - pub m_pSteamFriends: *mut ISteamFriends, - pub m_pSteamUtils: *mut ISteamUtils, - pub m_pSteamMatchmaking: *mut ISteamMatchmaking, - pub m_pSteamGameSearch: *mut ISteamGameSearch, - pub m_pSteamUserStats: *mut ISteamUserStats, - pub m_pSteamApps: *mut ISteamApps, - pub m_pSteamMatchmakingServers: *mut ISteamMatchmakingServers, - pub m_pSteamNetworking: *mut ISteamNetworking, - pub m_pSteamRemoteStorage: *mut ISteamRemoteStorage, - pub m_pSteamScreenshots: *mut ISteamScreenshots, - pub m_pSteamHTTP: *mut ISteamHTTP, - pub m_pController: *mut ISteamController, - pub m_pSteamUGC: *mut ISteamUGC, - pub m_pSteamMusic: *mut ISteamMusic, - pub m_pSteamMusicRemote: *mut ISteamMusicRemote, - pub m_pSteamHTMLSurface: *mut ISteamHTMLSurface, - pub m_pSteamInventory: *mut ISteamInventory, - pub m_pSteamVideo: *mut ISteamVideo, - pub m_pSteamParentalSettings: *mut ISteamParentalSettings, - pub m_pSteamInput: *mut ISteamInput, -} -#[test] -fn bindgen_test_layout_CSteamAPIContext() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 176usize, - concat!("Size of: ", stringify!(CSteamAPIContext)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(CSteamAPIContext)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamClient) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamClient) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamUser) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamUser) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamFriends) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamFriends) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamUtils) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamUtils) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamMatchmaking) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamMatchmaking) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamGameSearch) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamGameSearch) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamUserStats) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamUserStats) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamApps) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamApps) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamMatchmakingServers) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamMatchmakingServers) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamNetworking) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamNetworking) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamRemoteStorage) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamRemoteStorage) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamScreenshots) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamScreenshots) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamHTTP) as usize - ptr as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamHTTP) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pController) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pController) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamUGC) as usize - ptr as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamUGC) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamMusic) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamMusic) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamMusicRemote) as usize - ptr as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamMusicRemote) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamHTMLSurface) as usize - ptr as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamHTMLSurface) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamInventory) as usize - ptr as usize }, - 144usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamInventory) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamVideo) as usize - ptr as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamVideo) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamParentalSettings) as usize - ptr as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamParentalSettings) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m_pSteamInput) as usize - ptr as usize }, - 168usize, - concat!( - "Offset of field: ", - stringify!(CSteamAPIContext), - "::", - stringify!(m_pSteamInput) - ) - ); +pub const k_iSteamTimelineCallbacks: _bindgen_ty_38 = _bindgen_ty_38::k_iSteamTimelineCallbacks; +#[repr(i32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum _bindgen_ty_38 { + k_iSteamTimelineCallbacks = 6000, } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -4063,12 +3821,12 @@ fn bindgen_test_layout_FriendGameInfo_t() { } pub const k_usFriendGameInfoQueryPort_NotInitialized: uint16 = 65535; pub const k_usFriendGameInfoQueryPort_Error: uint16 = 65534; -pub const k_cchPersonaNameMax: _bindgen_ty_38 = _bindgen_ty_38::k_cchPersonaNameMax; -pub const k_cwchPersonaNameMax: _bindgen_ty_38 = _bindgen_ty_38::k_cwchPersonaNameMax; +pub const k_cchPersonaNameMax: _bindgen_ty_39 = _bindgen_ty_39::k_cchPersonaNameMax; +pub const k_cwchPersonaNameMax: _bindgen_ty_39 = _bindgen_ty_39::k_cwchPersonaNameMax; #[repr(i32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_38 { +pub enum _bindgen_ty_39 { k_cchPersonaNameMax = 128, k_cwchPersonaNameMax = 32, } @@ -4086,27 +3844,27 @@ pub enum EUserRestriction { k_nUserRestrictionTrading = 64, } pub const k_cubChatMetadataMax: uint32 = 8192; -pub const k_cchMaxRichPresenceKeys: _bindgen_ty_39 = _bindgen_ty_39::k_cchMaxRichPresenceKeys; +pub const k_cchMaxRichPresenceKeys: _bindgen_ty_40 = _bindgen_ty_40::k_cchMaxRichPresenceKeys; #[repr(i32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_39 { +pub enum _bindgen_ty_40 { k_cchMaxRichPresenceKeys = 30, } -pub const k_cchMaxRichPresenceKeyLength: _bindgen_ty_40 = - _bindgen_ty_40::k_cchMaxRichPresenceKeyLength; +pub const k_cchMaxRichPresenceKeyLength: _bindgen_ty_41 = + _bindgen_ty_41::k_cchMaxRichPresenceKeyLength; #[repr(i32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_40 { +pub enum _bindgen_ty_41 { k_cchMaxRichPresenceKeyLength = 64, } -pub const k_cchMaxRichPresenceValueLength: _bindgen_ty_41 = - _bindgen_ty_41::k_cchMaxRichPresenceValueLength; +pub const k_cchMaxRichPresenceValueLength: _bindgen_ty_42 = + _bindgen_ty_42::k_cchMaxRichPresenceValueLength; #[repr(i32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_41 { +pub enum _bindgen_ty_42 { k_cchMaxRichPresenceValueLength = 256, } #[repr(i32)] @@ -10870,25 +10628,25 @@ fn bindgen_test_layout_RemoteStorageLocalFileChange_t() { concat!("Alignment of ", stringify!(RemoteStorageLocalFileChange_t)) ); } -pub const k_cchStatNameMax: _bindgen_ty_42 = _bindgen_ty_42::k_cchStatNameMax; +pub const k_cchStatNameMax: _bindgen_ty_43 = _bindgen_ty_43::k_cchStatNameMax; #[repr(i32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_42 { +pub enum _bindgen_ty_43 { k_cchStatNameMax = 128, } -pub const k_cchLeaderboardNameMax: _bindgen_ty_43 = _bindgen_ty_43::k_cchLeaderboardNameMax; +pub const k_cchLeaderboardNameMax: _bindgen_ty_44 = _bindgen_ty_44::k_cchLeaderboardNameMax; #[repr(i32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_43 { +pub enum _bindgen_ty_44 { k_cchLeaderboardNameMax = 128, } -pub const k_cLeaderboardDetailsMax: _bindgen_ty_44 = _bindgen_ty_44::k_cLeaderboardDetailsMax; +pub const k_cLeaderboardDetailsMax: _bindgen_ty_45 = _bindgen_ty_45::k_cLeaderboardDetailsMax; #[repr(i32)] #[non_exhaustive] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum _bindgen_ty_44 { +pub enum _bindgen_ty_45 { k_cLeaderboardDetailsMax = 64, } pub type SteamLeaderboard_t = uint64; @@ -15272,6 +15030,7 @@ pub struct SteamUGCDetails_t { pub m_unVotesDown: uint32, pub m_flScore: f32, pub m_unNumChildren: uint32, + pub m_ulTotalFilesSize: uint64, } #[test] fn bindgen_test_layout_SteamUGCDetails_t() { @@ -15279,7 +15038,7 @@ fn bindgen_test_layout_SteamUGCDetails_t() { let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), - 9776usize, + 9784usize, concat!("Size of: ", stringify!(SteamUGCDetails_t)) ); assert_eq!( @@ -15547,6 +15306,16 @@ fn bindgen_test_layout_SteamUGCDetails_t() { stringify!(m_unNumChildren) ) ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).m_ulTotalFilesSize) as usize - ptr as usize }, + 9776usize, + concat!( + "Offset of field: ", + stringify!(SteamUGCDetails_t), + "::", + stringify!(m_ulTotalFilesSize) + ) + ); } #[repr(C)] pub struct ISteamUGC__bindgen_vtable(::std::os::raw::c_void); @@ -15684,7 +15453,7 @@ fn bindgen_test_layout_SteamUGCRequestUGCDetailsResult_t() { let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), - 9784usize, + 9792usize, concat!("Size of: ", stringify!(SteamUGCRequestUGCDetailsResult_t)) ); assert_eq!( @@ -15707,7 +15476,7 @@ fn bindgen_test_layout_SteamUGCRequestUGCDetailsResult_t() { ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).m_bCachedData) as usize - ptr as usize }, - 9776usize, + 9784usize, concat!( "Offset of field: ", stringify!(SteamUGCRequestUGCDetailsResult_t), @@ -15848,6 +15617,8 @@ fn bindgen_test_layout_SubmitItemUpdateResult_t() { pub struct ItemInstalled_t { pub m_unAppID: AppId_t, pub m_nPublishedFileId: PublishedFileId_t, + pub m_hLegacyContent: UGCHandle_t, + pub m_unManifestID: uint64, } pub const ItemInstalled_t_k_iCallback: ItemInstalled_t__bindgen_ty_1 = ItemInstalled_t__bindgen_ty_1::k_iCallback; @@ -15863,7 +15634,7 @@ fn bindgen_test_layout_ItemInstalled_t() { let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), - 16usize, + 32usize, concat!("Size of: ", stringify!(ItemInstalled_t)) ); assert_eq!( @@ -15891,6 +15662,26 @@ fn bindgen_test_layout_ItemInstalled_t() { stringify!(m_nPublishedFileId) ) ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).m_hLegacyContent) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ItemInstalled_t), + "::", + stringify!(m_hLegacyContent) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).m_unManifestID) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(ItemInstalled_t), + "::", + stringify!(m_unManifestID) + ) + ); } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -18772,6 +18563,48 @@ fn bindgen_test_layout_SteamInventoryRequestPricesResult_t() { ) ); } +#[repr(i32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub 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 = 5, +} +#[repr(i32)] +#[non_exhaustive] +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub enum ETimelineEventClipPriority { + k_ETimelineEventClipPriority_Invalid = 0, + k_ETimelineEventClipPriority_None = 1, + k_ETimelineEventClipPriority_Standard = 2, + k_ETimelineEventClipPriority_Featured = 3, +} +pub const k_unMaxTimelinePriority: uint32 = 1000; +pub const k_flMaxTimelineEventDuration: f32 = 600.0; +#[repr(C)] +pub struct ISteamTimeline__bindgen_vtable(::std::os::raw::c_void); +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ISteamTimeline { + pub vtable_: *const ISteamTimeline__bindgen_vtable, +} +#[test] +fn bindgen_test_layout_ISteamTimeline() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(ISteamTimeline)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ISteamTimeline)) + ); +} #[repr(C)] pub struct ISteamVideo__bindgen_vtable(::std::os::raw::c_void); #[repr(C)] @@ -18921,7 +18754,8 @@ pub enum EParentalFeature { k_EFeatureTest = 12, k_EFeatureSiteLicense = 13, k_EFeatureKioskMode_Deprecated = 14, - k_EFeatureMax = 15, + k_EFeatureBlockAlways = 15, + k_EFeatureMax = 16, } #[repr(C)] pub struct ISteamParentalSettings__bindgen_vtable(::std::os::raw::c_void); @@ -20422,8 +20256,10 @@ pub enum ESteamNetworkingConfigValue { k_ESteamNetworkingConfig_SendRateMax = 11, #[doc = " [connection int32] Nagle time, in microseconds. When SendMessage is called, if\n the outgoing message is less than the size of the MTU, it will be\n queued for a delay equal to the Nagle timer value. This is to ensure\n that if the application sends several small messages rapidly, they are\n coalesced into a single packet.\n See historical RFC 896. Value is in microseconds.\n Default is 5000us (5ms)."] k_ESteamNetworkingConfig_NagleTime = 12, - #[doc = " [connection int32] Don't automatically fail IP connections that don't have\n strong auth. On clients, this means we will attempt the connection even if\n we don't know our identity or can't get a cert. On the server, it means that\n we won't automatically reject a connection due to a failure to authenticate.\n (You can examine the incoming connection and decide whether to accept it.)\n\n This is a dev configuration value, and you should not let users modify it in\n production."] + #[doc = " [connection int32] Don't automatically fail IP connections that don't have\n strong auth. On clients, this means we will attempt the connection even if\n we don't know our identity or can't get a cert. On the server, it means that\n we won't automatically reject a connection due to a failure to authenticate.\n (You can examine the incoming connection and decide whether to accept it.)\n\n 0: Don't attempt or accept unauthorized connections\n 1: Attempt authorization when connecting, and allow unauthorized peers, but emit warnings\n 2: don't attempt authentication, or complain if peer is unauthenticated\n\n This is a dev configuration value, and you should not let users modify it in\n production."] k_ESteamNetworkingConfig_IP_AllowWithoutAuth = 23, + #[doc = " [connection int32] The same as IP_AllowWithoutAuth, but will only apply\n for connections to/from localhost addresses. Whichever value is larger\n (more permissive) will be used."] + k_ESteamNetworkingConfig_IPLocalHost_AllowWithoutAuth = 52, #[doc = " [connection int32] Do not send UDP packets with a payload of\n larger than N bytes. If you set this, k_ESteamNetworkingConfig_MTU_DataSize\n is automatically adjusted"] k_ESteamNetworkingConfig_MTU_PacketSize = 32, #[doc = " [connection int32] (read only) Maximum message size you can send that\n will not fragment, based on k_ESteamNetworkingConfig_MTU_PacketSize"] @@ -24792,6 +24628,34 @@ extern "C" { extern "C" { pub fn SteamAPI_ISteamApps_SetDlcContext(self_: *mut ISteamApps, nAppID: AppId_t) -> bool; } +extern "C" { + pub fn SteamAPI_ISteamApps_GetNumBetas( + self_: *mut ISteamApps, + unAppID: AppId_t, + pnAvailable: *mut ::std::os::raw::c_int, + pnPrivate: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SteamAPI_ISteamApps_GetBetaInfo( + self_: *mut ISteamApps, + unAppID: AppId_t, + iBetaIndex: ::std::os::raw::c_int, + punFlags: *mut uint32, + punBuildID: *mut uint32, + pchBetaName: *mut ::std::os::raw::c_char, + cchBetaName: ::std::os::raw::c_int, + pchDescription: *mut ::std::os::raw::c_char, + cchDescription: ::std::os::raw::c_int, + ) -> bool; +} +extern "C" { + pub fn SteamAPI_ISteamApps_SetActiveBeta( + self_: *mut ISteamApps, + unAppID: AppId_t, + pchBetaName: *const ::std::os::raw::c_char, + ) -> bool; +} extern "C" { pub fn SteamAPI_SteamNetworking_v006() -> *mut ISteamNetworking; } @@ -25972,10 +25836,10 @@ extern "C" { ) -> bool; } extern "C" { - pub fn SteamAPI_SteamUGC_v018() -> *mut ISteamUGC; + pub fn SteamAPI_SteamUGC_v020() -> *mut ISteamUGC; } extern "C" { - pub fn SteamAPI_SteamGameServerUGC_v018() -> *mut ISteamUGC; + pub fn SteamAPI_SteamGameServerUGC_v020() -> *mut ISteamUGC; } extern "C" { pub fn SteamAPI_ISteamUGC_CreateQueryUserUGCRequest( @@ -26142,6 +26006,24 @@ extern "C" { cchValueSize: uint32, ) -> bool; } +extern "C" { + pub fn SteamAPI_ISteamUGC_GetNumSupportedGameVersions( + self_: *mut ISteamUGC, + handle: UGCQueryHandle_t, + index: uint32, + ) -> uint32; +} +extern "C" { + pub fn SteamAPI_ISteamUGC_GetSupportedGameVersionData( + self_: *mut ISteamUGC, + handle: UGCQueryHandle_t, + index: uint32, + versionIndex: uint32, + pchGameBranchMin: *mut ::std::os::raw::c_char, + pchGameBranchMax: *mut ::std::os::raw::c_char, + cchGameBranchSize: uint32, + ) -> bool; +} extern "C" { pub fn SteamAPI_ISteamUGC_GetQueryUGCContentDescriptors( self_: *mut ISteamUGC, @@ -26248,6 +26130,13 @@ extern "C" { unMaxAgeSeconds: uint32, ) -> bool; } +extern "C" { + pub fn SteamAPI_ISteamUGC_SetAdminQuery( + self_: *mut ISteamUGC, + handle: UGCUpdateHandle_t, + bAdminQuery: bool, + ) -> bool; +} extern "C" { pub fn SteamAPI_ISteamUGC_SetCloudFileNameFilter( self_: *mut ISteamUGC, @@ -26458,6 +26347,14 @@ extern "C" { descid: EUGCContentDescriptorID, ) -> bool; } +extern "C" { + pub fn SteamAPI_ISteamUGC_SetRequiredGameVersions( + self_: *mut ISteamUGC, + handle: UGCUpdateHandle_t, + pszGameBranchMin: *const ::std::os::raw::c_char, + pszGameBranchMax: *const ::std::os::raw::c_char, + ) -> bool; +} extern "C" { pub fn SteamAPI_ISteamUGC_SubmitItemUpdate( self_: *mut ISteamUGC, @@ -27187,7 +27084,41 @@ extern "C" { ) -> bool; } extern "C" { - pub fn SteamAPI_SteamVideo_v002() -> *mut ISteamVideo; + pub fn SteamAPI_SteamTimeline_v001() -> *mut ISteamTimeline; +} +extern "C" { + pub fn SteamAPI_ISteamTimeline_SetTimelineStateDescription( + self_: *mut ISteamTimeline, + pchDescription: *const ::std::os::raw::c_char, + flTimeDelta: f32, + ); +} +extern "C" { + pub fn SteamAPI_ISteamTimeline_ClearTimelineStateDescription( + self_: *mut ISteamTimeline, + flTimeDelta: f32, + ); +} +extern "C" { + pub fn SteamAPI_ISteamTimeline_AddTimelineEvent( + self_: *mut ISteamTimeline, + pchIcon: *const ::std::os::raw::c_char, + pchTitle: *const ::std::os::raw::c_char, + pchDescription: *const ::std::os::raw::c_char, + unPriority: uint32, + flStartOffsetSeconds: f32, + flDurationSeconds: f32, + ePossibleClip: ETimelineEventClipPriority, + ); +} +extern "C" { + pub fn SteamAPI_ISteamTimeline_SetTimelineGameMode( + self_: *mut ISteamTimeline, + eMode: ETimelineGameMode, + ); +} +extern "C" { + pub fn SteamAPI_SteamVideo_v007() -> *mut ISteamVideo; } extern "C" { pub fn SteamAPI_ISteamVideo_GetVideoURL(self_: *mut ISteamVideo, unVideoAppID: AppId_t);