示例#1
0
 private static void PackageSource_InitializeSources(object sender, System.EventArgs e)
 {
     //AssetDatabase.DeleteAsset(CachePath);
     ThunderstoreAPI.PagesLoaded -= ThunderstoreAPI_PagesLoaded;
     ThunderstoreAPI.PagesLoaded += ThunderstoreAPI_PagesLoaded;
     ThunderstoreAPI.ReloadPages();
 }
示例#2
0
        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);
        }
示例#3
0
        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();
        }
示例#5
0
        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;
            }
        }
示例#6
0
        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();
            }
        }
示例#7
0
        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);
        }