From 3c731f9cea380ac4ed699d62c30e8fb0fa13b779 Mon Sep 17 00:00:00 2001 From: Fireblade <72758695+Firebladedoge229@users.noreply.github.com> Date: Tue, 21 Apr 2026 14:20:25 -0400 Subject: [PATCH] fix. leaderboard filtration --- .../WindowsLeaderboardManager.cpp | 44 +++++++++---------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/Minecraft.Client/Windows64/Leaderboards/WindowsLeaderboardManager.cpp b/Minecraft.Client/Windows64/Leaderboards/WindowsLeaderboardManager.cpp index 8f3d8047..091c05c5 100644 --- a/Minecraft.Client/Windows64/Leaderboards/WindowsLeaderboardManager.cpp +++ b/Minecraft.Client/Windows64/Leaderboards/WindowsLeaderboardManager.cpp @@ -589,10 +589,25 @@ bool WindowsLeaderboardManager::ReadLocalStats(LeaderboardReadListener* callback for (size_t i = 0; i < allRows.size(); ++i) allRows[i].m_rank = static_cast(i + 1); + size_t playerIndex = 0; + for (size_t i = 0; i < allRows.size(); ++i) + { + if (RowMatchesPlayer(allRows[i], localScore)) + { + playerIndex = i; + break; + } + } + size_t pageStart = 0; size_t pageCount = allRows.size(); - if (m_eFilterMode == eFM_TopRank) + if (m_eFilterMode == eFM_MyScore) + { + pageStart = playerIndex; + pageCount = 1; + } + else if (m_eFilterMode == eFM_TopRank) { if (m_startIndex > 0) pageStart = std::min(static_cast(m_startIndex - 1), allRows.size()); @@ -601,28 +616,6 @@ bool WindowsLeaderboardManager::ReadLocalStats(LeaderboardReadListener* callback if (m_readCount > 0) pageCount = std::min(pageCount, static_cast(m_readCount)); } - else if (m_eFilterMode == eFM_MyScore && m_readCount > 0 && allRows.size() > m_readCount) - { - size_t playerIndex = 0; - for (size_t i = 0; i < allRows.size(); ++i) - { - if (RowMatchesPlayer(allRows[i], localScore)) - { - playerIndex = i; - break; - } - } - - const size_t windowSize = static_cast(m_readCount); - const size_t halfWindow = windowSize / 2; - pageStart = (playerIndex > halfWindow) ? (playerIndex - halfWindow) : 0; - - const size_t maxStart = allRows.size() - windowSize; - if (pageStart > maxStart) - pageStart = maxStart; - - pageCount = windowSize; - } std::vector pageRows; if (pageStart < allRows.size() && pageCount > 0) @@ -643,9 +636,12 @@ bool WindowsLeaderboardManager::ReadLocalStats(LeaderboardReadListener* callback view.m_numQueries = static_cast(pageRows.size()); view.m_queries = pageRows.data(); + const int totalResults = (m_eFilterMode == eFM_MyScore) + ? static_cast(pageRows.size()) + : static_cast(allRows.size()); callback->OnStatsReadComplete( eStatsReturn_Success, - static_cast(allRows.size()), + totalResults, view); return true;