private Task LoadPackages() { return(Task.Run(() => { try { loading = true; pkgManager.PackageGroups = new List <IPackageGroup>(); foreach (var dir in new DirectoryInfo(Localizer.SourcePackageDirPath).GetDirectories()) { try { var package2 = sourcePackageLoadServiceService.Load(dir.FullName, fileLoadService); if (package2 != null) { pkgManager.AddPackage(package2); } } catch { } } var list = Directory.GetFiles(Localizer.DownloadPackageDirPath).ToList(); list.AddRange(Directory.GetFiles(Path.Combine(Terraria.Main.SavePath, "Mods"), "*.locpack")); foreach (var file in list) { try { var package = packedPackageLoadServiceService.Load(file, fileLoadService); if (package != null) { pkgManager.AddPackage(package); } } catch { } } pkgManager.LoadState(); } catch (Exception o) { Utils.LogError(o); } finally { loading = false; RefreshPkgList(); } })); }
private void Export() { try { if (SelectedMod == null) { MessageBox.Show(_("No-Selected-Mod-Error-Message")); return; } if (string.IsNullOrWhiteSpace(PackageName)) { MessageBox.Show(_("No-Package-Name-Error-Message")); return; } var package = new Package { Name = PackageName, Language = SelectedLanguage, ModName = SelectedMod.Name, Files = new ObservableCollection <IFile>() }; var dirPath = Utils.EscapePath(Path.Combine(Localizer.Localizer.SourcePackageDirPath, PackageName)); packageExportService.Export(package, new ExportConfig { ForceOverride = ForceOverride, MakeBackup = MakeBackup, WithTranslation = WithTranslation }); IPackage oldPack; if (Directory.Exists(dirPath)) { oldPack = sourcePackageLoadServiceService.Load(dirPath, fileLoadService); } else { Utils.CreateDirectory(dirPath); oldPack = null; } if (MakeBackup && oldPack != null) { var backupDirPath = Utils.EscapePath(Path.Combine(dirPath, "Backups", Utils.DateTimeToFileName(DateTime.Now))); Utils.CreateDirectory(backupDirPath); packageSaveService.Save(oldPack, backupDirPath, fileSaveService); Utils.LogDebug($"[{PackageName}'s backup created.]"); } if (!ForceOverride && oldPack != null) { var updateLogger = Localizer.Localizer.Kernel.Get <IUpdateLogService>(); updateLogger.Init($"{package.Name}-{Utils.DateTimeToFileName(DateTime.Now)}"); packageUpdateService.Update(oldPack, package, updateLogger); packageSaveService.Save(oldPack, dirPath, fileSaveService); } else { packageSaveService.Save(package, dirPath, fileSaveService); } MessageBox.Show(string.Format(_("Package-Exported-Success-Message"), PackageName)); } catch (Exception e) { MessageBox.Show(e.ToString()); Localizer.Localizer.Log.Error(e); } }