X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=steam.h;h=251c51e85c00b36bc6a3e9019b953f7fbc595d38;hb=99df437e740aa12d6e578d15bcf14140f648a6d1;hp=4f98dd9334be4f6a97fceafa76c21f05c6b5215f;hpb=9a751c9645f63a4e324ef2ea486efb7b669fddc5;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/steam.h b/steam.h index 4f98dd9..251c51e 100644 --- a/steam.h +++ b/steam.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved + * Copyright (C) 2021-2023 Mt.ZERO Software, Harry Godden - All Rights Reserved * All trademarks are property of their respective owners */ @@ -14,6 +14,7 @@ #include "vg/vg_steam_http.h" #include "vg/vg_steam_friends.h" #include "vg/vg_steam_user_stats.h" +#include "submodules/anyascii/impl/c/anyascii.c" /* * We only want to use steamworks if building for the networked version, @@ -37,7 +38,7 @@ VG_STATIC void recv_steam_warning( int severity, const char *msg ) } VG_STATIC int steam_ready = 0, - steam_stats_ready = 0; + steam_stats_ready = 0; VG_STATIC void *hSteamNetworkingSockets, *hSteamUser; @@ -54,60 +55,48 @@ VG_STATIC const char *steam_achievement_names[] = VG_STATIC void steam_store_achievements(void) { - if( steam_ready && steam_stats_ready ) - { + if( steam_ready && steam_stats_ready ){ SteamAPI_ISteamUserStats_StoreStats( hSteamUserStats ); } } VG_STATIC void steam_set_achievement( const char *name ) { - if( steam_ready && steam_stats_ready ) - { - if( SteamAPI_ISteamUserStats_SetAchievement( hSteamUserStats, name ) ) - { + if( steam_ready && steam_stats_ready ){ + if( SteamAPI_ISteamUserStats_SetAchievement( hSteamUserStats, name ) ){ vg_success( "Achievement set! '%s'\n", name ); } - else - { + else{ vg_warn( "Failed to set achievement: %s\n", name ); } } - else - { + else{ vg_warn( "Failed to set achievement (steam not ready): %s\n", name ); } } VG_STATIC void steam_clear_achievement( const char *name ) { - if( steam_ready && steam_stats_ready ) - { - if( SteamAPI_ISteamUserStats_ClearAchievement( hSteamUserStats, name ) ) - { + if( steam_ready && steam_stats_ready ){ + if( SteamAPI_ISteamUserStats_ClearAchievement( hSteamUserStats, name ) ){ vg_info( "Achievement cleared: '%s'\n", name ); } - else - { + else{ vg_warn( "Failed to clear achievement: %s\n", name ); } } - else - { + else{ vg_warn( "Failed to clear achievement (steam not ready): %s\n", name ); } } -VG_STATIC int steam_list_achievements( int argc, char const *argv[] ) -{ +VG_STATIC void steam_print_all_achievements(void){ vg_info( "Achievements: \n" ); - if( steam_ready && steam_stats_ready ) - { - for( int i=0; im_pubParam; - if( rec->m_eResult == k_EResultOK ) - { + if( rec->m_eResult == k_EResultOK ){ vg_info( "Recieved stats for: %lu (user: %lu)\n", rec->m_nGameID, rec->m_steamIDUser ); steam_stats_ready = 1; } - else - { + else{ vg_error( "Error recieveing stats for user (%u)\n", rec->m_eResult ); } } -VG_STATIC ISteamInput *steam_hInput; - VG_STATIC u32 utf8_byte0_byte_count( u8 char0 ) { - for( u32 k=2; k<4; k++ ) - { + for( u32 k=2; k<4; k++ ){ if( !(char0 & (0x80 >> k)) ) return k; } @@ -197,38 +177,31 @@ VG_STATIC void str_utf8_collapse( const char *str, char *buf, u32 length ) u32 utf32_code = 0x00000000; u32 i=0, j=0, utf32_byte_ct=0; - for(;i < length-1;) - { + for(;i < length-1;){ if( ustr[i] == 0x00 ) break; - if( ustr[i] & 0x80 ) - { - if( utf32_byte_ct ) - { + if( ustr[i] & 0x80 ){ + if( utf32_byte_ct ){ utf32_byte_ct --; utf32_code |= (ustr[i] & 0x3F) << (utf32_byte_ct*6); - if( !utf32_byte_ct ) - { + if( !utf32_byte_ct ){ const char *match; size_t chars = anyascii( utf32_code, &match ); - for( u32 k=0; k> utf32_byte_ct); utf32_code <<= utf32_byte_ct*6; } } - else - { + else{ utf32_byte_ct = 0x00; buf[j ++] = str[i]; } @@ -239,15 +212,13 @@ VG_STATIC void str_utf8_collapse( const char *str, char *buf, u32 length ) buf[j] = 0x00; } -VG_STATIC int steam_init(void) -{ - const char *username = NULL; +VG_STATIC int steam_init(void){ + const char *username = "offline player"; #ifdef SR_NETWORKED vg_info( "Initializing steamworks\n" ); - if( !SteamAPI_Init() ) - { + if( !SteamAPI_Init() ){ printf("\n"); vg_error( "Steamworks failed to initialize\n" ); return 1; @@ -276,7 +247,6 @@ VG_STATIC int steam_init(void) * -------------------------------------------------------- */ hSteamUserStats = SteamAPI_SteamUserStats(); - steam_register_callback( k_iUserStatsReceived, steam_on_recieve_current_stats ); @@ -284,28 +254,8 @@ VG_STATIC int steam_init(void) vg_warn( "No Steam Logon: Cannot request stats\n" ); - vg_function_push( (struct vg_cmd) - { - .name = "ach_list", - .function = steam_list_achievements - }); - - vg_function_push( (struct vg_cmd) - { - .name = "ach_clear_all", - .function = steam_clear_all_achievements - }); - - vg_function_push( (struct vg_cmd) - { - .name = "ach_set", - .function = steam_set_achievemnt_test - }); - - steam_hInput = SteamAPI_SteamInput(); - SteamAPI_ISteamInput_Init( steam_hInput, 0 ); - SteamAPI_ISteamInput_RunFrame( steam_hInput, 0 ); - + vg_console_reg_cmd( "ach", steam_achievement_ccmd, NULL ); + #endif /* TODO: On username update callback */ @@ -317,62 +267,14 @@ VG_STATIC int steam_init(void) VG_STATIC void steam_update(void) { - if( steam_ready ) - { + 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) { - if( steam_ready ) - { + if( steam_ready ){ vg_info( "Shutting down\n..." ); SteamAPI_Shutdown(); }