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>(); } } }