Compare commits

...

2 Commits

Author SHA1 Message Date
Nicolas Gnyra d8b35621c8 Merge branch 'upload-score-sort-method' into 'master'
Check `sort_method` when comparing scores in `UploadLeaderboardScore`

See merge request Mr_Goldberg/goldberg_emulator!52
2023-09-26 16:08:18 +00:00
Nicolas Gnyra d4f0031f1e Use `sort_method` when comparing scores in `UploadLeaderboardScore` 2023-09-26 12:08:03 -04:00
1 changed files with 6 additions and 2 deletions

View File

@ -18,12 +18,13 @@
#ifndef __INCLUDED_STEAM_USER_STATS_H__ #ifndef __INCLUDED_STEAM_USER_STATS_H__
#define __INCLUDED_STEAM_USER_STATS_H__ #define __INCLUDED_STEAM_USER_STATS_H__
#include <limits>
#include "base.h" #include "base.h"
#include "../overlay_experimental/steam_overlay.h" #include "../overlay_experimental/steam_overlay.h"
struct Steam_Leaderboard_Score { struct Steam_Leaderboard_Score {
CSteamID steam_id; CSteamID steam_id;
int32 score = 0; int32 score;
std::vector<int32> score_details; std::vector<int32> score_details;
}; };
@ -831,6 +832,7 @@ SteamAPICall_t FindOrCreateLeaderboard( const char *pchLeaderboardName, ELeaderb
leaderboard.name = std::string(pchLeaderboardName); leaderboard.name = std::string(pchLeaderboardName);
leaderboard.sort_method = eLeaderboardSortMethod; leaderboard.sort_method = eLeaderboardSortMethod;
leaderboard.display_type = eLeaderboardDisplayType; leaderboard.display_type = eLeaderboardDisplayType;
leaderboard.self_score.score = eLeaderboardSortMethod == k_ELeaderboardSortMethodAscending ? INT_MAX : INT_MIN;
std::vector<Steam_Leaderboard_Score> scores = load_leaderboard_scores(pchLeaderboardName); std::vector<Steam_Leaderboard_Score> scores = load_leaderboard_scores(pchLeaderboardName);
for (auto &s : scores) { for (auto &s : scores) {
@ -1021,7 +1023,9 @@ SteamAPICall_t UploadLeaderboardScore( SteamLeaderboard_t hSteamLeaderboard, ELe
bool changed = false; bool changed = false;
if (eLeaderboardUploadScoreMethod == k_ELeaderboardUploadScoreMethodKeepBest) { if (eLeaderboardUploadScoreMethod == k_ELeaderboardUploadScoreMethodKeepBest) {
if (leaderboards[hSteamLeaderboard - 1].self_score.score <= score.score) { if (leaderboards[hSteamLeaderboard - 1].sort_method == k_ELeaderboardSortMethodAscending
? leaderboards[hSteamLeaderboard - 1].self_score.score >= score.score
: leaderboards[hSteamLeaderboard - 1].self_score.score <= score.score) {
leaderboards[hSteamLeaderboard - 1].self_score = score; leaderboards[hSteamLeaderboard - 1].self_score = score;
changed = true; changed = true;
} }