示例#1
0
        /// <summary>
        /// 以客户端安装包默认的资源版本配置为基准创建一个新的本地缓存
        /// </summary>
        /// <param name="remoteVersions"></param>
        public void CreateVersionsCached(ref ResDataVersion remoteVersions)
        {
            string path = AppPaths.PersistentResDataRoot.Append(ResDataVersion.FILE_RES_DATA_VERSIONS_NAME);
            string data = FileOperater.ReadUTF8Text(path);

            ResDataVersion temp = JsonUtility.FromJson <ResDataVersion>(data);

            if (temp == default || temp.IsVersionsEmpty())
            {
#if LOG_CLIENT_VERSIONING
                "log".Log("Verision data is empty, will create new one.");
#endif
                temp = new ResDataVersion
                {
                    res_gateway = remoteVersions.res_gateway,
                    app_version = remoteVersions.app_version,
                    res_version = remoteVersions.res_version
                };

                ResDataVersion client = Versions;
                temp.CloneVersionsFrom(ref client);
            }
            else
            {
            }

            CachedVersion = temp;
            CachedVersion.resVersionType = ResDataVersionType.Cached;
        }
示例#2
0
 private void ClosePreviewVersions()
 {
     mIsShowPreview = false;
     if (mBeforePreview != default)
     {
         m_Res = mBeforePreview;
     }
     else
     {
     }
 }
示例#3
0
 private void PreviewVersionsData()
 {
     if (m_Preview != default)
     {
         mBeforePreview = m_Res;
         mIsShowPreview = true;
         m_Res          = JsonUtility.FromJson <ResDataVersion>(m_Preview.text);
     }
     else
     {
     }
 }
示例#4
0
        private void OnLoadComplete(bool success, Loader.Loader target)
        {
            if (success)
            {
                string json = target.TextData;
                target.Dispose();

                ResDataVersion remoteVersions = JsonUtility.FromJson <ResDataVersion>(json);
                remoteVersions.resVersionType = ResDataVersionType.Remote;
                CreateVersionsCached(ref remoteVersions);

                RemoteAppVersion = remoteVersions.app_version;
                if (VersionInvalidHandler != default)
                {
                    bool flag = VersionInvalidHandler();
                    if (flag)
                    {
#if LOG_CLIENT_VERSIONING
                        "warning:There have a newer App inistaller.".Log();
#endif
                        return;
                    }
                    else
                    {
                    }
                }
                else
                {
                }

                mRemoteResVersion = remoteVersions.res_version;
                List <ResVersion> resUpdate = CachedVersion.CheckUpdates(Versions, ref remoteVersions);
                CachedVersion.WriteAsCached();

#if LOG_CLIENT_VERSIONING
                "log:Remote res update count is {0}".Log(resUpdate.Count.ToString());
                "log:UpdateHandler is null: {0}".Log((UpdateHandler == default).ToString());
#endif
                if (resUpdate.Count == 0)
                {
                    UpdateHandler?.Invoke(true, 1f);
                }
                else
                {
                    StartLoadPatchRes(ref resUpdate);
                }
            }
            else
            {
                "error: Load remote version failed, url is {0}".Log(target.Url);
            }
        }
示例#5
0
        /// <summary>
        /// 从另一个资源版本对象复制数据
        /// </summary>
        /// <param name="copyFrom"></param>
        public void CloneVersionsFrom(ref ResDataVersion copyFrom)
        {
            Clean(false, true);

            if (copyFrom.IsVersionsEmpty())
            {
                copyFrom.Init();
            }
            else
            {
            }

            app_version = copyFrom.app_version;
            res_version = copyFrom.res_version;
            res_gateway = copyFrom.res_gateway;

            ResVersion item;
            int        resSize = copyFrom.res.Length;

            res = new ResVersion[resSize];
            for (int i = 0; i < resSize; i++)
            {
                item   = copyFrom.res[i];
                res[i] = ResVersion.CreateNew(item.name, item.version, item.file_size);
            }

            int updatingsSize = copyFrom.updatings != default ? copyFrom.updatings.Length : 0;

            updatings = new ResUpdating[updatingsSize];
            for (int i = 0; i < updatingsSize; i++)
            {
                updatings[i] = new ResUpdating()
                {
                    name    = copyFrom.updatings[i].name,
                    version = copyFrom.updatings[i].version,
                };
            }

            res_total      = res.Length;
            updating_total = updatings.Length;
        }
示例#6
0
        private void CheckResVersions(int max, ref string[] abNames, ref ResDataVersion remoteVers, bool isUpdateVersion, ref List <string> changeds)
        {
            string     abName = string.Empty;
            ResVersion item, remote = default;

            for (int i = 0; i < max; i++)
            {
                abName = abNames[i];
                item   = GetResVersion(abName);
                int baseVersion = item == default ? DEFAULT_VERSION : item.version;//若未找到对应的资源版本,基于默认的版本号进行设置

                if (remoteVers != default)
                {
                    remote      = remoteVers.GetResVersion(abName);
                    baseVersion = remote != default ? remote.version : baseVersion;//若已存在线上版本,基于线上版本号进行设置
                }
                else
                {
                }

                NewResVersion(baseVersion, isUpdateVersion, ref item, ref abName);
                UpdateVersionChange(ref changeds, ref abName, ref item);
            }
        }
示例#7
0
        /// <summary>
        /// 检查版本差异
        /// </summary>
        /// <param name="clientVersions"></param>
        /// <param name="remoteVersions"></param>
        /// <returns></returns>
        public List <ResVersion> CheckUpdates(ResDataVersion clientVersions, ref ResDataVersion remoteVersions)
        {
            if (clientVersions.resVersionType != ResDataVersionType.Client ||
                remoteVersions.resVersionType != ResDataVersionType.Remote)
            {
                return(new List <ResVersion>(0));
            }
            else
            {
            }

            bool isVersionsEmpty = IsVersionsEmpty();

            if (isVersionsEmpty)
            {
                CloneVersionsFrom(ref clientVersions);//复制安装包中默认的资源版本
            }
            else
            {
            }

            Init();

            ResVersion remoteItem = default, cachedItem = default;
示例#8
0
        /// <summary>
        /// 新建一个资源版本
        /// </summary>
        /// <param name="remoteRootURL">远端资源服务器网关</param>
        /// <param name="isUpdateVersion">是否迭代资源版本</param>
        /// <param name="isUpdateResVersion">是否迭代资源大版本</param>
        /// <param name="isSyncAppVersion">是否同步应用版本</param>
        /// <param name="remoteVers">远端资源服务器的资源配置</param>
        /// <param name="abNames">需要迭代版本的资源名</param>
        public void CreateNewResVersion(ref string remoteRootURL, bool isUpdateVersion, bool isUpdateResVersion, bool isSyncAppVersion, ref ResDataVersion remoteVers, ref string[] abNames)
        {
            res_gateway = remoteRootURL;

            Init();
            remoteVers?.Init();

            CheckMainManifestVersion(ref abNames);
            FillChangedABList(out List <string> changeds);

            int max = abNames.Length;

            CheckTotalVersion(isUpdateResVersion, isSyncAppVersion, max);
            CheckResVersions(max, ref abNames, ref remoteVers, isUpdateVersion, ref changeds);
        }