63 lines
1.6 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|