Files
Main/Assets/Plugins/References/FuncellUpdate/UpdateModel/Flow/Flow7ExDownloadMapFile.cs
2025-01-25 04:38:09 +08:00

117 lines
4.0 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections.Generic;
using System.IO;
using Thousandto.Update.Log;
using Thousandto.Update.Xml;
using FileDownloader = UnityEngine.Gonbest.MagicCube.FileDownloader;
using MD5Utils = UnityEngine.Gonbest.MagicCube.MD5Utils;
namespace Thousandto.Update.Flow
{
public class Flow7ExDownloadMapFile : BaseFlow
{
private DataModel _currentData;
private FileDownloader _fileDownload;
private bool checkNeedDownloadMapFile(string localMapFile, string onlineMapMd5)
{
if (File.Exists(localMapFile))
{
string str = MD5Utils.GetFileMD5(localMapFile);
if ((str != null) && str.Equals(onlineMapMd5))
{
return false;
}
}
return true;
}
private int downloadMapFile()
{
UpdateLog.INFO_LOG("downloadMapFile +++");
int num = 1;
List<VersionModel> list = new List<VersionModel>();
if (this._currentData.VersionModelBaseList.Count > 0)
{
list.Add(this._currentData.VersionModelBaseList[0]);
}
if (list.Count == 0)
{
num = 0;
}
for (int i = 0; i < list.Count; i++)
{
VersionModel model = list[i];
string str = model.Map_url.Replace(@"\", "/");
string str2 = str.Substring(str.LastIndexOf("/") + 1);
string localMapFile = Path.Combine(BaseFlow._storeDir, str2);
if (this.checkNeedDownloadMapFile(localMapFile, model.Map_md5))
{
string url = model.Map_url;
int num3 = CodeDefine.FormDownloadCode(this._fileDownload.DownloadUseBackCdn(localMapFile, this.ParseInt(model.Map_size), url, false));
if ((num3 >= 0) && this.checkNeedDownloadMapFile(localMapFile, model.Map_md5))
{
string str5 = MD5Utils.GetFileMD5(localMapFile);
UpdateLog.ERROR_LOG("Download map file error md5: " + localMapFile + " md5=" + str5 + "\n online md5: " + model.Map_url + " md5=" + model.Map_md5);
num3 = -6;
Recorder.StepRecorder.AddStep(Recorder.StepType.DownloadAndParseMapFile, 2, "map文件损坏md5校验失败");
}
if (num3 <= -1)
{
Recorder.StepRecorder.AddStep(Recorder.StepType.DownloadAndParseMapFile, 1, "下载失败");
return num3;
}
}
}
UpdateLog.INFO_LOG("downloadMapFile ---");
return num;
}
public override void GetCurDownInfo(out string url, out int total, out int downloaded)
{
base.GetCurDownInfo(out url, out total, out downloaded);
if (this._fileDownload != null)
{
this._fileDownload.GetCurDownInfo(out url, out total, out downloaded);
}
}
public override void Inititalize()
{
base.Inititalize();
this._fileDownload = new FileDownloader();
base.UseDownload = true;
}
public override void OnEnter(BaseFlow oldFlow)
{
base.OnEnter(oldFlow);
this._currentData = base.CurrentRemoteData;
}
private int ParseInt(string str)
{
int result = 0;
int.TryParse(str, out result);
return result;
}
public override void Uninitialize()
{
if (this._fileDownload != null)
{
this._fileDownload.Abort(null);
}
}
public override int Work()
{
if (!base.CheckLastFlowResult())
{
return base.LastFlowResult;
}
return this.downloadMapFile();
}
}
}