ReplayUpdaterSystem.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using System;
  2. namespace ET.Client
  3. {
  4. [FriendOf(typeof(ReplayUpdater))]
  5. public static class ReplayComponentSystem
  6. {
  7. [ObjectSystem]
  8. public class AwakeSystem: AwakeSystem<ReplayUpdater, Record>
  9. {
  10. protected override void Awake(ReplayUpdater self, Record record)
  11. {
  12. self.Record = record;
  13. self.GetParent<Room>().Init(self.Record.UnitInfos, TimeHelper.ServerFrameTime());
  14. }
  15. }
  16. [ObjectSystem]
  17. public class UpdateSystem: UpdateSystem<ReplayUpdater>
  18. {
  19. protected override void Update(ReplayUpdater self)
  20. {
  21. self.Update();
  22. }
  23. }
  24. private static void Update(this ReplayUpdater self)
  25. {
  26. Room room = self.GetParent<Room>();
  27. long timeNow = TimeHelper.ServerFrameTime();
  28. if (timeNow < room.FixedTimeCounter.FrameTime(room.AuthorityFrame + 1))
  29. {
  30. return;
  31. }
  32. ++room.AuthorityFrame;
  33. OneFrameInputs oneFrameInputs = self.Record.FrameInputs[room.AuthorityFrame];
  34. room.Update(oneFrameInputs, room.AuthorityFrame);
  35. }
  36. }
  37. }