private static Result ImportSave(FileSystemClient fs, SaveToImport save) { SaveDataAttribute key = save.Attribute; Result result = fs.CreateSaveData(key.TitleId, key.UserId, key.TitleId, 0, 0, 0); if (result.IsFailure()) { return(result); } bool isOldMounted = false; bool isNewMounted = false; try { result = fs.Register("OldSave".ToU8Span(), new LocalFileSystem(save.Path)); if (result.IsFailure()) { return(result); } isOldMounted = true; result = fs.MountSaveData("NewSave".ToU8Span(), key.TitleId, key.UserId); if (result.IsFailure()) { return(result); } isNewMounted = true; result = fs.CopyDirectory("OldSave:/", "NewSave:/"); if (result.IsFailure()) { return(result); } result = fs.Commit("NewSave"); } finally { if (isOldMounted) { fs.Unmount("OldSave"); } if (isNewMounted) { fs.Unmount("NewSave"); } } return(result); }
private void SearchUser(string path, ulong saveDataId, UserId userId) { foreach (string subDir in Directory.EnumerateDirectories(path)) { if (TryGetUInt64(subDir, out ulong titleId) && TryGetDataPath(subDir, out string dataPath)) { SaveDataAttribute attribute = new SaveDataAttribute { Type = SaveDataType.Account, UserId = userId, TitleId = new TitleId(titleId) }; SaveToImport save = new SaveToImport(dataPath, attribute); Saves.Add(save); } } }