mirror of
https://github.com/rlabrecque/SteamworksSDK.git
synced 2026-10-10 09:33:04 +08:00
v1.20
This commit is contained in:
+39
-10
@@ -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
|
||||
|
||||
Binary file not shown.
@@ -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
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -29,7 +29,7 @@
|
||||
#include "imageformat.h"
|
||||
#include "glmdebug.h"
|
||||
|
||||
#ifndef Assert(x)
|
||||
#ifndef Assert
|
||||
#define Assert(x)
|
||||
#endif
|
||||
|
||||
|
||||
+2
-2
@@ -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);
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
//
|
||||
//===============================================================================
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <OpenGL/gl.h>
|
||||
#include <OpenGL/glext.h>
|
||||
#include <mach-o/dyld.h>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
@@ -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.
@@ -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.
@@ -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.
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.
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
|
||||
|
||||
Reference in New Issue
Block a user