X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=steam.h;fp=steam.h;h=57af4295275acf6d67894da542fa89aec3395289;hb=0945c6c301e38138b6ac54a02d5b3aea602de526;hp=0000000000000000000000000000000000000000;hpb=e364c19156187c346c19295c0480062e57eb6d7c;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/steam.h b/steam.h new file mode 100644 index 0000000..57af429 --- /dev/null +++ b/steam.h @@ -0,0 +1,61 @@ +#ifndef STEAM_H +#define STEAM_H + +#include "vg/vg_steam.h" +#include "vg/vg_steam_networking.h" +#include "vg/vg_steam_auth.h" +#include "vg/vg_steam_http.h" + +/* + * We only want to use steamworks if building for the networked version, + * theres not much point otherwise. We mainly want steamworks for setting + * achievements etc.. so that includes our own server too. + * + * This file also wraps the functions and interfaces that we want to use to + * make them a bit easier to read, since they are the flat API they have very + * long names. in non-networked builds they will return default errors or do + * nothing. + */ + +static int steam_ready = 0; +static void *hSteamNetworkingSockets, + *hSteamUser; + +static HSteamPipe hSteamClientPipe; + +static void steam_init(void) +{ +#ifdef SR_NETWORKED + if( !SteamAPI_Init() ) + { + vg_error( "Steamworks failed to initialize\n" ); + return; + } + steam_ready = 1; + + SteamAPI_ManualDispatch_Init(); + vg_success( "Steamworks API running\n" ); + + /* Connect interfaces */ + hSteamClientPipe = SteamAPI_GetHSteamPipe(); + hSteamNetworkingSockets = SteamAPI_SteamNetworkingSockets_SteamAPI(); + hSteamUser = SteamAPI_SteamUser(); +#endif +} + +static void steam_update(void) +{ + if( steam_ready ) + steamworks_event_loop( hSteamClientPipe ); +} + +static void steam_end(void) +{ + if( steam_ready ) + { + vg_info( "Shutting down\n..." ); + SteamAPI_Shutdown(); + } +} + +#endif /* STEAM_H */