public static ResVersion CreateNew(string resName, int resVersion, long resFileSize) { ResVersion result = new ResVersion { name = resName, version = resVersion, file_size = resFileSize }; return(result); }
private void NewResVersion(int baseVersion, bool isUpdateVersion, ref ResVersion item, ref string name) { if (item == default) { item = AddNewRes(name, DEFAULT_VERSION); mResIndexMapper[name] = mRes.Count; } else { int version = isUpdateVersion ? baseVersion + 1 : baseVersion; item.version = version; } }
/// <summary> /// 迭代资源总依赖文件的版本 /// </summary> /// <param name="abNames"></param> private void CheckMainManifestVersion(ref string[] abNames) { ResVersion resData = GetResVersion(AppPaths.resData); if (resData == default) { AddNewRes(AppPaths.resData, DEFAULT_VERSION); } else { if (abNames.Length > 0) { resData.version++; } else { } } }
/// <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; }
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); } }
/// <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;
private void UpdateVersionChange(ref List <string> changeds, ref string abName, ref ResVersion item) { if (changeds.Contains(abName)) { int index = changeds.IndexOf(abName); mResChanged[index].version = item.version; } else { if (item != default) { mResChanged.Add(item); } else { Debug.LogError("Version item is null"); } } }