Pārlūkot izejas kodu

Add sort_skins_by_name convar

kiwec 3 mēneši atpakaļ
vecāks
revīzija
7db7263ef5
3 mainītis faili ar 23 papildinājumiem un 19 dzēšanām
  1. 1 0
      src/App/Osu/Changelog.cpp
  2. 21 19
      src/App/Osu/OptionsMenu.cpp
  3. 1 0
      src/App/Osu/Osu.cpp

+ 1 - 0
src/App/Osu/Changelog.cpp

@@ -29,6 +29,7 @@ Changelog::Changelog() : ScreenBackable() {
     CHANGELOG latest;
     latest.title =
         UString::format("%.2f (%s, %s)", convar->getConVarByName("osu_version")->getFloat(), __DATE__, __TIME__);
+    latest.changes.push_back("- Added sort_skins_by_name convar");
     latest.changes.push_back("- Added setting to prevent servers from replacing the main menu logo");
     latest.changes.push_back("- Chat: added missing chat commands");
     latest.changes.push_back("- Chat: added missing keyboard shortcuts");

+ 21 - 19
src/App/Osu/OptionsMenu.cpp

@@ -2414,29 +2414,31 @@ void OptionsMenu::onSkinSelect() {
     skinFolder.append(convar->getConVarByName("osu_folder_sub_skins")->getString());
     std::vector<std::string> skinFolders = env->getFoldersInFolder(skinFolder.toUtf8());
 
-    // Sort skins only by alphanum characters, ignore the others
-    std::sort(skinFolders.begin(), skinFolders.end(), [](std::string a, std::string b) {
-        int i = 0;
-        int j = 0;
-        while(i < a.length() && j < b.length()) {
-            if(!isalnum(a[i])) {
+    if(convar->getConVarByName("sort_skins_by_name")->getBool()) {
+        // Sort skins only by alphanum characters, ignore the others
+        std::sort(skinFolders.begin(), skinFolders.end(), [](std::string a, std::string b) {
+            int i = 0;
+            int j = 0;
+            while(i < a.length() && j < b.length()) {
+                if(!isalnum(a[i])) {
+                    i++;
+                    continue;
+                }
+                if(!isalnum(b[j])) {
+                    j++;
+                    continue;
+                }
+                char la = tolower(a[i]);
+                char lb = tolower(b[j]);
+                if(la != lb) return la < lb;
+
                 i++;
-                continue;
-            }
-            if(!isalnum(b[j])) {
                 j++;
-                continue;
             }
-            char la = tolower(a[i]);
-            char lb = tolower(b[j]);
-            if(la != lb) return la < lb;
-
-            i++;
-            j++;
-        }
 
-        return false;
-    });
+            return false;
+        });
+    }
 
     if(skinFolders.size() > 0) {
         m_contextMenu->setPos(m_skinSelectLocalButton->getPos());

+ 1 - 0
src/App/Osu/Osu.cpp

@@ -147,6 +147,7 @@ ConVar normalize_loudness("normalize_loudness", false, FCVAR_DEFAULT, "normalize
 ConVar restart_sound_engine_before_playing("restart_sound_engine_before_playing", false, FCVAR_DEFAULT,
                                            "jank fix for users who experience sound issues after playing for a while");
 ConVar instafade("instafade", false, FCVAR_DEFAULT, "don't draw hitcircle fadeout animations");
+ConVar sort_skins_by_name("sort_skins_by_name", true, FCVAR_DEFAULT, "set to false to use old behavior");
 
 ConVar use_https("use_https", true, FCVAR_DEFAULT);
 ConVar mp_server("mp_server", "akatsuki.gg", FCVAR_DEFAULT);