From b9398f1f3a13612a0bc3e64205cdb7eca3f48d4d Mon Sep 17 00:00:00 2001
From: mageven <62494521+mageven@users.noreply.github.com>
Date: Sun, 30 Aug 2020 22:21:53 +0530
Subject: Allow launching with custom data directories (#1505)

* Allow launching with custom data directories

Don't load alternate keys when using custom directory

* Address gdkchan's comments

* Misc fixes to log levels

Added more enabled log levels by default

Moved successful config updation to Notice as
1. It's not a warning
2. Warnings could've been disabled by the config load and hence message
   would be lost
---
 Ryujinx.HLE/FileSystem/VirtualFileSystem.cs | 37 ++++++++---------------------
 1 file changed, 10 insertions(+), 27 deletions(-)

(limited to 'Ryujinx.HLE/FileSystem/VirtualFileSystem.cs')

diff --git a/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs b/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs
index 58890995..a95c9c0f 100644
--- a/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs
+++ b/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs
@@ -4,6 +4,7 @@ using LibHac.Fs;
 using LibHac.FsService;
 using LibHac.FsSystem;
 using LibHac.Spl;
+using Ryujinx.Common.Configuration;
 using Ryujinx.HLE.FileSystem.Content;
 using Ryujinx.HLE.HOS;
 using System;
@@ -13,11 +14,8 @@ namespace Ryujinx.HLE.FileSystem
 {
     public class VirtualFileSystem : IDisposable
     {
-        public const string BasePath   = "Ryujinx";
-        public const string NandPath   = "bis";
-        public const string SdCardPath = "sdcard";
-        public const string SystemPath = "system";
-        public const string ModsPath   = "mods";
+        public const string NandPath   = AppDataManager.DefaultNandDir;
+        public const string SdCardPath = AppDataManager.DefaultSdcardDir;
 
         public static string SafeNandPath   = Path.Combine(NandPath, "safe");
         public static string SystemNandPath = Path.Combine(NandPath, "system");
@@ -77,20 +75,10 @@ namespace Ryujinx.HLE.FileSystem
             return fullPath;
         }
 
-        public string GetBaseModsPath()
-        {
-            var baseModsDir = Path.Combine(GetBasePath(), "mods");
-            ModLoader.EnsureBaseDirStructure(baseModsDir);
-
-            return baseModsDir;
-        }
-
-        public string GetSdCardPath() => MakeFullPath(SdCardPath);
-
+        internal string GetBasePath() => AppDataManager.BaseDirPath;
+        internal string GetSdCardPath() => MakeFullPath(SdCardPath);
         public string GetNandPath() => MakeFullPath(NandPath);
 
-        public string GetSystemPath() => MakeFullPath(SystemPath);
-
         internal string GetSavePath(ServiceCtx context, SaveInfo saveInfo, bool isDirectory = true)
         {
             string saveUserPath   = "";
@@ -207,13 +195,6 @@ namespace Ryujinx.HLE.FileSystem
             return new DriveInfo(Path.GetPathRoot(GetBasePath()));
         }
 
-        public string GetBasePath()
-        {
-            string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
-
-            return Path.Combine(appDataPath, BasePath);
-        }
-
         public void Reload()
         {
             ReloadKeySet();
@@ -245,10 +226,12 @@ namespace Ryujinx.HLE.FileSystem
             string titleKeyFile   = null;
             string consoleKeyFile = null;
 
-            string home = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
+            if (!AppDataManager.IsCustomBasePath)
+            {
+                LoadSetAtPath(AppDataManager.KeysDirPathAlt);
+            }
 
-            LoadSetAtPath(Path.Combine(home, ".switch"));
-            LoadSetAtPath(GetSystemPath());
+            LoadSetAtPath(AppDataManager.KeysDirPath);
 
             void LoadSetAtPath(string basePath)
             {
-- 
cgit v1.2.3-70-g09d2