begin network integration
[carveJwlIkooP6JGAAIwe30JlM.git] / steam.h
diff --git a/steam.h b/steam.h
new file mode 100644 (file)
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 */