AxibugEmuOnline/AxibugEmuOnline.Client.Transplant/Assets/Script/AppMain/UI/InGameUI/StepPerformer.cs

63 lines
1.6 KiB
C#

using AxibugEmuOnline.Client.ClientCore;
using AxibugEmuOnline.Client.Common;
using UnityEngine;
namespace AxibugEmuOnline.Client
{
public class StepPerformer
{
private InGameUI m_inGameUI;
private int m_step = -1;
public StepPerformer(InGameUI inGameUI)
{
m_inGameUI = inGameUI;
}
public void Perform(int step)
{
m_step = step;
switch (m_step)
{
//等待主机上报快照
case 0:
PauseCore();
if (App.roomMgr.IsHost)
{
var stateRaw = m_inGameUI.Core.GetStateBytes();
Debug.Log($"快照上报:{Helper.FileMD5Hash(stateRaw)}");
App.roomMgr.SendHostRaw(stateRaw);
}
break;
//加载存档并发送Ready通知
case 1:
PauseCore();
Debug.Log($"快照加载:{Helper.FileMD5Hash(App.roomMgr.RawData)}");
m_inGameUI.Core.LoadStateFromBytes(App.roomMgr.RawData);
App.roomMgr.SendRoomPlayerReady();
break;
case 2:
m_step = -1;
ResumeCore();
break;
}
}
private void PauseCore()
{
m_inGameUI.Core.Pause();
}
private void ResumeCore()
{
m_inGameUI.Core.Resume();
}
internal void Reset()
{
m_step = -1;
}
}
}