forked from sin365/AxibugEmuOnline
53 lines
1.8 KiB
C#
53 lines
1.8 KiB
C#
using AxibugEmuOnline.Client.ClientCore;
|
|
using AxibugEmuOnline.Client.Tools;
|
|
|
|
namespace AxibugEmuOnline.Client
|
|
{
|
|
public class DownloadingState : SimpleFSM<SaveFile>.State
|
|
{
|
|
uint m_sequece;
|
|
private AxiHttpProxy.SendDownLoadProxy m_downloadTask;
|
|
private AxiHttpProxy.SendDownLoadProxy m_downloadTaskImg;
|
|
|
|
public override void OnEnter(SimpleFSM<SaveFile>.State preState)
|
|
{
|
|
var checkState = preState as CheckingState;
|
|
|
|
var netData = checkState.NetData;
|
|
|
|
if (Host.Sequecen >= (uint)netData.Sequence)
|
|
{
|
|
FSM.ChangeState<ConflictState>();
|
|
return;
|
|
}
|
|
|
|
m_sequece = (uint)netData.Sequence;
|
|
m_downloadTask = AxiHttpProxy.GetDownLoad($"{App.httpAPI.WebHost}/{netData.SavUrl}");
|
|
m_downloadTaskImg = AxiHttpProxy.GetDownLoad($"{App.httpAPI.WebHost}/{netData.SavImgUrl}");
|
|
}
|
|
|
|
public override void OnUpdate()
|
|
{
|
|
if (!m_downloadTask.downloadHandler.isDone) return;
|
|
|
|
if (m_downloadTask.downloadHandler.bHadErr) //下载失败
|
|
{
|
|
FSM.ChangeState<UnkownState>();
|
|
return;
|
|
}
|
|
|
|
if (!m_downloadTaskImg.downloadHandler.isDone) return;
|
|
|
|
if (m_downloadTaskImg.downloadHandler.bHadErr) //下载失败
|
|
{
|
|
FSM.ChangeState<UnkownState>();
|
|
return;
|
|
}
|
|
|
|
var savData = Host.CloudAPI.UnGzipData(m_downloadTask.downloadHandler.data);
|
|
var imgData = Host.CloudAPI.UnGzipData(m_downloadTaskImg.downloadHandler.data);
|
|
Host.Save(m_sequece, savData, imgData);
|
|
FSM.ChangeState<SyncedState>();
|
|
}
|
|
}
|
|
} |