master #51

Merged
sin365 merged 4 commits from Alienjack/AxibugEmuOnline:master into master 2024-11-12 12:51:56 +08:00
Showing only changes of commit c6d3ac4aea - Show all commits

View File

@ -11,7 +11,7 @@ namespace AxiReplay
/// <summary> /// <summary>
/// 服务器远端当前帧 /// 服务器远端当前帧
/// </summary> /// </summary>
public int mRemoteFrameIdx { get; private set; } = int.MinValue; public int mRemoteFrameIdx { get; private set; }
/// <summary> /// <summary>
/// Remote 2 Client Frame Gap /// Remote 2 Client Frame Gap
/// </summary> /// </summary>
@ -40,6 +40,7 @@ namespace AxiReplay
mCurrReplay.FrameStartID = int.MinValue; mCurrReplay.FrameStartID = int.MinValue;
mNextReplay = default(ReplayStep); mNextReplay = default(ReplayStep);
mNextReplay.FrameStartID = 0; mNextReplay.FrameStartID = 0;
mRemoteFrameIdx = 0;
} }
public void InData(ReplayStep inputData, int ServerFrameIdx) public void InData(ReplayStep inputData, int ServerFrameIdx)
{ {
@ -51,10 +52,22 @@ namespace AxiReplay
TakeFrame(1, out data, out frameDiff, out inputDiff); TakeFrame(1, out data, out frameDiff, out inputDiff);
return frameDiff > 0; return frameDiff > 0;
} }
public bool TryGetNextFrame(int targetFrame, out ReplayStep data, out int frameDiff, out bool inputDiff)
{
TakeFrameToTargetFrame(targetFrame, out data, out frameDiff, out inputDiff);
return frameDiff > 0;
}
void TakeFrame(int addFrame, out ReplayStep data, out int bFrameDiff, out bool inputDiff) void TakeFrame(int addFrame, out ReplayStep data, out int bFrameDiff, out bool inputDiff)
{ {
inputDiff = false;
int targetFrame = mCurrClientFrameIdx + addFrame; int targetFrame = mCurrClientFrameIdx + addFrame;
TakeFrameToTargetFrame(targetFrame, out data, out bFrameDiff, out inputDiff);
}
void TakeFrameToTargetFrame(int targetFrame, out ReplayStep data, out int bFrameDiff, out bool inputDiff)
{
inputDiff = false;
if (targetFrame <= mNextReplay.FrameStartID + 1 && targetFrame <= mRemoteFrameIdx && mNetReplayQueue.Count > 0) if (targetFrame <= mNextReplay.FrameStartID + 1 && targetFrame <= mRemoteFrameIdx && mNetReplayQueue.Count > 0)
{ {
//当前帧追加 //当前帧追加