LSReplayUpdaterSystem.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using System;
  2. namespace ET.Client
  3. {
  4. [FriendOf(typeof(LSReplayUpdater))]
  5. public static class LSReplayComponentSystem
  6. {
  7. [EntitySystem]
  8. public class UpdateSystem: UpdateSystem<LSReplayUpdater>
  9. {
  10. protected override void Update(LSReplayUpdater self)
  11. {
  12. self.Update();
  13. }
  14. }
  15. private static void Update(this LSReplayUpdater self)
  16. {
  17. Room room = self.GetParent<Room>();
  18. long timeNow = TimeHelper.ServerFrameTime();
  19. int old = room.AuthorityFrame;
  20. for (int i = 0; i < 10; ++i)
  21. {
  22. if (room.AuthorityFrame + 1 >= room.Replay.FrameInputs.Count)
  23. {
  24. break;
  25. }
  26. if (timeNow < room.FixedTimeCounter.FrameTime(room.AuthorityFrame + 1))
  27. {
  28. break;
  29. }
  30. ++room.AuthorityFrame;
  31. OneFrameInputs oneFrameInputs = room.Replay.FrameInputs[room.AuthorityFrame];
  32. room.Update(oneFrameInputs, room.AuthorityFrame);
  33. room.SpeedMultiply = i + 1;
  34. }
  35. if (room.AuthorityFrame > old)
  36. {
  37. Log.Debug($"111111111111111111 replay update: {old} {room.AuthorityFrame}");
  38. }
  39. }
  40. }
  41. }