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
This commit is contained in:
mageven 2020-08-30 22:21:53 +05:30 committed by GitHub
parent f3e12d5b02
commit b9398f1f3a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 159 additions and 70 deletions

View file

@ -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)
{