mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-14 16:51:28 +00:00
67 lines
1.9 KiB
C#
67 lines
1.9 KiB
C#
using System;
|
|
|
|
namespace ET.Client
|
|
{
|
|
[EntitySystemOf(typeof(LSReplayUpdater))]
|
|
[FriendOf(typeof(LSReplayUpdater))]
|
|
public static partial class LSReplayUpdaterSystem
|
|
{
|
|
[EntitySystem]
|
|
private static void Awake(this LSReplayUpdater self)
|
|
{
|
|
|
|
}
|
|
|
|
[EntitySystem]
|
|
private static void Update(this LSReplayUpdater self)
|
|
{
|
|
Room room = self.GetParent<Room>();
|
|
Fiber fiber = self.Fiber();
|
|
long timeNow = fiber.TimeInfo.ServerNow();
|
|
|
|
int i = 0;
|
|
while (true)
|
|
{
|
|
if (room.AuthorityFrame + 1 >= room.Replay.FrameInputs.Count)
|
|
{
|
|
break;
|
|
}
|
|
|
|
if (timeNow < room.FixedTimeCounter.FrameTime(room.AuthorityFrame + 1))
|
|
{
|
|
break;
|
|
}
|
|
|
|
++room.AuthorityFrame;
|
|
|
|
OneFrameInputs oneFrameInputs = room.Replay.FrameInputs[room.AuthorityFrame];
|
|
|
|
room.Update(oneFrameInputs);
|
|
room.SpeedMultiply = ++i;
|
|
|
|
long timeNow2 = fiber.TimeInfo.ServerNow();
|
|
if (timeNow2 - timeNow > 5)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void ChangeReplaySpeed(this LSReplayUpdater self)
|
|
{
|
|
Room room = self.Room();
|
|
LSReplayUpdater lsReplayUpdater = room.GetComponent<LSReplayUpdater>();
|
|
if (lsReplayUpdater.ReplaySpeed == 8)
|
|
{
|
|
lsReplayUpdater.ReplaySpeed = 1;
|
|
}
|
|
else
|
|
{
|
|
lsReplayUpdater.ReplaySpeed *= 2;
|
|
}
|
|
|
|
int updateInterval = LSConstValue.UpdateInterval / lsReplayUpdater.ReplaySpeed;
|
|
room.FixedTimeCounter.ChangeInterval(updateInterval, room.AuthorityFrame);
|
|
}
|
|
}
|
|
} |