private static void PackageSource_InitializeSources(object sender, System.EventArgs e) { //AssetDatabase.DeleteAsset(CachePath); ThunderstoreAPI.PagesLoaded -= ThunderstoreAPI_PagesLoaded; ThunderstoreAPI.PagesLoaded += ThunderstoreAPI_PagesLoaded; ThunderstoreAPI.ReloadPages(); }
protected override void OnInstallPackageFiles(PV version, string packageDirectory) { var tsPackage = ThunderstoreAPI.LookupPackage(version.group.DependencyId).First(); var tsPackageVersion = tsPackage.versions.First(tspv => tspv.version_number.Equals(version.version)); var filePath = Path.Combine(packageDirectory, $"{tsPackageVersion.full_name}.zip"); using (var client = new WebClient()) { client.DownloadFile(tsPackageVersion.download_url, filePath); } using (var archive = ArchiveFactory.Open(filePath)) { foreach (var entry in archive.Entries.Where(entry => entry.IsDirectory)) { var path = Path.Combine(packageDirectory, entry.Key); Directory.CreateDirectory(path); } var extractOptions = new ExtractionOptions { ExtractFullPath = true, Overwrite = true }; foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory)) { entry.WriteToDirectory(packageDirectory, extractOptions); } } File.Delete(filePath); }
protected override void OnLoadPackages() { var loadedPackages = ThunderstoreAPI.LookupPackage(string.Empty); var realMods = loadedPackages.Where(tsp => !tsp.categories.Contains("Modpacks")); var orderByPinThenName = realMods.OrderByDescending(tsp => tsp.is_pinned).ThenBy(tsp => tsp.name); foreach (var tsp in orderByPinThenName) { var versions = tsp.versions.Select(v => new PackageVersionInfo(v.version_number, v.full_name, v.dependencies)); AddPackageGroup(tsp.owner, tsp.name, tsp.Latest.description, tsp.full_name, tsp.categories, versions); } }
private static void PackageSource_InitializeSources(object sender, System.EventArgs e) { AssetDatabase.DeleteAsset(CachePath); ThunderstoreAPI.ReloadPages(); var tss = ScriptableHelper.EnsureAsset <ThunderstoreSource>(CachePath, source => { source.hideFlags = UnityEngine.HideFlags.NotEditable; }); tss.LoadPackages(); EditorUtility.SetDirty(tss); AssetDatabase.SaveAssets(); }
public static void Initialize() { AssetDatabase.DeleteAsset(CachePath); ThunderstoreAPI.ReloadPages(); var isNew = false; var source = ScriptableHelper.EnsureAsset <ThunderstoreSource>(CachePath, so => { isNew = true; }); if (isNew) { source.hideFlags = UnityEngine.HideFlags.NotEditable; source.LoadPackages(); //EditorApplication.update += ProcessDownloads; } }
public static async Task Initialize() { await ThunderstoreAPI.ReloadPages(); var isNew = false; var source = ScriptableHelper.EnsureAsset <ThunderstoreSource>(CachePath, so => { isNew = true; }); if (isNew) { source.LoadPackages(); source.hideFlags = UnityEngine.HideFlags.NotEditable; EditorUtility.SetDirty(source); AssetDatabase.SaveAssets(); } }
public override async Task OnInstallPackageFiles(PV version, string packageDirectory) { var tsPackage = ThunderstoreAPI.LookupPackage(version.group.DependencyId).First(); var tsPackageVersion = tsPackage.versions.First(tspv => tspv.version_number.Equals(version.version)); var filePath = Path.Combine(packageDirectory, $"{tsPackageVersion.full_name}.zip"); ThunderstoreAPI.DownloadPackage(tsPackageVersion, filePath); while (!File.Exists(filePath)) { await Task.Delay(1); } using (var fileStream = File.OpenRead(filePath)) using (var archive = new ZipArchive(fileStream)) foreach (var entry in archive.Entries) { var outputPath = Path.Combine(packageDirectory, entry.FullName); var outputDir = Path.GetDirectoryName(outputPath); if (entry.FullName.ToLower().EndsWith("/") || entry.FullName.ToLower().EndsWith("\\")) { if (!Directory.Exists(outputPath)) { Directory.CreateDirectory(outputPath); } continue; } if (!Directory.Exists(outputDir)) { Directory.CreateDirectory(outputDir); } entry.ExtractToFile(outputPath); } File.Delete(filePath); }