This commit is contained in:
Riley Labrecque
2014-01-29 13:52:02 +02:00
parent be51d31d42
commit 606bc833ce
73 changed files with 361 additions and 53 deletions
+39 -10
View File
@@ -11,32 +11,59 @@ website at: http://partner.steamgames.com
Revision History:
----------------------------------------------------------------
v1.20 30th August 2012
----------------------------------------------------------------
SteamPipe
* Added local server and builder tools for new content system.
Mac
* OSX Supports 64 bit build targets.
* Spacewar has been updated to be buildable as a 64 bit OSX sample application.
Friends
* Added a callback for the result of ISteamFriends::SetPersonaName().
* Changed ISteamFriends::ActivateGameOverlayToStore() to take an additional parameter so app can be directly added to the cart.
Cloud
* Added ISteamRemoteStorage::FileWriteStreamOpen(), FileWriteStreamWriteChunk(), FileWriteStreamClose() and FileWriteStreamCancel() for streaming operations.
* Changed parameters to ISteamRemoteStorage::PublisheVideo().
* Added file type to ISteamRemoteStorage::GetPublishedFileDetails() callback result (RemoteStorageGetPublishedFileDetailsResult_t).
* Added a callback to indicate that a published file that a user owns was deleted (RemoteStoragePublishedFileDeleted_t).
ISteamUserStats
* Added ISteamUserStats::GetNumAchievements() and ISteamUserStats::GetAchievementName().
----------------------------------------------------------------
v1.19 22nd March 2012
----------------------------------------------------------------
Friends
* Added ISteamFriends::GetFollowerCount()
* Added ISteamFriends::IsFollowing()
* Added ISteamFriends::EnumerateFollowingList()
Cloud
*Added ISteamRemoteStorage::UpdatePublishedFileSetChangeDescription()
*Added ISteamRemoteStorage::GetPublishedItemVoteDetails()
*Added ISteamRemoteStorage::UpdateUserPublishedItemVote()
*Added ISteamRemoteStorage::GetUserPublishedItemVoteDetails()
*Added ISteamRemoteStorage::EnumerateUserSharedWorkshopFiles()
*Added ISteamRemoteStorage::PublishVideo()
*Added ISteamRemoteStorage::SetUserPublishedFileAction()
*Added ISteamRemoteStorage::EnumeratePublishedFilesByUserAction()
*Added ISteamRemoteStorage::EnumeratePublishedWorkshopFiles()
* Added ISteamRemoteStorage::UpdatePublishedFileSetChangeDescription()
* Added ISteamRemoteStorage::GetPublishedItemVoteDetails()
* Added ISteamRemoteStorage::UpdateUserPublishedItemVote()
* Added ISteamRemoteStorage::GetUserPublishedItemVoteDetails()
* Added ISteamRemoteStorage::EnumerateUserSharedWorkshopFiles()
* Added ISteamRemoteStorage::PublishVideo()
* Added ISteamRemoteStorage::SetUserPublishedFileAction()
* Added ISteamRemoteStorage::EnumeratePublishedFilesByUserAction()
* Added ISteamRemoteStorage::EnumeratePublishedWorkshopFiles()
ISteamGameServer
*Updated callback for SteamGameServer::ComputeNewPlayerCompatibility to include the steam id the compatibility was calculated for
* Updated callback for SteamGameServer::ComputeNewPlayerCompatibility to include the steam id the compatibility was calculated for
----------------------------------------------------------------
v1.18 7th February 2012
----------------------------------------------------------------
Cloud
* Removed ISteamRemoteStorage::PublishFile() and consolidated the API to PublishWorkshopFile()
* Updated ISteamRemoteStorage::PublishWorkshopFile() to better define the type of workshop file being published
@@ -51,6 +78,7 @@ Apps:
----------------------------------------------------------------
v1.17 2nd November 2011
----------------------------------------------------------------
Cloud
* Added ISteamRemoteStorage::PublishFile(), PublishWorkshopFile(), UpdatePublishedFile(), DeletePublishedFile() which enables sharing, updating, and unsharing of cloud content with the Steam community
* Added ISteamRemoteStorage::EnumerateUserPublishedFiles to enumerate content that a user has shared with the Steam community
@@ -77,6 +105,7 @@ Tools
----------------------------------------------------------------
v1.16 29th July 2011
----------------------------------------------------------------
HTTP
* added ISteamHTTP::SetHTTPRequestRawPostBody() to set the raw body of a POST request
Screenshots
BIN
View File
Binary file not shown.
+6 -6
View File
@@ -96,7 +96,7 @@ CGLMProgram::~CGLMProgram( )
GLMShaderDesc *glslDesc = &m_descs[kGLMGLSL];
if (glslDesc->m_object.glsl)
{
glDeleteShader( (uint)glslDesc->m_object.glsl ); // why do I need a cast here again ?
glDeleteShader( (uintptr_t)glslDesc->m_object.glsl ); // why do I need a cast here again ?
GLMCheckError();
glslDesc->m_object.glsl = 0;
}
@@ -516,7 +516,7 @@ struct GLMShaderLimitDesc
};
// macro to help make the table of what to check
#ifndef LMD( val, limit, flags )
#ifndef LMD
#define LMD( val, flags ) { GL_PROGRAM_##val##_ARB, GL_MAX_PROGRAM_##val##_ARB, #val, flags }
#else
#error you need to use a different name for this macro.
@@ -679,11 +679,11 @@ void CGLMProgram::LogSlow( EGLMProgramLang lang )
if (!desc->m_slowMark)
{
// log it
printf( "\n-------------- Slow %s ( CGLMProgram @ %08x, lang %s, name %d ) : \n%s \n",
printf( "\n-------------- Slow %s ( CGLMProgram @ %p, lang %s, name %d ) : \n%s \n",
m_type==kGLMVertexProgram ? "VS" : "FS",
this,
lang==kGLMGLSL ? "GLSL" : "ARB",
(int)(lang==kGLMGLSL ? (int)desc->m_object.glsl : (int)desc->m_object.arb),
(int)(uintptr_t)(lang==kGLMGLSL ? (uintptr_t)desc->m_object.glsl : (uintptr_t)desc->m_object.arb),
m_text
);
}
@@ -692,11 +692,11 @@ void CGLMProgram::LogSlow( EGLMProgramLang lang )
if ( (desc->m_slowMark & (desc->m_slowMark-1)) == 0 )
{
// short blurb
printf( "\n Slow %s ( CGLMProgram @ %08x, lang %s, name %d ) (%d times)",
printf( "\n Slow %s ( CGLMProgram @ %p, lang %s, name %d ) (%d times)",
m_type==kGLMVertexProgram ? "VS" : "FS",
this,
lang==kGLMGLSL ? "GLSL" : "ARB",
(int)(lang==kGLMGLSL ? (int)desc->m_object.glsl : (int)desc->m_object.arb),
(int)(lang==kGLMGLSL ? (uintptr_t)desc->m_object.glsl : (uintptr_t)desc->m_object.arb),
desc->m_slowMark+1
);
}
+8 -8
View File
@@ -6,7 +6,7 @@
#include "DX9AsmToGL2.h"
void Error( char *fmt, ... )
void Error( const char *fmt, ... )
{
}
@@ -168,7 +168,7 @@ void GetParamNameWithoutSwizzle( const char *pParam, char *pOut, int nOutLen )
// The test against ')' here is for stuff like vec4( gl_Normal, 0.0 ) - we want to treat that as a whole param name.
if ( pDot )
{
int nToCopy = std::min( nOutLen-1, pDot - pParam );
int nToCopy = std::min<ptrdiff_t>( nOutLen-1, pDot - pParam );
memcpy( pOut, pParam, nToCopy );
pOut[nToCopy] = 0;
}
@@ -317,7 +317,7 @@ bool D3DToGL::OpenIntrinsic( uint32 inst, char* buff, int nBufLen, uint32 destDi
case D3DSIO_SLT:
if ( nArgumentDimension == 1 )
{
V_snprintf( buff, nBufLen, "float( ", nArgumentDimension ); // lessThan doesn't have a scalar version
V_snprintf( buff, nBufLen, "float( " ); // lessThan doesn't have a scalar version
}
else
{
@@ -328,7 +328,7 @@ bool D3DToGL::OpenIntrinsic( uint32 inst, char* buff, int nBufLen, uint32 destDi
case D3DSIO_SGE:
if ( nArgumentDimension == 1 )
{
V_snprintf( buff, nBufLen, "float( ", nArgumentDimension ); // greaterThanEqual doesn't have a scalar version
V_snprintf( buff, nBufLen, "float( " ); // greaterThanEqual doesn't have a scalar version
}
else
{
@@ -1133,7 +1133,7 @@ void D3DToGL::PrintParameterToString ( uint32 dwToken, uint32 dwSourceOrDest, ch
{
Assert( dwRegNum == 0 );
V_snprintf( buff, sizeof( buff ), "va_r", dwRegNum );
V_snprintf( buff, sizeof( buff ), "va_r" );
}
else
{
@@ -1204,11 +1204,11 @@ void D3DToGL::PrintParameterToString ( uint32 dwToken, uint32 dwSourceOrDest, ch
{
if ( dwRegNum == 0 )
{
V_snprintf( buff, sizeof( buff ), "gl_FrontColor", dwRegNum );
V_snprintf( buff, sizeof( buff ), "gl_FrontColor" );
}
else if ( dwRegNum == 1 )
{
V_snprintf( buff, sizeof( buff ), "gl_FrontSecondaryColor", dwRegNum );
V_snprintf( buff, sizeof( buff ), "gl_FrontSecondaryColor" );
}
else
{
@@ -1527,7 +1527,7 @@ void D3DToGL::AddTokenHexCodeToBuffer( char *pBuffer, int nSize, int nLastStrlen
char szHex[512];
szHex[0] = '\n';
V_snprintf( &szHex[1], sizeof( szHex )-1, HEXCODE_HEADER );
int nTokens = std::min( 10, m_pdwNextToken - m_pRecordedInputTokenStart );
int nTokens = std::min<ptrdiff_t>( 10, m_pdwNextToken - m_pRecordedInputTokenStart );
for ( int i=0; i < nTokens; i++ )
{
char szTemp[32];
+1 -1
View File
@@ -102,7 +102,7 @@ private:
// Keep track of which temps are used so they can be declared
uint32 m_dwTempUsageMask;
bool m_bOutputColorRegister[2];
bool m_bOutputColorRegister[4];
bool m_bOutputDepthRegister;
// Declaration of integer and bool constants
+3 -3
View File
@@ -351,7 +351,7 @@ void GLMContext::DumpCaps( void )
#define dumpfield_hex( fff ) printf( "\n %-30s : 0x%08x", #fff, (int) m_caps.fff )
#define dumpfield_str( fff ) printf( "\n %-30s : %s", #fff, m_caps.fff )
printf("\n-------------------------------- context caps for context %08x", (uint)this);
printf("\n-------------------------------- context caps for context %p", this);
dumpfield( m_fullscreen );
dumpfield( m_accelerated );
@@ -3181,7 +3181,7 @@ void GLMContext::FlushDrawStates( bool shadersOn ) // shadersOn = true for draw
m_boundPairProgram = newPairProgram;
m_boundPairRevision = newPairRevision;
glUseProgram( (GLuint)newPairProgram );
glUseProgram( (uintptr_t)newPairProgram );
GLMCheckError();
// set the dirty levels appropriately since the program changed and has never seen any of the current values.
@@ -4881,7 +4881,7 @@ void GLMContext::DrawRangeElements( GLenum mode, GLuint start, GLuint end, GLsiz
if (m_drawIndexBuffer->m_pseudo)
{
// you have to pass actual address, not offset... shhh... secret
indicesActual = (void*)((int)indicesActual + (int)m_drawIndexBuffer->m_pseudoBuf);
indicesActual = (void*)((uintptr_t)indicesActual + (uintptr_t)m_drawIndexBuffer->m_pseudoBuf);
}
#if GLMDEBUG
+4 -4
View File
@@ -2705,9 +2705,9 @@ bool GLMDetectOGLP( void )
if (result)
{
// enable a breakpoint on color4sv
int oglp_bkpt[3] = { kCGLFEglColor4sv, kCGLProfBreakBefore, 1 };
GLint oglp_bkpt[3] = { kCGLFEglColor4sv, kCGLProfBreakBefore, 1 };
CGLSetOption( kCGLGOEnableBreakpoint, (GLint)oglp_bkpt );
CGLSetGlobalOption( kCGLGOEnableBreakpoint, oglp_bkpt );
}
return result;
@@ -2954,14 +2954,14 @@ void GLMEnableTrace( bool on )
void GLMStringOut( char *string )
{
if ( GLMDebugChannelMask() & ( (1<<ePrintf) || (1<<eDebugger) ) )
if ( GLMDebugChannelMask() & ( (1<<ePrintf) | (1<<eDebugger) ) )
{
puts( string );
}
if ( GLMDebugChannelMask() & (1<<eGLProfiler) )
{
CGLSetOption( kCGLGOComment, (GLint)string );
CGLSetGlobalOption( kCGLGOComment, (GLint*)string );
}
}
+1 -1
View File
@@ -29,7 +29,7 @@
#include "imageformat.h"
#include "glmdebug.h"
#ifndef Assert(x)
#ifndef Assert
#define Assert(x)
#endif
+2 -2
View File
@@ -446,7 +446,7 @@ void GLMDisplayInfo::PopulateModes( void )
void GLMDisplayInfo::Dump( int which )
{
GLMPRINTF(("\n #%d: GLMDisplayInfo @ %08x, cg-id=%08x display-mask=%08x pixwidth=%d pixheight=%d", which, (int)this, m_info.m_cgDisplayID, m_info.m_glDisplayMask, m_info.m_displayPixelWidth, m_info.m_displayPixelHeight ));
GLMPRINTF(("\n #%d: GLMDisplayInfo @ %08x, cg-id=%p display-mask=%08x pixwidth=%d pixheight=%d", which, this, m_info.m_cgDisplayID, m_info.m_glDisplayMask, m_info.m_displayPixelWidth, m_info.m_displayPixelHeight ));
int i=0;
for( std::vector< GLMDisplayMode * >::iterator p = m_modes->begin(); p != m_modes->end(); p++ )
@@ -983,7 +983,7 @@ void GLMDisplayDB::PopulateRenderers( void )
{
// grab the OS version
long vMajor = 0; long vMinor = 0; long vMinorMinor = 0;
SInt32 vMajor = 0; SInt32 vMinor = 0; SInt32 vMinorMinor = 0;
OSStatus gestalt_err = 0;
gestalt_err = Gestalt(gestaltSystemVersionMajor, &vMajor);
-2
View File
@@ -5,8 +5,6 @@
//
//===============================================================================
#pragma once
#include <OpenGL/gl.h>
#include <OpenGL/glext.h>
#include <mach-o/dyld.h>
+106
View File
@@ -177,4 +177,110 @@ enum { k_iClientScreenshotsCallbacks = 2200 };
enum { k_iSteamScreenshotsCallbacks = 2300 };
enum { k_iClientAudioCallbacks = 2400 };
//-----------------------------------------------------------------------------
// The CALLBACK macros are for client side callback logging enabled with
// log_callback <first callnbackID> <last callbackID>
// Do not change any of these.
//-----------------------------------------------------------------------------
class CSteamCallback
{
public:
virtual const char *GetCallbackName() const = 0;
virtual uint32 GetCallbackID() const = 0;
virtual uint8 *GetFixedData() const = 0;
virtual uint32 GetFixedSize() const = 0;
virtual uint32 GetNumMemberVariables() const = 0;
virtual bool GetMemberVariable( uint32 index, uint32 &varOffset, uint32 &varSize, uint32 &varCount, const char **pszName, const char **pszType ) const = 0;
};
#define DEFINE_CALLBACK( callbackname, callbackid ) \
struct callbackname##_t { \
enum { k_iCallback = callbackid }; \
static callbackname##_t *GetNullPointer() { return 0; }
#define CALLBACK_MEMBER( varidx, vartype, varname ) \
public: vartype varname ; \
static void GetMemberVar_##varidx( unsigned int &varOffset, unsigned int &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { \
varOffset = (unsigned int)(size_t)&GetNullPointer()->varname; \
varSize = sizeof( vartype ); \
varCount = 1; \
*pszName = #varname; *pszType = #vartype; }
#define CALLBACK_ARRAY( varidx, vartype, varname, varcount ) \
public: vartype varname [ varcount ]; \
static void GetMemberVar_##varidx( unsigned int &varOffset, unsigned int &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { \
varOffset = (unsigned int)(size_t)&GetNullPointer()->varname[0]; \
varSize = sizeof( vartype ); \
varCount = varcount; \
*pszName = #varname; *pszType = #vartype; }
#define END_CALLBACK_INTERNAL_BEGIN( callbackname, numvars ) }; \
class C##callbackname : public CSteamCallback { \
public: callbackname##_t m_Data; \
C##callbackname () { memset( &m_Data, 0, sizeof(m_Data) ); } \
virtual const char *GetCallbackName() const { return #callbackname; } \
virtual uint32 GetCallbackID() const { return callbackname##_t::k_iCallback; } \
virtual uint32 GetFixedSize() const { return sizeof( m_Data ); } \
virtual uint8 *GetFixedData() const { return (uint8*)&m_Data; } \
virtual uint32 GetNumMemberVariables() const { return numvars; } \
virtual bool GetMemberVariable( uint32 index, uint32 &varOffset, uint32 &varSize, uint32 &varCount, const char **pszName, const char **pszType ) const { \
switch ( index ) { default : return false;
#define END_CALLBACK_INTERNAL_SWITCH( varidx ) case varidx : m_Data.GetMemberVar_##varidx( varOffset, varSize, varCount, pszName, pszType ); return true;
#define END_CALLBACK_INTERNAL_END() }; }; };
#define END_DEFINE_CALLBACK_0( callbackname ) }; \
class C##callbackname : public CSteamCallback { \
public: callbackname##_t m_Data; \
virtual const char *GetCallbackName() const { return #callbackname; } \
virtual uint32 GetCallbackID() const { return callbackname##_t::k_iCallback; } \
virtual uint32 GetFixedSize() const { return sizeof( m_Data ); } \
virtual uint8 *GetFixedData() const { return (uint8*)&m_Data; } \
virtual uint32 GetNumMemberVariables() const { return 0; } \
virtual bool GetMemberVariable( uint32 index, uint32 &varOffset, uint32 &varSize, uint32 &varCount, const char **pszName, const char **pszType ) const { return false; } \
}; \
#define END_DEFINE_CALLBACK_1( callbackname ) \
END_CALLBACK_INTERNAL_BEGIN( callbackname, 1 ) \
END_CALLBACK_INTERNAL_SWITCH( 0 ) \
END_CALLBACK_INTERNAL_END()
#define END_DEFINE_CALLBACK_2( callbackname ) \
END_CALLBACK_INTERNAL_BEGIN( callbackname, 2 ) \
END_CALLBACK_INTERNAL_SWITCH( 0 ) \
END_CALLBACK_INTERNAL_SWITCH( 1 ) \
END_CALLBACK_INTERNAL_END()
#define END_DEFINE_CALLBACK_3( callbackname ) \
END_CALLBACK_INTERNAL_BEGIN( callbackname, 3 ) \
END_CALLBACK_INTERNAL_SWITCH( 0 ) \
END_CALLBACK_INTERNAL_SWITCH( 1 ) \
END_CALLBACK_INTERNAL_SWITCH( 2 ) \
END_CALLBACK_INTERNAL_END()
#define END_DEFINE_CALLBACK_4( callbackname ) \
END_CALLBACK_INTERNAL_BEGIN( callbackname, 4 ) \
END_CALLBACK_INTERNAL_SWITCH( 0 ) \
END_CALLBACK_INTERNAL_SWITCH( 1 ) \
END_CALLBACK_INTERNAL_SWITCH( 2 ) \
END_CALLBACK_INTERNAL_SWITCH( 3 ) \
END_CALLBACK_INTERNAL_END()
#define END_DEFINE_CALLBACK_6( callbackname ) \
END_CALLBACK_INTERNAL_BEGIN( callbackname, 6 ) \
END_CALLBACK_INTERNAL_SWITCH( 0 ) \
END_CALLBACK_INTERNAL_SWITCH( 1 ) \
END_CALLBACK_INTERNAL_SWITCH( 2 ) \
END_CALLBACK_INTERNAL_SWITCH( 3 ) \
END_CALLBACK_INTERNAL_SWITCH( 4 ) \
END_CALLBACK_INTERNAL_SWITCH( 5 ) \
END_CALLBACK_INTERNAL_END()
#endif // ISTEAMCLIENT_H
+31 -5
View File
@@ -135,6 +135,13 @@ enum { k_cchMaxRichPresenceKeys = 20 };
enum { k_cchMaxRichPresenceKeyLength = 64 };
enum { k_cchMaxRichPresenceValueLength = 256 };
// These values are passed as parameters to the store
enum EOverlayToStoreFlag
{
k_EOverlayToStoreFlag_None = 0,
k_EOverlayToStoreFlag_AddToCart = 1,
k_EOverlayToStoreFlag_AddToCartAndShow = 2,
};
//-----------------------------------------------------------------------------
// Purpose: interface to accessing information about individual users,
@@ -149,9 +156,15 @@ public:
// like all the other interface functions that return a char *, it's important that this pointer is not saved
// off; it will eventually be free'd or re-allocated
virtual const char *GetPersonaName() = 0;
// sets the player name, stores it on the server and publishes the changes to all friends who are online
virtual void SetPersonaName( const char *pchPersonaName ) = 0;
// Sets the player name, stores it on the server and publishes the changes to all friends who are online.
// Changes take place locally immediately, and a PersonaStateChange_t is posted, presuming success.
//
// The final results are available through the return value SteamAPICall_t, using SetPersonaNameResponse_t.
//
// If the name change fails to happen on the server, then an additional global PersonaStateChange_t will be posted
// to change the name back, in addition to the SetPersonaNameResponse_t callback.
virtual SteamAPICall_t SetPersonaName( const char *pchPersonaName ) = 0;
// gets the status of the current user
virtual EPersonaState GetPersonaState() = 0;
@@ -230,7 +243,7 @@ public:
virtual void ActivateGameOverlayToWebPage( const char *pchURL ) = 0;
// activates game overlay to store page for app
virtual void ActivateGameOverlayToStore( AppId_t nAppID ) = 0;
virtual void ActivateGameOverlayToStore( AppId_t nAppID, EOverlayToStoreFlag eFlag ) = 0;
// Mark a target user as 'played with'. This is a client-side only feature that requires that the calling user is
// in game
@@ -338,7 +351,7 @@ public:
virtual SteamAPICall_t EnumerateFollowingList( uint32 unStartIndex ) = 0;
};
#define STEAMFRIENDS_INTERFACE_VERSION "SteamFriends011"
#define STEAMFRIENDS_INTERFACE_VERSION "SteamFriends013"
// callbacks
#pragma pack( push, 8 )
@@ -558,6 +571,19 @@ struct FriendsEnumerateFollowingList_t
int32 m_nTotalResultCount;
};
//-----------------------------------------------------------------------------
// Purpose: reports the result of an attempt to change the user's persona name
//-----------------------------------------------------------------------------
struct SetPersonaNameResponse_t
{
enum { k_iCallback = k_iSteamFriendsCallbacks + 47 };
bool m_bSuccess; // true if name change succeeded completely.
bool m_bLocalSuccess; // true if name change was retained locally. (We might not have been able to communicate with Steam)
EResult m_result; // detailed result code
};
#pragma pack( pop )
#endif // ISTEAMFRIENDS_H
+35 -5
View File
@@ -38,6 +38,10 @@ typedef uint64 PublishedFileId_t;
const UGCHandle_t k_UGCHandleInvalid = 0xffffffffffffffffull;
const PublishedFileUpdateHandle_t k_PublishedFileUpdateHandleInvalid = 0xffffffffffffffffull;
// Handle for writing to Steam Cloud
typedef uint64 UGCFileWriteStreamHandle_t;
const UGCFileWriteStreamHandle_t k_UGCFileStreamHandleInvalid = 0xffffffffffffffffull;
const uint32 k_cchPublishedDocumentTitleMax = 128 + 1;
const uint32 k_cchPublishedDocumentDescriptionMax = 8000;
const uint32 k_cchPublishedDocumentChangeDescriptionMax = 256;
@@ -107,6 +111,19 @@ enum EWorkshopEnumerationType
k_EWorkshopEnumerationTypeRecentFromFollowedUsers = 6,
};
enum EWorkshopActionOnDuplicateTitle
{
k_EWorkshopActionOnDuplicateTitleReject = 0,
k_EWorkshopActionOnDuplicateTitleUpdate = 1,
k_EWorkshopActionOnDuplicateTitleNew = 2,
};
enum EWorkshopVideoProvider
{
k_EWorkshopVideoProviderNone = 0,
k_EWorkshopVideoProviderYoutube = 1
};
//-----------------------------------------------------------------------------
// Purpose: Functions for accessing, reading and writing files stored remotely
// and cached locally
@@ -129,6 +146,12 @@ class ISteamRemoteStorage
virtual SteamAPICall_t FileShare( const char *pchFile ) = 0;
virtual bool SetSyncPlatforms( const char *pchFile, ERemoteStoragePlatform eRemoteStoragePlatform ) = 0;
// file operations that cause network IO
virtual UGCFileWriteStreamHandle_t FileWriteStreamOpen( const char *pchFile ) = 0;
virtual bool FileWriteStreamWriteChunk( UGCFileWriteStreamHandle_t writeHandle, const void *pvData, int32 cubData ) = 0;
virtual bool FileWriteStreamClose( UGCFileWriteStreamHandle_t writeHandle ) = 0;
virtual bool FileWriteStreamCancel( UGCFileWriteStreamHandle_t writeHandle ) = 0;
// file information
virtual bool FileExists( const char *pchFile ) = 0;
virtual bool FilePersisted( const char *pchFile ) = 0;
@@ -205,14 +228,14 @@ class ISteamRemoteStorage
virtual SteamAPICall_t UpdateUserPublishedItemVote( PublishedFileId_t unPublishedFileId, bool bVoteUp ) = 0;
virtual SteamAPICall_t GetUserPublishedItemVoteDetails( PublishedFileId_t unPublishedFileId ) = 0;
virtual SteamAPICall_t EnumerateUserSharedWorkshopFiles( CSteamID steamId, uint32 unStartIndex, SteamParamStringArray_t *pRequiredTags, SteamParamStringArray_t *pExcludedTags ) = 0;
virtual SteamAPICall_t PublishVideo( const char *pchVideoURL, const char *pchPreviewFile, AppId_t nConsumerAppId, const char *pchTitle, const char *pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t *pTags ) = 0;
virtual SteamAPICall_t PublishVideo( EWorkshopVideoProvider eVideoProvider, const char *pchVideoAccount, const char *pchVideoIdentifier, const char *pchPreviewFile, AppId_t nConsumerAppId, const char *pchTitle, const char *pchDescription, ERemoteStoragePublishedFileVisibility eVisibility, SteamParamStringArray_t *pTags ) = 0;
virtual SteamAPICall_t SetUserPublishedFileAction( PublishedFileId_t unPublishedFileId, EWorkshopFileAction eAction ) = 0;
virtual SteamAPICall_t EnumeratePublishedFilesByUserAction( EWorkshopFileAction eAction, uint32 unStartIndex ) = 0;
// this method enumerates the public view of workshop files
virtual SteamAPICall_t EnumeratePublishedWorkshopFiles( EWorkshopEnumerationType eEnumerationType, uint32 unStartIndex, uint32 unCount, uint32 unDays, SteamParamStringArray_t *pTags, SteamParamStringArray_t *pUserTags ) = 0;
};
#define STEAMREMOTESTORAGE_INTERFACE_VERSION "STEAMREMOTESTORAGE_INTERFACE_VERSION006"
#define STEAMREMOTESTORAGE_INTERFACE_VERSION "STEAMREMOTESTORAGE_INTERFACE_VERSION008"
// callbacks
@@ -416,6 +439,7 @@ struct RemoteStorageGetPublishedFileDetailsResult_t
int32 m_nFileSize; // Size of the primary file
int32 m_nPreviewFileSize; // Size of the preview file
char m_rgchURL[k_cchPublishedFileURLMax]; // URL (for a video or a website)
EWorkshopFileType m_eFileType; // Type of the file
};
@@ -466,9 +490,15 @@ struct RemoteStoragePublishedFileUnsubscribed_t
};
//
// IMPORTANT! k_iClientRemoteStorageCallbacks + 23 is free to use
//
//-----------------------------------------------------------------------------
// Purpose: Published file that a user owns was deleted (from within the app or the web)
//-----------------------------------------------------------------------------
struct RemoteStoragePublishedFileDeleted_t
{
enum { k_iCallback = k_iClientRemoteStorageCallbacks + 23 };
PublishedFileId_t m_nPublishedFileId; // The published file id
AppId_t m_nAppID; // ID of the app that will consume this file.
};
//-----------------------------------------------------------------------------
+7 -1
View File
@@ -130,6 +130,12 @@ public:
// Calling this w/ N out of N progress will NOT set the achievement, the game must still do that.
virtual bool IndicateAchievementProgress( const char *pchName, uint32 nCurProgress, uint32 nMaxProgress ) = 0;
// Used for iterating achievements. In general games should not need these functions because they should have a
// list of existing achievements compiled into them
virtual uint32 GetNumAchievements() = 0;
// Get achievement name iAchievement in [0,GetNumAchievements)
virtual const char *GetAchievementName( uint32 iAchievement ) = 0;
// Friends stats & achievements
// downloads stats for the user
@@ -271,7 +277,7 @@ public:
#endif
};
#define STEAMUSERSTATS_INTERFACE_VERSION "STEAMUSERSTATS_INTERFACE_VERSION010"
#define STEAMUSERSTATS_INTERFACE_VERSION "STEAMUSERSTATS_INTERFACE_VERSION011"
// callbacks
#pragma pack( push, 8 )
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+28 -1
View File
@@ -183,7 +183,7 @@ enum EUniverse
k_EUniverseBeta = 2,
k_EUniverseInternal = 3,
k_EUniverseDev = 4,
k_EUniverseRC = 5,
// k_EUniverseRC = 5, // no such universe anymore
k_EUniverseMax
};
@@ -207,6 +207,33 @@ enum EAccountType
};
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
enum EAppReleaseState
{
k_EAppReleaseState_Unknown = 0, // unknown, required appinfo or license info is missing
k_EAppReleaseState_Unavailable = 1, // even if user 'just' owns it, can see game at all
k_EAppReleaseState_Prerelease = 2, // can be purchased and is visible in games list, nothing else. Common appInfo section released
k_EAppReleaseState_PreloadOnly = 3, // owners can preload app, not play it. AppInfo fully released.
k_EAppReleaseState_Released = 4, // owners can download and play app.
};
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
enum EAppOwernshipFlags
{
k_EAppOwernshipFlags_None = 0, // unknown
k_EAppOwernshipFlags_OwnsLicense = 1, // owns license for this game
k_EAppOwernshipFlags_FreeLicense = 2, // not paid for game
k_EAppOwernshipFlags_RegionRestricted = 4, // owns app, but not allowed to play in current region
k_EAppOwernshipFlags_LowViolence = 8, // only low violence version
};
//-----------------------------------------------------------------------------
// types of user game stats fields
// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN DATABASE
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -140,7 +140,7 @@
texSize.width = [bitmap pixelsWide];
texSize.height = [bitmap pixelsHigh];
if (cgl_ctx = CGLGetCurrentContext ())
if ( (cgl_ctx = CGLGetCurrentContext () ) )
{ // if we successfully retrieve a current context (required)
glPushAttrib(GL_TEXTURE_BIT);
if (0 == texName) glGenTextures (1, &texName);
@@ -414,7 +414,7 @@
503C6CC71268F34200B66E3B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
@@ -426,7 +426,7 @@
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.6;
ONLY_ACTIVE_ARCH = YES;
ONLY_ACTIVE_ARCH = NO;
PREBINDING = NO;
SDKROOT = macosx10.6;
USER_HEADER_SEARCH_PATHS = ../public;
@@ -436,7 +436,7 @@
503C6CC81268F34200B66E3B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
GCC_C_LANGUAGE_STANDARD = gnu99;
"GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = (
POSIX,
@@ -446,6 +446,7 @@
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.6;
ONLY_ACTIVE_ARCH = NO;
PREBINDING = NO;
SDKROOT = macosx10.6;
USER_HEADER_SEARCH_PATHS = ../public;
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
run_build.bat shows how to run a Steam content build for AppID 1000 which has one depot 1001.
@@ -0,0 +1 @@
builder\steamcmd.exe +login account password +run_app_build ..\scripts\app_build_1000.vdf +quit
@@ -0,0 +1,15 @@
"appbuild"
{
"appid" "1000"
"desc" "Your build description here" // description for this build
"buildoutput" "..\output\" // build output folder for .log, .csm & .csd files, relative to location of this file
"contentroot" "..\content\" // root content folder, relative to location of this file
"setlive" "" // branch to set live after successful build, non if empty
"preview" "0" // to enable preview builds
"local" "" // set to flie path of local content server
"depots"
{
"1001" "depot_build_1001.vdf"
}
}
@@ -0,0 +1,15 @@
"DepotBuildConfig"
{
"DepotID" "1001"
// include all files recursivley
"FileMapping"
{
"LocalPath" "*"
"DepotPath" "."
"recursive" "1"
}
// but exclude all symbol files
"FileExclusion" "*.pdb"
}
@@ -0,0 +1,7 @@
<html><body>
<h1>Steam Local Content Server</h1>
To download Steam content from this local content server, add "@localcontentserver [thishostname]" to the steam_dev.cfg right next to Steam.exe <br>
Browse local content <a href="depot">here</a> <br>
For more information, see the SteamWorks SDK <a href="http://partner.steamgames.com">documentation</a> <br>
</body></html>
Binary file not shown.
@@ -0,0 +1,16 @@
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,30 @@
# Mongoose web server configuration file.
# Lines starting with '#' and empty lines are ignored.
# For detailed description of every option, visit
# http://code.google.com/p/mongoose/wiki/MongooseManual
# cgi_pattern **.cgi$|**.pl$|**.php$
# cgi_environment <value>
# put_delete_passwords_file <value>
# cgi_interpreter <value>
# protect_uri <value>
# authentication_domain mydomain.com
# ssi_pattern **.shtml$|**.shtm$
# access_log_file <value>
# ssl_chain_file <value>
# global_passwords_file <value>
# index_files index.html,index.htm,index.cgi
# access_control_list <value>
# max_request_size 16384
# extra_mime_types <value>
# ssl_certificate <value>
# num_threads 10
# run_as_user <value>
# url_rewrite_patterns <value>
document_root D:\ContentServer\htdocs
listening_ports 80
enable_directory_listing yes
enable_keep_alive yes
error_log_file error.log