还原被覆盖:修复云存档相关bug(ab4496ebef)

This commit is contained in:
sin365 2025-09-15 13:28:01 +08:00
parent 8a1e7cb0c9
commit 7969f18d96
3 changed files with 21 additions and 16 deletions

View File

@ -172,8 +172,6 @@ namespace AxibugEmuOnline.Client
public unsafe void Save(uint sequence, byte[] savData, byte[] screenShotData) public unsafe void Save(uint sequence, byte[] savData, byte[] screenShotData)
{ {
if (IsBusy) return;
var filePath = FilePath; var filePath = FilePath;
var header = new Header var header = new Header

View File

@ -26,8 +26,8 @@ namespace AxibugEmuOnline.Client
} }
m_sequece = (uint)netData.Sequence; m_sequece = (uint)netData.Sequence;
m_downloadTask = AxiHttpProxy.GetDownLoad($"{App.httpAPI.WebHost}/{netData.SavUrl}"); m_downloadTask = AxiHttpProxy.GetDownLoad($"{App.httpAPI.WebHost}/{netData.SavUrl}?v={m_sequece}");
m_downloadTaskImg = AxiHttpProxy.GetDownLoad($"{App.httpAPI.WebHost}/{netData.SavImgUrl}"); m_downloadTaskImg = AxiHttpProxy.GetDownLoad($"{App.httpAPI.WebHost}/{netData.SavImgUrl}?v={m_sequece}");
Host.SetSavingFlag(); Host.SetSavingFlag();
} }
@ -52,14 +52,25 @@ namespace AxibugEmuOnline.Client
if (m_downloadTaskImg.downloadHandler.bHadErr) //下载失败 if (m_downloadTaskImg.downloadHandler.bHadErr) //下载失败
{ {
FSM.ChangeState<IdleState>(); FSM.GetState<SyncFailedState>().Error = m_downloadTaskImg.downloadHandler.ErrInfo;
FSM.ChangeState<SyncFailedState>();
return; return;
} }
var savData = Host.CloudAPI.UnGzipData(m_downloadTask.downloadHandler.data); try
var imgData = Host.CloudAPI.UnGzipData(m_downloadTaskImg.downloadHandler.data); {
Host.Save(m_sequece, savData, imgData); var savData = Host.CloudAPI.UnGzipData(m_downloadTask.downloadHandler.data);
FSM.ChangeState<SyncedState>(); var imgData = m_downloadTaskImg.downloadHandler.data; //图片数据已被服务器解压
Host.Save(m_sequece, savData, imgData);
FSM.ChangeState<SyncedState>();
}
catch
{
FSM.GetState<SyncFailedState>().Error = "云存档解压失败";
FSM.ChangeState<SyncFailedState>();
return;
}
} }
} }

View File

@ -92,18 +92,16 @@ namespace AxibugEmuOnline.Client
public override void OnExcute(OptionUI optionUI, ref bool cancelHide) public override void OnExcute(OptionUI optionUI, ref bool cancelHide)
{ {
if (m_savFile.IsBusy) if (m_savFile.IsBusy) //取消同步进程
{ {
OverlayManager.PopTip("存档正在同步中"); m_savFile.FSM.ChangeState<SaveFile.IdleState>();
cancelHide = true;
return;
} }
var stateData = m_ingameUI.Core.GetStateBytes(); var stateData = m_ingameUI.Core.GetStateBytes();
var tex = m_ingameUI.Core.OutputPixel; var tex = m_ingameUI.Core.OutputPixel;
var screenData = tex.ToJPG(m_ingameUI.Core.DrawCanvas.transform.localScale); var screenData = tex.ToJPG(m_ingameUI.Core.DrawCanvas.transform.localScale);
m_savFile.Save(m_savFile.Sequecen, stateData, screenData); m_savFile.Save(m_savFile.Sequecen + 1, stateData, screenData);
} }
} }
@ -167,7 +165,6 @@ namespace AxibugEmuOnline.Client
public override void OnExcute(OptionUI optionUI, ref bool cancelHide) public override void OnExcute(OptionUI optionUI, ref bool cancelHide)
{ {
if (m_savFile.GetCurrentState() is not SaveFile.ConflictState) return; if (m_savFile.GetCurrentState() is not SaveFile.ConflictState) return;
cancelHide = true;
m_savFile.FSM.ChangeState<SaveFile.DownloadingState>(); m_savFile.FSM.ChangeState<SaveFile.DownloadingState>();
} }
} }
@ -187,7 +184,6 @@ namespace AxibugEmuOnline.Client
public override void OnExcute(OptionUI optionUI, ref bool cancelHide) public override void OnExcute(OptionUI optionUI, ref bool cancelHide)
{ {
if (m_savFile.GetCurrentState() is not SaveFile.ConflictState) return; if (m_savFile.GetCurrentState() is not SaveFile.ConflictState) return;
cancelHide = true;
m_savFile.FSM.ChangeState<SaveFile.UploadingState>(); m_savFile.FSM.ChangeState<SaveFile.UploadingState>();
} }
} }