From: hgn Date: Sat, 6 Jan 2024 03:14:29 +0000 (+0000) Subject: fix achievement spam X-Git-Url: https://harrygodden.com/git/?a=commitdiff_plain;h=0744f4e770bf772436920c439ccafca8bc486456;p=fishladder.git fix achievement spam --- diff --git a/steam.h b/steam.h index c1a80c3..af8cd4b 100644 --- a/steam.h +++ b/steam.h @@ -41,20 +41,39 @@ static void *hSteamNetworkingSockets, static ISteamUserStats *hSteamUserStats; static HSteamPipe hSteamClientPipe; -static const char *steam_achievement_names[] = -{ - "MASTER_ENGINEER", "CAN_DO_THAT", "BANG", "GOOD_ENOUGH", - "TUTORIALS", "MIGHTY_CONSUMER", "GRADUATE" +enum mc_achievement { + k_mc_achievement_master_engineer, + k_mc_achievement_can_do_that, + k_mc_achievement_bang, + k_mc_achievement_good_enough, + k_mc_achievement_tutorials, + k_mc_achievement_mighty_consumer, + k_mc_achievement_graduate, + k_mc_achievement_max }; -static void steam_store_achievements(void) -{ +static const char *steam_achievement_names[] = { + [k_mc_achievement_master_engineer] = "MASTER_ENGINEER", + [k_mc_achievement_can_do_that] = "CAN_DO_THAT", + [k_mc_achievement_bang] = "BANG", + [k_mc_achievement_good_enough] = "GOOD_ENOUGH", + [k_mc_achievement_tutorials] = "TUTORIALS", + [k_mc_achievement_mighty_consumer] = "MIGHTY_CONSUMER", + [k_mc_achievement_graduate] = "GRADUATE" +}; + +static bool steam_achievement_set[k_mc_achievement_max]; + +static void steam_store_achievements(void){ if( steam_ready && steam_stats_ready ){ SteamAPI_ISteamUserStats_StoreStats( hSteamUserStats ); } } -static void steam_set_achievement( const char *name ){ +static void steam_set_achievement( enum mc_achievement id ){ + if( steam_achievement_set[ id ] ) return; + const char *name = steam_achievement_names[ id ]; + if( steam_ready && steam_stats_ready ){ if( SteamAPI_ISteamUserStats_SetAchievement( hSteamUserStats, name ) ){ vg_success( "Achievement set! '%s'\n", name ); @@ -67,15 +86,21 @@ static void steam_set_achievement( const char *name ){ else{ vg_warn( "Failed to set achievement (steam not ready): %s\n", name ); } + + steam_achievement_set[ id ] = 1; } static void sw_set_achievement( const char *name ){ - steam_set_achievement( name ); - steam_store_achievements(); + for( u32 i=0; i