Beispiel #1
0
    public override void WriteUpToDate()
    {
        IServerVersionFileManifest versionFileManifest = FileManifestManager.Get <IServerVersionFileManifest>();
        List <string> allABVersion = versionFileManifest.GetABVersion();

        if (allABVersion.Count <= 0)
        {
            return;
        }

        IServerAssetBundleFileManifest             serverFenbao = FileManifestManager.Get <IServerAssetBundleFileManifest>();
        Dictionary <string, List <AssetDataInfo> > assetDatas   = serverFenbao.GetAllAssetBundle();

        string lastVersion = allABVersion[allABVersion.Count - 1];

        if (assetDatas.ContainsKey(lastVersion))
        {
            Dictionary <string, AssetDataInfo> temp = new Dictionary <string, AssetDataInfo>();

            var itr = assetDatas[lastVersion].GetEnumerator();
            while (itr.MoveNext())
            {
                temp.Add(itr.Current.Name, itr.Current);
            }
            itr.Dispose();

            WriteToLocal(temp, true);
        }
    }
Beispiel #2
0
    public serverVersionFileManifestTest()
    {
        FileManifestManager.Add <IServerVersionFileManifest>(this);
        versionInfos = new Dictionary <string, VersionInfo>();

        System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();

        // OnlyABPack
        // CompressionPack
        string version1 = "1.1";
        string version2 = "1.2";
        string version3 = "2.3";
        string version4 = "3.4";
        string version5 = "4.5";
        string version6 = "4.6";
        string version7 = "5.7";
        string version8 = "6.8";

        versionInfos.Add(version1, BuildVersion(version1, PackageType.CompressionPack));
        versionInfos.Add(version2, BuildVersion(version2, PackageType.OnlyABPack));
        versionInfos.Add(version3, BuildVersion(version3, PackageType.CompressionPack));
        versionInfos.Add(version4, BuildVersion(version4, PackageType.OnlyABPack));
        versionInfos.Add(version5, BuildVersion(version5, PackageType.CompressionPack));
        versionInfos.Add(version6, BuildVersion(version6, PackageType.OnlyABPack));
        versionInfos.Add(version7, BuildVersion(version5, PackageType.CompressionPack));
        versionInfos.Add(version8, BuildVersion(version8, PackageType.CompressionPack));
    }
Beispiel #3
0
    protected override void OnDownLoadError(AssetDownInfo info)
    {
        Debug.Log("ZIP下载错误!");
        // 回炉重造
        _current_strategy.GoBackDownLoadFileResultInfo(info);

        // 下载错误
        if (info.ErrorNumber < DownloaderConstant.MAX_DOWNLOAD_ERROR_NUMBER)
        {
            StartDownLoad(info);
        }
        else
        {
            if (_current_strategy.AssetType == eUpdateAssetType.Zip)
            {
                FileManifestManager.RemoveLocalFenBaoData(info.ToAssetDataInfo());
            }
            else
            {
                FileManifestManager.RemoveLocalABData(info.ToAssetDataInfo());
            }

            AssetDownLoads.StopALLDownLoad();
        }

        if (!_downLoad_error.Contains(info))
        {
            _downLoad_error.Add(info);
        }
    }
Beispiel #4
0
    public fenBaoFileManifestTest()
    {
        FileManifestManager.Add <IServerFenbaoFileManifest>(this);

        _data_infos = new Dictionary <string, List <AssetDataInfo> >();
        IServerVersionFileManifest versionFileManifest = FileManifestManager.Get <IServerVersionFileManifest>();

        List <string> zipVersions = versionFileManifest.GetZipAllVersion();

        int zipFileCount = 3;

        var itr          = zipVersions.GetEnumerator();
        int versionIndex = 1;

        while (itr.MoveNext())
        {
            _data_infos.Add(itr.Current, new List <AssetDataInfo>());

            for (int i = 0; i < zipFileCount; i++)
            {
                string name = string.Format(" Package{0}_{1}.zip", versionIndex, i);
                _data_infos[itr.Current].Add(BuildFenBao(name));
            }

            versionIndex++;
        }
        itr.Dispose();
    }
    public override void StartDownLoad()
    {
        VersionInfo info = FileManifestManager.Get <IServerVersionFileManifest>().GetLastVersin();

        if (info == null)
        {
            return;
        }
        if (info.AssetBundleManifestNames == null)
        {
            return;
        }

        for (int i = 0; i < info.AssetBundleManifestNames.Length; i++)
        {
            AssetBundleDownLoadParam param             = new AssetBundleDownLoadParam(info.AssetBundleManifestNames[i]);
            HttpDownLoadAsync        httpDownLoadAsync = CreateHttpDownLoad();

            AssetDownInfo downInfo = new AssetDownInfo();
            downInfo.AssetName       = info.AssetBundleManifestNames[i];
            downInfo.Buffer.ByteSize = int.Parse(info.AssetBundleManifestLengths[i]);
            downInfo.MD5             = info.AssetBundleManifestMD5s[i];
            downInfo.Index           = i;
            _version_index.Add(i);

            httpDownLoadAsync.Setup(downInfo);
            httpDownLoadAsync.StartDownLoad(param);
        }
    }
Beispiel #6
0
    protected override void OnDownloadSuccessful(AssetDownInfo info, HttpDownLoadAsync loadAsync)
    {
        Debug.Log("Asset下载成功!");
        if (_downLoad_error.Contains(info))
        {
            _downLoad_error.Remove(info);
        }

        if (StageDataBase.CheckVersionIsDownLoadComplete(info.Version))
        {
            // 一个版本下载完毕
            VersionDownLoadComplete(info.Version);
        }

        _current_strategy.TryRemove(info);

        if (IsDone)
        {
            if (_stage_index < (_strategy_bases.Length - 1))
            {
                _stage_index++;
                Debug.Log("换阶段了 STAGE_INDEX=" + _stage_index);
            }
            else
            {
                if (_downLoad_error.Count <= 0)
                {
                    UpdateStageResult.DownLoad.ClearAll();
                }

                OnAllDownLoadComplete();
                if (DownLoadCompleteEvent != null)
                {
                    DownLoadCompleteEvent(this);
                }
                FileManifestManager.WriteABDataByCurrent();

                isDone = true;

                Debug.Log("全部下载完成!!!!!!!");
            }
        }
        else
        {
            AssetDataInfo dataInfo = info.ToAssetDataInfo();
            if (_current_strategy.AssetType == eUpdateAssetType.Zip)
            {
                FileManifestManager.UpdateLocalFenBaoData(dataInfo);
            }
            else
            {
                FileManifestManager.UpdateLocalABData(dataInfo);
            }
        }

        TryStartDownLoad();
    }
    public void StopDownLoad()
    {
        var itr = httpDownloadAsyncs.GetEnumerator();

        while (itr.MoveNext())
        {
            itr.Current.StopDownLoad();
        }
        itr.Dispose();

        FileManifestManager.WriteABDataByCurrent();
        FileManifestManager.WriteFenBaoDataByCurrent();
    }
Beispiel #8
0
    public AssetBundleFileManifestTest()
    {
        FileManifestManager.Add <IServerAssetBundleFileManifest>(this);
        IServerVersionFileManifest versionFileManifest = FileManifestManager.Get <IServerVersionFileManifest>();

        _data_infos = new Dictionary <string, List <AssetDataInfo> >();
        List <string> abVersions = versionFileManifest.GetABVersion();
        var           itr        = abVersions.GetEnumerator();

        while (itr.MoveNext())
        {
            _data_infos.Add(itr.Current, new List <AssetDataInfo>());
            int count = 3;

            for (int i = 0; i < count; i++)
            {
                _data_infos[itr.Current].Add(BuildAssetData(itr.Current + "__" + i.ToString()));
            }
        }
        itr.Dispose();
    }
    // 开始解压缩
    public void StartDecompress()
    {
        UpdateStageResult.DownLoad.IsEnable    = false;
        UpdateStageResult.Compression.IsEnable = true;
        UpdateStageResult.Compression.ClearAll();

        var deItr = _decompress_queue.GetEnumerator();

        while (deItr.MoveNext())
        {
            UpdateStageResult.Compression.TotalSize += deItr.Current.TotalSize;
            UpdateStageResult.Compression.FileCount++;
        }
        deItr.Dispose();

        string localPath = AssetsCommon.LocalAssetPath;

        if (!Directory.Exists(localPath))
        {
            Directory.CreateDirectory(localPath);
        }

        AssetDownInfo[] tempDatas = new AssetDownInfo[_decompress_queue.Count];
        for (int i = 0; i < tempDatas.Length; i++)
        {
            int index = _decompress_queue[i].Index;
            tempDatas[index] = _decompress_queue[i];
        }

        for (int i = 0; i < tempDatas.Length; i++)
        {
            AssetDownInfo downInfo = tempDatas[i];

            string zipFileName = string.Format("{0}/{1}", localPath, downInfo.AssetName);
            List <AssetDataInfo> assetNames = ZipHelper.Decompress(
                zipFileName,
                localPath);

            AssetDataInfo dataInfo = downInfo.ToAssetDataInfo();
            dataInfo.IsCompressed = true;

            UpdateStageResult.Compression.CurrentCount++;
            FileManifestManager.UpdateLocalFenBaoData(dataInfo);

            for (int j = 0; j < assetNames.Count; j++)
            {
                FileManifestManager.UpdateLocalABData(assetNames[j]);
            }

            if (File.Exists(zipFileName))
            {
                File.Delete(zipFileName);
            }
        }

        UpdateStageResult.Compression.IsEnable = false;

        if (_owner.IsDownLoadAllVersion)
        {
            FileManifestManager.WriteFenBaoDataByServer();
        }
        else
        {
            FileManifestManager.WriteFenBaoDataByCurrent();
        }

        FileManifestManager.WriteABDataByCurrent();
    }
Beispiel #10
0
 public StrategyFactoryBase()
 {
     serverVersion     = FileManifestManager.Get <IServerVersionFileManifest>();
     serverAssetBundle = FileManifestManager.Get <IServerAssetBundleFileManifest>();
     serverFenbao      = FileManifestManager.Get <IServerFenbaoFileManifest>();
 }
 public AssetBundleFileDownLoad()
 {
     FileManifestManager.Add <IServerAssetBundleFileManifest>(this);
     _server_version = FileManifestManager.Get <IServerVersionFileManifest>();
     _data_infos     = new Dictionary <string, List <AssetDataInfo> >();
 }
 public VersionFileDownLoad()
 {
     FileManifestManager.Add <IServerVersionFileManifest>(this);
     _server_version_list = FileManifestManager.Get <IServerVersionListFileManifest>();
     _version_infos       = new Dictionary <string, VersionInfo>();
 }
 public VersionListDownLoad()
 {
     FileManifestManager.Add <IServerVersionListFileManifest>(this);
 }
Beispiel #14
0
    protected void VersionDownLoadComplete(string version)
    {
        IServerVersionFileManifest versionFile = FileManifestManager.Get <IServerVersionFileManifest>();

        versionFile.WriteVersion(version);
    }
 public FenbaoFileDownLoad() : base()
 {
     FileManifestManager.Add <IServerFenbaoFileManifest>(this);
     _all_zip        = new Dictionary <string, List <AssetDataInfo> >();
     _server_version = FileManifestManager.Get <IServerVersionFileManifest>();
 }