コード例 #1
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            PushCursor(Cursors.Wait);
            HideAllViewers();

            new Thread(() =>
            {
                _assetIndex = new AssetIndex(_poeDirectory);

                var assetFiles = _assetIndex.FindFiles(x => true);

                foreach (var assetFile in assetFiles)
                {
                    var exploded = assetFile.Name.Split(Path.AltDirectorySeparatorChar);
                    if (exploded.Length > 1)
                    {
                        _fileDirectories[RootNodeName].Add(exploded[0]);
                    }

                    for (int i = 0; i < exploded.Length; i++)
                    {
                        var dir = string.Join(Path.AltDirectorySeparatorChar, exploded[..i]);
コード例 #2
0
ファイル: Minecraft.cs プロジェクト: siketyan/RocketMC
        /// <summary>
        /// リストからアセットをダウンロードします。
        /// </summary>
        /// <param name="index">ダウンロードするアセットのリスト</param>
        /// <param name="assetsDirectory">アセットディレクトリの場所</param>
        /// <param name="onProgressChanged">進捗状況が変化したときのイベントハンドラ</param>
        public static void DownloadAssets(this AssetIndex index, string assetsDirectory,
                                          MinecraftProgressEventHandler onProgressChanged = null)
        {
            var objects = index.Objects;
            var keys    = objects.Keys.ToArray();

            for (var i = 0; i < objects.Count; i++)
            {
                var name = keys[i];
                var obj  = objects[name];
                var hash = obj.Hash;

                onProgressChanged?.Invoke(
                    new MinecraftProgressEventArgs(
                        objects.Count,
                        i + 1,
                        name
                        )
                    );

                var hashHeader    = hash.Substring(0, 2);
                var path          = hashHeader + "/" + hash;
                var directoryBase = assetsDirectory + "/objects/";
                var directory     = directoryBase + hashHeader;
                var file          = directoryBase + path;
                if (!Directory.Exists(directory))
                {
                    Directory.CreateDirectory(directory);
                }
                if (File.Exists(file))
                {
                    continue;
                }

                DownloadFile(AssetsUrlBase + path, file);
            }
        }