From 70ab93c62fa174de071829f670abf042f040fe85 Mon Sep 17 00:00:00 2001 From: Detanup01 <91248446+Detanup01@users.noreply.github.com> Date: Mon, 30 Sep 2024 19:26:09 +0200 Subject: [PATCH] update stats to a % system --- dll/dll/settings.h | 1 - dll/settings_parser.cpp | 16 ++++------------ dll/steam_user_stats_stats.cpp | 11 ++++++----- .../configs.main.EXAMPLE.ini | 4 +--- 4 files changed, 11 insertions(+), 21 deletions(-) diff --git a/dll/dll/settings.h b/dll/dll/settings.h index dfde1d5a..4353913e 100644 --- a/dll/dll/settings.h +++ b/dll/dll/settings.h @@ -259,7 +259,6 @@ public: // the stat itself is always saved regardless of that flag, only affects the achievement progress bool save_only_higher_stat_achievement_progress = true; // Minimum value to indicate progress being made for the user. - int stat_int_min_diff_progress = 1; float stat_float_min_diff_progress = 0.1; // the emulator loads the achievements icons is memory mainly for `ISteamUserStats::GetAchievementIcon()` // this defines how many icons to load each iteration when the periodic callback in `Steam_User_Stats` is triggered diff --git a/dll/settings_parser.cpp b/dll/settings_parser.cpp index b630fe70..17cc0676 100644 --- a/dll/settings_parser.cpp +++ b/dll/settings_parser.cpp @@ -1450,19 +1450,11 @@ static void parse_stats_features(class Settings *settings_client, class Settings } { - long val_client_i = ini.GetLongValue("main::stats", "stat_int_min_diff_progress", settings_client->stat_int_min_diff_progress); - settings_client->stat_int_min_diff_progress = static_cast(val_client_i); + double val_client_d = ini.GetDoubleValue("main::stats", "stat_min_diff_progress", settings_client->stat_min_diff_progress); + settings_client->stat_min_diff_progress = static_cast(val_client_d); - long val_server_i = ini.GetLongValue("main::stats", "stat_int_min_diff_progress", settings_server->stat_int_min_diff_progress); - settings_server->stat_int_min_diff_progress = static_cast(val_server_i); - } - - { - double val_client_d = ini.GetDoubleValue("main::stats", "stat_float_min_diff_progress", settings_client->stat_float_min_diff_progress); - settings_client->stat_float_min_diff_progress = static_cast(val_client_d); - - double val_server_d = ini.GetDoubleValue("main::stats", "stat_float_min_diff_progress", settings_server->stat_float_min_diff_progress); - settings_server->stat_float_min_diff_progress = static_cast(val_server_d); + double val_server_d = ini.GetDoubleValue("main::stats", "stat_min_diff_progress", settings_server->stat_min_diff_progress); + settings_server->stat_min_diff_progress = static_cast(val_server_d); } } diff --git a/dll/steam_user_stats_stats.cpp b/dll/steam_user_stats_stats.cpp index ddf34a58..4947f755 100644 --- a/dll/steam_user_stats_stats.cpp +++ b/dll/steam_user_stats_stats.cpp @@ -127,9 +127,9 @@ Steam_User_Stats::InternalSetResult Steam_User_Stats::set_stat_internal( } } catch(...){} } - // Alternative progress based on %: - // ((nData - std:stoi(t.last_notified_progress)) / std::stoi(t.max_value)) >= settings->stat_int_min_diff_progress_presentage - if (indicate_progress && (nData - std:stoi(t.last_notified_progress)) >= settings->stat_int_min_diff_progress) { + + if (indicate_progress && ((nData - std::stof(t.last_notified_progress) / std::stof(t.max_value) >= settings->stat_min_diff_progress))) + { IndicateAchievementProgress(t.name.c_str(), nData, std::stoi(t.max_value)); t.last_notified_progress = std::to_string(nData); } @@ -204,9 +204,10 @@ Steam_User_Stats::InternalSetResult= settings->stat_float_min_diff_progress) { + if (indicate_progress && ((fData - std::stof(t.last_notified_progress) / std::stof(t.max_value) >= settings->stat_min_diff_progress))) + { IndicateAchievementProgress(t.name.c_str(), (uint32)fData, (uint32)std::stof(t.max_value)); - t.last_notified_progress = std::to_string(nData); + t.last_notified_progress = std::to_string(fData); } } } diff --git a/post_build/steam_settings.EXAMPLE/configs.main.EXAMPLE.ini b/post_build/steam_settings.EXAMPLE/configs.main.EXAMPLE.ini index 696c6d2e..e06b7dd6 100644 --- a/post_build/steam_settings.EXAMPLE/configs.main.EXAMPLE.ini +++ b/post_build/steam_settings.EXAMPLE/configs.main.EXAMPLE.ini @@ -72,10 +72,8 @@ paginated_achievements_icons=10 # Minimum value to indicate progress being made for the user. # Usually good for achievement that use stat values and contains high number (ie: kill 200 cops) -# default=1 -stat_int_min_diff_progress=1 # default=0.1 -stat_float_min_diff_progress=0.1 +stat_min_diff_progress=0.1 [main::connectivity] # 1=prevent hooking OS networking APIs and allow any external requests