ServerFrameComponentSystem.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using ETModel;
  2. namespace ETHotfix
  3. {
  4. [ObjectSystem]
  5. public class ServerFrameComponentSystem : AwakeSystem<ServerFrameComponent>
  6. {
  7. public override void Awake(ServerFrameComponent self)
  8. {
  9. self.Awake();
  10. }
  11. }
  12. public static class ServerFrameComponentEx
  13. {
  14. public static void Awake(this ServerFrameComponent self)
  15. {
  16. self.Frame = 0;
  17. self.FrameMessage = new FrameMessage() {Frame = self.Frame};
  18. self.UpdateFrameAsync();
  19. }
  20. public static async void UpdateFrameAsync(this ServerFrameComponent self)
  21. {
  22. TimerComponent timerComponent = Game.Scene.GetComponent<TimerComponent>();
  23. long instanceId = self.InstanceId;
  24. while (true)
  25. {
  26. if (self.InstanceId != instanceId)
  27. {
  28. return;
  29. }
  30. await timerComponent.WaitAsync(100);
  31. MessageHelper.Broadcast(self.FrameMessage);
  32. ++self.Frame;
  33. self.FrameMessage = new FrameMessage() { Frame = self.Frame };
  34. }
  35. }
  36. public static void Add(this ServerFrameComponent self, OneFrameMessage oneFrameMessage)
  37. {
  38. self.FrameMessage.Messages.Add(oneFrameMessage);
  39. }
  40. }
  41. }