get updates and dlc from documents on ios

This commit is contained in:
riperiperi 2024-01-07 22:39:59 +00:00
parent 3cd42f99aa
commit 57949d03e5

View File

@ -92,7 +92,7 @@ namespace Ryujinx.HLE.Loaders.Processes.Extensions
string titleUpdateMetadataPath = System.IO.Path.Combine(AppDataManager.GamesDirPath, titleIdBase.ToString("x16"), "updates.json"); string titleUpdateMetadataPath = System.IO.Path.Combine(AppDataManager.GamesDirPath, titleIdBase.ToString("x16"), "updates.json");
if (File.Exists(titleUpdateMetadataPath)) if (File.Exists(titleUpdateMetadataPath))
{ {
string updatePath = JsonHelper.DeserializeFromFile(titleUpdateMetadataPath, _titleSerializerContext.TitleUpdateMetadata).Selected; string updatePath = PlatformRelative(JsonHelper.DeserializeFromFile(titleUpdateMetadataPath, _titleSerializerContext.TitleUpdateMetadata).Selected);
if (File.Exists(updatePath)) if (File.Exists(updatePath))
{ {
PartitionFileSystem updatePartitionFileSystem = new(); PartitionFileSystem updatePartitionFileSystem = new();
@ -153,13 +153,15 @@ namespace Ryujinx.HLE.Loaders.Processes.Extensions
{ {
foreach (DownloadableContentNca downloadableContentNca in downloadableContentContainer.DownloadableContentNcaList) foreach (DownloadableContentNca downloadableContentNca in downloadableContentContainer.DownloadableContentNcaList)
{ {
if (File.Exists(downloadableContentContainer.ContainerPath) && downloadableContentNca.Enabled) string dlcPath = PlatformRelative(downloadableContentContainer.ContainerPath);
if (File.Exists(dlcPath) && downloadableContentNca.Enabled)
{ {
device.Configuration.ContentManager.AddAocItem(downloadableContentNca.TitleId, downloadableContentContainer.ContainerPath, downloadableContentNca.FullPath); device.Configuration.ContentManager.AddAocItem(downloadableContentNca.TitleId, dlcPath, downloadableContentNca.FullPath);
} }
else else
{ {
Logger.Warning?.Print(LogClass.Application, $"Cannot find AddOnContent file {downloadableContentContainer.ContainerPath}. It may have been moved or renamed."); Logger.Warning?.Print(LogClass.Application, $"Cannot find AddOnContent file {dlcPath}. It may have been moved or renamed.");
} }
} }
} }
@ -173,6 +175,16 @@ namespace Ryujinx.HLE.Loaders.Processes.Extensions
return (false, ProcessResult.Failed); return (false, ProcessResult.Failed);
} }
private static string PlatformRelative(string path)
{
if (OperatingSystem.IsIOS() && !File.Exists(path))
{
path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), path);
}
return path;
}
public static Nca GetNca(this IFileSystem fileSystem, Switch device, string path) public static Nca GetNca(this IFileSystem fileSystem, Switch device, string path)
{ {
using var ncaFile = new UniqueRef<IFile>(); using var ncaFile = new UniqueRef<IFile>();