X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=steam.h;h=5d768b88c88ffd84b09581bd73b7026b4c6552b4;hb=c52e639cdcf6d21f69caa9625238afded7513ca4;hp=a417622c5a17e246a0fe4e456924dd38dbab448a;hpb=a1741ec4aed057cbafff2d6bc9e5cf8a15ae322b;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/steam.h b/steam.h index a417622..5d768b8 100644 --- a/steam.h +++ b/steam.h @@ -6,6 +6,7 @@ #ifndef STEAM_H #define STEAM_H +#define VG_GAME #include "vg/vg_steam.h" #include "vg/vg_steam_utils.h" #include "vg/vg_steam_networking.h" @@ -177,6 +178,8 @@ VG_STATIC void steam_on_recieve_current_stats( CallbackMsg_t *msg ) } } +VG_STATIC ISteamInput *steam_hInput; + VG_STATIC int steam_init(void) { const char *username = NULL; @@ -240,28 +243,9 @@ VG_STATIC int steam_init(void) .function = steam_set_achievemnt_test }); - vg_info( "Checking controller type\n" ); - - ISteamInput *hInput = SteamAPI_SteamInput(); - SteamAPI_ISteamInput_Init( hInput, 0 ); - SteamAPI_ISteamInput_RunFrame( hInput, 0 ); - InputHandle_t joy0 = SteamAPI_ISteamInput_GetControllerForGamepadIndex( - hInput, 0 ); - - if( joy0 != 0 ) - { - ESteamInputType type = SteamAPI_ISteamInput_GetInputTypeForHandle( - hInput, joy0 ); - - if( type == k_ESteamInputType_SteamController ) - vg.gamepad_use_trackpad_look = 1; - - vg_info( "Type: %d\n", type ); - } - else - { - vg_warn( "none found\n" ); - } + steam_hInput = SteamAPI_SteamInput(); + SteamAPI_ISteamInput_Init( steam_hInput, 0 ); + SteamAPI_ISteamInput_RunFrame( steam_hInput, 0 ); #endif @@ -275,10 +259,58 @@ VG_STATIC int steam_init(void) VG_STATIC void steam_update(void) { if( steam_ready ) + { steamworks_event_loop( hSteamClientPipe ); + + /* TODO + * We can probably request this from SDL too + */ + if( steam_hInput ) + { + SteamAPI_ISteamInput_RunFrame( steam_hInput, 0 ); + + InputHandle_t joy0 = SteamAPI_ISteamInput_GetControllerForGamepadIndex( + steam_hInput, 0 ); + + vg_input.controller_should_use_trackpad_look = 0; + if( joy0 != 0 ) + { + ESteamInputType type = SteamAPI_ISteamInput_GetInputTypeForHandle( + steam_hInput, joy0 ); + + if( type == k_ESteamInputType_SteamController ) + { + vg_input.controller_should_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; + } + } } -VG_STATIC void steam_end(void *nothing) +VG_STATIC void steam_end(void) { if( steam_ready ) {