LSReplayUpdaterSystem.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using System;
  2. namespace ET.Client
  3. {
  4. [EntitySystemOf(typeof(LSReplayUpdater))]
  5. public static partial class LSReplayUpdaterSystem
  6. {
  7. [EntitySystem]
  8. private static void Awake(this LSReplayUpdater self)
  9. {
  10. }
  11. [EntitySystem]
  12. private static void Update(this LSReplayUpdater self)
  13. {
  14. Room room = self.GetParent<Room>();
  15. Fiber fiber = self.Fiber();
  16. long timeNow = TimeInfo.Instance.ServerNow();
  17. int i = 0;
  18. while (true)
  19. {
  20. if (room.AuthorityFrame + 1 >= room.Replay.FrameInputs.Count)
  21. {
  22. break;
  23. }
  24. if (timeNow < room.FixedTimeCounter.FrameTime(room.AuthorityFrame + 1))
  25. {
  26. break;
  27. }
  28. ++room.AuthorityFrame;
  29. OneFrameInputs oneFrameInputs = room.Replay.FrameInputs[room.AuthorityFrame];
  30. room.Update(oneFrameInputs);
  31. room.SpeedMultiply = ++i;
  32. long timeNow2 = TimeInfo.Instance.ServerNow();
  33. if (timeNow2 - timeNow > 5)
  34. {
  35. break;
  36. }
  37. }
  38. }
  39. public static void ChangeReplaySpeed(this LSReplayUpdater self)
  40. {
  41. Room room = self.Room();
  42. LSReplayUpdater lsReplayUpdater = room.GetComponent<LSReplayUpdater>();
  43. if (lsReplayUpdater.ReplaySpeed == 8)
  44. {
  45. lsReplayUpdater.ReplaySpeed = 1;
  46. }
  47. else
  48. {
  49. lsReplayUpdater.ReplaySpeed *= 2;
  50. }
  51. int updateInterval = LSConstValue.UpdateInterval / lsReplayUpdater.ReplaySpeed;
  52. room.FixedTimeCounter.ChangeInterval(updateInterval, room.AuthorityFrame);
  53. }
  54. }
  55. }