const DepotId_t k_uDepotIdInvalid = 0x0;
typedef u32 RTime32;
+typedef u32 AccountID_t;
enum { k_iSteamUserCallbacks = 100 };
enum { k_iSteamGameServerCallbacks = 200 };
enum { k_iSteamNetworkingSocketsCallbacks = 1220 };
enum { k_iSteamNetworkingMessagesCallbacks = 1250 };
enum { k_iSteamNetworkingUtilsCallbacks = 1280 };
-enum { k_iClientRemoteStorageCallbacks = 1300 };
+enum { k_iSteamRemoteStorageCallbacks = 1300 };
enum { k_iClientDepotBuilderCallbacks = 1400 };
enum { k_iSteamGameServerItemsCallbacks = 1500 };
enum { k_iClientUtilsCallbacks = 1600 };
enum { k_iClientMusicCallbacks = 3200 };
enum { k_iClientRemoteClientManagerCallbacks = 3300 };
enum { k_iClientUGCCallbacks = 3400 };
+enum { k_iSteamUGCCallbacks = 3400 };
enum { k_iSteamStreamClientCallbacks = 3500 };
enum { k_IClientProductBuilderCallbacks = 3600 };
enum { k_iClientShortcutsCallbacks = 3700 };
* Async callbacks
* =============================================================================
*/
-typedef struct steam_async steam_async;
-struct steam_async
-{
- SteamAPICall_t id;
- void *data;
- void (*p_handler)( void *result, void *userdata );
+typedef struct vg_steam_async_call vg_steam_async_call;
+typedef struct vg_steam_callback_handler vg_steam_callback_handler;
+
+struct vg_steam{
+ struct vg_steam_async_call{
+ SteamAPICall_t id;
+ void *userdata;
+
+ void (*p_handler)( void *result, void *userdata );
+ }
+ calls[4];
+ u32 call_count;
+
+ struct vg_steam_callback_handler{
+ u32 callback_id;
+ void (*p_handler)( CallbackMsg_t *msg );
+ }
+ callback_handlers[32];
+ u32 callback_handler_count;
}
-static steam_async_trackers[32];
-static u32 steam_async_track_count;
+static vg_steam;
-steam_async *steam_new_async(void)
+vg_steam_async_call *vg_alloc_async_steam_api_call(void)
{
- if( steam_async_track_count == vg_list_size(steam_async_trackers) )
- {
- vg_error( "Maximum concurrent API calls exceeded (%u)\n",
- steam_async_track_count );
- return NULL;
+ if( vg_steam.call_count == vg_list_size(vg_steam.calls) ){
+ vg_fatal_error( "Maximum concurrent API calls exceeded (%u)\n",
+ vg_steam.call_count );
}
- return &steam_async_trackers[ steam_async_track_count ++ ];
+ return &vg_steam.calls[ vg_steam.call_count ++ ];
}
/*
* =============================================================================
*/
-typedef struct steam_callback_handler steam_callback_handler;
-struct steam_callback_handler
-{
- u32 callback_id;
- void (*p_handler)( CallbackMsg_t *msg );
-}
-static steam_callback_handlers[64];
-static u32 steam_callback_handler_count;
-
-static int steam_register_callback( u32 id,
- void (*p_handler)( CallbackMsg_t *msg ) )
+static void steam_register_callback( u32 id,
+ void (*p_handler)( CallbackMsg_t *msg ) )
{
- if( steam_callback_handler_count == vg_list_size(steam_callback_handlers) )
+ if( vg_steam.callback_handler_count ==
+ vg_list_size(vg_steam.callback_handlers) )
{
- vg_error( "Too many steam callback handlers registered (%u)\n",
- steam_callback_handler_count );
-
- return 0;
+ vg_fatal_error( "Too many steam callback handlers registered (%u)\n",
+ vg_steam.callback_handler_count );
}
- steam_callback_handler *handler = &steam_callback_handlers[
- steam_callback_handler_count ++ ];
+ vg_steam_callback_handler *handler =
+ &vg_steam.callback_handlers[ vg_steam.callback_handler_count ++ ];
handler->p_handler = p_handler;
handler->callback_id = id;
-
- return 1;
}
/*
(SteamAPICallCompleted_t *)callback->m_pubParam;
int bFailed;
-
- void *temp = alloca( pCallCompleted->m_cubParam );
+ void *call_data = alloca( pCallCompleted->m_cubParam );
if( SteamAPI_ManualDispatch_GetAPICallResult(
pipe,
pCallCompleted->m_hAsyncCall,
- temp,
+ call_data,
pCallCompleted->m_cubParam,
pCallCompleted->m_iCallback,
&bFailed )
*/
vg_info( "steamworks_event::api_call_completed( %lu )\n",
- pCallCompleted->m_hAsyncCall );
+ pCallCompleted->m_hAsyncCall );
int j=0;
- for( int i=0; i<steam_async_track_count; i++ )
- {
- if( steam_async_trackers[j].id != pCallCompleted->m_hAsyncCall )
- {
- steam_async_trackers[j ++] = steam_async_trackers[i];
+ for( int i=0; i<vg_steam.call_count; i++ ){
+ if( vg_steam.calls[i].id != pCallCompleted->m_hAsyncCall ){
+ vg_steam.calls[j ++] = vg_steam.calls[i];
}
- else
- {
- steam_async *pasync = &steam_async_trackers[j];
- pasync->p_handler( temp, pasync->data );
+ else{
+ vg_steam_async_call *call = &vg_steam.calls[i];
+ call->p_handler( call_data, call->userdata );
}
}
- if( steam_async_track_count == j )
- {
+ if( vg_steam.call_count == j ){
vg_error( "No tracker was register for API call\n" );
}
- steam_async_track_count = j;
+ vg_steam.call_count = j;
}
else
{
SteamAPI_ManualDispatch_RunFrame( pipe );
CallbackMsg_t callback;
- while( SteamAPI_ManualDispatch_GetNextCallback( pipe, &callback ) )
- {
+ while( SteamAPI_ManualDispatch_GetNextCallback( pipe, &callback ) ){
vg_low( "steamworks_event::callback( %i )\n", callback.m_iCallback );
/* Check for dispatching API call results */
- if( callback.m_iCallback == k_iSteamAPICallCompleted )
- {
+ if( callback.m_iCallback == k_iSteamAPICallCompleted ){
steamworks_process_api_call( pipe, &callback );
}
- else
- {
+ else {
/*
* Look at callback.m_iCallback to see what kind of callback it is,
* and dispatch to appropriate handler(s)
* void *data = callback.m_pubParam;
*/
- for( int i=0; i<steam_callback_handler_count; i++ )
- {
- steam_callback_handler *handler = &steam_callback_handlers[i];
- if( handler->callback_id == callback.m_iCallback )
- {
+ for( int i=0; i<vg_steam.callback_handler_count; i++ ){
+ vg_steam_callback_handler *handler = &vg_steam.callback_handlers[i];
+ if( handler->callback_id == callback.m_iCallback ){
handler->p_handler( &callback );
break;
}