OperaComponentSystem.cs 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using UnityEngine;
  2. namespace ET.Client
  3. {
  4. [EntitySystemOf(typeof(OperaComponent))]
  5. public static partial class OperaComponentSystem
  6. {
  7. [EntitySystem]
  8. private static void Awake(this OperaComponent self)
  9. {
  10. self.mapMask = LayerMask.GetMask("Map");
  11. }
  12. [EntitySystem]
  13. private static void Update(this OperaComponent self)
  14. {
  15. if (Input.GetMouseButtonDown(1))
  16. {
  17. Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
  18. RaycastHit hit;
  19. if (Physics.Raycast(ray, out hit, 1000, self.mapMask))
  20. {
  21. C2M_PathfindingResult c2MPathfindingResult = C2M_PathfindingResult.Create();
  22. c2MPathfindingResult.Position = hit.point;
  23. self.Root().GetComponent<ClientSenderComponent>().Send(c2MPathfindingResult);
  24. }
  25. }
  26. if (Input.GetKeyDown(KeyCode.Q))
  27. {
  28. self.Test1().NoContext();
  29. }
  30. if (Input.GetKeyDown(KeyCode.W))
  31. {
  32. self.Test2().NoContext();
  33. }
  34. if (Input.GetKeyDown(KeyCode.A))
  35. {
  36. self.TestCancelAfter().WithContext(new ETCancellationToken());
  37. }
  38. if (Input.GetKeyDown(KeyCode.T))
  39. {
  40. C2M_TransferMap c2MTransferMap = C2M_TransferMap.Create();
  41. self.Root().GetComponent<ClientSenderComponent>().Call(c2MTransferMap).NoContext();
  42. }
  43. }
  44. private static async ETTask Test1(this OperaComponent self)
  45. {
  46. Log.Debug($"Croutine 1 start1 ");
  47. using (await self.Root().GetComponent<CoroutineLockComponent>().Wait(1, 20000, 3000))
  48. {
  49. await self.Root().GetComponent<TimerComponent>().WaitAsync(6000);
  50. }
  51. Log.Debug($"Croutine 1 end1");
  52. }
  53. private static async ETTask Test2(this OperaComponent self)
  54. {
  55. ETCancellationToken oldCancellationToken = await ETTaskHelper.GetContextAsync<ETCancellationToken>();
  56. Log.Debug($"Croutine 2 start2");
  57. using (await self.Root().GetComponent<CoroutineLockComponent>().Wait(1, 20000, 3000))
  58. {
  59. await self.Root().GetComponent<TimerComponent>().WaitAsync(1000);
  60. }
  61. Log.Debug($"Croutine 2 end2");
  62. }
  63. private static async ETTask TestCancelAfter(this OperaComponent self)
  64. {
  65. ETCancellationToken oldCancellationToken = await ETTaskHelper.GetContextAsync<ETCancellationToken>();
  66. Log.Debug($"TestCancelAfter start");
  67. ETCancellationToken newCancellationToken = new();
  68. await self.Root().GetComponent<TimerComponent>().WaitAsync(3000).TimeoutAsync(newCancellationToken, 1000);
  69. if (newCancellationToken.IsCancel())
  70. {
  71. Log.Debug($"TestCancelAfter newCancellationToken is cancel!");
  72. }
  73. if (oldCancellationToken != null && !oldCancellationToken.IsCancel())
  74. {
  75. Log.Debug($"TestCancelAfter oldCancellationToken is not cancel!");
  76. }
  77. Log.Debug($"TestCancelAfter end");
  78. }
  79. }
  80. }