fov slider input maps menu stuff
[carveJwlIkooP6JGAAIwe30JlM.git] / steam.h
diff --git a/steam.h b/steam.h
index fbb4f8a5b7dce0a1a8f3ba5ed58d333d5b972ab7..47de1089a42aad244497970394fe9be1c7a3478f 100644 (file)
--- a/steam.h
+++ b/steam.h
@@ -25,9 +25,9 @@
  * nothing.
  */
 
-static char steam_username_at_startup[128];
+VG_STATIC char steam_username_at_startup[128];
 
-static void recv_steam_warning( int severity, const char *msg )
+VG_STATIC void recv_steam_warning( int severity, const char *msg )
 {
    if( severity == 0 )
       vg_low( "%s\n", msg );
@@ -35,28 +35,31 @@ static void recv_steam_warning( int severity, const char *msg )
       vg_info( "%s\n", msg );
 }
 
-static int steam_ready = 0,
+VG_STATIC int steam_ready = 0,
            steam_stats_ready = 0;
 
-static void *hSteamNetworkingSockets,
+VG_STATIC void *hSteamNetworkingSockets,
             *hSteamUser;
 
-static ISteamUserStats *hSteamUserStats;
-static HSteamPipe hSteamClientPipe;
+VG_STATIC ISteamUserStats *hSteamUserStats;
+VG_STATIC HSteamPipe hSteamClientPipe;
 
-static const char *steam_achievement_names[] = 
+VG_STATIC const char *steam_achievement_names[] = 
 {
    "ALBERT", "MARC", 
    "ROUTE_MPY", "ROUTE_MPG", "ROUTE_MPB", "ROUTE_MPR",
    "ROUTE_TO", "ROUTE_TC"
 };
 
-static void steam_store_achievements(void)
+VG_STATIC void steam_store_achievements(void)
 {
-   SteamAPI_ISteamUserStats_StoreStats( hSteamUserStats );
+   if( steam_ready && steam_stats_ready )
+   {
+      SteamAPI_ISteamUserStats_StoreStats( hSteamUserStats );
+   }
 }
 
-static void steam_set_achievement( const char *name )
+VG_STATIC void steam_set_achievement( const char *name )
 {
    if( steam_ready && steam_stats_ready )
    {
@@ -75,7 +78,7 @@ static void steam_set_achievement( const char *name )
    }
 }
 
-static void steam_clear_achievement( const char *name )
+VG_STATIC void steam_clear_achievement( const char *name )
 {
    if( steam_ready && steam_stats_ready )
    {
@@ -95,7 +98,7 @@ static void steam_clear_achievement( const char *name )
 }
 
 
-static int steam_list_achievements( int argc, char const *argv[] )
+VG_STATIC int steam_list_achievements( int argc, char const *argv[] )
 {
    vg_info( "Achievements: \n" );
 
@@ -125,7 +128,7 @@ static int steam_list_achievements( int argc, char const *argv[] )
    return 0;
 }
 
-static int steam_clear_all_achievements( int argc, char const *argv[] )
+VG_STATIC int steam_clear_all_achievements( int argc, char const *argv[] )
 {
    if( steam_ready && steam_stats_ready )
    {
@@ -144,7 +147,7 @@ static int steam_clear_all_achievements( int argc, char const *argv[] )
    return 0;
 }
 
-static int steam_set_achievemnt_test( int argc, char const *argv[] )
+VG_STATIC int steam_set_achievemnt_test( int argc, char const *argv[] )
 {
    if( argc < 2 )
       return 0;
@@ -158,7 +161,7 @@ static int steam_set_achievemnt_test( int argc, char const *argv[] )
    return 0;
 }
 
-static void steam_on_recieve_current_stats( CallbackMsg_t *msg )
+VG_STATIC void steam_on_recieve_current_stats( CallbackMsg_t *msg )
 {
    UserStatsReceived_t *rec = (UserStatsReceived_t *)msg->m_pubParam;
 
@@ -174,7 +177,9 @@ static void steam_on_recieve_current_stats( CallbackMsg_t *msg )
    }
 }
 
-static int steam_init(void)
+VG_STATIC ISteamInput *steam_hInput;
+
+VG_STATIC int steam_init(void)
 {
    const char *username = NULL;
 
@@ -237,6 +242,10 @@ static int steam_init(void)
                .function = steam_set_achievemnt_test
        });
 
+   steam_hInput = SteamAPI_SteamInput();
+   SteamAPI_ISteamInput_Init( steam_hInput, 0 );
+   SteamAPI_ISteamInput_RunFrame( steam_hInput, 0 );
+   
 #endif
 
    /* TODO: On username update callback */
@@ -246,13 +255,58 @@ static int steam_init(void)
    return 1;
 }
 
-static void steam_update(void)
+VG_STATIC void steam_update(void)
 {
    if( steam_ready )
+   {
       steamworks_event_loop( hSteamClientPipe );
+
+      if( steam_hInput )
+      {
+         SteamAPI_ISteamInput_RunFrame( steam_hInput, 0 );
+
+         InputHandle_t joy0 = SteamAPI_ISteamInput_GetControllerForGamepadIndex( 
+                                 steam_hInput, 0 );
+
+         vg.gamepad_use_trackpad_look = 0;
+         if( joy0 != 0 )
+         {
+            ESteamInputType type = SteamAPI_ISteamInput_GetInputTypeForHandle(
+                                 steam_hInput, joy0 );
+
+            if( type == k_ESteamInputType_SteamController )
+            {
+               vg.gamepad_use_trackpad_look = 1;
+               menu_display_controller = k_menu_controller_type_steam;
+            }
+            else if( type == k_ESteamInputType_SteamDeckController )
+            {
+               menu_display_controller = k_menu_controller_type_steam_deck;
+            }
+            else if( type == k_ESteamInputType_PS3Controller ||
+                     type == k_ESteamInputType_PS4Controller ||
+                     type == k_ESteamInputType_PS5Controller )
+            {
+               menu_display_controller = k_menu_controller_type_playstation;
+            }
+            else if( type == k_ESteamInputType_XBox360Controller ||
+                     type == k_ESteamInputType_XBoxOneController )
+            {
+               menu_display_controller = k_menu_controller_type_xbox;
+            }
+            else
+            {
+               /* currently unsupported controller */
+               menu_display_controller = k_menu_controller_type_xbox;
+            }
+         }
+         else
+            menu_display_controller = k_menu_controller_type_keyboard;
+      }
+   }
 }
 
-static void steam_end(void *nothing)
+VG_STATIC void steam_end(void *nothing)
 {
    if( steam_ready )
    {