49 lines
1.4 KiB
C#
49 lines
1.4 KiB
C#
using AxibugEmuOnline.Client.Tools;
|
|
using AxibugProtobuf;
|
|
using UnityEngine;
|
|
|
|
namespace AxibugEmuOnline.Client
|
|
{
|
|
public class CheckingState : SimpleFSM<SaveFile>.State
|
|
{
|
|
private float m_timeOut;
|
|
|
|
public Protobuf_Mine_GameSavInfo NetData { get; private set; }
|
|
|
|
public override void OnEnter(SimpleFSM<SaveFile>.State preState)
|
|
{
|
|
m_timeOut = 5f;
|
|
Host.CloudAPI.OnFetchGameSavList += CloudAPI_OnFetchGameSavList;
|
|
Host.CloudAPI.SendGetGameSavList(Host.RomID);
|
|
}
|
|
|
|
public override void OnExit(SimpleFSM<SaveFile>.State nextState)
|
|
{
|
|
Host.CloudAPI.OnFetchGameSavList -= CloudAPI_OnFetchGameSavList;
|
|
}
|
|
|
|
public override void OnUpdate()
|
|
{
|
|
m_timeOut -= Time.deltaTime;
|
|
if (m_timeOut < 0) //已超时
|
|
{
|
|
FSM.ChangeState<UnkownState>();
|
|
}
|
|
}
|
|
|
|
private void CloudAPI_OnFetchGameSavList(int romID, Protobuf_Mine_GameSavInfo[] savSlotData)
|
|
{
|
|
if (romID != Host.RomID) return;
|
|
NetData = savSlotData[Host.SlotIndex];
|
|
|
|
if (NetData == null) //云存档不存在,上传本地存档
|
|
{
|
|
FSM.ChangeState<UploadingState>();
|
|
}
|
|
else
|
|
{
|
|
FSM.ChangeState<DownloadingState>();
|
|
}
|
|
}
|
|
}
|
|
} |