diff --git a/src/main.c b/src/main.c index 9dfb5dc..c1cf0e5 100644 --- a/src/main.c +++ b/src/main.c @@ -509,16 +509,21 @@ resetGame(void) static bool init(void) { +#ifdef STEAM_BUILD + if (!steam_restart_needed()) { + steam_init(); + } else { + error("%s needs to be started through Steam", GAME_TITLE); + return false; + } +#endif // STEAM_BUILD + if (!initSDL()) { return false; } else if (!initGame()) { return false; } -#ifdef STEAM_BUILD - steam_init(); -#endif // STEAM_BUILD - settings_init(); hiscore_init(); initMainMenu(); diff --git a/src/steam/steamworks_api_wrapper.c b/src/steam/steamworks_api_wrapper.c index 05f1a51..8c6844c 100644 --- a/src/steam/steamworks_api_wrapper.c +++ b/src/steam/steamworks_api_wrapper.c @@ -58,6 +58,12 @@ leaderboard_received(Sint64 hLeaderboard, const char *name) m_hKillsLeaderboard = hLeaderboard; } +bool +steam_restart_needed() +{ + return c_SteamAPI_RestartAppIfNecessary(); +} + void steam_init() { diff --git a/src/steam/steamworks_api_wrapper.h b/src/steam/steamworks_api_wrapper.h index fcd8d75..58fc507 100644 --- a/src/steam/steamworks_api_wrapper.h +++ b/src/steam/steamworks_api_wrapper.h @@ -25,6 +25,8 @@ typedef struct Achievement { int m_iIconImage; } Achievement; +bool steam_restart_needed(void); + void steam_init(void); void steam_shutdown(void); diff --git a/steamworks_c_wrapper/src/steamworks_c_wrapper.cpp b/steamworks_c_wrapper/src/steamworks_c_wrapper.cpp index e8acf1c..bf9d6d5 100644 --- a/steamworks_c_wrapper/src/steamworks_c_wrapper.cpp +++ b/steamworks_c_wrapper/src/steamworks_c_wrapper.cpp @@ -47,6 +47,11 @@ c_SteamAPI_GetAppID() return m_AppId; } +bool c_SteamAPI_RestartAppIfNecessary() +{ + return SteamAPI_RestartAppIfNecessary(931040); +} + void c_SteamAPI_RunCallbacks(void) { diff --git a/steamworks_c_wrapper/src/steamworks_c_wrapper.h b/steamworks_c_wrapper/src/steamworks_c_wrapper.h index acebea2..a493a0a 100644 --- a/steamworks_c_wrapper/src/steamworks_c_wrapper.h +++ b/steamworks_c_wrapper/src/steamworks_c_wrapper.h @@ -26,6 +26,9 @@ c_SteamAPI_Init(void); int64_t c_SteamAPI_GetAppID(void); +bool +c_SteamAPI_RestartAppIfNecessary(void); + void c_SteamAPI_RunCallbacks(void);