Kaynağa Gözat

Open skins folder -> open skin folder

kiwec 3 ay önce
ebeveyn
işleme
c9a90001ee

+ 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("- Changed \"Open Skins folder\" button to open the currently selected skin's folder");
     latest.changes.push_back("- Fixed sliderslide and spinnerspin sounds not looping");
     latest.changes.push_back("- Improved sound engine reliability");
     latest.changes.push_back("- Removed sliderhead fadeout animation (set osu_slider_sliderhead_fadeout to 1 for old behavior)");

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

@@ -807,19 +807,18 @@ OptionsMenu::OptionsMenu() : ScreenBackable() {
     addSubSection("Skin");
     addSkinPreview();
     {
-        addButton("Open Skin folder")
-            ->setClickCallback(fastdelegate::MakeDelegate(this, &OptionsMenu::openSkinsFolder));
-
         OPTIONS_ELEMENT skinSelect;
         {
             skinSelect = addButton("Select Skin", "default");
             m_skinSelectLocalButton = skinSelect.elements[0];
             m_skinLabel = (CBaseUILabel *)skinSelect.elements[1];
         }
-
         ((CBaseUIButton *)m_skinSelectLocalButton)
             ->setClickCallback(fastdelegate::MakeDelegate(this, &OptionsMenu::onSkinSelect));
 
+        addButton("Open current Skin folder")
+            ->setClickCallback(fastdelegate::MakeDelegate(this, &OptionsMenu::openCurrentSkinFolder));
+
         OPTIONS_ELEMENT skinReload = addButtonButton("Reload Skin", "Random Skin");
         ((UIButton *)skinReload.elements[0])
             ->setClickCallback(fastdelegate::MakeDelegate(this, &OptionsMenu::onSkinReload));
@@ -2376,12 +2375,22 @@ void OptionsMenu::onRawInputToAbsoluteWindowChange(CBaseUICheckbox *checkbox) {
     }
 }
 
-void OptionsMenu::openSkinsFolder() {
-    UString skinFolder = convar->getConVarByName("osu_folder")->getString();
-    skinFolder.append(convar->getConVarByName("osu_folder_sub_skins")->getString());
-
-    std::string skin_folder_str(skinFolder.toUtf8());
-    env->openDirectory(skin_folder_str);
+void OptionsMenu::openCurrentSkinFolder() {
+    auto current_skin = convar->getConVarByName("osu_skin")->getString();
+    if(current_skin == UString("default")) {
+#ifdef _WIN32
+        // ................yeah
+        env->openDirectory(MCENGINE_DATA_DIR "materials\\default");
+#else
+        env->openDirectory(MCENGINE_DATA_DIR "materials/default");
+#endif
+    } else {
+        UString skinFolder = convar->getConVarByName("osu_folder")->getString();
+        skinFolder.append(convar->getConVarByName("osu_folder_sub_skins")->getString());
+        skinFolder.append(current_skin);
+        std::string skin_folder_str(skinFolder.toUtf8());
+        env->openDirectory(skinFolder.toUtf8());
+    }
 }
 
 void OptionsMenu::onSkinSelect() {

+ 1 - 1
src/App/Osu/OptionsMenu.h

@@ -111,7 +111,7 @@ class OptionsMenu : public ScreenBackable, public NotificationOverlayKeyListener
     void onBorderlessWindowedChange(CBaseUICheckbox *checkbox);
     void onDPIScalingChange(CBaseUICheckbox *checkbox);
     void onRawInputToAbsoluteWindowChange(CBaseUICheckbox *checkbox);
-    void openSkinsFolder();
+    void openCurrentSkinFolder();
     void onSkinSelect();
     void onSkinSelect2(UString skinName, int id = -1);
     void onSkinReload();

+ 6 - 0
src/Engine/Main/EngineFeatures.h

@@ -1,9 +1,15 @@
 #pragma once
 
 #ifndef MCENGINE_DATA_DIR
+
+#ifdef _WIN32
+#define MCENGINE_DATA_DIR ".\\"
+#else
 #define MCENGINE_DATA_DIR "./"
 #endif
 
+#endif
+
 /*
  * OpenGL graphics (Desktop, legacy + modern)
  */