using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; using System.Threading; public class AssetDeCompressTask { public static string assetDeCompressVersion { get { return LocalSave.GetString("AssetDeCompressVersion"); } set { LocalSave.SetString("AssetDeCompressVersion", value); } } // public static bool assetDeCompressCompleted // { // get // { // if (string.IsNullOrEmpty(assetDeCompressVersion)) // { // return false; // } // else // { // return assetDeCompressVersion == VersionConfig.Get().version; // } // } // } public static DecompressProgress DecompressAync(string path) { var progress = new DecompressProgress(); // var files = new List(); // FileExtersion.GetAllDirectoryFileInfos(path, files); // for (var i = files.Count - 1; i >= 0; i--) // { // var fullName = files[i].FullName; // if (!fullName.EndsWith(".7z")) // { // files.RemoveAt(i); // } // } // var total = files.Count; // if (total == 0) // { // progress.progress = 1f; // progress.done = true; // return progress; // } // ThreadPool.QueueUserWorkItem((object a) => // { // var index = 0; // foreach (var item in files) // { // var fullName = item.FullName; // if (fullName.EndsWith(".7z")) // { // SevenZipUtility.DeCompress(fullName, Path.GetDirectoryName(fullName)); // index++; // progress.progress = index / (float)total; // } // } // progress.done = true; // }); progress.done = true; return progress; } public class DecompressProgress { object progressLock = new object(); float m_Progress = 0f; public float progress { get { return m_Progress; } set { lock (progressLock) { m_Progress = value; } } } object doneLock = new object(); bool m_Done = false; public bool done { get { return m_Done; } set { lock (doneLock) { m_Done = value; } } } } } // public class AssetDecompressTask : LaunchTask // { // public override float expectTime // { // get { return LocalSave.GetFloat("AssetDecompressTask_ExpectTime", 5f); } // protected set { LocalSave.SetFloat("AssetDecompressTask_ExpectTime", value); } // } // AssetDeCompressTask.DecompressProgress deCompressProgress = null; // float waitTimer = 0f; // public override void Begin() // { // LaunchInHot.m_CurrentStage = LaunchStage.AssetDecompress; // duration = Mathf.Max(0.5f, expectTime); // if (!AssetDeCompressTask.assetDeCompressCompleted) // { // deCompressProgress = AssetDeCompressTask.DecompressAync(ResourcesPath.Instance.ExternalStorePath); // done = false; // } // else // { // done = true; // } // } // public override void End() // { // AssetDeCompressTask.assetDeCompressVersion = VersionConfig.Get().version; // } // public override void Update() // { // if (done) // { // return; // } // timer += Time.deltaTime; // progress = timer / duration; // if (deCompressProgress == null || deCompressProgress.done) // { // waitTimer += Time.deltaTime; // if (waitTimer > 2f) // { // done = true; // } // } // } // }