public void Organize()
        {
            var modJarCache = new Dictionary <string, ZipArchive>();

            foreach (var jarPath in ModJarAccessor.textureDomainToModJar.Values)
            {
                modJarCache.Add(jarPath, ZipFile.OpenRead(jarPath));
            }

            const string LOG = "SystemTextre";

            Program.InitializingLogger.Info(LOG, "テクスチャの配置を開始");

            foreach (var entry in srcProvider.Enumerate())
            {
                var jarPath  = ModJarAccessor.textureDomainToModJar[entry.Mod];
                var archive  = modJarCache[jarPath];
                var destFile = destProvider.GetSystemTexturePath(entry.Category, entry.Feature);
                if (!File.Exists(destFile))
                {
                    DirectoryUtil.Create(Path.GetDirectoryName(destFile));
                    Program.InitializingLogger.Info(LOG, $"{jarPath.GetRelativePath()} から {entry.Category}/{entry.Feature} を展開中");
                    archive.GetEntry(entry.SrcPath).ExtractToFile(destFile, overwrite: false);
                }
            }

            Program.InitializingLogger.Info(LOG, "テクスチャの配置完了");
        }
Пример #2
0
        public override void Init()
        {
            base.Init();

            FileComponent   file   = Owner.Get <FileComponent>();
            ClientComponent client = Entity.Get <ClientComponent>();

            try
            {
                // TODO: Support folders!
                //
                string folder = "";                // client.Root;
                string path   = !string.IsNullOrEmpty(folder) ? Path.Combine(client.Download, folder) : client.Download;
                DirectoryUtil.Create(path);

                file.Path = Path.Combine(path, file.Name);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                file.Path = Path.Combine(client.Download, file.Name);
            }

            ServerComponent server = Entity.Get <ServerComponent>();

            if (server.Enabled && Inactive)
            {
                Start();
            }
        }
Пример #3
0
        public bool TryDownload(DownloadCandidate candidate, string filePath)
        {
            if (File.Exists(filePath))
            {
                return(true);
            }

            bool succeeded = false;

            foreach (var urlStr in candidate.Enumerate())
            {
                var url = new Uri(urlStr);

                DirectoryUtil.Create(Path.GetDirectoryName(filePath));
                File.Create(filePath).Close();

                this.logger.Info("Downloader", $"{url} から {filePath.GetRelativePath()} にダウンロード中");
                try {
                    this.client.DownloadFile(url, filePath);
                    succeeded = true;
                }
                catch (Exception ex) {
                    this.logger.Error("Downloader", $"エラー: {ex.Message}");
                    this.logger.Debug("Downloader", $"{ex}");
                    succeeded = false;
                }

                if (succeeded)
                {
                    break;
                }
            }

            return(succeeded);
        }
Пример #4
0
        private void Download(IEnumerable items, string folder)
        {
            foreach (BrowseComponent browse in items)
            {
                if (browse.File)
                {
                    Download(browse);
                }
                else if (browse.Folder)
                {
                    ClientComponent client    = MenuController.SelectedItem;
                    string          subfolder = Path.Combine(folder, browse.Name);
                    string          path      = Path.Combine(client.Download, subfolder);
                    if (!DirectoryUtil.Exists(path))
                    {
                        DirectoryUtil.Create(path);
                    }

                    IEnumerable children = browse.GetChildren(browse);
                    if (children != null && !folder.Equals(subfolder))
                    {
                        Download(children, subfolder);
                    }
                }
            }
        }
        public void AddCategory(string category)
        {
            string categoryDir = this.provider.GetCategoryDirectoryUser(category);

            DirectoryUtil.Create(categoryDir);

            this.Registry.AddCategory(category);
        }
Пример #6
0
        public void generate(string outputPath, IEnumerable <string> supportMods)
        {
            string respackPath = Path.Combine(outputPath, ResourcePackName);

            DirectoryUtil.Create(respackPath);

            organizeModsTextures(respackPath, supportMods);
            generatePackMeta(respackPath);
            compress(respackPath);
            DirectoryUtil.DeleteRecursive(respackPath);
        }
Пример #7
0
        // Constructors
        public DownloadMachine(DownloadData download) : base(download)
        {
            File = new JsonFile();            //download);

            try
            {
                string folder = download.Root;
                string path   = !string.IsNullOrEmpty(folder) ? Path.Combine(download.Client.DownloadFolder, folder) : download.Client.DownloadFolder;
                DirectoryUtil.Create(path);

                Data.Path = Path.Combine(path, download.Name);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Data.Path = Path.Combine(download.Client.DownloadFolder, download.Name);
            }
        }
Пример #8
0
        public void InitEnvironment()
        {
#if DEBUG
            Program.InitializingLogger.Debug("TEST", "debug - 詳細なログ");
            Program.InitializingLogger.Info("TEST", "info - 通常のログ");
            Program.InitializingLogger.Warn("TEST", "warn - 警告。無視しても問題ない");
            Program.InitializingLogger.Error("TEST", "error - エラー。再起不能");
#endif


            DirectoryUtil.Create(DefaultDataDirPath);

            if (!File.Exists(defaultDataFilesZip) || !Directory.Exists(DefaultDataDirPath) || Directory.GetFiles(DefaultDataDirPath).Length == 0)
            {
                generateFileIfNotExists(defaultDataFilesZip, Resources.DefaultDataFilesZip);
                DirectoryUtil.DeleteRecursive(DefaultDataDirPath);
                Program.InitializingLogger.Info("Initializer-Extract", $"{defaultDataFilesZip.GetRelativePath()} を展開中");
                ZipFile.ExtractToDirectory(defaultDataFilesZip, DefaultDataDirPath);
                Program.InitializingLogger.Info("Initializer-Extract", $"展開完了");
            }
            generateFileIfNotExists(systemTextureSettingFilePath, Resources.SystemTextureSettingFile);

            var downloader = new ModTexturesDownloader();
            downloader.DownloadDependencies();
            if (downloader.HasError)
            {
                this.HasError = true;
            }

            // TODO: ここでModのjarファイルのテクスチャの配置処理
            var organizer = new ModTextureOrganizer(new SystemTextureProvider(systemTextureSettingFilePath), Program.TextureProvider);
            organizer.Organize();
            if (organizer.HasError)
            {
                this.HasError = true;
            }
        }