LSReplayUpdaterSystem.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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.ServerNow();
  19. int i = 0;
  20. while (true)
  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;
  34. long timeNow2 = TimeHelper.ServerNow();
  35. if (timeNow2 - timeNow > 5)
  36. {
  37. break;
  38. }
  39. }
  40. }
  41. }
  42. }