private void CopySaves() { // Copy saves DirectoryInfo src = new DirectoryInfo(SpecialFolders.CurrentUserSaveDirCemu(runningVersion, runningGame)); DirectoryInfo dest = new DirectoryInfo(SpecialFolders.CurrentUserSaveDirBudford(Model, Model.CurrentUser, runningGame, "")); DirectoryInfo src255 = new DirectoryInfo(SpecialFolders.CommonUserFolderCemu(runningVersion, runningGame)); DirectoryInfo dest255 = new DirectoryInfo(SpecialFolders.CommonSaveDirBudford(Model, runningGame, "")); if (Directory.Exists(src.FullName)) { if (File.Exists(Path.Combine(src.FullName, "Budford.lck"))) { // Delete the lock file, to allow Budford to overwrite the Cemu save in future. File.Delete(Path.Combine(src.FullName, "Budford.lck")); } if (src.GetDirectories().Any() || src.GetFiles().Any() || (Directory.Exists(src255.FullName) && (src255.GetFiles().Any() || src255.GetDirectories().Any()))) { if (!Directory.Exists(dest.FullName)) { dest.Create(); } if (!Directory.Exists(dest255.FullName)) { dest255.Create(); } FileManager.CopyFilesRecursively(src, dest, false, true); FileManager.CopyFilesRecursively(src255, dest255, false, true); } } }
/// <summary> /// /// </summary> /// <param name="model"></param> /// <param name="game"></param> internal void CreateSaveSnapshot(Model.Model model, GameInformation game) { if (!game.SaveDir.StartsWith("??")) { if (runningVersion == null) { SetCemuVersion(model, game); } DirectoryInfo saveDir = new DirectoryInfo(SpecialFolders.CurrentUserSaveDirBudford(model, "", game, "")); string snapShotDir = "S_" + saveDir.EnumerateDirectories().Count(); DirectoryInfo src = new DirectoryInfo(SpecialFolders.CurrentUserSaveDirCemu(runningVersion, game)); DirectoryInfo dest = new DirectoryInfo(SpecialFolders.CurrentUserSaveDirBudford(model, model.CurrentUser, game, snapShotDir)); UpdateFolder(src, dest); src = new DirectoryInfo(SpecialFolders.CommonUserFolderCemu(runningVersion, game)); dest = new DirectoryInfo(SpecialFolders.CommonSaveDirBudford(model, game, snapShotDir)); UpdateFolder(src, dest); } }
/// <summary> /// /// </summary> /// <param name="game"></param> private void CopyLatestSaveToCemu(GameInformation game) { if (!game.SaveDir.StartsWith("??")) { DirectoryInfo src = new DirectoryInfo(SpecialFolders.CurrentUserSaveDirBudford(Model, Model.CurrentUser, game, "")); DirectoryInfo dest = new DirectoryInfo(SpecialFolders.CurrentUserSaveDirCemu(runningVersion, game)); string lockFileName = Path.Combine(dest.FullName, "Budford.lck"); if (File.Exists(lockFileName)) { // This save has been locked, which means budford launched the game, but wasn't running with it exitted. // In this case we won't overwrite the save as it is sure to be newer return; } UpdateFolder(src, dest, true); src = new DirectoryInfo(SpecialFolders.CommonSaveDirBudford(Model, game, "")); dest = new DirectoryInfo(SpecialFolders.CommonUserFolderCemu(runningVersion, game)); UpdateFolder(src, dest); CreateLockFile(lockFileName); } }