From aa5f169641a0c0f5f5db70fa08fdbf5effc31711 Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 16 Jul 2018 08:07:15 -0400 Subject: [PATCH] add online leaderboard toggle for current rate only i really didn't want to do it this way but you forced my hand nick!!!! --- src/DownloadManager.cpp | 7 +++++++ src/FilterManager.cpp | 10 ++++++++++ src/FilterManager.h | 1 + 3 files changed, 18 insertions(+) diff --git a/src/DownloadManager.cpp b/src/DownloadManager.cpp index b41bbcda40..cce847dfcc 100644 --- a/src/DownloadManager.cpp +++ b/src/DownloadManager.cpp @@ -20,6 +20,7 @@ #include "Song.h" #include #include +#include using json = nlohmann::json; #ifdef _WIN32 #include @@ -788,6 +789,7 @@ void DownloadManager::RequestChartLeaderBoard(string chartkey) vector & vec = DLMAN->chartLeaderboards[chartkey]; vec.clear(); unordered_set userswithscores; + float currentrate = GAMESTATE->m_SongOptions.GetCurrent().m_fMusicRate; try { auto j = json::parse(req.result); if (j.find("errors") != j.end()) @@ -822,7 +824,12 @@ void DownloadManager::RequestChartLeaderBoard(string chartkey) tmp.letgo = judgements.value("letGoHold", 0); } tmp.datetime.FromString(score.value("datetime", "0")); + + // filter scores not on the current rate out if enabled... dunno if we need this precision -mina tmp.rate = score.value("rate", 0.0); + if (FILTERMAN->currentrateonlyforonlineleaderboardrankings) + if(lround(tmp.rate * 10000.f) != lround(currentrate * 10000.f)) + continue; tmp.nocc = score.value("noCC", 0); tmp.valid = score.value("valid", 0); diff --git a/src/FilterManager.cpp b/src/FilterManager.cpp index 47ee4c5da4..8464b08b68 100644 --- a/src/FilterManager.cpp +++ b/src/FilterManager.cpp @@ -127,6 +127,14 @@ class LunaFilterManager : public Luna lua_pushboolean(L, p->HighestSkillsetsOnly); return 1; } + static int ToggleCurrentRateOnlyForOnlineLeaderBoard(T* p, lua_State* L) { + p->currentrateonlyforonlineleaderboardrankings = !p->currentrateonlyforonlineleaderboardrankings; + return 1; + } + static int IsCurrentRateOnlyForOnlineLeaderBoard(T* p, lua_State* L) { + lua_pushnumber(L, static_cast(p->currentrateonlyforonlineleaderboardrankings)); + return 1; + } LunaFilterManager() { ADD_METHOD(SetSSFilter); ADD_METHOD(GetSSFilter); @@ -140,6 +148,8 @@ class LunaFilterManager : public Luna ADD_METHOD(GetFilterMode); ADD_METHOD(ToggleHighestSkillsetsOnly); ADD_METHOD(GetHighestSkillsetsOnly); + ADD_METHOD(ToggleCurrentRateOnlyForOnlineLeaderBoard); + ADD_METHOD(IsCurrentRateOnlyForOnlineLeaderBoard); } }; diff --git a/src/FilterManager.h b/src/FilterManager.h index ffc7631811..17ec487782 100644 --- a/src/FilterManager.h +++ b/src/FilterManager.h @@ -20,6 +20,7 @@ class FilterManager { void ResetSSFilters(); // reset button for filters bool HighestSkillsetsOnly = false; bool AnyActiveFilter(); + bool currentrateonlyforonlineleaderboardrankings = false; //Lua void PushSelf(lua_State *L);