diff --git a/Readme.txt b/Readme.txt index 6804118..90d0944 100644 --- a/Readme.txt +++ b/Readme.txt @@ -1,6 +1,6 @@ ================================================================ -Copyright © 1996-2016, Valve Corporation, All rights reserved. +Copyright © 1996-2017, Valve Corporation, All rights reserved. ================================================================ @@ -8,6 +8,34 @@ Copyright Welcome to the Steamworks SDK. For documentation please see our partner website at: http://partner.steamgames.com +---------------------------------------------------------------- +v1.40 25th April 2017 +---------------------------------------------------------------- + +ISteamInventory +* Update API documentation +* GetResultItemProperty - Retrieve dynamic properties for a given item returned in the result set. + +ISteamUtils +* IsVRHeadsetStreamingEnabled - Returns true if the HMD content will be streamed via Steam In-Home Streaming +* SetVRHeadsetStreamingEnabled - Set whether the HMD content will be streamed via Steam In-Home Streaming + +ISteamUser +* GetAvailableVoice and GetVoice - Some parameters have become deprecated and now have default values. + +ISteamUGC +* SetReturnPlaytimeStats - Set the number of days of playtime stats to return for a piece of UGC. +* AddDependency and RemoveDependency - Useful for parent-child relationship or dependency management + +ISteamVideo +* Added GetOPFSettings and GetOPFStringForApp for retrieving Open Projection Format data used in Steam 360 Video playback. +* GetOPFSettings - Handle the GetOPFSettingsResult_t callback which is called when the OPF related data for the passed in AppID is ready for retrieval. +* GetOPFStringForApp - Using the AppID returned in GetOPFSettingsResult_t pass in an allocated string buffer to get the OPF data. + +SteamPipe GUI Tool +* A simple GUI wrapper for Steamcmd/SteamPipe has been added to the SDK in the tools\ContentBuilder folder. More details can be found here: http://steamcommunity.com/groups/steamworks/discussions/0/412449508292646864 + + ---------------------------------------------------------------- v1.39 6th January 2017 ---------------------------------------------------------------- diff --git a/client/steam.exe b/client/steam.exe index 39e1dd8..5bebf3a 100644 Binary files a/client/steam.exe and b/client/steam.exe differ diff --git a/glmgr/cglmtex.cpp b/glmgr/cglmtex.cpp index 1efbfa3..152cf7f 100644 --- a/glmgr/cglmtex.cpp +++ b/glmgr/cglmtex.cpp @@ -413,11 +413,11 @@ GLMTexLayout *CGLMTexLayoutTable::NewLayoutRef( GLMTexLayoutKey *key ) // if not, generate a completed layout based on the key, add to map, set refcount to 1, return that const GLMTexFormatDesc *formatDesc = GetFormatDesc( key->m_texFormat ); - bool compression = (formatDesc->m_chunkSize > 1); if (!formatDesc) { GLMStop(); // bad news } + bool compression = (formatDesc->m_chunkSize > 1); GLMTexLayoutKeyMap::iterator p = m_layoutMap.find( *key ); if (p != m_layoutMap.end()) diff --git a/glmgr/glmgrcocoa.mm b/glmgr/glmgrcocoa.mm index a40a5aa..7327b16 100644 --- a/glmgr/glmgrcocoa.mm +++ b/glmgr/glmgrcocoa.mm @@ -373,66 +373,43 @@ void GLMDisplayInfo::PopulateModes( void ) Assert( !m_modes ); m_modes = new std::vector< GLMDisplayMode* >; - CFArrayRef modeList; -// CGDisplayErr cgderr; - CFDictionaryRef cgvidmode; - CFNumberRef number; - CFBooleanRef boolean; - - modeList = CGDisplayAvailableModes( m_info.m_cgDisplayID ); - if ( modeList != NULL ) + if ( CFArrayRef modeList = CGDisplayCopyAllDisplayModes( m_info.m_cgDisplayID, nullptr ) ) { // examine each mode CFIndex count = CFArrayGetCount( modeList ); for (CFIndex i = 0; i < count; i++) { - long modeHeight = 0, modeWidth = 0; long depth = 0; - long refreshrate = 0; Boolean usable, stretched = false; + + CGDisplayModeRef mode= (CGDisplayModeRef)CFArrayGetValueAtIndex (modeList, i); - // grab the mode dictionary - cgvidmode = (CFDictionaryRef)CFArrayGetValueAtIndex( modeList, i); + CFStringRef pixEnc = CGDisplayModeCopyPixelEncoding(mode); + if(CFStringCompare(pixEnc, CFSTR(IO32BitDirectPixels), kCFCompareCaseInsensitive) == kCFCompareEqualTo) + depth = 32; + else if(CFStringCompare(pixEnc, CFSTR(IO16BitDirectPixels), kCFCompareCaseInsensitive) == kCFCompareEqualTo) + depth = 16; + else if(CFStringCompare(pixEnc, CFSTR(IO8BitIndexedPixels), kCFCompareCaseInsensitive) == kCFCompareEqualTo) + depth = 8; - // grab mode params we need - number = (CFNumberRef)CFDictionaryGetValue(cgvidmode, kCGDisplayBitsPerPixel); - CFNumberGetValue(number, kCFNumberLongType, &depth); - - boolean = (CFBooleanRef)CFDictionaryGetValue(cgvidmode, kCGDisplayModeUsableForDesktopGUI) ; - usable = CFBooleanGetValue(boolean); - - boolean = (CFBooleanRef)CFDictionaryGetValue(cgvidmode, kCGDisplayModeIsStretched); - if (NULL != boolean) - { - stretched = CFBooleanGetValue(boolean); - } + usable = CGDisplayModeIsUsableForDesktopGUI( mode ); + uint32_t ioFlags = CGDisplayModeGetIOFlags(mode); + stretched = ioFlags & kDisplayModeStretchedFlag ? true : false; if ( usable && (!stretched) && (depth==32) ) { - // we're going to log this mode to the mode table. - - // get height of mode - number = (CFNumberRef)CFDictionaryGetValue( cgvidmode, kCGDisplayHeight ); - CFNumberGetValue(number, kCFNumberLongType, &modeHeight); - - // get width of mode - number = (CFNumberRef)CFDictionaryGetValue( cgvidmode, kCGDisplayWidth ); - CFNumberGetValue(number, kCFNumberLongType, &modeWidth); - - // get refresh rate of mode - number = (CFNumberRef)CFDictionaryGetValue( cgvidmode, kCGDisplayRefreshRate ); - double flrefreshrate = 0.0f; - CFNumberGetValue( number, kCFNumberDoubleType, &flrefreshrate ); - refreshrate = (int)flrefreshrate; + long modeHeight = CGDisplayModeGetHeight( mode ); + long modeWidth = CGDisplayModeGetWidth( mode ); + long refreshrate = CGDisplayModeGetRefreshRate( mode ); - // exclude silly small modes if ( (modeHeight >= 384) && (modeWidth >= 512) ) { GLMDisplayMode *newmode = new GLMDisplayMode( modeWidth, modeHeight, refreshrate ); m_modes->push_back( newmode ); } } + CGDisplayModeRelease( mode ); } } @@ -1496,30 +1473,15 @@ bool GLMDisplayDB::GetModeInfo( int rendererIndex, int displayIndex, int modeInd GLMDisplayInfo *dispinfo = (*rendInfo ->m_displays)[displayIndex]; CGDirectDisplayID cgid = dispinfo->m_info.m_cgDisplayID; - CFDictionaryRef curModeDict = CGDisplayCurrentMode( cgid ); - CFNumberRef number; - CFBooleanRef boolean; - CFArrayRef modeList; - CGDisplayErr cgderr; - - // get the mode number from the mode dict (using system mode numbering, not our sorted numbering) - if (curModeDict) - { - int modeIndex=0; - number = (CFNumberRef)CFDictionaryGetValue(curModeDict, kCGDisplayMode); - CFNumberGetValue(number, kCFNumberLongType, &modeIndex); + CGDisplayModeRef mode = CGDisplayCopyDisplayMode( cgid ); + // get the mode number from the mode dict (using system mode numbering, not our sorted numbering) + if (mode) + { // grab the width and height, I am unclear on whether this is the displayed FB width or the display device width. - int screenWidth=0; - int screenHeight=0; - int refreshHz=0; - - number = (CFNumberRef)CFDictionaryGetValue(curModeDict, kCGDisplayWidth); - CFNumberGetValue(number, kCFNumberLongType, &screenWidth); - number = (CFNumberRef)CFDictionaryGetValue(curModeDict, kCGDisplayHeight); - CFNumberGetValue(number, kCFNumberLongType, &screenHeight); - number = (CFNumberRef)CFDictionaryGetValue(curModeDict, kCGDisplayRefreshRate); - CFNumberGetValue(number, kCFNumberLongType, &refreshHz); + int screenWidth=CGDisplayModeGetWidth( mode ); + int screenHeight=CGDisplayModeGetHeight( mode ); + int refreshHz=CGDisplayModeGetRefreshRate( mode ); GLMPRINTF(( "-D- GLMDisplayDB::GetModeInfo sees mode-index=%d, width=%d, height=%d on CGID %08x (display index %d on rendererindex %d)", modeIndex, diff --git a/public/steam/isteamcontroller.h b/public/steam/isteamcontroller.h index 85199ab..c39a48b 100644 --- a/public/steam/isteamcontroller.h +++ b/public/steam/isteamcontroller.h @@ -66,6 +66,7 @@ enum EControllerSourceMode k_EControllerSourceMode_MouseJoystick, k_EControllerSourceMode_MouseRegion, k_EControllerSourceMode_RadialMenu, + k_EControllerSourceMode_SingleButton, k_EControllerSourceMode_Switches }; @@ -236,11 +237,20 @@ enum EControllerActionOrigin k_EControllerActionOrigin_SteamV2_RightBumper, k_EControllerActionOrigin_SteamV2_LeftGrip, k_EControllerActionOrigin_SteamV2_RightGrip, + k_EControllerActionOrigin_SteamV2_LeftGrip_Upper, + k_EControllerActionOrigin_SteamV2_RightGrip_Upper, + k_EControllerActionOrigin_SteamV2_LeftBumper_Pressure, + k_EControllerActionOrigin_SteamV2_RightBumper_Pressure, + k_EControllerActionOrigin_SteamV2_LeftGrip_Pressure, + k_EControllerActionOrigin_SteamV2_RightGrip_Pressure, + k_EControllerActionOrigin_SteamV2_LeftGrip_Upper_Pressure, + k_EControllerActionOrigin_SteamV2_RightGrip_Upper_Pressure, k_EControllerActionOrigin_SteamV2_Start, k_EControllerActionOrigin_SteamV2_Back, k_EControllerActionOrigin_SteamV2_LeftPad_Touch, k_EControllerActionOrigin_SteamV2_LeftPad_Swipe, k_EControllerActionOrigin_SteamV2_LeftPad_Click, + k_EControllerActionOrigin_SteamV2_LeftPad_Pressure, k_EControllerActionOrigin_SteamV2_LeftPad_DPadNorth, k_EControllerActionOrigin_SteamV2_LeftPad_DPadSouth, k_EControllerActionOrigin_SteamV2_LeftPad_DPadWest, @@ -248,6 +258,7 @@ enum EControllerActionOrigin k_EControllerActionOrigin_SteamV2_RightPad_Touch, k_EControllerActionOrigin_SteamV2_RightPad_Swipe, k_EControllerActionOrigin_SteamV2_RightPad_Click, + k_EControllerActionOrigin_SteamV2_RightPad_Pressure, k_EControllerActionOrigin_SteamV2_RightPad_DPadNorth, k_EControllerActionOrigin_SteamV2_RightPad_DPadSouth, k_EControllerActionOrigin_SteamV2_RightPad_DPadWest, diff --git a/public/steam/isteaminventory.h b/public/steam/isteaminventory.h index 83b13eb..692c62d 100644 --- a/public/steam/isteaminventory.h +++ b/public/steam/isteaminventory.h @@ -94,6 +94,23 @@ public: OUT_ARRAY_COUNT( punOutItemsArraySize,Output array) SteamItemDetails_t *pOutItemsArray, uint32 *punOutItemsArraySize ) = 0; + // In combination with GetResultItems, you can use GetResultItemProperty to retrieve + // dynamic string properties for a given item returned in the result set. + // + // Property names are always composed of ASCII letters, numbers, and/or underscores. + // + // Pass a NULL pointer for pchPropertyName to get a comma - separated list of available + // property names. + // + // If pchValueBuffer is NULL, *punValueBufferSize will contain the + // suggested buffer size. Otherwise it will be the number of bytes actually copied + // to pchValueBuffer. If the results do not fit in the given buffer, partial + // results may be copied. + virtual bool GetResultItemProperty( SteamInventoryResult_t resultHandle, + uint32 unItemIndex, + const char *pchPropertyName, + OUT_STRING_COUNT( punValueBufferSizeOut ) char *pchValueBuffer, uint32 *punValueBufferSizeOut ) = 0; + // Returns the server time at which the result was generated. Compare against // the value of IClientUtils::GetServerRealTime() to determine age. METHOD_DESC(Returns the server time at which the result was generated. Compare against the value of IClientUtils::GetServerRealTime() to determine age.) @@ -175,12 +192,9 @@ public: // // GenerateItems() creates one or more items and then generates a SteamInventoryCallback_t - // notification with a matching nCallbackContext parameter. This API is insecure, and could - // be abused by hacked clients. This call is normally disabled unless you explicitly enable - // "Development mode" on the Inventory Service section of the Steamworks website. - // You should not enable this mode for a shipping game! - // Note that Steam accounts that belong to the publisher group for your game are granted - // an exception - as a developer, you may use this to generate and test items in your game. + // notification with a matching nCallbackContext parameter. This API is only intended + // for prototyping - it is only usable by Steam accounts that belong to the publisher group + // for your game. // If punArrayQuantity is not NULL, it should be the same length as pArrayItems and should // describe the quantity of each item to generate. virtual bool GenerateItems( SteamInventoryResult_t *pResultHandle, ARRAY_COUNT(unArrayLength) const SteamItemDef_t *pArrayItemDefs, ARRAY_COUNT(unArrayLength) const uint32 *punArrayQuantity, uint32 unArrayLength ) = 0; @@ -201,18 +215,18 @@ public: // ConsumeItem() removes items from the inventory, permanently. They cannot be recovered. // Not for the faint of heart - if your game implements item removal at all, a high-friction - // UI confirmation process is highly recommended. Similar to GenerateItems, punArrayQuantity - // can be NULL or else an array of the same length as pArrayItems which describe the quantity - // of each item to destroy. + // UI confirmation process is highly recommended. METHOD_DESC(ConsumeItem() removes items from the inventory permanently.) virtual bool ConsumeItem( SteamInventoryResult_t *pResultHandle, SteamItemInstanceID_t itemConsume, uint32 unQuantity ) = 0; // ExchangeItems() is an atomic combination of item generation and consumption. // It can be used to implement crafting recipes or transmutations, or items which unpack // themselves into other items (e.g., a chest). - // ExchangeItems requires a whitelist - you must define recipes (lists of the components - // required for the exchange) on the target ItemDefinition. Exchanges that do not match - // a recipe, or do not provide the required amounts, will fail. + // Exchange recipes are defined in the ItemDef, and explicitly list the required item + // types and resulting generated type. + // Exchange recipes are evaluated atomically by the Inventory Service; if the supplied + // components do not match the recipe, or do not contain sufficient quantity, the + // exchange will fail. virtual bool ExchangeItems( SteamInventoryResult_t *pResultHandle, ARRAY_COUNT(unArrayGenerateLength) const SteamItemDef_t *pArrayGenerate, ARRAY_COUNT(unArrayGenerateLength) const uint32 *punArrayGenerateQuantity, uint32 unArrayGenerateLength, ARRAY_COUNT(unArrayDestroyLength) const SteamItemInstanceID_t *pArrayDestroy, ARRAY_COUNT(unArrayDestroyLength) const uint32 *punArrayDestroyQuantity, uint32 unArrayDestroyLength ) = 0; @@ -314,7 +328,7 @@ public: DESC(Size of array is passed in and actual size used is returned in this param) uint32 *punItemDefIDsArraySize ) = 0; }; -#define STEAMINVENTORY_INTERFACE_VERSION "STEAMINVENTORY_INTERFACE_V001" +#define STEAMINVENTORY_INTERFACE_VERSION "STEAMINVENTORY_INTERFACE_V002" // SteamInventoryResultReady_t callbacks are fired whenever asynchronous diff --git a/public/steam/isteamugc.h b/public/steam/isteamugc.h index bfddaf7..3d973f4 100644 --- a/public/steam/isteamugc.h +++ b/public/steam/isteamugc.h @@ -123,17 +123,19 @@ enum EItemState enum EItemStatistic { - k_EItemStatistic_NumSubscriptions = 0, - k_EItemStatistic_NumFavorites = 1, - k_EItemStatistic_NumFollowers = 2, - k_EItemStatistic_NumUniqueSubscriptions = 3, - k_EItemStatistic_NumUniqueFavorites = 4, - k_EItemStatistic_NumUniqueFollowers = 5, - k_EItemStatistic_NumUniqueWebsiteViews = 6, - k_EItemStatistic_ReportScore = 7, - k_EItemStatistic_NumSecondsPlayed = 8, - k_EItemStatistic_NumPlaytimeSessions = 9, - k_EItemStatistic_NumComments = 10, + k_EItemStatistic_NumSubscriptions = 0, + k_EItemStatistic_NumFavorites = 1, + k_EItemStatistic_NumFollowers = 2, + k_EItemStatistic_NumUniqueSubscriptions = 3, + k_EItemStatistic_NumUniqueFavorites = 4, + k_EItemStatistic_NumUniqueFollowers = 5, + k_EItemStatistic_NumUniqueWebsiteViews = 6, + k_EItemStatistic_ReportScore = 7, + k_EItemStatistic_NumSecondsPlayed = 8, + k_EItemStatistic_NumPlaytimeSessions = 9, + k_EItemStatistic_NumComments = 10, + k_EItemStatistic_NumSecondsPlayedDuringTimePeriod = 11, + k_EItemStatistic_NumPlaytimeSessionsDuringTimePeriod = 12, }; enum EItemPreviewType @@ -234,6 +236,7 @@ public: virtual bool SetReturnChildren( UGCQueryHandle_t handle, bool bReturnChildren ) = 0; virtual bool SetReturnAdditionalPreviews( UGCQueryHandle_t handle, bool bReturnAdditionalPreviews ) = 0; virtual bool SetReturnTotalOnly( UGCQueryHandle_t handle, bool bReturnTotalOnly ) = 0; + virtual bool SetReturnPlaytimeStats( UGCQueryHandle_t handle, uint32 unDays ) = 0; virtual bool SetLanguage( UGCQueryHandle_t handle, const char *pchLanguage ) = 0; virtual bool SetAllowCachedResponse( UGCQueryHandle_t handle, uint32 unMaxAgeSeconds ) = 0; @@ -320,9 +323,15 @@ public: virtual SteamAPICall_t StopPlaytimeTracking( PublishedFileId_t *pvecPublishedFileID, uint32 unNumPublishedFileIDs ) = 0; CALL_RESULT( StopPlaytimeTrackingResult_t ) virtual SteamAPICall_t StopPlaytimeTrackingForAllItems() = 0; + + // parent-child relationship or dependency management + CALL_RESULT( AddUGCDependencyResult_t ) + virtual SteamAPICall_t AddDependency( PublishedFileId_t nParentPublishedFileID, PublishedFileId_t nChildPublishedFileID ) = 0; + CALL_RESULT( RemoveUGCDependencyResult_t ) + virtual SteamAPICall_t RemoveDependency( PublishedFileId_t nParentPublishedFileID, PublishedFileId_t nChildPublishedFileID ) = 0; }; -#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION009" +#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION010" //----------------------------------------------------------------------------- // Purpose: Callback for querying UGC @@ -447,6 +456,28 @@ struct StopPlaytimeTrackingResult_t EResult m_eResult; }; +//----------------------------------------------------------------------------- +// Purpose: The result of a call to AddDependency +//----------------------------------------------------------------------------- +struct AddUGCDependencyResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 12 }; + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; + PublishedFileId_t m_nChildPublishedFileId; +}; + +//----------------------------------------------------------------------------- +// Purpose: The result of a call to RemoveDependency +//----------------------------------------------------------------------------- +struct RemoveUGCDependencyResult_t +{ + enum { k_iCallback = k_iClientUGCCallbacks + 13 }; + EResult m_eResult; + PublishedFileId_t m_nPublishedFileId; + PublishedFileId_t m_nChildPublishedFileId; +}; + #pragma pack( pop ) diff --git a/public/steam/isteamuser.h b/public/steam/isteamuser.h index f97a057..0ea2bb8 100644 --- a/public/steam/isteamuser.h +++ b/public/steam/isteamuser.h @@ -89,36 +89,50 @@ public: // k_eVoiceResultNotRecording virtual void StopVoiceRecording( ) = 0; - // Determine the amount of captured audio data that is available in bytes. - // This provides both the compressed and uncompressed data. Please note that the uncompressed - // data is not the raw feed from the microphone: data may only be available if audible - // levels of speech are detected. - // nUncompressedVoiceDesiredSampleRate is necessary to know the number of bytes to return in pcbUncompressed - can be set to 0 if you don't need uncompressed (the usual case) - // If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nUncompressedVoiceDesiredSampleRate - virtual EVoiceResult GetAvailableVoice( uint32 *pcbCompressed, uint32 *pcbUncompressed, uint32 nUncompressedVoiceDesiredSampleRate ) = 0; + // Determine the size of captured audio data that is available from GetVoice. + // Most applications will only use compressed data and should ignore the other + // parameters, which exist primarily for backwards compatibility. See comments + // below for further explanation of "uncompressed" data. + virtual EVoiceResult GetAvailableVoice( uint32 *pcbCompressed, uint32 *pcbUncompressed_Deprecated = 0, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated = 0 ) = 0; - // Gets the latest voice data from the microphone. Compressed data is an arbitrary format, and is meant to be handed back to - // DecompressVoice() for playback later as a binary blob. Uncompressed data is 16-bit, signed integer, 11025Hz PCM format. - // Please note that the uncompressed data is not the raw feed from the microphone: data may only be available if audible - // levels of speech are detected, and may have passed through denoising filters, etc. - // This function should be called as often as possible once recording has started; once per frame at least. - // nBytesWritten is set to the number of bytes written to pDestBuffer. - // nUncompressedBytesWritten is set to the number of bytes written to pUncompressedDestBuffer. - // You must grab both compressed and uncompressed here at the same time, if you want both. - // Matching data that is not read during this call will be thrown away. - // GetAvailableVoice() can be used to determine how much data is actually available. - // If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nUncompressedVoiceDesiredSampleRate - virtual EVoiceResult GetVoice( bool bWantCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, bool bWantUncompressed, void *pUncompressedDestBuffer, uint32 cbUncompressedDestBufferSize, uint32 *nUncompressBytesWritten, uint32 nUncompressedVoiceDesiredSampleRate ) = 0; + // --------------------------------------------------------------------------- + // NOTE: "uncompressed" audio is a deprecated feature and should not be used + // by most applications. It is raw single-channel 16-bit PCM wave data which + // may have been run through preprocessing filters and/or had silence removed, + // so the uncompressed audio could have a shorter duration than you expect. + // There may be no data at all during long periods of silence. Also, fetching + // uncompressed audio will cause GetVoice to discard any leftover compressed + // audio, so you must fetch both types at once. Finally, GetAvailableVoice is + // not precisely accurate when the uncompressed size is requested. So if you + // really need to use uncompressed audio, you should call GetVoice frequently + // with two very large (20kb+) output buffers instead of trying to allocate + // perfectly-sized buffers. But most applications should ignore all of these + // details and simply leave the "uncompressed" parameters as NULL/zero. + // --------------------------------------------------------------------------- - // Decompresses a chunk of compressed data produced by GetVoice(). - // nBytesWritten is set to the number of bytes written to pDestBuffer unless the return value is k_EVoiceResultBufferTooSmall. - // In that case, nBytesWritten is set to the size of the buffer required to decompress the given - // data. The suggested buffer size for the destination buffer is 22 kilobytes. - // The output format of the data is 16-bit signed at the requested samples per second. - // If you're upgrading from an older Steamworks API, you'll want to pass in 11025 to nDesiredSampleRate + // Read captured audio data from the microphone buffer. This should be called + // at least once per frame, and preferably every few milliseconds, to keep the + // microphone input delay as low as possible. Most applications will only use + // compressed data and should pass NULL/zero for the "uncompressed" parameters. + // Compressed data can be transmitted by your application and decoded into raw + // using the DecompressVoice function below. + virtual EVoiceResult GetVoice( bool bWantCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, bool bWantUncompressed_Deprecated = false, void *pUncompressedDestBuffer_Deprecated = 0, uint32 cbUncompressedDestBufferSize_Deprecated = 0, uint32 *nUncompressBytesWritten_Deprecated = 0, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated = 0 ) = 0; + + // Decodes the compressed voice data returned by GetVoice. The output data is + // raw single-channel 16-bit PCM audio. The decoder supports any sample rate + // from 11025 to 48000; see GetVoiceOptimalSampleRate() below for details. + // If the output buffer is not large enough, then *nBytesWritten will be set + // to the required buffer size, and k_EVoiceResultBufferTooSmall is returned. + // It is suggested to start with a 20kb buffer and reallocate as necessary. virtual EVoiceResult DecompressVoice( const void *pCompressed, uint32 cbCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, uint32 nDesiredSampleRate ) = 0; - // This returns the frequency of the voice data as it's stored internally; calling DecompressVoice() with this size will yield the best results + // This returns the native sample rate of the Steam voice decompressor; using + // this sample rate for DecompressVoice will perform the least CPU processing. + // However, the final audio quality will depend on how well the audio device + // (and/or your application's audio output SDK) deals with lower sample rates. + // You may find that you get the best audio output quality when you ignore + // this function and use the native sample rate of your audio output device, + // which is usually 48000 or 44100. virtual uint32 GetVoiceOptimalSampleRate() = 0; // Retrieve ticket to be sent to the entity who wishes to authenticate you. diff --git a/public/steam/isteamutils.h b/public/steam/isteamutils.h index aaf839f..e331fa6 100644 --- a/public/steam/isteamutils.h +++ b/public/steam/isteamutils.h @@ -159,9 +159,19 @@ public: // ask SteamUI to create and render its OpenVR dashboard virtual void StartVRDashboard() = 0; + + // Returns true if the HMD content will be streamed via Steam In-Home Streaming + virtual bool IsVRHeadsetStreamingEnabled() = 0; + + // Set whether the HMD content will be streamed via Steam In-Home Streaming + // If this is set to true, then the scene in the HMD headset will be streamed, and remote input will not be allowed. + // If this is set to false, then the application window will be streamed instead, and remote input will be allowed. + // The default is true unless "VRHeadsetStreaming" "0" is in the extended appinfo for a game. + // (this is useful for games that have asymmetric multiplayer gameplay) + virtual void SetVRHeadsetStreamingEnabled( bool bEnabled ) = 0; }; -#define STEAMUTILS_INTERFACE_VERSION "SteamUtils008" +#define STEAMUTILS_INTERFACE_VERSION "SteamUtils009" // callbacks diff --git a/public/steam/isteamvideo.h b/public/steam/isteamvideo.h index 6893f0b..32eeb59 100644 --- a/public/steam/isteamvideo.h +++ b/public/steam/isteamvideo.h @@ -36,9 +36,14 @@ public: // returns true if user is uploading a live broadcast virtual bool IsBroadcasting( int *pnNumViewers ) = 0; + + // Get the OPF Details for 360 Video Playback + 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_V001" +#define STEAMVIDEO_INTERFACE_VERSION "STEAMVIDEO_INTERFACE_V002" DEFINE_CALLBACK( BroadcastUploadStart_t, k_iClientVideoCallbacks + 4 ) END_DEFINE_CALLBACK_0() @@ -51,7 +56,13 @@ DEFINE_CALLBACK( GetVideoURLResult_t, k_iClientVideoCallbacks + 11 ) CALLBACK_MEMBER( 0, EResult, m_eResult ) CALLBACK_MEMBER( 1, AppId_t, m_unVideoAppID ) CALLBACK_MEMBER( 2, char, m_rgchURL[256] ) -END_DEFINE_CALLBACK_1() +END_DEFINE_CALLBACK_3() + + +DEFINE_CALLBACK( GetOPFSettingsResult_t, k_iClientVideoCallbacks + 24 ) + CALLBACK_MEMBER( 0, EResult, m_eResult ) + CALLBACK_MEMBER( 1, AppId_t, m_unVideoAppID ) +END_DEFINE_CALLBACK_2() #pragma pack( pop ) diff --git a/public/steam/lib/linux32/libsdkencryptedappticket.so b/public/steam/lib/linux32/libsdkencryptedappticket.so index eed7f09..f5935f7 100644 Binary files a/public/steam/lib/linux32/libsdkencryptedappticket.so and b/public/steam/lib/linux32/libsdkencryptedappticket.so differ diff --git a/public/steam/lib/linux64/libsdkencryptedappticket.so b/public/steam/lib/linux64/libsdkencryptedappticket.so index 9d7ede3..c4c7529 100644 Binary files a/public/steam/lib/linux64/libsdkencryptedappticket.so and b/public/steam/lib/linux64/libsdkencryptedappticket.so differ diff --git a/public/steam/lib/win32/sdkencryptedappticket.dll b/public/steam/lib/win32/sdkencryptedappticket.dll index 0f1b9ed..09f13c6 100644 Binary files a/public/steam/lib/win32/sdkencryptedappticket.dll and b/public/steam/lib/win32/sdkencryptedappticket.dll differ diff --git a/public/steam/lib/win32/sdkencryptedappticket.lib b/public/steam/lib/win32/sdkencryptedappticket.lib index ae0b1c9..4b62995 100644 Binary files a/public/steam/lib/win32/sdkencryptedappticket.lib and b/public/steam/lib/win32/sdkencryptedappticket.lib differ diff --git a/public/steam/lib/win64/sdkencryptedappticket64.dll b/public/steam/lib/win64/sdkencryptedappticket64.dll index 8b534fe..3a4ae91 100644 Binary files a/public/steam/lib/win64/sdkencryptedappticket64.dll and b/public/steam/lib/win64/sdkencryptedappticket64.dll differ diff --git a/public/steam/lib/win64/sdkencryptedappticket64.lib b/public/steam/lib/win64/sdkencryptedappticket64.lib index 614e670..297d6e9 100644 Binary files a/public/steam/lib/win64/sdkencryptedappticket64.lib and b/public/steam/lib/win64/sdkencryptedappticket64.lib differ diff --git a/public/steam/steam_api.json b/public/steam/steam_api.json index b88cbcc..9250a54 100644 --- a/public/steam/steam_api.json +++ b/public/steam/steam_api.json @@ -108,6 +108,7 @@ ,{"typedef": "BroadcastUploadStart_t::SteamCallback_t","type": "struct BroadcastUploadStart_t"} ,{"typedef": "BroadcastUploadStop_t::SteamCallback_t","type": "struct BroadcastUploadStop_t"} ,{"typedef": "GetVideoURLResult_t::SteamCallback_t","type": "struct GetVideoURLResult_t"} +,{"typedef": "GetOPFSettingsResult_t::SteamCallback_t","type": "struct GetOPFSettingsResult_t"} ,{"typedef": "CCallResult::func_t","type": "void (T::*)(P *, _Bool)"} ,{"typedef": "CCallback::func_t","type": "void (T::*)(P *)"} ], @@ -226,6 +227,8 @@ ,{"name": "k_EResultInvalidItemType","value": "104"} ,{"name": "k_EResultIPBanned","value": "105"} ,{"name": "k_EResultGSLTExpired","value": "106"} + ,{"name": "k_EResultInsufficientFunds","value": "107"} + ,{"name": "k_EResultTooManyPending","value": "108"} ]} , {"enumname": "EVoiceResult","values": [ {"name": "k_EVoiceResultOK","value": "0"} @@ -323,6 +326,7 @@ ,{"name": "k_EAppOwnershipFlags_PendingGift","value": "32768"} ,{"name": "k_EAppOwnershipFlags_RentalNotActivated","value": "65536"} ,{"name": "k_EAppOwnershipFlags_Rental","value": "131072"} + ,{"name": "k_EAppOwnershipFlags_SiteLicense","value": "262144"} ]} , {"enumname": "EAppType","values": [ {"name": "k_EAppType_Invalid","value": "0"} @@ -805,7 +809,8 @@ ,{"name": "k_EControllerSourceMode_MouseJoystick","value": "12"} ,{"name": "k_EControllerSourceMode_MouseRegion","value": "13"} ,{"name": "k_EControllerSourceMode_RadialMenu","value": "14"} - ,{"name": "k_EControllerSourceMode_Switches","value": "15"} + ,{"name": "k_EControllerSourceMode_SingleButton","value": "15"} + ,{"name": "k_EControllerSourceMode_Switches","value": "16"} ]} , {"enumname": "EControllerActionOrigin","values": [ {"name": "k_EControllerActionOrigin_None","value": "0"} @@ -964,37 +969,47 @@ ,{"name": "k_EControllerActionOrigin_SteamV2_RightBumper","value": "153"} ,{"name": "k_EControllerActionOrigin_SteamV2_LeftGrip","value": "154"} ,{"name": "k_EControllerActionOrigin_SteamV2_RightGrip","value": "155"} - ,{"name": "k_EControllerActionOrigin_SteamV2_Start","value": "156"} - ,{"name": "k_EControllerActionOrigin_SteamV2_Back","value": "157"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_Touch","value": "158"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_Swipe","value": "159"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_Click","value": "160"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_DPadNorth","value": "161"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_DPadSouth","value": "162"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_DPadWest","value": "163"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_DPadEast","value": "164"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_Touch","value": "165"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_Swipe","value": "166"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_Click","value": "167"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_DPadNorth","value": "168"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_DPadSouth","value": "169"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_DPadWest","value": "170"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_DPadEast","value": "171"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftTrigger_Pull","value": "172"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftTrigger_Click","value": "173"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightTrigger_Pull","value": "174"} - ,{"name": "k_EControllerActionOrigin_SteamV2_RightTrigger_Click","value": "175"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftStick_Move","value": "176"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftStick_Click","value": "177"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftStick_DPadNorth","value": "178"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftStick_DPadSouth","value": "179"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftStick_DPadWest","value": "180"} - ,{"name": "k_EControllerActionOrigin_SteamV2_LeftStick_DPadEast","value": "181"} - ,{"name": "k_EControllerActionOrigin_SteamV2_Gyro_Move","value": "182"} - ,{"name": "k_EControllerActionOrigin_SteamV2_Gyro_Pitch","value": "183"} - ,{"name": "k_EControllerActionOrigin_SteamV2_Gyro_Yaw","value": "184"} - ,{"name": "k_EControllerActionOrigin_SteamV2_Gyro_Roll","value": "185"} - ,{"name": "k_EControllerActionOrigin_Count","value": "186"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftGrip_Upper","value": "156"} + ,{"name": "k_EControllerActionOrigin_SteamV2_RightGrip_Upper","value": "157"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftBumper_Pressure","value": "158"} + ,{"name": "k_EControllerActionOrigin_SteamV2_RightBumper_Pressure","value": "159"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftGrip_Pressure","value": "160"} + ,{"name": "k_EControllerActionOrigin_SteamV2_RightGrip_Pressure","value": "161"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftGrip_Upper_Pressure","value": "162"} + ,{"name": "k_EControllerActionOrigin_SteamV2_RightGrip_Upper_Pressure","value": "163"} + ,{"name": "k_EControllerActionOrigin_SteamV2_Start","value": "164"} + ,{"name": "k_EControllerActionOrigin_SteamV2_Back","value": "165"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_Touch","value": "166"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_Swipe","value": "167"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_Click","value": "168"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_Pressure","value": "169"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_DPadNorth","value": "170"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_DPadSouth","value": "171"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_DPadWest","value": "172"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftPad_DPadEast","value": "173"} + ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_Touch","value": "174"} + ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_Swipe","value": "175"} + ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_Click","value": "176"} + ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_Pressure","value": "177"} + ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_DPadNorth","value": "178"} + ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_DPadSouth","value": "179"} + ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_DPadWest","value": "180"} + ,{"name": "k_EControllerActionOrigin_SteamV2_RightPad_DPadEast","value": "181"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftTrigger_Pull","value": "182"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftTrigger_Click","value": "183"} + ,{"name": "k_EControllerActionOrigin_SteamV2_RightTrigger_Pull","value": "184"} + ,{"name": "k_EControllerActionOrigin_SteamV2_RightTrigger_Click","value": "185"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftStick_Move","value": "186"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftStick_Click","value": "187"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftStick_DPadNorth","value": "188"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftStick_DPadSouth","value": "189"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftStick_DPadWest","value": "190"} + ,{"name": "k_EControllerActionOrigin_SteamV2_LeftStick_DPadEast","value": "191"} + ,{"name": "k_EControllerActionOrigin_SteamV2_Gyro_Move","value": "192"} + ,{"name": "k_EControllerActionOrigin_SteamV2_Gyro_Pitch","value": "193"} + ,{"name": "k_EControllerActionOrigin_SteamV2_Gyro_Yaw","value": "194"} + ,{"name": "k_EControllerActionOrigin_SteamV2_Gyro_Roll","value": "195"} + ,{"name": "k_EControllerActionOrigin_Count","value": "196"} ]} , {"enumname": "ESteamControllerLEDFlag","values": [ {"name": "k_ESteamControllerLEDFlag_SetColor","value": "0"} @@ -1086,6 +1101,8 @@ ,{"name": "k_EItemStatistic_NumSecondsPlayed","value": "8"} ,{"name": "k_EItemStatistic_NumPlaytimeSessions","value": "9"} ,{"name": "k_EItemStatistic_NumComments","value": "10"} + ,{"name": "k_EItemStatistic_NumSecondsPlayedDuringTimePeriod","value": "11"} + ,{"name": "k_EItemStatistic_NumPlaytimeSessionsDuringTimePeriod","value": "12"} ]} , {"enumname": "EItemPreviewType","values": [ {"name": "k_EItemPreviewType_Image","value": "0"} @@ -1841,6 +1858,14 @@ { "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} ,{"struct": "StopPlaytimeTrackingResult_t","fields": [ { "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +,{"struct": "AddUGCDependencyResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nChildPublishedFileId", "fieldtype": "PublishedFileId_t"}]} +,{"struct": "RemoveUGCDependencyResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, +{ "fieldname": "m_nChildPublishedFileId", "fieldtype": "PublishedFileId_t"}]} ,{"struct": "SteamAppInstalled_t","fields": [ { "fieldname": "m_nAppID", "fieldtype": "AppId_t"}]} ,{"struct": "SteamAppUninstalled_t","fields": [ @@ -1967,6 +1992,9 @@ { "fieldname": "m_eResult", "fieldtype": "enum EResult"}, { "fieldname": "m_unVideoAppID", "fieldtype": "AppId_t"}, { "fieldname": "m_rgchURL", "fieldtype": "char [256]"}]} +,{"struct": "GetOPFSettingsResult_t","fields": [ +{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}, +{ "fieldname": "m_unVideoAppID", "fieldtype": "AppId_t"}]} ,{"struct": "CSteamAPIContext","fields": [ { "fieldname": "m_pSteamClient", "fieldtype": "class ISteamClient *"}, { "fieldname": "m_pSteamUser", "fieldtype": "class ISteamUser *"}, @@ -2417,8 +2445,8 @@ "returntype": "EVoiceResult", "params": [ { "paramname": "pcbCompressed" ,"paramtype": "uint32 *"}, -{ "paramname": "pcbUncompressed" ,"paramtype": "uint32 *"}, -{ "paramname": "nUncompressedVoiceDesiredSampleRate" ,"paramtype": "uint32"} +{ "paramname": "pcbUncompressed_Deprecated" ,"paramtype": "uint32 *"}, +{ "paramname": "nUncompressedVoiceDesiredSampleRate_Deprecated" ,"paramtype": "uint32"} ] } ,{ @@ -2430,11 +2458,11 @@ { "paramname": "pDestBuffer" ,"paramtype": "void *"}, { "paramname": "cbDestBufferSize" ,"paramtype": "uint32"}, { "paramname": "nBytesWritten" ,"paramtype": "uint32 *"}, -{ "paramname": "bWantUncompressed" ,"paramtype": "bool"}, -{ "paramname": "pUncompressedDestBuffer" ,"paramtype": "void *"}, -{ "paramname": "cbUncompressedDestBufferSize" ,"paramtype": "uint32"}, -{ "paramname": "nUncompressBytesWritten" ,"paramtype": "uint32 *"}, -{ "paramname": "nUncompressedVoiceDesiredSampleRate" ,"paramtype": "uint32"} +{ "paramname": "bWantUncompressed_Deprecated" ,"paramtype": "bool"}, +{ "paramname": "pUncompressedDestBuffer_Deprecated" ,"paramtype": "void *"}, +{ "paramname": "cbUncompressedDestBufferSize_Deprecated" ,"paramtype": "uint32"}, +{ "paramname": "nUncompressBytesWritten_Deprecated" ,"paramtype": "uint32 *"}, +{ "paramname": "nUncompressedVoiceDesiredSampleRate_Deprecated" ,"paramtype": "uint32"} ] } ,{ @@ -3336,6 +3364,19 @@ "methodname": "StartVRDashboard", "returntype": "void" } +,{ + "classname": "ISteamUtils", + "methodname": "IsVRHeadsetStreamingEnabled", + "returntype": "bool" +} +,{ + "classname": "ISteamUtils", + "methodname": "SetVRHeadsetStreamingEnabled", + "returntype": "void", + "params": [ +{ "paramname": "bEnabled" ,"paramtype": "bool"} + ] +} ,{ "classname": "ISteamMatchmaking", "methodname": "GetFavoriteGameCount", @@ -6301,6 +6342,15 @@ { "paramname": "bReturnTotalOnly" ,"paramtype": "bool"} ] } +,{ + "classname": "ISteamUGC", + "methodname": "SetReturnPlaytimeStats", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCQueryHandle_t"}, +{ "paramname": "unDays" ,"paramtype": "uint32"} + ] +} ,{ "classname": "ISteamUGC", "methodname": "SetLanguage", @@ -6694,6 +6744,24 @@ "methodname": "StopPlaytimeTrackingForAllItems", "callresult": "StopPlaytimeTrackingResult_t", "returntype": "SteamAPICall_t" } +,{ + "classname": "ISteamUGC", + "methodname": "AddDependency", "callresult": "AddUGCDependencyResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nParentPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "nChildPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "RemoveDependency", "callresult": "RemoveUGCDependencyResult_t", + "returntype": "SteamAPICall_t", + "params": [ +{ "paramname": "nParentPublishedFileID" ,"paramtype": "PublishedFileId_t"}, +{ "paramname": "nChildPublishedFileID" ,"paramtype": "PublishedFileId_t"} + ] +} ,{ "classname": "ISteamAppList", "methodname": "GetNumInstalledApps", @@ -7065,6 +7133,18 @@ { "paramname": "punOutItemsArraySize" ,"paramtype": "uint32 *"} ] } +,{ + "classname": "ISteamInventory", + "methodname": "GetResultItemProperty", + "returntype": "bool", + "params": [ +{ "paramname": "resultHandle" ,"paramtype": "SteamInventoryResult_t"}, +{ "paramname": "unItemIndex" ,"paramtype": "uint32"}, +{ "paramname": "pchPropertyName" ,"paramtype": "const char *"}, +{ "paramname": "pchValueBuffer" ,"out_string_count": "punValueBufferSizeOut" ,"paramtype": "char *"}, +{ "paramname": "punValueBufferSizeOut" ,"paramtype": "uint32 *"} + ] +} ,{ "classname": "ISteamInventory", "methodname": "GetResultTimestamp", "desc": "Returns the server time at which the result was generated. Compare against the value of IClientUtils::GetServerRealTime() to determine age.", @@ -7290,6 +7370,24 @@ { "paramname": "pnNumViewers" ,"paramtype": "int *"} ] } +,{ + "classname": "ISteamVideo", + "methodname": "GetOPFSettings", "callback": "GetOPFSettingsResult_t", + "returntype": "void", + "params": [ +{ "paramname": "unVideoAppID" ,"paramtype": "AppId_t"} + ] +} +,{ + "classname": "ISteamVideo", + "methodname": "GetOPFStringForApp", + "returntype": "bool", + "params": [ +{ "paramname": "unVideoAppID" ,"paramtype": "AppId_t"}, +{ "paramname": "pchBuffer" ,"paramtype": "char *"}, +{ "paramname": "pnBufferSize" ,"paramtype": "int32 *"} + ] +} ,{ "classname": "ISteamGameServer", "methodname": "InitGameServer", diff --git a/public/steam/steam_api_flat.h b/public/steam/steam_api_flat.h index 3153297..7d35cfe 100644 --- a/public/steam/steam_api_flat.h +++ b/public/steam/steam_api_flat.h @@ -181,8 +181,8 @@ S_API void SteamAPI_ISteamUser_TrackAppUsageEvent(intptr_t instancePtr, class CG S_API bool SteamAPI_ISteamUser_GetUserDataFolder(intptr_t instancePtr, char * pchBuffer, int cubBuffer); S_API void SteamAPI_ISteamUser_StartVoiceRecording(intptr_t instancePtr); S_API void SteamAPI_ISteamUser_StopVoiceRecording(intptr_t instancePtr); -S_API EVoiceResult SteamAPI_ISteamUser_GetAvailableVoice(intptr_t instancePtr, uint32 * pcbCompressed, uint32 * pcbUncompressed, uint32 nUncompressedVoiceDesiredSampleRate); -S_API EVoiceResult SteamAPI_ISteamUser_GetVoice(intptr_t instancePtr, bool bWantCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, bool bWantUncompressed, void * pUncompressedDestBuffer, uint32 cbUncompressedDestBufferSize, uint32 * nUncompressBytesWritten, uint32 nUncompressedVoiceDesiredSampleRate); +S_API EVoiceResult SteamAPI_ISteamUser_GetAvailableVoice(intptr_t instancePtr, uint32 * pcbCompressed, uint32 * pcbUncompressed_Deprecated, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated); +S_API EVoiceResult SteamAPI_ISteamUser_GetVoice(intptr_t instancePtr, bool bWantCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, bool bWantUncompressed_Deprecated, void * pUncompressedDestBuffer_Deprecated, uint32 cbUncompressedDestBufferSize_Deprecated, uint32 * nUncompressBytesWritten_Deprecated, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated); S_API EVoiceResult SteamAPI_ISteamUser_DecompressVoice(intptr_t instancePtr, const void * pCompressed, uint32 cbCompressed, void * pDestBuffer, uint32 cbDestBufferSize, uint32 * nBytesWritten, uint32 nDesiredSampleRate); S_API uint32 SteamAPI_ISteamUser_GetVoiceOptimalSampleRate(intptr_t instancePtr); S_API HAuthTicket SteamAPI_ISteamUser_GetAuthSessionTicket(intptr_t instancePtr, void * pTicket, int cbMaxTicket, uint32 * pcbTicket); @@ -298,6 +298,8 @@ S_API bool SteamAPI_ISteamUtils_IsSteamRunningInVR(intptr_t instancePtr); S_API void SteamAPI_ISteamUtils_SetOverlayNotificationInset(intptr_t instancePtr, int nHorizontalInset, int nVerticalInset); S_API bool SteamAPI_ISteamUtils_IsSteamInBigPictureMode(intptr_t instancePtr); S_API void SteamAPI_ISteamUtils_StartVRDashboard(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUtils_IsVRHeadsetStreamingEnabled(intptr_t instancePtr); +S_API void SteamAPI_ISteamUtils_SetVRHeadsetStreamingEnabled(intptr_t instancePtr, bool bEnabled); S_API int SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(intptr_t instancePtr); S_API bool SteamAPI_ISteamMatchmaking_GetFavoriteGame(intptr_t instancePtr, int iGame, AppId_t * pnAppID, uint32 * pnIP, uint16 * pnConnPort, uint16 * pnQueryPort, uint32 * punFlags, uint32 * pRTime32LastPlayedOnServer); S_API int SteamAPI_ISteamMatchmaking_AddFavoriteGame(intptr_t instancePtr, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer); @@ -639,6 +641,7 @@ S_API bool SteamAPI_ISteamUGC_SetReturnMetadata(intptr_t instancePtr, UGCQueryHa S_API bool SteamAPI_ISteamUGC_SetReturnChildren(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnChildren); S_API bool SteamAPI_ISteamUGC_SetReturnAdditionalPreviews(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnAdditionalPreviews); S_API bool SteamAPI_ISteamUGC_SetReturnTotalOnly(intptr_t instancePtr, UGCQueryHandle_t handle, bool bReturnTotalOnly); +S_API bool SteamAPI_ISteamUGC_SetReturnPlaytimeStats(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 unDays); S_API bool SteamAPI_ISteamUGC_SetLanguage(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pchLanguage); S_API bool SteamAPI_ISteamUGC_SetAllowCachedResponse(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 unMaxAgeSeconds); S_API bool SteamAPI_ISteamUGC_SetCloudFileNameFilter(intptr_t instancePtr, UGCQueryHandle_t handle, const char * pMatchCloudFileName); @@ -683,6 +686,8 @@ S_API void SteamAPI_ISteamUGC_SuspendDownloads(intptr_t instancePtr, bool bSuspe S_API SteamAPICall_t SteamAPI_ISteamUGC_StartPlaytimeTracking(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs); S_API SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTracking(intptr_t instancePtr, PublishedFileId_t * pvecPublishedFileID, uint32 unNumPublishedFileIDs); S_API SteamAPICall_t SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(intptr_t instancePtr); +S_API SteamAPICall_t SteamAPI_ISteamUGC_AddDependency(intptr_t instancePtr, PublishedFileId_t nParentPublishedFileID, PublishedFileId_t nChildPublishedFileID); +S_API SteamAPICall_t SteamAPI_ISteamUGC_RemoveDependency(intptr_t instancePtr, PublishedFileId_t nParentPublishedFileID, PublishedFileId_t nChildPublishedFileID); S_API uint32 SteamAPI_ISteamAppList_GetNumInstalledApps(intptr_t instancePtr); S_API uint32 SteamAPI_ISteamAppList_GetInstalledApps(intptr_t instancePtr, AppId_t * pvecAppID, uint32 unMaxAppIDs); S_API int SteamAPI_ISteamAppList_GetAppName(intptr_t instancePtr, AppId_t nAppID, char * pchName, int cchNameMax); @@ -725,6 +730,7 @@ S_API void SteamAPI_ISteamHTMLSurface_AllowStartRequest(intptr_t instancePtr, HH S_API void SteamAPI_ISteamHTMLSurface_JSDialogResponse(intptr_t instancePtr, HHTMLBrowser unBrowserHandle, bool bResult); S_API EResult SteamAPI_ISteamInventory_GetResultStatus(intptr_t instancePtr, SteamInventoryResult_t resultHandle); S_API bool SteamAPI_ISteamInventory_GetResultItems(intptr_t instancePtr, SteamInventoryResult_t resultHandle, struct SteamItemDetails_t * pOutItemsArray, uint32 * punOutItemsArraySize); +S_API bool SteamAPI_ISteamInventory_GetResultItemProperty(intptr_t instancePtr, SteamInventoryResult_t resultHandle, uint32 unItemIndex, const char * pchPropertyName, char * pchValueBuffer, uint32 * punValueBufferSizeOut); S_API uint32 SteamAPI_ISteamInventory_GetResultTimestamp(intptr_t instancePtr, SteamInventoryResult_t resultHandle); S_API bool SteamAPI_ISteamInventory_CheckResultSteamID(intptr_t instancePtr, SteamInventoryResult_t resultHandle, class CSteamID steamIDExpected); S_API void SteamAPI_ISteamInventory_DestroyResult(intptr_t instancePtr, SteamInventoryResult_t resultHandle); @@ -749,6 +755,8 @@ S_API SteamAPICall_t SteamAPI_ISteamInventory_RequestEligiblePromoItemDefinition S_API bool SteamAPI_ISteamInventory_GetEligiblePromoItemDefinitionIDs(intptr_t instancePtr, class CSteamID steamID, SteamItemDef_t * pItemDefIDs, uint32 * punItemDefIDsArraySize); S_API void SteamAPI_ISteamVideo_GetVideoURL(intptr_t instancePtr, AppId_t unVideoAppID); S_API bool SteamAPI_ISteamVideo_IsBroadcasting(intptr_t instancePtr, int * pnNumViewers); +S_API void SteamAPI_ISteamVideo_GetOPFSettings(intptr_t instancePtr, AppId_t unVideoAppID); +S_API bool SteamAPI_ISteamVideo_GetOPFStringForApp(intptr_t instancePtr, AppId_t unVideoAppID, char * pchBuffer, int32 * pnBufferSize); S_API bool SteamAPI_ISteamGameServer_InitGameServer(intptr_t instancePtr, uint32 unIP, uint16 usGamePort, uint16 usQueryPort, uint32 unFlags, AppId_t nGameAppId, const char * pchVersionString); S_API void SteamAPI_ISteamGameServer_SetProduct(intptr_t instancePtr, const char * pszProduct); S_API void SteamAPI_ISteamGameServer_SetGameDescription(intptr_t instancePtr, const char * pszGameDescription); diff --git a/public/steam/steam_api_interop.cs b/public/steam/steam_api_interop.cs index 4a8e09e..37403a7 100644 --- a/public/steam/steam_api_interop.cs +++ b/public/steam/steam_api_interop.cs @@ -100,9 +100,9 @@ internal static extern void SteamAPI_ISteamUser_StartVoiceRecording(IntPtr insta [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_StopVoiceRecording")] internal static extern void SteamAPI_ISteamUser_StopVoiceRecording(IntPtr instancePtr); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetAvailableVoice")] -internal static extern uint SteamAPI_ISteamUser_GetAvailableVoice(IntPtr instancePtr, ref uint pcbCompressed, ref uint pcbUncompressed, uint nUncompressedVoiceDesiredSampleRate); +internal static extern uint SteamAPI_ISteamUser_GetAvailableVoice(IntPtr instancePtr, ref uint pcbCompressed, ref uint pcbUncompressed_Deprecated, uint nUncompressedVoiceDesiredSampleRate_Deprecated); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetVoice")] -internal static extern uint SteamAPI_ISteamUser_GetVoice(IntPtr instancePtr, bool bWantCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, bool bWantUncompressed, IntPtr pUncompressedDestBuffer, uint cbUncompressedDestBufferSize, ref uint nUncompressBytesWritten, uint nUncompressedVoiceDesiredSampleRate); +internal static extern uint SteamAPI_ISteamUser_GetVoice(IntPtr instancePtr, bool bWantCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, bool bWantUncompressed_Deprecated, IntPtr pUncompressedDestBuffer_Deprecated, uint cbUncompressedDestBufferSize_Deprecated, ref uint nUncompressBytesWritten_Deprecated, uint nUncompressedVoiceDesiredSampleRate_Deprecated); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_DecompressVoice")] internal static extern uint SteamAPI_ISteamUser_DecompressVoice(IntPtr instancePtr, IntPtr pCompressed, uint cbCompressed, IntPtr pDestBuffer, uint cbDestBufferSize, ref uint nBytesWritten, uint nDesiredSampleRate); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_GetVoiceOptimalSampleRate")] @@ -333,6 +333,10 @@ internal static extern void SteamAPI_ISteamUtils_SetOverlayNotificationInset(Int internal static extern bool SteamAPI_ISteamUtils_IsSteamInBigPictureMode(IntPtr instancePtr); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_StartVRDashboard")] internal static extern void SteamAPI_ISteamUtils_StartVRDashboard(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsVRHeadsetStreamingEnabled")] +internal static extern bool SteamAPI_ISteamUtils_IsVRHeadsetStreamingEnabled(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetVRHeadsetStreamingEnabled")] +internal static extern void SteamAPI_ISteamUtils_SetVRHeadsetStreamingEnabled(IntPtr instancePtr, bool bEnabled); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetFavoriteGameCount")] internal static extern int SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(IntPtr instancePtr); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetFavoriteGame")] @@ -1015,6 +1019,8 @@ internal static extern bool SteamAPI_ISteamUGC_SetReturnChildren(IntPtr instance internal static extern bool SteamAPI_ISteamUGC_SetReturnAdditionalPreviews(IntPtr instancePtr, ulong handle, bool bReturnAdditionalPreviews); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnTotalOnly")] internal static extern bool SteamAPI_ISteamUGC_SetReturnTotalOnly(IntPtr instancePtr, ulong handle, bool bReturnTotalOnly); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetReturnPlaytimeStats")] +internal static extern bool SteamAPI_ISteamUGC_SetReturnPlaytimeStats(IntPtr instancePtr, ulong handle, uint unDays); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetLanguage")] internal static extern bool SteamAPI_ISteamUGC_SetLanguage(IntPtr instancePtr, ulong handle, string pchLanguage); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SetAllowCachedResponse")] @@ -1103,6 +1109,10 @@ internal static extern ulong SteamAPI_ISteamUGC_StartPlaytimeTracking(IntPtr ins internal static extern ulong SteamAPI_ISteamUGC_StopPlaytimeTracking(IntPtr instancePtr, ref ulong pvecPublishedFileID, uint unNumPublishedFileIDs); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems")] internal static extern ulong SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddDependency")] +internal static extern ulong SteamAPI_ISteamUGC_AddDependency(IntPtr instancePtr, ulong nParentPublishedFileID, ulong nChildPublishedFileID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveDependency")] +internal static extern ulong SteamAPI_ISteamUGC_RemoveDependency(IntPtr instancePtr, ulong nParentPublishedFileID, ulong nChildPublishedFileID); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetNumInstalledApps")] internal static extern uint SteamAPI_ISteamAppList_GetNumInstalledApps(IntPtr instancePtr); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamAppList_GetInstalledApps")] @@ -1187,6 +1197,8 @@ internal static extern void SteamAPI_ISteamHTMLSurface_JSDialogResponse(IntPtr i internal static extern uint SteamAPI_ISteamInventory_GetResultStatus(IntPtr instancePtr, int resultHandle); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultItems")] internal static extern bool SteamAPI_ISteamInventory_GetResultItems(IntPtr instancePtr, int resultHandle, [In, Out] SteamItemDetails_t[] pOutItemsArray, ref uint punOutItemsArraySize); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultItemProperty")] +internal static extern bool SteamAPI_ISteamInventory_GetResultItemProperty(IntPtr instancePtr, int resultHandle, uint unItemIndex, string pchPropertyName, System.Text.StringBuilder pchValueBuffer, ref uint punValueBufferSizeOut); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_GetResultTimestamp")] internal static extern uint SteamAPI_ISteamInventory_GetResultTimestamp(IntPtr instancePtr, int resultHandle); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamInventory_CheckResultSteamID")] @@ -1235,6 +1247,10 @@ internal static extern bool SteamAPI_ISteamInventory_GetEligiblePromoItemDefinit internal static extern void SteamAPI_ISteamVideo_GetVideoURL(IntPtr instancePtr, uint unVideoAppID); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamVideo_IsBroadcasting")] internal static extern bool SteamAPI_ISteamVideo_IsBroadcasting(IntPtr instancePtr, ref int pnNumViewers); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamVideo_GetOPFSettings")] +internal static extern void SteamAPI_ISteamVideo_GetOPFSettings(IntPtr instancePtr, uint unVideoAppID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamVideo_GetOPFStringForApp")] +internal static extern bool SteamAPI_ISteamVideo_GetOPFStringForApp(IntPtr instancePtr, uint unVideoAppID, string pchBuffer, ref int pnBufferSize); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_InitGameServer")] internal static extern bool SteamAPI_ISteamGameServer_InitGameServer(IntPtr instancePtr, uint unIP, char usGamePort, char usQueryPort, uint unFlags, uint nGameAppId, string pchVersionString); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServer_SetProduct")] @@ -1348,6 +1364,11 @@ public delegate void SteamAPI_UserStatsReceived_t_Callback(UserStatsReceived_t p public static extern ulong CUserStatsReceived_t_SetCallback(SteamAPI_UserStatsReceived_t_Callback func); [DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_RemoveCallback")] public static extern ulong CUserStatsReceived_t_RemoveCallback(ulong handle); +public delegate void SteamAPI_GetOPFSettingsResult_t_Callback(GetOPFSettingsResult_t pGetOPFSettingsResult_t); +[DllImportAttribute("Steam_api", EntryPoint = "CGetOPFSettingsResult_t_SetCallback")] +public static extern ulong CGetOPFSettingsResult_t_SetCallback(SteamAPI_GetOPFSettingsResult_t_Callback func); +[DllImportAttribute("Steam_api", EntryPoint = "CGetOPFSettingsResult_t_RemoveCallback")] +public static extern ulong CGetOPFSettingsResult_t_RemoveCallback(ulong handle); public delegate void SteamAPI_RemoteStorageFileReadAsyncComplete_t_CallResult(RemoteStorageFileReadAsyncComplete_t pRemoteStorageFileReadAsyncComplete_t, bool bIOFailure); [DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageFileReadAsyncComplete_t_SetCallResult")] public static extern ulong CRemoteStorageFileReadAsyncComplete_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageFileReadAsyncComplete_t_CallResult func); @@ -1418,6 +1439,11 @@ public delegate void SteamAPI_RemoteStorageGetPublishedFileDetailsResult_t_CallR public static extern ulong CRemoteStorageGetPublishedFileDetailsResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageGetPublishedFileDetailsResult_t_CallResult func); [DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult")] public static extern ulong CRemoteStorageGetPublishedFileDetailsResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_AddUGCDependencyResult_t_CallResult(AddUGCDependencyResult_t pAddUGCDependencyResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CAddUGCDependencyResult_t_SetCallResult")] +public static extern ulong CAddUGCDependencyResult_t_SetCallResult(ulong hAPICall, SteamAPI_AddUGCDependencyResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CAddUGCDependencyResult_t_RemoveCallResult")] +public static extern ulong CAddUGCDependencyResult_t_RemoveCallResult(ulong handle); public delegate void SteamAPI_RemoteStorageDownloadUGCResult_t_CallResult(RemoteStorageDownloadUGCResult_t pRemoteStorageDownloadUGCResult_t, bool bIOFailure); [DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageDownloadUGCResult_t_SetCallResult")] public static extern ulong CRemoteStorageDownloadUGCResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageDownloadUGCResult_t_CallResult func); @@ -1523,6 +1549,11 @@ public delegate void SteamAPI_RemoteStorageEnumerateWorkshopFilesResult_t_CallRe public static extern ulong CRemoteStorageEnumerateWorkshopFilesResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoteStorageEnumerateWorkshopFilesResult_t_CallResult func); [DllImportAttribute("Steam_api", EntryPoint = "CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult")] public static extern ulong CRemoteStorageEnumerateWorkshopFilesResult_t_RemoveCallResult(ulong handle); +public delegate void SteamAPI_RemoveUGCDependencyResult_t_CallResult(RemoveUGCDependencyResult_t pRemoveUGCDependencyResult_t, bool bIOFailure); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoveUGCDependencyResult_t_SetCallResult")] +public static extern ulong CRemoveUGCDependencyResult_t_SetCallResult(ulong hAPICall, SteamAPI_RemoveUGCDependencyResult_t_CallResult func); +[DllImportAttribute("Steam_api", EntryPoint = "CRemoveUGCDependencyResult_t_RemoveCallResult")] +public static extern ulong CRemoveUGCDependencyResult_t_RemoveCallResult(ulong handle); public delegate void SteamAPI_GSReputation_t_CallResult(GSReputation_t pGSReputation_t, bool bIOFailure); [DllImportAttribute("Steam_api", EntryPoint = "CGSReputation_t_SetCallResult")] public static extern ulong CGSReputation_t_SetCallResult(ulong hAPICall, SteamAPI_GSReputation_t_CallResult func); @@ -1671,8 +1702,8 @@ namespace Valve.Steamworks public abstract bool GetUserDataFolder(string pchBuffer,int cubBuffer); public abstract void StartVoiceRecording(); public abstract void StopVoiceRecording(); - public abstract uint GetAvailableVoice(ref uint pcbCompressed,ref uint pcbUncompressed,uint nUncompressedVoiceDesiredSampleRate); - public abstract uint GetVoice(bool bWantCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,bool bWantUncompressed,IntPtr pUncompressedDestBuffer,uint cbUncompressedDestBufferSize,ref uint nUncompressBytesWritten,uint nUncompressedVoiceDesiredSampleRate); + public abstract uint GetAvailableVoice(ref uint pcbCompressed,ref uint pcbUncompressed_Deprecated,uint nUncompressedVoiceDesiredSampleRate_Deprecated); + public abstract uint GetVoice(bool bWantCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,bool bWantUncompressed_Deprecated,IntPtr pUncompressedDestBuffer_Deprecated,uint cbUncompressedDestBufferSize_Deprecated,ref uint nUncompressBytesWritten_Deprecated,uint nUncompressedVoiceDesiredSampleRate_Deprecated); public abstract uint DecompressVoice(IntPtr pCompressed,uint cbCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,uint nDesiredSampleRate); public abstract uint GetVoiceOptimalSampleRate(); public abstract uint GetAuthSessionTicket(IntPtr pTicket,int cbMaxTicket,ref uint pcbTicket); @@ -1800,6 +1831,8 @@ namespace Valve.Steamworks public abstract void SetOverlayNotificationInset(int nHorizontalInset,int nVerticalInset); public abstract bool IsSteamInBigPictureMode(); public abstract void StartVRDashboard(); + public abstract bool IsVRHeadsetStreamingEnabled(); + public abstract void SetVRHeadsetStreamingEnabled(bool bEnabled); } @@ -2243,6 +2276,7 @@ namespace Valve.Steamworks public abstract bool SetReturnChildren(ulong handle,bool bReturnChildren); public abstract bool SetReturnAdditionalPreviews(ulong handle,bool bReturnAdditionalPreviews); public abstract bool SetReturnTotalOnly(ulong handle,bool bReturnTotalOnly); + public abstract bool SetReturnPlaytimeStats(ulong handle,uint unDays); public abstract bool SetLanguage(ulong handle,string pchLanguage); public abstract bool SetAllowCachedResponse(ulong handle,uint unMaxAgeSeconds); public abstract bool SetCloudFileNameFilter(ulong handle,string pMatchCloudFileName); @@ -2287,6 +2321,8 @@ namespace Valve.Steamworks public abstract ulong StartPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs); public abstract ulong StopPlaytimeTracking(ref ulong pvecPublishedFileID,uint unNumPublishedFileIDs); public abstract ulong StopPlaytimeTrackingForAllItems(); + public abstract ulong AddDependency(ulong nParentPublishedFileID,ulong nChildPublishedFileID); + public abstract ulong RemoveDependency(ulong nParentPublishedFileID,ulong nChildPublishedFileID); } @@ -2347,6 +2383,7 @@ namespace Valve.Steamworks public abstract IntPtr GetIntPtr(); public abstract uint GetResultStatus(int resultHandle); public abstract bool GetResultItems(int resultHandle,out SteamItemDetails_t [] pOutItemsArray); + public abstract bool GetResultItemProperty(int resultHandle,uint unItemIndex,string pchPropertyName,out string pchValueBuffer); public abstract uint GetResultTimestamp(int resultHandle); public abstract bool CheckResultSteamID(int resultHandle,ulong steamIDExpected); public abstract void DestroyResult(int resultHandle); @@ -2377,6 +2414,8 @@ namespace Valve.Steamworks public abstract IntPtr GetIntPtr(); public abstract void GetVideoURL(uint unVideoAppID); public abstract bool IsBroadcasting(ref int pnNumViewers); + public abstract void GetOPFSettings(uint unVideoAppID); + public abstract bool GetOPFStringForApp(uint unVideoAppID,string pchBuffer,ref int pnBufferSize); } @@ -2723,20 +2762,20 @@ public override void StopVoiceRecording() CheckIfUsable(); NativeEntrypoints.SteamAPI_ISteamUser_StopVoiceRecording(m_pSteamUser); } -public override uint GetAvailableVoice(ref uint pcbCompressed,ref uint pcbUncompressed,uint nUncompressedVoiceDesiredSampleRate) +public override uint GetAvailableVoice(ref uint pcbCompressed,ref uint pcbUncompressed_Deprecated,uint nUncompressedVoiceDesiredSampleRate_Deprecated) { CheckIfUsable(); pcbCompressed = 0; - pcbUncompressed = 0; - uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetAvailableVoice(m_pSteamUser,ref pcbCompressed,ref pcbUncompressed,nUncompressedVoiceDesiredSampleRate); + pcbUncompressed_Deprecated = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetAvailableVoice(m_pSteamUser,ref pcbCompressed,ref pcbUncompressed_Deprecated,nUncompressedVoiceDesiredSampleRate_Deprecated); return result; } -public override uint GetVoice(bool bWantCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,bool bWantUncompressed,IntPtr pUncompressedDestBuffer,uint cbUncompressedDestBufferSize,ref uint nUncompressBytesWritten,uint nUncompressedVoiceDesiredSampleRate) +public override uint GetVoice(bool bWantCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,bool bWantUncompressed_Deprecated,IntPtr pUncompressedDestBuffer_Deprecated,uint cbUncompressedDestBufferSize_Deprecated,ref uint nUncompressBytesWritten_Deprecated,uint nUncompressedVoiceDesiredSampleRate_Deprecated) { CheckIfUsable(); nBytesWritten = 0; - nUncompressBytesWritten = 0; - uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetVoice(m_pSteamUser,bWantCompressed,pDestBuffer,cbDestBufferSize,ref nBytesWritten,bWantUncompressed,pUncompressedDestBuffer,cbUncompressedDestBufferSize,ref nUncompressBytesWritten,nUncompressedVoiceDesiredSampleRate); + nUncompressBytesWritten_Deprecated = 0; + uint result = NativeEntrypoints.SteamAPI_ISteamUser_GetVoice(m_pSteamUser,bWantCompressed,pDestBuffer,cbDestBufferSize,ref nBytesWritten,bWantUncompressed_Deprecated,pUncompressedDestBuffer_Deprecated,cbUncompressedDestBufferSize_Deprecated,ref nUncompressBytesWritten_Deprecated,nUncompressedVoiceDesiredSampleRate_Deprecated); return result; } public override uint DecompressVoice(IntPtr pCompressed,uint cbCompressed,IntPtr pDestBuffer,uint cbDestBufferSize,ref uint nBytesWritten,uint nDesiredSampleRate) @@ -3470,6 +3509,17 @@ public override void StartVRDashboard() CheckIfUsable(); NativeEntrypoints.SteamAPI_ISteamUtils_StartVRDashboard(m_pSteamUtils); } +public override bool IsVRHeadsetStreamingEnabled() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsVRHeadsetStreamingEnabled(m_pSteamUtils); + return result; +} +public override void SetVRHeadsetStreamingEnabled(bool bEnabled) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUtils_SetVRHeadsetStreamingEnabled(m_pSteamUtils,bEnabled); +} } @@ -5894,6 +5944,12 @@ public override bool SetReturnTotalOnly(ulong handle,bool bReturnTotalOnly) bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnTotalOnly(m_pSteamUGC,handle,bReturnTotalOnly); return result; } +public override bool SetReturnPlaytimeStats(ulong handle,uint unDays) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_SetReturnPlaytimeStats(m_pSteamUGC,handle,unDays); + return result; +} public override bool SetLanguage(ulong handle,string pchLanguage) { CheckIfUsable(); @@ -6168,6 +6224,18 @@ public override ulong StopPlaytimeTrackingForAllItems() ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_StopPlaytimeTrackingForAllItems(m_pSteamUGC); return result; } +public override ulong AddDependency(ulong nParentPublishedFileID,ulong nChildPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_AddDependency(m_pSteamUGC,nParentPublishedFileID,nChildPublishedFileID); + return result; +} +public override ulong RemoveDependency(ulong nParentPublishedFileID,ulong nChildPublishedFileID) +{ + CheckIfUsable(); + ulong result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveDependency(m_pSteamUGC,nParentPublishedFileID,nChildPublishedFileID); + return result; +} } @@ -6452,6 +6520,16 @@ public override bool GetResultItems(int resultHandle,out SteamItemDetails_t [] p result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultItems(m_pSteamInventory,resultHandle,pOutItemsArray,ref punOutItemsArraySize); return result; } +public override bool GetResultItemProperty(int resultHandle,uint unItemIndex,string pchPropertyName,out string pchValueBuffer) +{ + CheckIfUsable(); + uint punValueBufferSizeOut = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultItemProperty(m_pSteamInventory,resultHandle,unItemIndex,pchPropertyName,null,ref punValueBufferSizeOut); + System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder((int)punValueBufferSizeOut); + result = NativeEntrypoints.SteamAPI_ISteamInventory_GetResultItemProperty(m_pSteamInventory,resultHandle,unItemIndex,pchPropertyName,pStrBuffer1,ref punValueBufferSizeOut); + pchValueBuffer = pStrBuffer1.ToString(); + return result; +} public override uint GetResultTimestamp(int resultHandle) { CheckIfUsable(); @@ -6637,6 +6715,18 @@ public override bool IsBroadcasting(ref int pnNumViewers) bool result = NativeEntrypoints.SteamAPI_ISteamVideo_IsBroadcasting(m_pSteamVideo,ref pnNumViewers); return result; } +public override void GetOPFSettings(uint unVideoAppID) +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamVideo_GetOPFSettings(m_pSteamVideo,unVideoAppID); +} +public override bool GetOPFStringForApp(uint unVideoAppID,string pchBuffer,ref int pnBufferSize) +{ + CheckIfUsable(); + pnBufferSize = 0; + bool result = NativeEntrypoints.SteamAPI_ISteamVideo_GetOPFStringForApp(m_pSteamVideo,unVideoAppID,pchBuffer,ref pnBufferSize); + return result; +} } @@ -7004,6 +7094,26 @@ public class CUserStatsReceived_t_Callback m_Handle = Valve.Interop.NativeEntrypoints.CUserStatsReceived_t_SetCallback(func); } } +public class CGetOPFSettingsResult_t_Callback +{ + public CGetOPFSettingsResult_t_Callback() { } + ~CGetOPFSettingsResult_t_Callback() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGetOPFSettingsResult_t_RemoveCallback(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(Valve.Interop.NativeEntrypoints.SteamAPI_GetOPFSettingsResult_t_Callback func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CGetOPFSettingsResult_t_RemoveCallback(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CGetOPFSettingsResult_t_SetCallback(func); + } +} public class CRemoteStorageFileReadAsyncComplete_t_CallResult { public CRemoteStorageFileReadAsyncComplete_t_CallResult() { } @@ -7284,6 +7394,26 @@ public class CRemoteStorageGetPublishedFileDetailsResult_t_CallResult m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageGetPublishedFileDetailsResult_t_SetCallResult(hAPICall, func); } } +public class CAddUGCDependencyResult_t_CallResult +{ + public CAddUGCDependencyResult_t_CallResult() { } + ~CAddUGCDependencyResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CAddUGCDependencyResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_AddUGCDependencyResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CAddUGCDependencyResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CAddUGCDependencyResult_t_SetCallResult(hAPICall, func); + } +} public class CRemoteStorageDownloadUGCResult_t_CallResult { public CRemoteStorageDownloadUGCResult_t_CallResult() { } @@ -7704,6 +7834,26 @@ public class CRemoteStorageEnumerateWorkshopFilesResult_t_CallResult m_Handle = Valve.Interop.NativeEntrypoints.CRemoteStorageEnumerateWorkshopFilesResult_t_SetCallResult(hAPICall, func); } } +public class CRemoveUGCDependencyResult_t_CallResult +{ + public CRemoveUGCDependencyResult_t_CallResult() { } + ~CRemoveUGCDependencyResult_t_CallResult() + { + if(m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoveUGCDependencyResult_t_RemoveCallResult(m_Handle); + } + } + ulong m_Handle = 0; + public void Set(ulong hAPICall, Valve.Interop.NativeEntrypoints.SteamAPI_RemoveUGCDependencyResult_t_CallResult func) + { + if (m_Handle != 0) + { + Valve.Interop.NativeEntrypoints.CRemoveUGCDependencyResult_t_RemoveCallResult(m_Handle); + } + m_Handle = Valve.Interop.NativeEntrypoints.CRemoveUGCDependencyResult_t_SetCallResult(hAPICall, func); + } +} public class CGSReputation_t_CallResult { public CGSReputation_t_CallResult() { } @@ -8249,6 +8399,8 @@ public enum EResult k_EResultInvalidItemType = 104, k_EResultIPBanned = 105, k_EResultGSLTExpired = 106, + k_EResultInsufficientFunds = 107, + k_EResultTooManyPending = 108, } public enum EVoiceResult { @@ -8354,6 +8506,7 @@ public enum EAppOwnershipFlags k_EAppOwnershipFlags_PendingGift = 32768, k_EAppOwnershipFlags_RentalNotActivated = 65536, k_EAppOwnershipFlags_Rental = 131072, + k_EAppOwnershipFlags_SiteLicense = 262144, } public enum EAppType { @@ -8880,7 +9033,8 @@ public enum EControllerSourceMode k_EControllerSourceMode_MouseJoystick = 12, k_EControllerSourceMode_MouseRegion = 13, k_EControllerSourceMode_RadialMenu = 14, - k_EControllerSourceMode_Switches = 15, + k_EControllerSourceMode_SingleButton = 15, + k_EControllerSourceMode_Switches = 16, } public enum EControllerActionOrigin { @@ -9040,37 +9194,47 @@ public enum EControllerActionOrigin k_EControllerActionOrigin_SteamV2_RightBumper = 153, k_EControllerActionOrigin_SteamV2_LeftGrip = 154, k_EControllerActionOrigin_SteamV2_RightGrip = 155, - k_EControllerActionOrigin_SteamV2_Start = 156, - k_EControllerActionOrigin_SteamV2_Back = 157, - k_EControllerActionOrigin_SteamV2_LeftPad_Touch = 158, - k_EControllerActionOrigin_SteamV2_LeftPad_Swipe = 159, - k_EControllerActionOrigin_SteamV2_LeftPad_Click = 160, - k_EControllerActionOrigin_SteamV2_LeftPad_DPadNorth = 161, - k_EControllerActionOrigin_SteamV2_LeftPad_DPadSouth = 162, - k_EControllerActionOrigin_SteamV2_LeftPad_DPadWest = 163, - k_EControllerActionOrigin_SteamV2_LeftPad_DPadEast = 164, - k_EControllerActionOrigin_SteamV2_RightPad_Touch = 165, - k_EControllerActionOrigin_SteamV2_RightPad_Swipe = 166, - k_EControllerActionOrigin_SteamV2_RightPad_Click = 167, - k_EControllerActionOrigin_SteamV2_RightPad_DPadNorth = 168, - k_EControllerActionOrigin_SteamV2_RightPad_DPadSouth = 169, - k_EControllerActionOrigin_SteamV2_RightPad_DPadWest = 170, - k_EControllerActionOrigin_SteamV2_RightPad_DPadEast = 171, - k_EControllerActionOrigin_SteamV2_LeftTrigger_Pull = 172, - k_EControllerActionOrigin_SteamV2_LeftTrigger_Click = 173, - k_EControllerActionOrigin_SteamV2_RightTrigger_Pull = 174, - k_EControllerActionOrigin_SteamV2_RightTrigger_Click = 175, - k_EControllerActionOrigin_SteamV2_LeftStick_Move = 176, - k_EControllerActionOrigin_SteamV2_LeftStick_Click = 177, - k_EControllerActionOrigin_SteamV2_LeftStick_DPadNorth = 178, - k_EControllerActionOrigin_SteamV2_LeftStick_DPadSouth = 179, - k_EControllerActionOrigin_SteamV2_LeftStick_DPadWest = 180, - k_EControllerActionOrigin_SteamV2_LeftStick_DPadEast = 181, - k_EControllerActionOrigin_SteamV2_Gyro_Move = 182, - k_EControllerActionOrigin_SteamV2_Gyro_Pitch = 183, - k_EControllerActionOrigin_SteamV2_Gyro_Yaw = 184, - k_EControllerActionOrigin_SteamV2_Gyro_Roll = 185, - k_EControllerActionOrigin_Count = 186, + k_EControllerActionOrigin_SteamV2_LeftGrip_Upper = 156, + k_EControllerActionOrigin_SteamV2_RightGrip_Upper = 157, + k_EControllerActionOrigin_SteamV2_LeftBumper_Pressure = 158, + k_EControllerActionOrigin_SteamV2_RightBumper_Pressure = 159, + k_EControllerActionOrigin_SteamV2_LeftGrip_Pressure = 160, + k_EControllerActionOrigin_SteamV2_RightGrip_Pressure = 161, + k_EControllerActionOrigin_SteamV2_LeftGrip_Upper_Pressure = 162, + k_EControllerActionOrigin_SteamV2_RightGrip_Upper_Pressure = 163, + k_EControllerActionOrigin_SteamV2_Start = 164, + k_EControllerActionOrigin_SteamV2_Back = 165, + k_EControllerActionOrigin_SteamV2_LeftPad_Touch = 166, + k_EControllerActionOrigin_SteamV2_LeftPad_Swipe = 167, + k_EControllerActionOrigin_SteamV2_LeftPad_Click = 168, + k_EControllerActionOrigin_SteamV2_LeftPad_Pressure = 169, + k_EControllerActionOrigin_SteamV2_LeftPad_DPadNorth = 170, + k_EControllerActionOrigin_SteamV2_LeftPad_DPadSouth = 171, + k_EControllerActionOrigin_SteamV2_LeftPad_DPadWest = 172, + k_EControllerActionOrigin_SteamV2_LeftPad_DPadEast = 173, + k_EControllerActionOrigin_SteamV2_RightPad_Touch = 174, + k_EControllerActionOrigin_SteamV2_RightPad_Swipe = 175, + k_EControllerActionOrigin_SteamV2_RightPad_Click = 176, + k_EControllerActionOrigin_SteamV2_RightPad_Pressure = 177, + k_EControllerActionOrigin_SteamV2_RightPad_DPadNorth = 178, + k_EControllerActionOrigin_SteamV2_RightPad_DPadSouth = 179, + k_EControllerActionOrigin_SteamV2_RightPad_DPadWest = 180, + k_EControllerActionOrigin_SteamV2_RightPad_DPadEast = 181, + k_EControllerActionOrigin_SteamV2_LeftTrigger_Pull = 182, + k_EControllerActionOrigin_SteamV2_LeftTrigger_Click = 183, + k_EControllerActionOrigin_SteamV2_RightTrigger_Pull = 184, + k_EControllerActionOrigin_SteamV2_RightTrigger_Click = 185, + k_EControllerActionOrigin_SteamV2_LeftStick_Move = 186, + k_EControllerActionOrigin_SteamV2_LeftStick_Click = 187, + k_EControllerActionOrigin_SteamV2_LeftStick_DPadNorth = 188, + k_EControllerActionOrigin_SteamV2_LeftStick_DPadSouth = 189, + k_EControllerActionOrigin_SteamV2_LeftStick_DPadWest = 190, + k_EControllerActionOrigin_SteamV2_LeftStick_DPadEast = 191, + k_EControllerActionOrigin_SteamV2_Gyro_Move = 192, + k_EControllerActionOrigin_SteamV2_Gyro_Pitch = 193, + k_EControllerActionOrigin_SteamV2_Gyro_Yaw = 194, + k_EControllerActionOrigin_SteamV2_Gyro_Roll = 195, + k_EControllerActionOrigin_Count = 196, } public enum ESteamControllerLEDFlag { @@ -9170,6 +9334,8 @@ public enum EItemStatistic k_EItemStatistic_NumSecondsPlayed = 8, k_EItemStatistic_NumPlaytimeSessions = 9, k_EItemStatistic_NumComments = 10, + k_EItemStatistic_NumSecondsPlayedDuringTimePeriod = 11, + k_EItemStatistic_NumPlaytimeSessionsDuringTimePeriod = 12, } public enum EItemPreviewType { @@ -10149,6 +10315,18 @@ public enum ESteamItemFlags { public EResult m_eResult; } +[StructLayout(LayoutKind.Sequential)] public struct AddUGCDependencyResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + public ulong m_nChildPublishedFileId; +} +[StructLayout(LayoutKind.Sequential)] public struct RemoveUGCDependencyResult_t +{ + public EResult m_eResult; + public ulong m_nPublishedFileId; + public ulong m_nChildPublishedFileId; +} [StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t { public uint m_nAppID; @@ -10346,6 +10524,11 @@ public enum ESteamItemFlags [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string m_rgchURL; //char[256] } +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t +{ + public EResult m_eResult; + public uint m_unVideoAppID; +} [StructLayout(LayoutKind.Sequential)] public struct CSteamAPIContext { public IntPtr m_pSteamClient; // class ISteamClient * diff --git a/public/steam/steam_gameserver.h b/public/steam/steam_gameserver.h index f2d2847..c6bdd52 100644 --- a/public/steam/steam_gameserver.h +++ b/public/steam/steam_gameserver.h @@ -51,11 +51,15 @@ inline void SteamGameServer_ReleaseCurrentThreadMemory(); S_API bool SteamGameServer_BSecure(); S_API uint64 SteamGameServer_GetSteamID(); -// If your application contains modules which could be built against different Steamworks SDK -// versions, then you should define VERSION_SAFE_STEAM_API_INTERFACES to enforce that you cannot -// use the version-less global accessors. Instead, create and use CSteamGameServerAPIContext -// objects to retrieve interface pointers which are appropriate for your Steamworks SDK headers. -#if !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) + +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +// Global accessors for game server C++ APIs. See individual isteam*.h files for details. +// You should not cache the results of these accessors or pass the result pointers across +// modules! Different modules may be compiled against different SDK header versions, and +// the interface pointers could therefore be different across modules. Every line of code +// which calls into a Steamworks API should retrieve the interface from a global accessor. +//----------------------------------------------------------------------------------------------------------------------------------------------------------// +#if !defined( STEAM_API_EXPORTS ) inline ISteamClient *SteamGameServerClient(); inline ISteamGameServer *SteamGameServer(); inline ISteamUtils *SteamGameServerUtils(); @@ -130,33 +134,35 @@ S_API HSteamUser S_CALLTYPE SteamGameServer_GetHSteamUser(); S_API bool S_CALLTYPE SteamInternal_GameServer_Init( uint32 unIP, uint16 usPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); -#if !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) +#if !defined( STEAM_API_EXPORTS ) +inline void S_CALLTYPE SteamGameServerInternal_OnContextInit( void* p ) +{ + ((CSteamGameServerAPIContext*)p)->Clear(); + if ( SteamGameServer_GetHSteamPipe() ) + ((CSteamGameServerAPIContext*)p)->Init(); +} inline CSteamGameServerAPIContext& SteamGameServerInternal_ModuleContext() { + // SteamInternal_ContextInit takes a base pointer for the equivalent of + // struct { void (*pFn)(void* pCtx); uintp counter; CSteamAPIContext ctx; } + // Do not change layout of 2 + sizeof... or add non-pointer aligned data! // NOTE: declaring "static CSteamAPIConext" creates a large function // which queries the initialization status of the object. We know that // it is pointer-aligned and fully memset with zeros, so just alias a // static buffer of the appropriate size and call it a CSteamAPIContext. - static void* ctx[ sizeof(CSteamGameServerAPIContext)/sizeof(void*) ]; - return *(CSteamGameServerAPIContext*)ctx; + static void* s_CallbackCounterAndContext[2 + sizeof( CSteamGameServerAPIContext ) / sizeof( void* )] = { (void*)&SteamGameServerInternal_OnContextInit, 0 }; + return *(CSteamGameServerAPIContext*)SteamInternal_ContextInit( s_CallbackCounterAndContext ); } -#define _STEAMINTERNAL_ACCESSOR_BODY( AccessFunc ) \ - if ( !SteamGameServer_GetHSteamPipe() ) return 0; \ - CSteamGameServerAPIContext &ctx = SteamGameServerInternal_ModuleContext(); \ - if ( !ctx.AccessFunc() ) ctx.Init(); \ - return ctx.AccessFunc(); - -inline ISteamClient *SteamGameServerClient() { _STEAMINTERNAL_ACCESSOR_BODY( SteamClient ) } -inline ISteamGameServer *SteamGameServer() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServer ) } -inline ISteamUtils *SteamGameServerUtils() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServerUtils ) } -inline ISteamNetworking *SteamGameServerNetworking() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServerNetworking ) } -inline ISteamGameServerStats *SteamGameServerStats() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServerStats ) } -inline ISteamHTTP *SteamGameServerHTTP() { _STEAMINTERNAL_ACCESSOR_BODY( SteamHTTP ) } -inline ISteamInventory *SteamGameServerInventory() { _STEAMINTERNAL_ACCESSOR_BODY( SteamInventory ) } -inline ISteamUGC *SteamGameServerUGC() { _STEAMINTERNAL_ACCESSOR_BODY( SteamUGC ) } -inline ISteamApps *SteamGameServerApps() { _STEAMINTERNAL_ACCESSOR_BODY( SteamApps ) } -#undef _STEAMINTERNAL_ACCESSOR_BODY -#endif // !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) +inline ISteamClient *SteamGameServerClient() { return SteamGameServerInternal_ModuleContext().SteamClient(); } +inline ISteamGameServer *SteamGameServer() { return SteamGameServerInternal_ModuleContext().SteamGameServer(); } +inline ISteamUtils *SteamGameServerUtils() { return SteamGameServerInternal_ModuleContext().SteamGameServerUtils(); } +inline ISteamNetworking *SteamGameServerNetworking() { return SteamGameServerInternal_ModuleContext().SteamGameServerNetworking(); } +inline ISteamGameServerStats *SteamGameServerStats() { return SteamGameServerInternal_ModuleContext().SteamGameServerStats(); } +inline ISteamHTTP *SteamGameServerHTTP() { return SteamGameServerInternal_ModuleContext().SteamHTTP(); } +inline ISteamInventory *SteamGameServerInventory() { return SteamGameServerInternal_ModuleContext().SteamInventory(); } +inline ISteamUGC *SteamGameServerUGC() { return SteamGameServerInternal_ModuleContext().SteamUGC(); } +inline ISteamApps *SteamGameServerApps() { return SteamGameServerInternal_ModuleContext().SteamApps(); } +#endif // !defined( STEAM_API_EXPORTS ) inline void CSteamGameServerAPIContext::Clear() diff --git a/public/steam/steamclientpublic.h b/public/steam/steamclientpublic.h index 56367d6..23b7581 100644 --- a/public/steam/steamclientpublic.h +++ b/public/steam/steamclientpublic.h @@ -131,6 +131,8 @@ enum EResult k_EResultInvalidItemType = 104, // the type of thing we were requested to act on is invalid k_EResultIPBanned = 105, // the ip address has been banned from taking this action k_EResultGSLTExpired = 106, // this token has expired from disuse; can be reset for use + k_EResultInsufficientFunds = 107, // user doesn't have enough wallet funds to complete the action + k_EResultTooManyPending = 108, // There are too many of this thing pending already }; // Error codes for use with the voice functions @@ -267,6 +269,7 @@ enum EAppOwnershipFlags k_EAppOwnershipFlags_PendingGift = 0x8000, // user has pending gift to redeem k_EAppOwnershipFlags_RentalNotActivated = 0x10000, // Rental hasn't been activated yet k_EAppOwnershipFlags_Rental = 0x20000, // Is a rental + k_EAppOwnershipFlags_SiteLicense = 0x40000, // Is from a site license }; diff --git a/redistributable_bin/linux32/libsteam_api.so b/redistributable_bin/linux32/libsteam_api.so index dc38abd..a94d026 100644 Binary files a/redistributable_bin/linux32/libsteam_api.so and b/redistributable_bin/linux32/libsteam_api.so differ diff --git a/redistributable_bin/linux64/libsteam_api.so b/redistributable_bin/linux64/libsteam_api.so index e8e706d..e086140 100644 Binary files a/redistributable_bin/linux64/libsteam_api.so and b/redistributable_bin/linux64/libsteam_api.so differ diff --git a/redistributable_bin/osx32/libsteam_api.dylib b/redistributable_bin/osx32/libsteam_api.dylib index 9975672..851ec3d 100644 Binary files a/redistributable_bin/osx32/libsteam_api.dylib and b/redistributable_bin/osx32/libsteam_api.dylib differ diff --git a/redistributable_bin/steam_api.dll b/redistributable_bin/steam_api.dll index 52171b1..e62639a 100644 Binary files a/redistributable_bin/steam_api.dll and b/redistributable_bin/steam_api.dll differ diff --git a/redistributable_bin/steam_api.lib b/redistributable_bin/steam_api.lib index 89430a6..c188c64 100644 Binary files a/redistributable_bin/steam_api.lib and b/redistributable_bin/steam_api.lib differ diff --git a/redistributable_bin/win64/steam_api64.dll b/redistributable_bin/win64/steam_api64.dll index 39e0b99..3398d35 100644 Binary files a/redistributable_bin/win64/steam_api64.dll and b/redistributable_bin/win64/steam_api64.dll differ diff --git a/redistributable_bin/win64/steam_api64.lib b/redistributable_bin/win64/steam_api64.lib index 03cc0b7..5de4088 100644 Binary files a/redistributable_bin/win64/steam_api64.lib and b/redistributable_bin/win64/steam_api64.lib differ diff --git a/tools/SteamPipeGUI.zip b/tools/SteamPipeGUI.zip new file mode 100644 index 0000000..5aa971e Binary files /dev/null and b/tools/SteamPipeGUI.zip differ diff --git a/tools/drm/drmtoolp.exe b/tools/drm/drmtoolp.exe index 50f0bc0..0f5d096 100644 Binary files a/tools/drm/drmtoolp.exe and b/tools/drm/drmtoolp.exe differ diff --git a/tools/drm/ubuntu12_32/drmtoolp b/tools/drm/ubuntu12_32/drmtoolp index 441c562..a02517d 100644 Binary files a/tools/drm/ubuntu12_32/drmtoolp and b/tools/drm/ubuntu12_32/drmtoolp differ diff --git a/tools/drm/ubuntu12_32/drmunpackp.so b/tools/drm/ubuntu12_32/drmunpackp.so index bc24a00..09ad039 100644 Binary files a/tools/drm/ubuntu12_32/drmunpackp.so and b/tools/drm/ubuntu12_32/drmunpackp.so differ diff --git a/tools/drm/ubuntu12_32/steamdrmp.so b/tools/drm/ubuntu12_32/steamdrmp.so index 093902e..99ef4c2 100644 Binary files a/tools/drm/ubuntu12_32/steamdrmp.so and b/tools/drm/ubuntu12_32/steamdrmp.so differ diff --git a/tools/drm/ubuntu12_64/drmtoolp b/tools/drm/ubuntu12_64/drmtoolp index c50c745..e9a31e7 100644 Binary files a/tools/drm/ubuntu12_64/drmtoolp and b/tools/drm/ubuntu12_64/drmtoolp differ diff --git a/tools/drm/ubuntu12_64/drmunpackp.so b/tools/drm/ubuntu12_64/drmunpackp.so index 86ae37b..9bf777f 100644 Binary files a/tools/drm/ubuntu12_64/drmunpackp.so and b/tools/drm/ubuntu12_64/drmunpackp.so differ diff --git a/tools/drm/ubuntu12_64/steamdrmp.so b/tools/drm/ubuntu12_64/steamdrmp.so index 631bef8..4fabd19 100644 Binary files a/tools/drm/ubuntu12_64/steamdrmp.so and b/tools/drm/ubuntu12_64/steamdrmp.so differ